Cosa contiene un dataset pubblico
L'Hugging Face Hub ospita centinaia di migliaia di dataset pubblici, da poche centinaia di righe a miliardi. Un dataset è una tabella: ogni riga è un elemento, ogni colonna un campo. I dataset più grandi sono divisi in configurazioni (sottoinsiemi, come una lingua) e split (di solito addestramento, convalida e test). L'Hub non stabilisce il significato delle colonne, quindi ogni dataset è strutturato dai suoi autori: un elenco di turni di chat in uno, una colonna per le domande e una per le risposte in un altro, un'intera pagina web per riga in un terzo.
Solo alcune di queste strutture possono diventare chat di addestramento. Un dataset di matematica con una domanda e una risposta elaborata può esserlo; un dataset di tweet etichettati con un'emozione no, perché indica cos'è un testo, non come rispondervi. Prima dell'importazione, Scalata esamina lo split selezionato e suggerisce i formati adatti.
Quale colonna pone la domanda e quale risponde
Per diventare una chat di addestramento, ogni riga deve contenere una parte pronunciata dall'utente e una parte di risposta dell'assistente. Nella maggior parte dei dataset i nomi delle colonne sono esplicativi: prompt, domanda, istruzione o query da un lato; risposta, output o completamento dall'altro. Alcuni dataset aggiungono una colonna di contesto — un passaggio a cui si riferisce la domanda, come in SQuAD — o un prompt di sistema. Altre colonne, come un ID, un indirizzo web o una categoria, descrivono la riga e non hanno alcun ruolo nella chat.
| Colonna | Cosa contiene | Ruolo |
|---|---|---|
instruction | testo · breve | prompt |
context | testo · lungo, spesso vuoto | contesto, aggiunto sotto la domanda |
response | testo · lungo | risposta |
category | testo breve · pochi valori distinti | non utilizzato |
Scalata suggerisce i formati adatti al dataset scelto, con una breve motivazione per ciascuno. Se si preferisce procedere diversamente, Scegli colonne manualmente consente di selezionare qualsiasi formato e colonna; le righe non adatte vengono ignorate.
I formati
Una colonna contiene un elenco di turni, come coppie role/content o nello stile ShareGPT con from/value. È il formato più simile a una chat di addestramento; le conversazioni multi-turno rimangono tali.
Una colonna per la domanda e una per la risposta, con l'opzione di una colonna di contesto aggiunta sotto la domanda. Ogni riga diventa una chat a turno singolo.
Un'istruzione (instruction), un input opzionale a cui si applica (input) e un output (output). Prende il nome dal dataset Alpaca di Stanford, che ha reso popolare questa struttura. L'istruzione e l'input insieme diventano il messaggio dell'utente.
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.Una risposta migliore (chosen) e una peggiore (rejected) allo stesso prompt, oppure due intere conversazioni che differiscono solo alla fine. Queste righe diventano coppie di preferenze per la DPO anziché singole risposte.
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.Una colonna di testo contiene un'intera conversazione con le etichette degli interlocutori, che Scalata suddivide in turni. Il testo che precede la prima etichetta diventa il prompt di sistema.
### 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: …Testo lungo senza domande, risposte o etichette degli interlocutori: pagine web, articoli, libri. Non essendoci nulla a cui rispondere, non si tratta di addestramento per chat, ma risulta utile per il pre-addestramento continuo.
Tre risultati
Mostrato con la motivazione. Un tweet etichettato come “gioia” indica cos'è un testo, non come rispondervi.
- Chat. Ogni riga diventa un esempio, pronto per l'addestramento supervisionato (o per la DPO, nel caso delle righe di preferenza).
- Testo semplice. Le righe vengono raggruppate in documenti e aggiunte ai Documenti del dataset, pronte per il pre-addestramento continuo o per generare domande e risposte a partire da esse.
- Non supportato, con il motivo. I casi tipici sono i dati di classificazione (un breve testo e un'etichetta, come cardiffnlp/tweet_eval), solo immagini o audio, oppure tabelle di numeri.
- Scegliete il dataset e la sua suddivisione di addestramento, circa 15.000 coppie di istruzioni/risposte scritte da esseri umani.
- Il dataset presenta quattro colonne:
instruction(breve),context(lunga, spesso vuota),response(lunga) ecategory(una manciata di etichette ripetute). - Prompt e risposta è la combinazione naturale:
instruction→ prompt,response→ risposta,contextaggiunto sotto la domanda.categoryviene tralasciata. - Importando 2.000 righe, queste diventano 2.000 esempi a turno singolo. Una successiva importazione di 5.000 righe aggiungerà solo le 3.000 nuove.
Come utilizzare al meglio i dati pubblici
- Legga prima la scheda del dataset. Indica la licenza, la provenienza dei dati e i problemi noti. Alcuni dataset potrebbero non essere utilizzabili a fini commerciali.
- Preferisca la pertinenza alle dimensioni. Un dataset pubblico insegna il proprio stile e i propri argomenti. Qualche migliaio di righe simili al Suo caso d'uso di solito è più utile di un enorme dataset generico.
- Mescoli con i Suoi dati. Le chat pubbliche sono una buona base per il comportamento generale; le Sue chat insegnano ciò che è specifico per Lei.
- Esamini alcuni esempi importati prima dell'addestramento, per confermare che i ruoli siano stati assegnati come previsto.
Errori comuni
- Importare un dataset di classificazione e aspettarsi che insegni al modello come rispondere.
- Non leggere la licenza sulla scheda del dataset prima di addestrare un modello che verrà utilizzato a fini commerciali.
- Forzare una mappatura manuale che inserisce la colonna della risposta nel ruolo del prompt, in modo che il modello impari a rispondere con delle domande.
- Importare un enorme dataset generico e sommergere le poche centinaia di chat che descrivono l'attività reale.
- Utilizzare lo split di test di un dataset pubblico come dati di addestramento e poi effettuare la valutazione su benchmark costruiti a partire da esso.
Riferimenti e letture di approfondimento
Le fonti esterne si aprono in una nuova scheda.
- 01DatasetsHugging Face docs · huggingface.coCome i dataset dell'Hub sono organizzati in configurazioni, split, righe e colonne.
- 02Dataset CardsHugging Face Hub docs · huggingface.coCosa dovrebbe indicare la scheda di un dataset: fonti, licenza, uso previsto e limitazioni.
- 03Dataset formats and typesHugging Face TRL docs · huggingface.coLe strutture comuni dei dati di addestramento — conversazionale, prompt-completamento, preferenza — a confronto.
- 04Alpaca: A Strong, Replicable Instruction-Following ModelStanford CRFM, 2023 · crfm.stanford.eduDa dove deriva la struttura istruzione, input, output.