Risorse/Addestramento del modello/Dataset

Concetto

Dataset pubblici da Hugging Face

Cosa contiene un dataset pubblico di Hugging Face, i formati comuni in cui si presentano tali dataset e perché alcuni dataset diventano chat, altri documenti e altri ancora non possono essere utilizzati affatto per l'addestramento.

Capitolo 4Lettura di 5 min4 riferimenti

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.

ColonnaCosa contieneRuolo
instructiontesto · breveprompt
contexttesto · lungo, spesso vuotocontesto, aggiunto sotto la domanda
responsetesto · lungorisposta
categorytesto breve · pochi valori distintinon utilizzato
Le colonne di databricks-dolly-15k e il ruolo che ciascuna svolge in una chat di addestramento: l'istruzione pone la domanda, la risposta fornisce la soluzione, il contesto viene aggiunto sotto la domanda e la categoria viene tralasciata. Il risultato è il formato prompt-e-risposta, con contesto.

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

ChatTipico es. HuggingFaceH4/ultrachat_200k, HuggingFaceH4/no_robots#

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.

Prompt e rispostaTipico es. openai/gsm8k, rajpurkar/squad, databricks/databricks-dolly-15k#

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.

Istruzione (Alpaca)Tipico es. tatsu-lab/alpaca#

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.

Una riga in stile 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.
PreferenzaTipico es. Anthropic/hh-rlhf#

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.

Una riga di preferenza
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.
TrascrizioneTipico es. timdettmers/openassistant-guanaco#

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.

Etichette comuni dei parlanti nei dataset di trascrizione
### 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 sempliceTipico es. HuggingFaceFW/fineweb#

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

Chat
una rigachat, prompt e risposta, Alpaca, preferenza o trascrizione→un esempio di addestramento
Testo semplice
righe consecutivepagine web, articoli, libri→documenti→pre-addestramento continuo o generazione di Q&A
Non supportato
testo + etichetta di classesolo immagini o audiotabelle di numeri

Mostrato con la motivazione. Un tweet etichettato come “gioia” indica cos'è un testo, non come rispondervi.

Ogni dataset pubblico finisce in una di tre destinazioni. Solo le righe con qualcosa da chiedere e qualcosa a cui rispondere diventano chat.
  • 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.
Importazione di databricks-dolly-15k
  1. Scegliete il dataset e la sua suddivisione di addestramento, circa 15.000 coppie di istruzioni/risposte scritte da esseri umani.
  2. Il dataset presenta quattro colonne: instruction (breve), context (lunga, spesso vuota), response (lunga) e category (una manciata di etichette ripetute).
  3. Prompt e risposta è la combinazione naturale: instruction → prompt, response → risposta, context aggiunto sotto la domanda. category viene tralasciata.
  4. 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.

  1. 01DatasetsHugging Face docs · huggingface.coCome i dataset dell'Hub sono organizzati in configurazioni, split, righe e colonne.
  2. 02Dataset CardsHugging Face Hub docs · huggingface.coCosa dovrebbe indicare la scheda di un dataset: fonti, licenza, uso previsto e limitazioni.
  3. 03Dataset formats and typesHugging Face TRL docs · huggingface.coLe strutture comuni dei dati di addestramento — conversazionale, prompt-completamento, preferenza — a confronto.
  4. 04Alpaca: A Strong, Replicable Instruction-Following ModelStanford CRFM, 2023 · crfm.stanford.eduDa dove deriva la struttura istruzione, input, output.

Trasformate settimane di lavoro esperto in pochi minuti

Scoprite come Scalata si adatta al vostro team, ai vostri dati e ai vostri Controlli.

Contatta il team vendite