Databricks‘ Dolly ist ein anweisungenfolgendes, großes Sprachmodell, das auf der Databricks-Plattform für maschinelles Lernen trainiert wurde und für die kommerzielle Nutzung lizenziert ist. Basierend auf pythia-12b
wird Dolly in etwa 15.000 Anweisungen/Antwort- databricks-dolly-15k
geschult, die von Databricks-Mitarbeitern in Fähigkeitsbereichen aus dem InstructGPT-Papier erstellt wurden, einschließlich Brainstorming, Klassifizierung, geschlossene Qualitätssicherung, Generierung, Informationsextraktion und offene Qualitätssicherung und Zusammenfassung. dolly-v2-12b
ist kein Modell auf dem neuesten Stand der Technik, weist jedoch ein überraschend hochwertiges Instruktionsfolgeverhalten auf, das für das Basismodell, auf dem es basiert, nicht typisch ist.
Databricks setzt sich dafür ein, dass jede Organisation und jeder Einzelne von der transformativen Kraft der künstlichen Intelligenz profitiert. Die Dolly-Modellfamilie stellt unsere ersten Schritte auf diesem Weg dar und wir freuen uns, diese Technologie mit der Welt zu teilen.
Das Modell ist auf Hugging Face als databricks/dolly-v2-12b verfügbar.
dolly-v2-12b
ist ein von Databricks erstelltes kausales Sprachmodell mit 12 Milliarden Parametern, das von Pythia-12b von EleutherAI abgeleitet und auf einem ~15K-Datensatzanweisungskorpus verfeinert wurde, der von Databricks-Mitarbeitern generiert und unter einer permissiven Lizenz (CC-BY-) veröffentlicht wurde. SA)
dolly-v2-12b
ist kein generatives Sprachmodell auf dem neuesten Stand der Technik und ist, obwohl das quantitative Benchmarking noch läuft, nicht darauf ausgelegt, mit moderneren Modellarchitekturen oder Modellen, die größeren Vortrainingskorpussen unterliegen, konkurrenzfähig zu sein.
Die Dolly-Modellfamilie befindet sich in der aktiven Entwicklung, weshalb die Liste der Mängel wahrscheinlich keinen Anspruch auf Vollständigkeit erhebt. Wir führen hier jedoch bekannte Einschränkungen und Aussetzer auf, um unsere vorläufigen Erkenntnisse zu dokumentieren und mit der Community zu teilen. dolly-v2-12b
kämpft insbesondere mit: syntaktisch komplexen Eingabeaufforderungen, Programmierproblemen, mathematischen Operationen, sachlichen Fehlern, Datums- und Uhrzeitangaben, offenen Fragenbeantwortungen, Halluzinationen, dem Aufzählen von Listen bestimmter Länge, stilistischer Nachahmung und einem Sinn für Humor usw. Darüber hinaus stellen wir fest, dass dolly-v2-12b
nicht über einige Funktionen verfügt, wie z. B. das Schreiben gut formatierter Briefe, die im Originalmodell vorhanden waren.
Wie alle Sprachmodelle spiegelt dolly-v2-12b
den Inhalt und die Einschränkungen seiner Trainingskorpusse wider.
The Pile : Das Pre-Training-Korpus von GPT-J enthält Inhalte, die größtenteils aus dem öffentlichen Internet stammen, und wie die meisten webbasierten Datensätze enthält es Inhalte, die viele Benutzer als anstößig empfinden würden. Daher ist es wahrscheinlich, dass das Modell diese Mängel widerspiegelt, möglicherweise offenkundig, wenn ausdrücklich dazu aufgefordert wird, anstößige Inhalte zu produzieren, und manchmal auch subtil, wie im Fall voreingenommener oder schädlicher impliziter Assoziationen.
databricks-dolly-15k
: Die Trainingsdaten, für die dolly-v2-12b
auf Anweisungen abgestimmt ist, stellen Anweisungen in natürlicher Sprache dar, die von Databricks-Mitarbeitern in einem Zeitraum von März bis April 2023 generiert wurden, und enthalten Passagen aus Wikipedia als Referenzpassagen für Anweisungenkategorien wie geschlossene Qualitätssicherung und Zusammenfassung. Nach unserem Kenntnisstand enthält es keine Obszönitäten, geistiges Eigentum oder personenbezogene Daten über nicht öffentliche Personen, kann jedoch Tippfehler und sachliche Fehler enthalten. Der Datensatz spiegelt möglicherweise auch in Wikipedia gefundene Vorurteile wider. Schließlich spiegelt der Datensatz wahrscheinlich die Interessen und semantischen Entscheidungen der Databricks-Mitarbeiter wider, einer Bevölkerungsgruppe, die nicht repräsentativ für die Weltbevölkerung insgesamt ist.
Databricks engagiert sich für kontinuierliche Forschungs- und Entwicklungsbemühungen, um hilfreiche, ehrliche und harmlose KI-Technologien zu entwickeln, die das Potenzial aller Einzelpersonen und Organisationen maximieren.
Wenn Sie das Modell einfach ohne Training testen möchten, ist das Modell auf Hugging Face als databricks/dolly-v2-12b verfügbar.
So verwenden Sie das Modell mit der transformers
-Bibliothek auf einer Maschine mit A100-GPUs:
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")
Anschließend können Sie die Pipeline verwenden, um Anweisungen zu beantworten:
instruct_pipeline("Explain to me the difference between nuclear fission and fusion.")
A100-Instance-Typen sind nicht in allen Cloud-Regionen verfügbar oder können schwierig bereitzustellen sein. Rückschlüsse auf andere GPU-Instanztypen sind möglich.
Die Parametermodelle 6.9B und 2.8B sollten unverändert funktionieren.
Um mit dem 12B-Parametermodell auf A10s zu generieren (z. B. g5.4xlarge
, 1 x A10 24 GB), muss die Generierung mit 8-Bit-Gewichten geladen und ausgeführt werden, was sich geringfügig auf die Ergebnisse auswirkt:
bitsandbytes
model_kwargs={'load_in_8bit': True}
zum oben gezeigten Befehl pipeline()
hinzu Wenn Sie V100s verwenden (z. B. p3.2xlarge
, 1 x V100 16 GB, NC6s_v3
), legen Sie stattdessen in jedem Fall torch_dtype=torch.float16
in pipeline()
fest.
Andernfalls befolgen Sie die oben genannten Schritte. Das 12B-Parametermodell funktioniert in 8-Bit auf V100s möglicherweise nicht gut.
dolly
-Repo zu Databricks hinzu (klicken Sie unter Repos auf Repo hinzufügen, geben Sie https://github.com/databrickslabs/dolly.git
ein und klicken Sie dann auf Repo erstellen).13.x ML (includes Apache Spark 3.4.0, GPU, Scala 2.12)
oder höher mit einem Knotentyp mit 8 A100-GPUs (z. B. Standard_ND96asr_v4
oder p4d.24xlarge
). Beachten Sie, dass diese Instanztypen möglicherweise nicht in allen Regionen verfügbar oder schwierig bereitzustellen sind. Beachten Sie, dass Sie in Databricks zuerst die GPU-Laufzeit auswählen und „Photon verwenden“ deaktivieren müssen, damit diese Instanztypen angezeigt werden (sofern unterstützt).train_dolly
im Repo (die Datei train_dolly.py
im Github- dolly
-Repo), schließen Sie es an Ihren GPU-Cluster an und führen Sie alle Zellen aus. Wenn das Training abgeschlossen ist, speichert das Notebook das Modell unter /dbfs/dolly_training
.A100-Instance-Typen sind nicht in allen Cloud-Regionen verfügbar oder können schwierig bereitzustellen sein. Das Training ist auf anderen GPU-Instanztypen, für kleinere Dolly-Modellgrößen und mit kleinen Modifikationen zur Reduzierung der Speichernutzung möglich. Diese Modifikationen sind nicht optimal, aber einfach durchzuführen.
Wählen Sie Ihren GPU-Familientyp aus dem Widget gpu_family
aus, geben Sie die Anzahl der verfügbaren GPUs in das Widget „ num_gpus
ein und führen Sie dann den Rest des Codes aus. Es werden verschiedene Optionen festgelegt, mit denen Sie das Modell für einen der folgenden GPU-Typen trainieren können:
Einzelheiten zu den verschiedenen Konfigurationen finden Sie weiter unten.
A100-GPUs werden für das Training aller Modellgrößen bevorzugt und sind die einzigen GPUs, die das 12B-Parametermodell in angemessener Zeit trainieren können. Dies ist daher die Standardkonfiguration, wie sie in der Deepspeed-Konfigurationsdatei a100_config.json
festgelegt ist.
Das Training des 12B-Param-Modells wird auf A10s nicht empfohlen.
Um das 6.9B-Parametermodell auf A10-Instanzen zu trainieren (z. B. g5.24xlarge
, 4 x A10 24 GB; Standard_NV72ads_A10_v5
, 2 x A10), wählen Sie einfach a10
aus dem gpu_family
-Widget aus, geben Sie die Anzahl der verfügbaren GPUs in das num_gpus
-Widget ein und führen Sie es dann aus der Rest des Codes. Dabei wird die Deepspeed-Konfigurationsdatei a10_config.json
verwendet, die die folgenden Änderungen vornimmt:
per-device-train-batch-size
und per-device-eval-batch-size
werden im train_dolly.py
-Aufruf von deepspeed
auf 3 gesetzt"zero_optimization"
der Deepspeed-Konfiguration haben wir Folgendes hinzugefügt: "offload_optimizer": {
"device": "cpu",
"pin_memory": true
},
Um auf V100-Instanzen mit 32 GB GPU-Speicher (z. B. p3dn.24xlarge
oder Standard_ND40rs_v2
) zu laufen, wählen Sie einfach v100
aus dem gpu_family
-Widget aus, geben Sie die Anzahl der verfügbaren GPUs in das num_gpus
-Widget ein und führen Sie dann den Rest des Codes aus. Dabei wird die Deepspeed-Konfigurationsdatei v100_config.json
verwendet, die die folgenden Änderungen vornimmt:
per-device-train-batch-size
und per-device-eval-batch-size
auf 3Möglicherweise können Sie die Batchgröße mit 32-GB-Instanzen leicht erhöhen, verglichen mit dem, was oben für 24-GB-A10-Instanzen funktioniert.
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}
}