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.
| Colonne | Contenu | Rôle |
|---|---|---|
instruction | texte · court | prompt |
context | texte · long, souvent vide | contexte, ajouté sous la question |
response | texte · long | réponse |
category | texte court · peu de valeurs distinctes | non utilisé |
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
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.
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.
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.
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.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.
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.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.
### 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: …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
Affiché avec le motif. Un tweet étiqueté « joie » indique ce qu'est un texte, et non comment y répondre.
- 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.
- 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.
- Le jeu de données comporte quatre colonnes :
instruction(courte),context(longue, souvent vide),response(longue) etcategory(quelques étiquettes récurrentes). - Le format prompt et réponse est le plus adapté :
instruction→ prompt,response→ réponse,contextajouté sous la question. La colonnecategoryest ignorée. - 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.
- 01DatasetsHugging Face docs · huggingface.coComment les jeux de données du Hub sont organisés en configurations, répartitions, lignes et colonnes.
- 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.
- 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.
- 04Alpaca: A Strong, Replicable Instruction-Following ModelStanford CRFM, 2023 · crfm.stanford.eduD'où vient la disposition instruction, entrée, sortie.