Vorbereiten von Daten für Mosaic AI Model-Training

Wichtig

Dieses Feature ist in den folgenden Regionen als Public Preview verfügbar: centralus, eastus, eastus2, northcentralus und westus.

Dieser Artikel beschreibt die akzeptierten Dateiformate für die Trainings- und Auswertungsdaten für die Aufgaben für Mosaic AI Model-Training (vormals Foundation Model-Training): überwachte Feinabstimmung, Chatvervollständigung und fortlaufendes Vorabtraining.

Das folgende Notebook veranschaulicht, wie Sie Ihre Daten überprüfen. Es ist so konzipiert, dass es unabhängig ausgeführt werden kann, bevor Sie mit dem Training beginnen. Der Zweck dieses Notebooks besteht darin, zu überprüfen, ob Ihre Daten im richtigen Format für Mosaic AI Model-Training vorliegen. Es enthält auch Code zum Tokenisieren Ihres Rohdatasets, um die Kosten für die Trainingsausführung zu schätzen.

Notebook zum Überprüfen von Daten für Trainingsausführungen

Notebook abrufen

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

UC-Volume mit exemplarischen Datasetdateien für das fortlaufende Vorabtraining