Erstellen einer Schulungsausführung mithilfe der Foundation Model Fine-Tuning-API
Wichtig
Dieses Feature ist in den folgenden Regionen als Public Preview verfügbar: centralus
, eastus
, eastus2
, northcentralus
und westus
.
In diesem Artikel wird beschrieben, wie Sie einen Schulungslauf mithilfe der Foundation Model Fine-Tuning-API (jetzt Teil der Mosaik AI Model Training)-API erstellen und konfigurieren und alle parameter beschreiben, die im API-Aufruf verwendet werden. Sie können eine Ausführung auch mithilfe der Benutzeroberfläche erstellen. Anweisungen finden Sie unter Erstellen einer Schulungsausführung mithilfe der Foundation Model Fine-Tuning UI.
Anforderungen
Siehe Anforderungen.
Erstellen einer Trainingsausführung
Zum programmgesteuerten Erstellen von Trainingsausführungen verwenden Sie die create()
-Funktion. Diese Funktion trainiert ein Modell mit dem bereitgestellten Dataset und konvertiert den abschließenden Composer-Prüfpunkt in einen Rückschlussprüfpunkt im Hugging Face-Format.
Die erforderlichen Eingaben sind das Modell, das Sie trainieren möchten, der Speicherort Ihres Trainingsdatasets und wo Sie Ihr Modell registrieren möchten. Es gibt auch optionale Parameter, mit denen Sie die Auswertung durchführen und die Hyperparameter Ihrer Ausführung ändern können.
Nach Abschluss der Ausführung werden die abgeschlossenen Ausführungen und die abschließenden Prüfpunkte gespeichert, das Modell wird geklont, und der Klon wird in Unity Catalog als Modellversion für den Rückschluss registriert.
Das Modell aus der abgeschlossenen Ausführung nicht die geklonte Modellversion in Unity-Katalog, und die zugehörigen Composer- und Hugging Face-Prüfpunkte werden in MLflow gespeichert. Die Composer-Prüfpunkte können für weitere Feinabstimmungen verwendet werden.
Weitere Informationen zu Argumenten für die create()
-Funktion finden Sie unter Konfigurieren einer Trainingsausführung.
from databricks.model_training import foundation_model as fm
run = fm.create(
model='meta-llama/Llama-2-7b-chat-hf',
train_data_path='dbfs:/Volumes/main/mydirectory/ift/train.jsonl', # UC Volume with JSONL formatted data
# Public HF dataset is also supported
# train_data_path='mosaicml/dolly_hhrlhf/train'
register_to='main.mydirectory', # UC catalog and schema to register the model to
)
Konfigurieren einer Trainingsausführung
In der folgenden Tabelle sind die Parameter für die foundation_model.create()
Funktion zusammengefasst.
Parameter | Erforderlich | Type | Beschreibung des Dataflows |
---|---|---|---|
model |
x | str | Der Name des zu verwendenden Modells. Weitere Informationen finden Sie unter Unterstützte Modelle. |
train_data_path |
x | str | Der Speicherort Ihrer Trainingsdaten. Dies kann ein Speicherort in Unity Catalog (<catalog>.<schema>.<table> oder dbfs:/Volumes/<catalog>/<schema>/<volume>/<dataset>.jsonl ) oder ein Hugging Face-Dataset sein.Für INSTRUCTION_FINETUNE sollten die Daten mit jeder Zeile formatiert sein, die ein prompt -Feld und ein response -Feld enthält.Für CONTINUED_PRETRAIN ist dies ein Ordner mit .txt -Dateien. Weitere Informationen finden Sie unter Vorbereiten von Daten für foundation Model Fine-Tuning für akzeptierte Datenformate und empfohlene Datengröße für Modellschulungen für Empfehlungen zur Datengröße. |
register_to |
x | str | Der Katalog und das Schema von Unity Catalog (<catalog>.<schema> oder <catalog>.<schema>.<custom-name> ), in dem das Modell nach dem Training registriert wird, um eine einfache Bereitstellung zu ermöglichen. Wenn custom-name nicht angegeben wird, ist der Standardwert der Ausführungsname. |
data_prep_cluster_id |
str | Die Cluster-ID des Clusters, der für die Spark-Datenverarbeitung verwendet werden soll. Dies ist für überwachte Trainingsaufgaben erforderlich, bei denen sich die Trainingsdaten in einer Delta-Tabelle befinden. Informationen zum Ermitteln der Cluster-ID finden Sie unter Abrufen der Cluster-ID. | |
experiment_path |
str | Der Pfad zu dem MLflow-Experiment, in dem die Ausgabe der Trainingsausführung (Metriken und Prüfpunkte) gespeichert wird. Standardmäßig wird der Ausführungsnamen im persönlichen Benutzerarbeitsbereich (d. h. /Users/<username>/<run_name> ) verwendet. |
|
task_type |
str | Der Typ der auszuführenden Aufgabe. Kann INSTRUCTION_FINETUNE (Standard) CHAT_COMPLETION oder CONTINUED_PRETRAIN lauten. |
|
eval_data_path |
str | Der Remotestandort Ihrer Auswertungsdaten (sofern vorhanden). Das Format muss train_data_path entsprechen. |
|
eval_prompts |
List[str] | Eine Liste der Promptzeichenfolgen zum Generieren von Antworten während der Auswertung. Der Standardwert ist None (keine Prompts generieren). Die Ergebnisse werden bei jeder Prüfpunkterstellung für das Modell im Experiment protokolliert. Die Generierung erfolgt bei jedem Modellprüfpunkt mit den folgenden Generationparametern: max_new_tokens: 100 , temperature: 1 , top_k: 50 , top_p: 0.95 , do_sample: true . |
|
custom_weights_path |
str | Der Remotestandort eines benutzerdefinierten Modellprüfpunkts für das Training. Der Standardwert ist None , d. h., die Ausführung beginnt mit den ursprünglichen vortrainierten Gewichtung des ausgewählten Modells. Wenn Sie benutzerdefinierte Gewichtungen bereitstellen, werden diese anstelle der ursprünglichen vortrainierten Gewichtungen des Modells verwendet. Diese Gewichtungen müssen ein Composer-Prüfpunkt sein und mit der Architektur des model angegebenen Werts übereinstimmen. Siehe Build on custom model weights |
|
training_duration |
str | Die Gesamtdauer der Ausführung. Der Standardwert ist eine Epoche oder 1ep . Kann in Epochen (10ep ) oder Token (1000000tok ) angegeben werden. |
|
learning_rate |
str | Die Lernrate für das Modelltraining. Für alle Modelle außer Llama 3.1 405B Instruct ist die Standardlernrate 5e-7 . Für Llama 3.1 405B Instruct ist die Standardlernrate 1.0e-5 . Der Optimierer ist DecoupledLionW mit Betawerten von 0,99 und 0,95 und keinem Gewichtungsverfall. Der Planer für die Lernrate ist LinearWithWarmupSchedule mit einer Aufwärmrate von 2 % der gesamten Trainingsdauer und einem finalen Lernratenmultiplikator von 0 (null). |
|
context_length |
str | Die maximale Sequenzlänge einer Datenstichprobe. Dieser Wert wird verwendet, um alle Daten zu kürzen, die zu lang sind, und um kürzere Sequenzen aus Effizienzgründen zusammenzupacken. Der Standardwert ist 8192 Token oder die maximale Kontextlänge für das bereitgestellte Modell, je nachdem, welcher Wert niedriger ist. Sie können diesen Parameter verwenden, um die Kontextlänge zu konfigurieren, aber die Konfiguration über die maximale Kontextlänge des Modells hinaus wird nicht unterstützt. Unter Unterstützte Modelle finden Sie die maximale unterstützte Kontextlänge jedes Modells. |
|
validate_inputs |
Boolean | Gibt an, ob der Zugriff auf Eingabepfade vor der Übermittlung des Trainingsauftrags überprüft werden soll. Der Standardwert ist True . |
Erstellen nach benutzerdefinierten Modellgewichtungen
Foundation Model Fine-Tuning unterstützt das Hinzufügen von benutzerdefinierten Gewichtungen mithilfe des optionalen Parameters custom_weights_path
zum Trainieren und Anpassen eines Modells.
Um zu beginnen, legen Sie custom_weights_path
den Composer-Prüfpunktpfad aus einer vorherigen Schulungsausführung fest. Prüfpunktpfade finden Sie auf der Registerkarte "Artefakte" einer vorherigen MLflow-Ausführung. Der Name des Prüfpunktordners entspricht dem Batch und der Epoche einer bestimmten Momentaufnahme, z ep29-ba30/
. B. .
- Um den neuesten Prüfpunkt aus einer vorherigen Ausführung bereitzustellen, legen Sie
custom_weights_path
den Composer-Prüfpunkt fest. Beispiel:custom_weights_path=dbfs:/databricks/mlflow-tracking/<experiment_id>/<run_id>/artifacts/<run_name>/checkpoints/latest-sharded-rank0.symlink
. - Um einen früheren Prüfpunkt bereitzustellen, legen Sie
custom_weights_path
einen Pfad zu einem Ordner fest, der Dateien enthält.distcp
, die dem gewünschten Prüfpunkt entsprechen, zcustom_weights_path=dbfs:/databricks/mlflow-tracking/<experiment_id>/<run_id>/artifacts/<run_name>/checkpoints/ep#-ba#
. B. .
Aktualisieren Sie als Nächstes den model
Parameter so, dass er dem Basismodell des Prüfpunkts entspricht, an custom_weights_path
den Sie übergeben haben.
Im folgenden Beispiel ift-meta-llama-3-1-70b-instruct-ohugkq
handelt es sich um eine vorherige Ausführung, die Feinmusik enthält meta-llama/Meta-Llama-3.1-70B
. Um den neuesten Prüfpunkt ift-meta-llama-3-1-70b-instruct-ohugkq
zu optimieren, legen Sie die model
und custom_weights_path
die Variablen wie folgt fest:
from databricks.model_training import foundation_model as fm
run = fm.create(
model = 'meta-llama/Meta-Llama-3.1-70B'
custom_weights_path = 'dbfs:/databricks/mlflow-tracking/2948323364469837/d4cd1fcac71b4fb4ae42878cb81d8def/artifacts/ift-meta-llama-3-1-70b-instruct-ohugkq/checkpoints/latest-sharded-rank0.symlink'
... ## other parameters for your fine-tuning run
)
Weitere Informationen finden Sie unter "Konfigurieren einer Schulungsausführung ", um andere Parameter in Ihrer Feinabstimmungsausführung zu konfigurieren.
Abrufen der Cluster-ID
So rufen Sie die Cluster-ID ab:
Wählen Sie auf der linken Navigationsleiste des Databricks-Arbeitsbereichs Compute aus.
Wählen Sie in der Tabelle den Namen Ihres Clusters aus.
Wählen Sie in der rechten oberen Ecke und dann im Dropdownmenü die Option JSON anzeigen aus.
Die JSON-Clusterdatei wird angezeigt. Kopieren Sie die Cluster-ID in der ersten Zeile in der Datei.
Abrufen des Status einer Ausführung
Sie können den Fortschritt einer Ausführung auf der Seite „Experiment“ der Databricks-Benutzeroberfläche oder mit dem API-Befehl get_events()
nachverfolgen. Ausführliche Informationen finden Sie unter Anzeigen, Verwalten und Analysieren von Foundation Model Fine-Tuning-Ausführungen.
Beispielausgabe von get_events()
:
Beispielausführungsdetails auf der Seite „Experiment“:
Nächste Schritte
Nach Abschluss der Trainingsausführung können Sie Metriken in MLflow überprüfen und Ihr Modell für Rückschlüsse bereitstellen. Weitere Informationen finden Sie in den Schritten 5 bis 7 des Lernprogramms: Erstellen und Bereitstellen einer Feinabstimmung des Foundation-Modells.
Ein Beispiel finden Sie im Demo-Notebook für die Feinabstimmung von Instruktionen mit dem Titel Feinabstimmung von Instruktionen: Erkennung benannter Entitäten, das Sie durch die Datenvorbereitung, die Konfiguration des Feinabstimmungs-Trainingslaufs und die Bereitstellung führt.
Notebookbeispiel
Das folgende Notebook zeigt ein Beispiel für das Generieren synthetischer Daten mithilfe des Meta Llama 3.1 405B Instruct-Modells und das Verwenden dieser Daten zum Optimieren eines Modells:
Generieren von synthetischen Daten mit einem Llama 3.1 405B Instruct-Notebook
Zusätzliche Ressourcen
- Foundation Model Fine-tuning
- Lernprogramm: Erstellen und Bereitstellen einer Foundation Model Fine-Tuning-Ausführung
- Erstellen eines Schulungslaufs mithilfe der Foundation Model Fine-Tuning UI
- Anzeigen, Verwalten und Analysieren von Foundation Model Fine-Tuning-Ausführungen
- Vorbereiten von Daten für die Feinabstimmung des Foundation-Modells