Was ein öffentlicher Datensatz enthält
Der Hugging Face Hub hostet Hunderttausende öffentlicher Datensätze, von wenigen Hundert bis zu Milliarden von Zeilen. Ein Datensatz ist eine Tabelle: Jede Zeile ist ein Element, jede Spalte ein Feld. Größere Datensätze werden in Konfigurationen (Teilmengen, wie z. B. eine Sprache) und Splits (meistens Training, Validierung und Test) unterteilt. Der Hub schreibt nicht vor, was die Spalten bedeuten, daher wird jeder Datensatz von seinen Autoren gestaltet: eine Liste von Chat-Runden im einen, eine Frage- und eine Antwortspalte im anderen, eine ganze Webseite pro Zeile in einem dritten.
Nur einige dieser Formate können zu Trainings-Chats werden. Ein Mathematik-Datensatz mit einer Frage und einem Lösungsweg kann das; ein Datensatz von Tweets, die mit einer Emotion versehen sind, nicht, da er angibt, was ein Text ist, und nicht, wie man darauf antwortet. Vor dem Import prüft Scalata den von Ihnen gewählten Split und schlägt die passenden Formate vor.
Welche Spalte fragt und welche antwortet
Um zu einem Trainings-Chat zu werden, benötigt jede Zeile einen Teil, den der Nutzer sagt, und einen Teil, den der Assistent antwortet. In den meisten Datensätzen verraten die Spaltennamen dies bereits: Prompt, Frage, Anweisung oder Abfrage auf der einen Seite; Reaktion, Antwort, Ausgabe oder Vervollständigung auf der anderen. Einige Datensätze fügen eine Kontext-Spalte hinzu — einen Textabschnitt, auf den sich die Frage bezieht, wie in SQuAD — oder einen System-Prompt. Andere Spalten, wie eine ID, eine Webadresse oder eine Kategorie, beschreiben die Zeile und spielen im Chat keine Rolle.
| Spalte | Inhalt | Rolle |
|---|---|---|
instruction | Text · kurz | Prompt |
context | Text · lang, oft leer | Kontext, unter der Frage hinzugefügt |
response | Text · lang | Antwort |
category | Kurzer Text · wenige unterschiedliche Werte | Nicht verwendet |
Scalata schlägt die Formate vor, die zu dem von Ihnen gewählten Datensatz passen, jeweils mit einer kurzen Begründung. Wenn Sie es besser wissen, können Sie mit Spalten manuell auswählen jedes beliebige Format und jede beliebige Spalte wählen; Zeilen, die nicht passen, werden übersprungen.
Die Formate
Eine Spalte enthält eine Liste von Turns, als role/content-Paare oder im ShareGPT-Stil mit from/value. Dies kommt einem Trainings-Chat am nächsten; Multi-Turn-Unterhaltungen bleiben Multi-Turn.
Eine Spalte für Fragen und eine für Antworten, optional mit einer Kontext-Spalte, die unter der Frage hinzugefügt wird. Jede Zeile wird zu einem Single-Turn-Chat.
Eine instruction, ein optionaler input, auf den sie sich bezieht, und ein output. Benannt nach dem Alpaca-Datensatz von Stanford, der dieses Format populär gemacht hat. Instruction und Input werden zusammen zur Benutzernachricht.
instruction: Summarise the customer's complaint in one sentence.
input: I ordered the blue model on the 3rd, was charged twice and still have no tracking number.
output: The customer was charged twice for an order that has not shipped.Eine bessere (chosen) und eine schlechtere (rejected) Antwort auf denselben Prompt, oder zwei vollständige Unterhaltungen, die sich nur am Ende unterscheiden. Diese Zeilen werden zu Präferenzpaaren für DPO anstelle von einzelnen Antworten.
prompt: Can I change my delivery address after ordering?
chosen: Yes, until the parcel ships. Open Orders → your order → Edit address…
rejected: Please contact support.Eine Textspalte enthält eine vollständige Unterhaltung mit Sprecher-Labels, die Scalata in Turns aufteilt. Der Text vor dem ersten Label wird zum System-Prompt.
### Human: … ### Assistant: …
Human: … Assistant: …
User: … Assistant: …
<|system|> … <|user|> … <|assistant|> … (also <|im_start|>user)
[INST] <<SYS>> … <</SYS>> … [/INST] … (Llama 2 style)
### Instruction: … ### Input: … ### Response: …
Question: … Answer: …Langer Text ohne Fragen, Antworten oder Sprecher-Labels: Webseiten, Artikel, Bücher. Da es nichts zu beantworten gibt, eignet sich dies nicht für das Chat-Training, ist aber nützlich für fortgesetztes Pre-Training.
Drei Ergebnisse
Mit Begründung dargestellt. Ein als „Freude“ gekennzeichneter Tweet sagt aus, was ein Text ist, nicht, wie man darauf antwortet.
- Chats. Jede Zeile wird zu einem Beispiel, bereit für überwachtes Training (oder DPO, bei Präferenz-Zeilen).
- Reiner Text. Zeilen werden zu Dokumenten zusammengefasst und den Dokumenten des Datensatzes hinzugefügt, bereit für fortgesetztes Pre-Training oder um daraus Fragen und Antworten zu generieren.
- Nicht unterstützt, mit entsprechender Begründung. Typische Fälle sind Klassifizierungsdaten (ein kurzer Text und ein Label, wie cardiffnlp/tweet_eval), reine Bild- oder Audiodaten oder Zahlentabellen.
- Sie wählen den Datensatz und seinen Train-Split aus, etwa 15.000 von Menschen verfasste Anweisungs-/Antwort-Paare.
- Der Datensatz hat vier Spalten:
instruction(kurz),context(lang, oft leer),response(lang) undcategory(eine Handvoll wiederholter Labels). - Prompt und Antwort passen hier am besten:
instruction→ Prompt,response→ Antwort,contextwird unter der Frage hinzugefügt.categorywird ausgelassen. - Sie importieren 2.000 Zeilen. Diese werden zu 2.000 Single-Turn-Beispielen. Ein späterer erneuter Import mit 5.000 Zeilen fügt nur die 3.000 neuen hinzu.
Wie man öffentliche Daten richtig nutzt
- Lesen Sie zuerst die Dataset Card. Sie gibt Auskunft über die Lizenz, die Herkunft der Daten und bekannte Probleme. Einige Datensätze dürfen nicht kommerziell genutzt werden.
- Bevorzugen Sie Passgenauigkeit vor Größe. Ein öffentlicher Datensatz vermittelt seinen eigenen Stil und seine eigenen Themen. Ein paar Tausend Zeilen, die Ihrem Anwendungsfall ähneln, helfen meist mehr als ein riesiger, allgemeiner Datensatz.
- Mischen Sie mit Ihren eigenen Daten. Öffentliche Chats sind eine gute Basis für allgemeines Verhalten; Ihre eigenen Chats vermitteln das, was für Sie spezifisch ist.
- Sehen Sie sich einige importierte Beispiele an, bevor Sie mit dem Training beginnen, um sicherzustellen, dass die Rollen dort gelandet sind, wo Sie es erwartet haben.
Häufige Fehler
- Einen Klassifizierungsdatensatz importieren und erwarten, dass er dem Modell beibringt, wie man antwortet.
- Die Lizenz auf der Dataset Card nicht lesen, bevor ein Modell trainiert wird, das Sie kommerziell nutzen möchten.
- Ein manuelles Mapping erzwingen, das die Antwortspalte in die Prompt-Rolle setzt, sodass das Modell lernt, mit Fragen zu antworten.
- Einen riesigen allgemeinen Datensatz importieren und die wenigen hundert Chats übertönen, die Ihre eigentliche Aufgabe beschreiben.
- Den Test-Split eines öffentlichen Datensatzes als Trainingsdaten verwenden und dann anhand von Benchmarks evaluieren, die darauf basieren.
Quellen und weiterführende Literatur
Externe Quellen werden in einem neuen Tab geöffnet.
- 01DatasetsHugging Face docs · huggingface.coWie Hub-Datensätze in Konfigurationen, Splits, Zeilen und Spalten organisiert sind.
- 02Dataset CardsHugging Face Hub docs · huggingface.coWas Ihnen eine Dataset Card verraten sollte: Quellen, Lizenz, Verwendungszweck und Einschränkungen.
- 03Dataset formats and typesHugging Face TRL docs · huggingface.coDie gängigen Formate für Trainingsdaten — konversationell, Prompt-Vervollständigung, Präferenz — im direkten Vergleich.
- 04Alpaca: A Strong, Replicable Instruction-Following ModelStanford CRFM, 2023 · crfm.stanford.eduWoher das Layout mit Anweisung, Eingabe und Ausgabe stammt.