Ressourcen/Modelltraining/Von Chats zu Trainingsbeispielen

Konzept

Multi-Turn-Unterhaltungen und Gewichtungen

Wie eine Unterhaltung mit mehreren Antworten des Assistenten zu Trainingsdaten wird, welche zwei Formate Anbieter dafür nutzen und auf welchen Nebeneffekt Sie achten sollten.

Kapitel 33 Min. Lesezeit4 Quellen

Das Problem

Echte Konversationen bestehen selten aus einer Frage und einer Antwort. Ein Support-Chat kann zehn Nachrichtenwechsel umfassen: eine Begrüßung, eine klärende Frage, zwei Teilantworten und eine endgültige Lösung. Einige dieser Assistentenantworten sind es wert, gelernt zu werden, andere nicht. Ein Trainingsformat muss sowohl den vollständigen Kontext als auch die Auswahl der relevanten Antworten ausdrücken.

Gewichtungen pro Nachricht · ein Datensatz
userHalloassistant · weight 0nur KontextuserExportiere meinen Bericht als PDFassistant · weight 1gelernt
Keine Gewichtungen · ein Datensatz pro Ziel
userHalloassistanttrotzdem gelerntuserExportiere meinen Bericht als PDFassistantgelernt✂
Derselbe Chat, bei dem nur die zweite Antwort ausgewählt wurde. Mit Gewichtungen bleibt die erste Antwort Kontext. Ohne Gewichtungen wird der Datensatz nach der ausgewählten Antwort abgeschnitten, und jede darin enthaltene Antwort des Assistenten wird gelernt.

Ansatz 1: Gewichtungen pro Nachricht

Einige Formate ermöglichen es, dass jede Assistentennachricht eine Gewichtung erhält. Die gesamte Konversation ist ein Datensatz; Antworten, die mit weight: 1 markiert sind, werden gelernt, und Antworten mit weight: 0 dienen nur als Kontext — sie werden gelesen, aber nicht bewertet.

Gewichtungen pro Nachricht
{"messages": [
  {"role": "user",      "content": "Hi"},
  {"role": "assistant", "content": "Hello! How can I help?", "weight": 0},
  {"role": "user",      "content": "Export my report as PDF"},
  {"role": "assistant", "content": "Open the report, click Export → PDF…", "weight": 1}
]}

Dies ist die effiziente Option. Jeder Datensatz wird einmal verarbeitet, alle Ziele in einer Konversation teilen sich deren Kontext, und die Auswahl dessen, was gelernt werden soll, ist exakt.

Ansatz 2: Ein Datensatz pro Ziel

Formate ohne Gewichtungen können nur aussagen: „Hier ist eine Konversation; lerne ihre Assistentenantworten“. Um eine bestimmte Antwort zu lernen, wird die Konversation direkt danach abgeschnitten und als eigener Datensatz geschrieben. Eine Konversation mit drei Zielen wird zu drei Datensätzen, von denen jeder länger ist als der vorherige.

Keine Gewichtungen — der Datensatz wird nach der gewählten Antwort abgeschnitten
{"messages": [
  {"role": "user",      "content": "Hi"},
  {"role": "assistant", "content": "Hello! How can I help?"},
  {"role": "user",      "content": "Export my report as PDF"},
  {"role": "assistant", "content": "Open the report, click Export → PDF…"}
]}

Es gibt zwei Nebeneffekte. Jede frühere Antwort des Assistenten innerhalb eines Datensatzes wird ebenfalls gelernt, da das Format sie nicht nur als Kontext markieren kann — einschließlich der Antworten, die Sie nicht ausgewählt haben. Zudem taucht der frühe Teil der Unterhaltung in mehreren Datensätzen auf, sodass er mehrfach verarbeitet und bezahlt wird.

Ein Rechenbeispiel
  1. Eine Konversation besteht aus vier Nachrichtenwechseln von jeweils etwa 250 Token. Die Antworten 2 und 4 sind Ziele; die Antworten 1 und 3 nicht.
  2. Mit Gewichtungen: ein Datensatz von etwa 1.000 Token. Die Antworten 2 und 4 werden jeweils einmal gelernt; 1 und 3 dienen als Kontext.
  3. Ohne Gewichtungen: ein Datensatz, der nach Antwort 2 abgeschnitten wird (etwa 500 Token), und einer nach Antwort 4 (etwa 1.000 Token) — insgesamt 1.500 Token, 50 % mehr.
  4. Jede Assistentenantwort in einem Datensatz wird gelernt: die Antworten 1 und 2 zweimal, die Antworten 3 und 4 einmal. Die Antworten 1 und 3, die Sie nicht ausgewählt haben, werden trotzdem gelernt.

Wann es darauf ankommt

Der Unterschied ist gering, wenn Unterhaltungen kurz sind oder jede Antwort des Assistenten gut ist. Er fällt jedoch ins Gewicht, wenn Unterhaltungen lang sind, wenn frühe Antworten mangelhaft sind (ein falscher erster Versuch, der später korrigiert wurde) oder wenn Sie Antworten absichtlich weggelassen haben. Bei einem Anbieter, der Gewichtungen unterstützt, erhalten Sie genau das, was Sie ausgewählt haben; bei einem Anbieter ohne diese Funktion lohnt es sich, die schwachen Antworten vor dem Training zu korrigieren.

Häufige Fehler

  • Anzunehmen, dass eine nicht markierte Antwort niemals gelernt wird, unabhängig vom Format des Anbieters.
  • Eine falsche frühe Antwort in einer langen Konversation zu belassen, wenn der Anbieter sie nicht ausschließen kann.
  • Token-Anzahlen zwischen Anbietern zu vergleichen, ohne wiederholten Kontext zu berücksichtigen.
  • Die Datensätze einer Konversation zwischen Training und Validierung aufzuteilen; aus diesem Grund erfolgt die Aufteilung nach Konversation.

Quellen und weiterführende Literatur

Externe Quellen werden in einem neuen Tab geöffnet.

  1. 01SFT TrainerHugging Face TRL docs · huggingface.coTraining ausschließlich anhand der Antworten des Assistenten innerhalb einer gesamten Unterhaltung.
  2. 02Chat templatesHugging Face Transformers docs · huggingface.coWie Multi-Turn-Chats für ein Modell aufbereitet werden und wie die Antworten des Assistenten lokalisiert werden.
  3. 03Supervised fine-tuningOpenAI API docs · developers.openai.comDie Trainingsdaten eines Anbieters im Chat-Format, einschließlich Multi-Turn-Beispielen.
  4. 04Prepare supervised fine-tuning data for Gemini modelsGoogle Cloud documentation · docs.cloud.google.comDas Inhaltsformat mit Benutzer- und Modellrollen.

Verwandeln Sie wochenlange Expertenarbeit in Minuten

Erfahren Sie, wie Scalata zu Ihrem Team, Ihren Daten und Ihren Kontrollen passt.

Vertrieb kontaktieren