Freigeben über


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. .

Registerkarte „Artefakte“ für eine frühere MLflow-Ausführung

  • 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, z custom_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_pathden 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-ohugkqzu 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:

  1. Wählen Sie auf der linken Navigationsleiste des Databricks-Arbeitsbereichs Compute aus.

  2. Wählen Sie in der Tabelle den Namen Ihres Clusters aus.

  3. Wählen Sie in der rechten oberen Ecke Schaltfläche „Mehr“ und dann im Dropdownmenü die Option JSON anzeigen aus.

  4. Die JSON-Clusterdatei wird angezeigt. Kopieren Sie die Cluster-ID in der ersten Zeile in der Datei.

    Cluster-ID

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():

Verwenden der API zum Abrufen des Ausführungsstatus

Beispielausführungsdetails auf der Seite „Experiment“:

Abrufen des Ausführungsstatus über die Benutzeroberfläche für Experimente

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

Notebook abrufen

Zusätzliche Ressourcen