Ressources/Entraînement du modèle/Jeux de données

Concept

Jeux de données publics de Hugging Face

Ce que contient un jeu de données public Hugging Face, les formats courants dans lesquels ces jeux de données se présentent, et pourquoi certains jeux de données deviennent des conversations, d'autres des documents, et d'autres encore ne peuvent pas du tout être utilisés pour l'entraînement.

Chapitre 45 min de lecture4 références

Ce que contient un jeu de données public

Le Hugging Face Hub héberge des centaines de milliers de jeux de données publics, allant de quelques centaines à des milliards de lignes. Un jeu de données est un tableau : chaque ligne correspond à un élément, chaque colonne à un champ. Les jeux de données plus volumineux sont divisés en configurations (des sous-ensembles, comme une langue) et en répartitions (généralement entraînement, validation et test). Le Hub n'impose pas la signification des colonnes, chaque jeu de données est donc structuré par ses auteurs : une liste de tours de conversation dans l'un, une colonne de questions et une colonne de réponses dans un autre, ou encore une page web entière par ligne dans un troisième.

Seules certaines de ces structures peuvent devenir des conversations d'entraînement. Un jeu de données mathématiques avec une question et une réponse détaillée le peut ; un jeu de données de tweets étiquetés avec une émotion ne le peut pas, car il indique ce qu'est un texte, et non comment y répondre. Avant l'importation, Scalata examine la répartition que vous choisissez et suggère les formats adaptés.

Quelle colonne pose la question et laquelle y répond

Pour devenir une conversation d'entraînement, chaque ligne doit comporter une partie prononcée par l'utilisateur et une partie répondue par l'assistant. Dans la plupart des jeux de données, les noms des colonnes sont explicites : prompt, question, instruction ou requête d'un côté ; réponse, sortie ou complétion de l'autre. Certains jeux de données ajoutent une colonne contexte — un passage sur lequel porte la question, comme dans SQuAD — ou un prompt système. D'autres colonnes, telles qu'un identifiant, une adresse web ou une catégorie, décrivent la ligne et ne jouent aucun rôle dans la conversation.

ColonneContenuRôle
instructiontexte · courtprompt
contexttexte · long, souvent videcontexte, ajouté sous la question
responsetexte · longréponse
categorytexte court · peu de valeurs distinctesnon utilisé
Les colonnes de databricks-dolly-15k et le rôle que chacune joue dans une conversation d'entraînement : l'instruction pose la question, la réponse y répond, le contexte est ajouté sous la question et la catégorie est ignorée. Le résultat est le format prompt-réponse, avec contexte.

Scalata suggère les formats qui correspondent au jeu de données que vous choisissez, avec une brève justification pour chacun. Si vous préférez, Choisir les colonnes manuellement vous permet de sélectionner n'importe quel format et n'importe quelles colonnes ; les lignes qui ne correspondent pas sont ignorées.

Les formats

ChatTypique ex. HuggingFaceH4/ultrachat_200k, HuggingFaceH4/no_robots#

Une colonne contient une liste de tours de parole, sous forme de paires role/content ou dans le style ShareGPT avec from/value. C'est le format le plus proche d'un chat d'entraînement ; les conversations à plusieurs tours le restent.

Prompt et réponseTypique ex. openai/gsm8k, rajpurkar/squad, databricks/databricks-dolly-15k#

Une colonne pour la question et une pour la réponse, avec éventuellement une colonne de contexte ajoutée sous la question. Chaque ligne devient un chat à un seul tour.

Instruction (Alpaca)Typique ex. tatsu-lab/alpaca#

Une instruction, un input facultatif auquel elle s'applique, et un output. Nommé d'après le jeu de données Alpaca de Stanford, qui a popularisé cette structure. L'instruction et l'input forment ensemble le message de l'utilisateur.

Une ligne de type Alpaca
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.
PréférenceTypique ex. Anthropic/hh-rlhf#

Une meilleure réponse (chosen) et une moins bonne (rejected) au même prompt, ou deux conversations complètes qui ne diffèrent qu'à la fin. Ces lignes deviennent des paires de préférences pour le DPO plutôt que des réponses uniques.

Une ligne de préférence
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.
TranscriptionTypique ex. timdettmers/openassistant-guanaco#

Une colonne de texte contient une conversation entière avec les étiquettes des interlocuteurs, que Scalata divise en tours de parole. Le texte précédant la première étiquette devient le prompt système.

Étiquettes d'interlocuteurs courantes dans les jeux de données de transcription
### 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: …
Texte brutTypique ex. HuggingFaceFW/fineweb#

Du texte long sans questions, réponses ni étiquettes d'interlocuteurs : pages web, articles, livres. N'ayant rien à quoi répondre, il ne s'agit pas d'un entraînement au chat, mais cela reste utile pour le pré-entraînement continu.

Trois résultats

Chats
une lignechat, prompt et réponse, Alpaca, préférence ou transcription→un exemple d'entraînement
Texte brut
lignes consécutivespages web, articles, livres→documents→pré-entraînement continu ou génération de questions-réponses
Non pris en charge
texte + étiquette de classeimages ou audio uniquementtableaux de nombres

Affiché avec le motif. Un tweet étiqueté « joie » indique ce qu'est un texte, et non comment y répondre.

Chaque jeu de données public aboutit à l'un de ces trois emplacements. Seules les lignes contenant une question et une réponse deviennent des chats.
  • Chats. Chaque ligne devient un exemple, prêt pour l'entraînement supervisé (ou le DPO, pour les lignes de préférence).
  • Texte brut. Les lignes sont regroupées en documents et ajoutées aux Documents du jeu de données, prêtes pour le pré-entraînement continu ou pour générer des questions et des réponses à partir de celles-ci.
  • Non pris en charge, avec le motif. Les cas typiques sont les données de classification (un texte court et une étiquette, comme cardiffnlp/tweet_eval), les images ou l'audio uniquement, ou les tableaux de chiffres.
Importation de databricks-dolly-15k
  1. Vous choisissez le jeu de données et sa partition d'entraînement, soit environ 15 000 paires d'instructions/réponses rédigées par des humains.
  2. Le jeu de données comporte quatre colonnes : instruction (courte), context (longue, souvent vide), response (longue) et category (quelques étiquettes récurrentes).
  3. Le format prompt et réponse est le plus adapté : instruction → prompt, response → réponse, context ajouté sous la question. La colonne category est ignorée.
  4. Vous importez 2 000 lignes. Elles deviennent 2 000 exemples à un seul tour. Une importation ultérieure de 5 000 lignes n'ajoutera que les 3 000 nouvelles.

Comment bien utiliser les données publiques

  • Lisez d'abord la fiche du jeu de données. Elle indique la licence, la provenance des données et les problèmes connus. Certains jeux de données ne peuvent pas être utilisés à des fins commerciales.
  • Privilégiez la pertinence à la quantité. Un jeu de données public enseigne son propre style et ses propres sujets. Quelques milliers de lignes qui ressemblent à votre cas d'usage sont généralement plus utiles qu'un immense jeu de données généraliste.
  • Mélangez avec vos propres données. Les conversations publiques constituent une bonne base pour le comportement général ; vos propres conversations enseignent ce qui vous est spécifique.
  • Examinez quelques exemples importés avant l'entraînement, pour confirmer que les rôles ont été attribués comme vous le souhaitiez.

Erreurs courantes

  • Importer un jeu de données de classification en espérant qu'il apprenne au modèle comment répondre.
  • Ne pas lire la licence sur la fiche du jeu de données avant d'entraîner un modèle que vous utiliserez à des fins commerciales.
  • Forcer un mappage manuel qui place la colonne de réponse dans le rôle du prompt, de sorte que le modèle apprenne à répondre par des questions.
  • Importer un immense jeu de données généraliste et noyer les quelques centaines de chats qui décrivent votre véritable tâche.
  • Utiliser le split de test d'un jeu de données public comme données d'entraînement, puis évaluer sur des benchmarks construits à partir de celui-ci.

Références et lectures complémentaires

Les sources externes s'ouvrent dans un nouvel onglet.

  1. 01DatasetsHugging Face docs · huggingface.coComment les jeux de données du Hub sont organisés en configurations, répartitions, lignes et colonnes.
  2. 02Dataset CardsHugging Face Hub docs · huggingface.coCe qu'une fiche de jeu de données doit vous indiquer : sources, licence, utilisation prévue et limites.
  3. 03Dataset formats and typesHugging Face TRL docs · huggingface.coLes structures courantes des données d'entraînement — conversationnel, prompt-complétion, préférence — côte à côte.
  4. 04Alpaca: A Strong, Replicable Instruction-Following ModelStanford CRFM, 2023 · crfm.stanford.eduD'où vient la disposition instruction, entrée, sortie.

Transformez des semaines de travail d'expert en quelques minutes

Découvrez comment Scalata s'adapte à votre équipe, à vos données et à vos contrôles.

Contacter le service commercial