Vorbereiten von Daten für die Feinabstimmung des Foundation-Modells
Wichtig
Dieses Feature ist in den folgenden Regionen als Public Preview verfügbar: centralus
, eastus
, eastus2
, northcentralus
und westus
.
In diesem Artikel werden die akzeptierten Schulungs- und Auswertungsdatendateiformate für die Foundation Model Fine-Tuning -Aufgaben (jetzt Teil der Mosaik AI Model Training) Aufgaben beschrieben: überwachte Feinabstimmung, Chatabschluss und fortgesetzte Vorschulung.
Das folgende Notebook veranschaulicht, wie Sie Ihre Daten überprüfen. Sie ist so konzipiert, dass sie unabhängig ausgeführt wird, bevor Sie mit dem Training beginnen. Es überprüft, ob Ihre Daten im richtigen Format für die Feinabstimmung von Foundation-Modell vorliegen und Code enthalten, mit dem Sie die Kosten während der Schulung abschätzen können, indem Sie Ihr rohes Dataset tokenisieren.
Notebook zum Überprüfen von Daten für Trainingsausführungen
Vorbereiten von Daten für die überwachte Feinabstimmung
Bei Aufgaben zur überwachten Feinabstimmung können die Trainingsdaten eines der folgenden Schemas aufweisen:
Prompt-Antwort-Paare
{"prompt": "your-custom-prompt", "response": "your-custom-response"}
Prompt-Vervollständigungs-Paare
{"prompt": "your-custom-prompt", "completion": "your-custom-response"}
Hinweis
Die Prompt-Antwort- und Prompt-Vervollständigungs-Paare haben keine Vorlage, daher müssen modellspezifische Vorlagen (z. B. die Anweisungsformatierung von Mistral) als Vorverarbeitungsschritt angewendet werden.
Akzeptierte Datenformate:
Ein Unity Catalog-Volume mit einer
.jsonl
-Datei. Die Trainingsdaten müssen im JSONL-Format vorliegen, in dem jede Zeile ein gültiges JSON-Objekt ist. Das folgende Beispiel zeigt ein Prompt- und Antwortpaar:{"prompt": "What is Databricks?","response": "Databricks is a cloud-based data engineering platform that provides a fast, easy, and collaborative way to process large-scale data."}
Eine Delta-Tabelle, die einem der oben genannten akzeptierten Schemas entspricht. Für Delta-Tabellen müssen Sie einen
data_prep_cluster_id
-Parameter zur Datenverarbeitung angeben. Weitere Informationen finden Sie unter Konfigurieren einer Trainingsausführung.Ein öffentliches Hugging Face-Dataset.
Wenn Sie ein öffentliches Hugging Face-Dataset als Trainingsdaten verwenden, geben Sie den vollständigen Pfad mit der Aufteilung an, z. B.
mosaicml/instruct-v3/train and mosaicml/instruct-v3/test
. Dies gilt für Datasets mit unterschiedlichen Aufteilungsschemas. Geschachtelte Datasets aus Hugging Face werden nicht unterstützt.Ein ausführlicheres Beispiel finden Sie im Dataset
mosaicml/dolly_hhrlhf
bei Hugging Face.Die folgenden Beispielzeilen mit Daten stammen aus dem Dataset
mosaicml/dolly_hhrlhf
.{"prompt": "Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: what is Databricks? ### Response: ","response": "Databricks is a cloud-based data engineering platform that provides a fast, easy, and collaborative way to process large-scale data."} {"prompt": "Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: Van Halen famously banned what color M&Ms in their rider? ### Response: ","response": "Brown."}
Vorbereiten von Daten für die Chatvervollständigung
Für Chatvervollständigungsaufgaben müssen Daten in einem Chatformat der Form .jsonl
vorliegen, wobei jede Zeile ein separates JSON-Objekt ist, das eine einzelne Chatsitzung darstellt. Jede Chatsitzung wird als JSON-Objekt mit einem einzelnen Schlüssel "messages"
dargestellt, der einem Array von Nachrichtenobjekten zugeordnet ist. Um mit Chatdaten zu trainieren, geben Sie einfach task_type = 'CHAT_COMPLETION'
an.
Nachrichten im Chatformat werden automatisch anhand der Chatvorlage des Modells formatiert, sodass keine speziellen Chattoken hinzugefügt werden müssen, um manuell den Anfang oder das Ende eines Chats zu signalisieren. Ein Beispiel für ein Modell, das eine benutzerdefinierte Chatvorlage verwendet, ist Mistral-instruct.
Hinweis
Mistral-Modelle akzeptieren keine system
-Rollen in ihren Datenformaten.
Jedes Nachrichtenobjekt im Array stellt eine einzelne Nachricht in der Unterhaltung dar und weist die folgende Struktur auf:
role
: eine Zeichenfolge, die die Erstellerin oder den Ersteller der Nachricht angibt. Mögliche Werte sind"system"
,"user"
und"assistant"
. Wenn die Rollesystem
lautet, muss dies der erste Chat in der Nachrichtenliste sein. Es muss mindestens eine Nachricht mit der Rolle"assistant"
vorhanden sein, und alle Nachrichten nach dem (optionalen) Systemprompt müssen zwischen den Rollen „Benutzer“ und „Assistent“ wechseln. Es darf keine zwei aufeinanderfolgenden Nachrichten mit derselben Rolle geben. Die letzte Nachricht im"messages"
-Array muss die Rolle"assistant".
aufweisen.content
: ein Zeichenfolgenwert, der den Text der Nachricht enthält.
Nachfolgend sehen Sie ein Beispiel für Daten im Chatformat:
{"messages": [
{"role": "system", "content": "A conversation between a user and a helpful assistant."},
{"role": "user", "content": "Hi there. What's the capital of the moon?"},
{"role": "assistant", "content": "This question doesn't make sense as nobody currently lives on the moon, meaning it would have no government or political institutions. Furthermore, international treaties prohibit any nation from asserting sovereignty over the moon and other celestial bodies."},
]
}
Vorbereiten von Daten für das fortlaufende Vorabtraining
Bei Aufgaben zum fortlaufenden Vorabtraining sind die Trainingsdaten Ihre unstrukturierten Textdaten. Die Trainingsdaten müssen sich auf einem Unity Catalog-Volume mit .txt
-Dateien befinden. Jede .txt
-Datei wird als einzelne Stichprobe behandelt. Wenn sich Ihre .txt
-Dateien in einem Ordner auf einem Unity Catalog-Volume befinden, werden diese Dateien auch für Ihre Trainingsdaten abgerufen. Alle anderen Dateien auf dem Volume, die keine txt
-Dateien sind, werden ignoriert. Weitere Informationen finden Sie unter Hochladen von Dateien auf ein Unity Catalog-Volume.
Die folgende Abbildung zeigt ein .txt
-Beispieldateien auf einem Unity Catalog-Volume. Legen Sie train_data_path = "dbfs:/Volumes/main/finetuning/cpt-data"
fest, um diese Daten in Ihrer Ausführungskonfiguration für das fortlaufende Vorabtraining zu verwenden.