Vorbereiten Ihrer Daten zur Optimierung eines Chat-Vervollständigungsmodells

Abgeschlossen

Bei der Feinabstimmung wird ein geeignetes Foundation-Modell kombiniert, das als Basis verwendet werden soll, und mit einer Reihe von Schulungsdaten , die Beispielaufforderungen und Antworten enthalten, aus denen das Modell lernen kann. Diese Einheit befasst sich mit dem Verständnis des Schulungsdatenformats, der Vorbereitung von Datasets aus realen Daten und dem Generieren synthetischer Daten zur Feinabstimmung.

Diagramm eines Basismodells sowie Schulungsdaten, die zu einem optimierten Modell führen.

Grundlegendes zum Format der Schulungsdaten

Wenn Sie sich für die Optimierung eines Sprachmodells entscheiden, müssen Sie das Dataset identifizieren, das Sie für die Optimierung Ihres Sprachmodells verwenden können.

Wie bei jedem maschinellen Lernmodell hat die Qualität des Datasets einen großen Einfluss auf die Qualität Ihres Modells. Auch wenn Sie weniger Daten benötigen, als wenn Sie ein Sprachmodell von Grund auf trainieren würden, benötigen Sie dennoch genügend Daten, um die Konsistenz des gewünschten Modells zu maximieren. Wie viele Daten Sie benötigen, hängt von Ihrem Anwendungsfall ab.

Für die Optimierung eines Sprachmodells für die Chatvervollständigung verwenden Sie Daten aus einer Sammlung von Beispielgesprächen. Genauer gesagt, sollten die Daten drei Komponenten enthalten:

  • Die Systemmeldung.
  • Die Benutzernachricht
  • Antwort des Assistenten

Die drei Variablen werden in einer JSON Lines- oder JSONL-Datei zusammengefasst. Eine Zeile in einem solchen Dataset könnte zum Beispiel so aussehen:

{"messages": [{"role": "system", "content": "You are an Xbox customer support agent whose primary goal is to help users with issues they are experiencing with their Xbox devices. You are friendly and concise. You only provide factual answers to queries, and do not provide answers that are not related to Xbox."}, {"role": "user", "content": "Is Xbox better than PlayStation?"}, {"role": "assistant", "content": "I apologize, but I cannot provide personal opinions. My primary job is to assist you with any issues related to your Xbox device. Do you have any Xbox-related issues that need addressing?"}]}

Vorbereiten von Datasets aus realen Daten

Das Dataset sollte das ideale Verhalten des Modells zeigen. Sie können dieses Dataset auf der Grundlage des Chatverlaufs einer Ihrer Chatanwendungen erstellen. Wenn Sie echte Daten verwenden, sollten Sie einige Dinge beachten:

  • Entfernen Sie alle persönlichen oder sensiblen Informationen:
  • Konzentrieren Sie sich nicht nur darauf, einen großen Trainingsdatensatz zu erstellen, sondern stellen Sie auch sicher, dass Ihr Dataset eine Vielzahl von Beispielen enthält.

Sie können mehrere Gesprächssequenzen in einer einzigen Zeile in das Dataset aufnehmen. Wenn Sie nur bestimmte Nachrichten des Assistenten optimieren möchten, können Sie optional das Schlüssel-Wert-Paar weight verwenden. Wenn Sie die Gewichtung auf 0 festlegen, wird die Nachricht ignoriert, wenn Sie sie auf 1 festlegen, wird die Nachricht für das Training berücksichtigt.

Ein Beispiel für ein Dateiformat für einen mehrstufigen Chat mit Gewichtungen:

{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What's the capital of France?"}, {"role": "assistant", "content": "Paris", "weight": 0}, {"role": "user", "content": "Can you be more sarcastic?"}, {"role": "assistant", "content": "Paris, as if everyone doesn't know that already.", "weight": 1}]}

Generieren synthetischer Daten zur Feinabstimmung

Das manuelle Erstellen hochwertiger Schulungsdatensätze kann zeitaufwendig und teuer sein. Microsoft Foundry bietet synthetische Funktionen zur Datengenerierung , mit denen Sie Schulungsdaten aus Referenzdokumenten oder API-Spezifikationen erstellen können.

Die Generierung synthetischer Daten ist besonders nützlich, wenn:

  • Realdaten sind knapp oder schwer zu erfassen.
  • Sie müssen den Datenschutz beibehalten und dabei eine nützliche Struktur beibehalten.
  • Sie möchten domänenspezifische Daten aus vorhandenen Dokumenten oder Code generieren.
  • Sie möchten die Kosten im Vergleich zur manuellen Datensammlung reduzieren.

Auswählen synthetischer Datengeneratoren

Microsoft Foundry bietet zwei Arten synthetischer Datengeneratoren:

Einfacher Q&A Generator: Konvertiert Domänen-Dokumente (PDF, Markdown oder einfacher Text bis zu 20 MB) in feinabgestimmte Frage-Antwort-Paare. Sie können den Fragetyp konfigurieren:

  • Lange Antwort: Generiert Fragen, die eine analytische Begründung in der Modellantwort erfordern
  • Kurze Antwort: Generiert Fragen, die sich auf faktenbezogene Kürze konzentrieren

Toolnutzungs-Generator: Erstellt mehrstufige Gespräche mit Werkzeugaufrufen basierend auf Ihrer API-Oberfläche. Erfordert eine gültige OpenAPI 3.0.x- oder 3.1.x-Spezifikation (JSON-Format, bis zu 20 MB), die die APIs beschreibt, die das Modell als Tools aufrufen soll.

Generieren synthetischer Daten im Portal

So generieren Sie synthetische Daten in Microsoft Foundry:

  1. Navigieren Sie im Portal zu Daten > synthetischer Datengenerierung
  2. Wählen Sie Daten generieren
  3. Auswählen eines Aufgabentyps (einfache Q&A- oder Toolverwendung)
  4. Konfigurieren von Generierungsparametern bei Bedarf
  5. Hochladen Ihrer Referenzdatei
  6. Angeben der Anzahl der zu generierenden Beispiele (zwischen 50 und 1.000)
  7. Wählen Sie das Modell aus, das für die Datengenerierung verwendet werden soll.
  8. Optional eine 80/20-Train-Validierungsteilung aktivieren
  9. Auftrag übermitteln

Das generierte Dataset wird automatisch als JSONL-Dateien formatiert, die mit Microsoft Foundry-Feinabstimmungs-Workflows kompatibel sind. Sie können das Dataset zur Überprüfung herunterladen oder es direkt in das Feintuning verwenden.

Anwenden bewährter Methoden für synthetische Daten

So erzielen Sie die besten Ergebnisse bei der Verwendung synthetischer Daten:

  • Verwenden Sie qualitativ hochwertige Referenzdateien: Die Qualität Ihrer Referenzdatei wirkt sich direkt auf die generierten Daten aus. Verwenden Sie relevante, gut strukturierte Dokumente mit klarer Formatierung und vermeiden Sie übermäßiges Rauschen oder irrelevante Informationen.
  • Beginnen Sie klein, und iterieren Sie: Beginnen Sie mit einer kleineren Stichprobengröße, um die Qualität zu bewerten, und skalieren Sie dann nach der Überprüfung und Verfeinerung Ihres Ansatzes.
  • Kombinieren Sie echte Daten: Mischen Sie synthetische Daten nach Möglichkeit mit realen Beispielen, um die Modellleistung und Generalisierung zu verbessern.
  • Experimentieren Sie mit Hyperparametern: Wenn Sie synthetische Daten feineinstellen, müssen Sie die Lernraten und andere Parameter anders anpassen als mit realen Daten, um Überanpassung zu vermeiden.
  • Überwachen Sie die Leistung: Bewerten Sie regelmäßig Ihr fein abgestimmtes Modell auf realen Aufgaben, um sicherzustellen, dass es Ihren Anforderungen entspricht.

Wenn Sie Ihr Dataset für die Feinabstimmung eines Sprachmodells vorbereiten, sollten Sie ihr gewünschtes Modellverhalten verstehen, ein Dataset im JSONL-Format erstellen (manuell oder durch synthetische Generierung), und stellen Sie sicher, dass die Beispiele, die Sie einschließen, qualitativ hochwertig und vielfältig sind. Durch die sorgfältige Vorbereitung Ihres Datasets haben Sie eine höhere Chance, dass das fein abgestimmte Modell die Leistung Ihrer Chatanwendung verbessert.