Databricks' Dolly est un grand modèle de langage qui suit des instructions et qui est formé sur la plateforme d'apprentissage automatique Databricks sous licence pour un usage commercial. Basé sur pythia-12b
, Dolly est formé sur environ 15 000 enregistrements de réglage fin d'instructions/réponses databricks-dolly-15k
générés par les employés de Databricks dans les domaines de capacités du document InstructGPT, y compris le brainstorming, la classification, l'assurance qualité fermée, la génération, l'extraction d'informations, l'assurance qualité ouverte. et résumé. dolly-v2-12b
n'est pas un modèle de pointe, mais présente une instruction d'une qualité étonnamment élevée suivant un comportement non caractéristique du modèle de base sur lequel il est basé.
Databricks s'engage à garantir que chaque organisation et chaque individu bénéficie du pouvoir transformateur de l'intelligence artificielle. La famille de modèles Dolly représente nos premiers pas dans ce voyage, et nous sommes ravis de partager cette technologie avec le monde.
Le modèle est disponible sur Hugging Face sous le nom databricks/dolly-v2-12b.
dolly-v2-12b
est un modèle de langage causal de 12 milliards de paramètres créé par Databricks, dérivé de Pythia-12b d'EleutherAI et affiné sur un corpus d'instructions d'enregistrement d'environ 15 000 générés par les employés de Databricks et publié sous une licence permissive (CC-BY- SA)
dolly-v2-12b
n'est pas un modèle de langage génératif de pointe et, bien que l'analyse comparative quantitative soit en cours, n'est pas conçu pour fonctionner de manière compétitive avec des architectures de modèles plus modernes ou des modèles soumis à des corpus de pré-formation plus importants.
La famille de modèles Dolly est en cours de développement actif et il est donc peu probable que la liste des lacunes soit exhaustive, mais nous incluons ici les limitations et les ratés connus afin de documenter et de partager nos conclusions préliminaires avec la communauté. En particulier, dolly-v2-12b
a du mal avec : les invites syntaxiquement complexes, les problèmes de programmation, les opérations mathématiques, les erreurs factuelles, les dates et les heures, les réponses aux questions ouvertes, les hallucinations, l'énumération de listes d'une longueur spécifique, le mimétisme stylistique, le sens de l'humour. , etc. De plus, nous constatons que dolly-v2-12b
ne possède pas certaines capacités, telles que l'écriture de lettres bien formatées, présentes dans le modèle original.
Comme tous les modèles de langage, dolly-v2-12b
reflète le contenu et les limites de ses corpus de formation.
The Pile : le corpus de pré-formation de GPT-J contient du contenu principalement collecté sur l'Internet public et, comme la plupart des ensembles de données à l'échelle du Web, il contient du contenu que de nombreux utilisateurs trouveraient répréhensible. En tant que tel, le modèle est susceptible de refléter ces lacunes, potentiellement ouvertement dans le cas où il est explicitement demandé de produire un contenu répréhensible, et parfois subtilement, comme dans le cas d’associations implicites biaisées ou nuisibles.
databricks-dolly-15k
: Les données de formation sur lesquelles dolly-v2-12b
est optimisé pour les instructions représentent les instructions en langage naturel générées par les employés de Databricks au cours d'une période allant de mars à avril 2023 et incluent des passages de Wikipédia comme passages de référence pour les catégories d'instructions telles que l'assurance qualité fermée et récapitulation. À notre connaissance, il ne contient pas d’obscénités, de propriété intellectuelle ou d’informations d’identification personnelle sur des personnalités non publiques, mais il peut contenir des fautes de frappe et des erreurs factuelles. L'ensemble de données peut également refléter les biais trouvés dans Wikipédia. Enfin, l'ensemble de données reflète probablement les intérêts et les choix sémantiques des employés de Databricks, un groupe démographique qui n'est pas représentatif de la population mondiale dans son ensemble.
Databricks s'engage dans des efforts continus de recherche et de développement pour développer des technologies d'IA utiles, honnêtes et inoffensives qui maximisent le potentiel de tous les individus et organisations.
Si vous souhaitez simplement tester le modèle sans formation, le modèle est disponible sur Hugging Face sous le nom databricks/dolly-v2-12b.
Pour utiliser le modèle avec la bibliothèque transformers
sur une machine équipée de GPU A100 :
from transformers import pipeline
import torch
instruct_pipeline = pipeline(model="databricks/dolly-v2-12b", torch_dtype=torch.bfloat16, trust_remote_code=True, device_map="auto")
Vous pouvez ensuite utiliser le pipeline pour répondre aux instructions :
instruct_pipeline("Explain to me the difference between nuclear fission and fusion.")
Les types d'instances A100 ne sont pas disponibles dans toutes les régions cloud ou peuvent être difficiles à provisionner. L'inférence est possible sur d'autres types d'instances GPU.
Les modèles de paramètres 6.9B et 2.8B devraient fonctionner tels quels.
Pour générer à l'aide du modèle de paramètres 12B sur les A10 (ex : g5.4xlarge
, 1 x A10 24 Go), il est nécessaire de charger et d'exécuter la génération en utilisant des poids de 8 bits, ce qui impacte légèrement les résultats :
bitsandbytes
model_kwargs={'load_in_8bit': True}
à la commande pipeline()
présentée ci-dessus Lorsque vous utilisez des V100 (ex : p3.2xlarge
, 1 x V100 16GB, NC6s_v3
), dans tous les cas, définissez plutôt torch_dtype=torch.float16
dans pipeline()
.
Sinon, suivez les étapes ci-dessus. Le modèle de paramètres 12B peut ne pas fonctionner correctement en 8 bits sur les V100.
dolly
à Databricks (sous Repos, cliquez sur Ajouter un dépôt, entrez https://github.com/databrickslabs/dolly.git
, puis cliquez sur Créer un dépôt).13.x ML (includes Apache Spark 3.4.0, GPU, Scala 2.12)
ou version ultérieure avec un type de nœud doté de 8 GPU A100 (par exemple Standard_ND96asr_v4
ou p4d.24xlarge
). Notez que ces types d'instances peuvent ne pas être disponibles dans toutes les régions ou être difficiles à provisionner. Dans Databricks, notez que vous devez d'abord sélectionner le runtime GPU et désélectionner « Utiliser Photon » pour que ces types d'instances apparaissent (si pris en charge).train_dolly
dans le dépôt (qui est le fichier train_dolly.py
dans le dépôt dolly
Github), attachez-le à votre cluster GPU et exécutez toutes les cellules. Une fois la formation terminée, le notebook enregistrera le modèle sous /dbfs/dolly_training
.Les types d'instances A100 ne sont pas disponibles dans toutes les régions cloud ou peuvent être difficiles à provisionner. La formation est possible sur d'autres types d'instances GPU, pour des tailles de modèles Dolly plus petites et avec de petites modifications pour réduire l'utilisation de la mémoire. Ces modifications ne sont pas optimales, mais sont simples à réaliser.
Sélectionnez votre type de famille de GPU dans le widget gpu_family
, entrez le nombre de GPU disponibles dans le widget num_gpus
, puis exécutez le reste du code. Un certain nombre d'options différentes seront définies pour vous permettre d'entraîner le modèle pour l'un des types de GPU suivants :
Les détails des différentes configurations sont ci-dessous.
Les GPU A100 sont préférés pour l’entraînement de toutes les tailles de modèles et sont les seuls GPU capables d’entraîner le modèle de paramètres 12B dans un laps de temps raisonnable. En tant que tel, il s'agit de la configuration par défaut, telle que définie dans le fichier de configuration deepspeed a100_config.json
.
La formation du modèle de paramètres 12B n'est pas recommandée sur les A10.
Pour entraîner le modèle de paramètres 6,9 B sur les instances A10 (ex : g5.24xlarge
, 4 x A10 24 Go ; Standard_NV72ads_A10_v5
, 2 x A10), sélectionnez simplement a10
dans le widget gpu_family
et entrez le nombre de GPU disponibles dans le widget num_gpus
, puis exécutez le reste du code. Cela utilisera le fichier de configuration deepspeed a10_config.json
, qui apporte les modifications suivantes :
per-device-train-batch-size
et per-device-eval-batch-size
sont définis sur 3 dans l'invocation train_dolly.py
de deepspeed
"zero_optimization"
de la configuration deepspeed, nous avons ajouté : "offload_optimizer": {
"device": "cpu",
"pin_memory": true
},
Pour exécuter sur des instances V100 avec 32 Go de mémoire GPU (ex : p3dn.24xlarge
ou Standard_ND40rs_v2
), sélectionnez simplement v100
dans le widget gpu_family
et entrez le nombre de GPU disponibles dans le widget num_gpus
, puis exécutez le reste du code. Cela utilisera le fichier de configuration deepspeed v100_config.json
, qui apporte les modifications suivantes :
per-device-train-batch-size
et per-device-eval-batch-size
sur 3.Vous pourrez peut-être augmenter légèrement la taille du lot avec des instances de 32 Go, par rapport à ce qui fonctionne ci-dessus pour les A10 de 24 Go.
pyenv local 3.8.13
python -m venv .venv
. .venv/bin/activate
pip install -r requirements_dev.txt
./run_pytest.sh
@online{DatabricksBlog2023DollyV2,
author = {Mike Conover and Matt Hayes and Ankit Mathur and Jianwei Xie and Jun Wan and Sam Shah and Ali Ghodsi and Patrick Wendell and Matei Zaharia and Reynold Xin},
title = {Free Dolly: Introducing the World's First Truly Open Instruction-Tuned LLM},
year = {2023},
url = {https://www.databricks.com/blog/2023/04/12/dolly-first-open-commercially-viable-instruction-tuned-llm},
urldate = {2023-06-30}
}