Risorse/Addestramento del modello/Dalle chat agli esempi di addestramento

Concetto

Conversazioni multi-turno e pesi

Come una conversazione con diverse risposte dell'assistente diventa un dato di addestramento, i due formati utilizzati dai provider a tale scopo e l'effetto collaterale a cui prestare attenzione.

Capitolo 3Lettura di 3 min4 riferimenti

Il problema

Le conversazioni reali raramente consistono in una sola domanda e una sola risposta. Una chat di supporto potrebbe arrivare a dieci scambi: un saluto, una domanda di chiarimento, due risposte parziali e una soluzione finale. Alcune di queste risposte dell'assistente meritano di essere apprese, altre no. Un formato di addestramento deve esprimere sia il contesto completo sia la scelta di quali risposte contino.

Pesi per messaggio · un record
userSalveassistant · weight 0solo contestouserEsporti il mio report in PDFassistant · weight 1appreso
Nessun peso · un record per target
userSalveassistantappreso comunqueuserEsporti il mio report in PDFassistantappreso✂
La stessa chat, in cui è stata scelta solo la seconda risposta. Con i pesi, la prima risposta rimane contesto. Senza pesi, il record viene tagliato dopo la risposta scelta e ogni risposta dell'assistente al suo interno viene appresa.

Approccio 1: pesi per messaggio

Alcuni formati consentono a ogni messaggio dell'assistente di avere un peso. L'intera conversazione è un unico record; le risposte contrassegnate con weight: 1 vengono apprese, mentre quelle contrassegnate con weight: 0 fungono solo da contesto — lette, ma non valutate.

Pesi per messaggio
{"messages": [
  {"role": "user",      "content": "Hi"},
  {"role": "assistant", "content": "Hello! How can I help?", "weight": 0},
  {"role": "user",      "content": "Export my report as PDF"},
  {"role": "assistant", "content": "Open the report, click Export → PDF…", "weight": 1}
]}

Questa è l'opzione efficiente. Ogni record viene elaborato una volta, tutti i target in una conversazione ne condividono il contesto e la scelta di cosa apprendere è esatta.

Approccio 2: un record per target

I formati privi di pesi possono solo indicare: “ecco una conversazione; impara le risposte dell'assistente”. Per apprendere una risposta specifica, la conversazione viene interrotta subito dopo di essa e trascritta come record a sé stante. Una conversazione con tre obiettivi diventa tre record, ognuno più lungo del precedente.

Nessun peso — il record viene interrotto dopo la risposta scelta
{"messages": [
  {"role": "user",      "content": "Hi"},
  {"role": "assistant", "content": "Hello! How can I help?"},
  {"role": "user",      "content": "Export my report as PDF"},
  {"role": "assistant", "content": "Open the report, click Export → PDF…"}
]}

Ci sono due effetti collaterali. Qualsiasi risposta precedente dell'assistente all'interno di un record viene anch'essa appresa, poiché il formato non può contrassegnarla solo come contesto, incluse le risposte che non sono state scelte. Inoltre, la parte iniziale della conversazione appare in diversi record, quindi viene elaborata, e pagata, più volte.

Esempio di calcolo
  1. Una conversazione prevede quattro scambi di circa 250 token ciascuno. Le risposte 2 e 4 sono i target; le risposte 1 e 3 non lo sono.
  2. Con i pesi: un record di circa 1.000 token. Le risposte 2 e 4 vengono apprese una volta ciascuna; la 1 e la 3 fungono da contesto.
  3. Senza pesi: un record interrotto dopo la risposta 2 (circa 500 token) e uno interrotto dopo la risposta 4 (circa 1.000 token) — 1.500 token in totale, il 50% in più.
  4. Ogni risposta dell'assistente in un record viene appresa: le risposte 1 e 2 due volte, le risposte 3 e 4 una volta. Le risposte 1 e 3, anche se non scelte, vengono comunque apprese.

Quando è importante

La differenza è minima quando le conversazioni sono brevi o ogni risposta dell'assistente è valida. Diventa rilevante quando le conversazioni sono lunghe, quando le prime risposte sono scadenti (un primo tentativo errato corretto in seguito) o quando si omettono deliberatamente delle risposte. Con un provider che supporta i pesi si ottiene esattamente ciò che si è scelto; con uno che non li supporta, vale la pena correggere le risposte deboli prima dell'addestramento.

Errori comuni

  • Presumere che una risposta non contrassegnata non verrà mai appresa, a prescindere dal formato del provider.
  • Lasciare una risposta iniziale errata in una lunga conversazione quando il provider non può escluderla.
  • Confrontare il conteggio dei token tra provider senza tenere conto del contesto ripetuto.
  • Suddividere i record di una singola conversazione tra addestramento e convalida; per questo motivo la suddivisione viene effettuata per conversazione.

Riferimenti e letture di approfondimento

Le fonti esterne si aprono in una nuova scheda.

  1. 01SFT TrainerHugging Face TRL docs · huggingface.coAddestramento esclusivo sui turni dell'assistente all'interno di un'intera conversazione.
  2. 02Chat templatesHugging Face Transformers docs · huggingface.coCome le chat multi-turno vengono strutturate per un modello e come vengono individuati i turni dell'assistente.
  3. 03Supervised fine-tuningOpenAI API docs · developers.openai.comI dati di addestramento in formato chat di un provider, inclusi gli esempi multi-turno.
  4. 04Prepare supervised fine-tuning data for Gemini modelsGoogle Cloud documentation · docs.cloud.google.comIl formato dei contenuti con i ruoli dell'utente e del modello.

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