RFT su Nova 2.0 - Amazon SageMaker AI

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

RFT su Nova 2.0

I dati di addestramento RFT seguono il formato conversazionale OpenAI. Ogni esempio di addestramento è un oggetto JSON contenente messaggi, risposte di riferimento e definizioni di strumenti opzionali. Questa sezione fornisce indicazioni sulla preparazione di dati di addestramento efficaci per RFT su Nova 2.0.

Formato e struttura dei dati

Ogni esempio di addestramento è un oggetto JSON contenente quanto segue:

  • messaggi: una serie di turni di conversazione che utilizzano ruoli di sistema, utente e, facoltativamente, assistente

  • reference_answer: risultato previsto o criteri di valutazione per il calcolo della ricompensa

  • strumenti (opzionale): serie di definizioni di funzioni disponibili per il modello

  • id (opzionale): identificatore univoco per il tracciamento e la deduplicazione

Ogni esempio deve essere su una sola riga del file JSONL, con un oggetto JSON per riga.

L'esempio seguente mostra un problema di chimica con una risposta di riferimento contenente valori di verità fondamentali:

{ "id": "chem-001", "messages": [ { "role": "system", "content": "You are a helpful chemistry assistant" }, { "role": "user", "content": "Predict hydrogen bond donors and acceptors for this SMILES: CCN(CC)CCC(=O)c1sc(N)nc1C" } ], "reference_answer": { "donor_bond_counts": 2, "acceptor_bond_counts": 4, "explanation": "Calculated using Lipinski's rule of five: N-H groups (2 donors), N and O atoms with lone pairs (4 acceptors)" } }
Nota

Il reference_answer contiene valori di verità fondamentali calcolati utilizzando regole specifiche del dominio. La tua funzione di ricompensa confronta i valori previsti del modello con questi valori di riferimento per calcolare un punteggio di ricompensa.

L'esempio seguente mostra un problema di matematica con passaggi di soluzione:

{ "id": "math-001", "messages": [ { "role": "system", "content": "You are a math tutor" }, { "role": "user", "content": "Solve: 2x + 5 = 13" } ], "reference_answer": { "solution": "x = 4", "steps": ["2x = 13 - 5", "2x = 8", "x = 4"] } }

L'esempio seguente mostra l'utilizzo dello strumento con il comportamento previsto:

{ "id": "tool-001", "messages": [ { "role": "system", "content": "You are a helpful game master assistant" }, { "role": "user", "content": "Generate a strength stat for a warrior character. Apply a +2 racial bonus modifier." } ], "tools": [ { "type": "function", "function": { "name": "StatRollAPI", "description": "Generates character stats by rolling 4d6, dropping the lowest die result, and applying a modifier.", "parameters": { "type": "object", "properties": { "modifier": { "description": "An integer representing the modifier to apply to the total of the stat roll.", "type": "integer" } }, "required": ["modifier"] } } } ], "reference_answer": { "tool_called": "StatRollAPI", "tool_parameters": { "modifier": 2 }, "expected_behavior": "Call StatRollAPI with modifier=2 and return the calculated stat value" } }

Descrizioni dei campi

Campo

Description

Note aggiuntive

Richiesto

id

Identificatore univoco per questo esempio RFT

Stringa (ad esempio, «sample-001"). Utile per il tracciamento e la deduplicazione.

No

messages

Elenco ordinato di messaggi di chat che definiscono il prompt e il contesto

Array di oggetti . Il modello li vede in ordine. In genere inizia con un messaggio di sistema, quindi l'utente.

messages [] .role

Chi sta parlando nel messaggio

Valori comuni: «sistema», «utente» (a volte «assistente» in altri contesti)

No

messaggi [] .content

Il contenuto testuale del messaggio

Stringa semplice. Per il sistema sono le istruzioni, per l'utente è l'attività o l'input.

No

strumenti

Specifiche dell'utensile disponibili per il modello durante questo esempio

Array. Ogni elemento definisce l'interfaccia e i metadati di uno strumento. I tipi possono includere «funzione» o «interno».

risposta_riferimento

L'output del modello previsto per questo esempio

Stringa o oggetto a seconda dell'attività. Utilizzato come obiettivo per la valutazione o la formazione.

No

Nota

Eventuali campi personalizzati aggiuntivi (ad esempio, task_id, difficy_level, context_data) non vengono convalidati e verranno passati alla funzione di ricompensa come metadati.

Proprietà aggiuntive

L'impostazione «AdditionalProperties»: true consente di includere campi personalizzati oltre ai requisiti di base dello schema, offrendo la flessibilità necessaria per aggiungere tutti i dati necessari alla funzione di ricompensa per una corretta valutazione.

Campi aggiuntivi comuni

È possibile includere i seguenti tipi di campi aggiuntivi:

Metadati:

  • task_id: identificatore univoco per il tracciamento

  • difficily_level: indicatore di complessità del problema

  • dominio: area tematica o categoria

  • expected_reasoning_steps: numero di passaggi nella soluzione

Criteri di valutazione:

  • evaluation_criteria: Rubriche di valutazione specifiche

  • custom_scoring_weights: importanza relativa dei diversi aspetti

  • context_data: informazioni di base sul problema

  • external_references: collegamenti alla documentazione o alle risorse pertinenti

Esempio con proprietà aggiuntive

L'esempio seguente include campi di metadati personalizzati:

{ "id": "algebra_001", "messages": [ { "role": "system", "content": "You are a math tutor" }, { "role": "user", "content": "Solve: 2x + 5 = 13" } ], "reference_answer": { "solution": "x = 4", "steps": ["2x = 13 - 5", "2x = 8", "x = 4"] }, "task_id": "algebra_001", "difficulty_level": "easy", "domain": "algebra", "expected_reasoning_steps": 3 }

Suggerimenti sulle dimensioni dei set di dati

Punto di partenza

Inizia con le seguenti dimensioni minime dei set di dati:

  • Almeno 100 esempi di formazione

  • Minimo 100 esempi di valutazione

Dai priorità ai dati di input di alta qualità e a una funzione di ricompensa affidabile che viene eseguita in modo coerente sulle risposte del modello.

Approccio incentrato sulla valutazione

Prima di investire nella formazione RFT su larga scala, valuta le prestazioni di base del tuo modello:

  • Prestazioni elevate (ricompensa superiore al 95%): la tecnologia RFT potrebbe non essere necessaria, in quanto il modello offre già buone prestazioni

  • Prestazioni molto scarse (ricompensa dello 0%): passate innanzitutto a SFT per stabilire le funzionalità di base

  • Prestazioni moderate: la tecnologia RFT è probabilmente appropriata

Questo approccio basato sulla valutazione assicura che la funzione di ricompensa sia priva di bug e determina se RFT è il metodo giusto per il tuo caso d'uso. Iniziare in piccolo consente di acquisire dimestichezza con il flusso di lavoro RFT, identificare e risolvere tempestivamente i problemi, convalidare l'approccio prima dell'ampliamento e testare l'affidabilità delle funzioni di ricompensa. Una volta convalidato, puoi espanderlo a set di dati più grandi per migliorare ulteriormente le prestazioni.

Caratteristiche dei dati di allenamento efficaci

Chiarezza e coerenza

I buoni esempi di RFT richiedono dati di input chiari e inequivocabili che consentano un calcolo accurato della ricompensa tra i diversi output del modello. Evita il rumore nei tuoi dati, tra cui:

  • Formattazione non coerente

  • Etichette o istruzioni contraddittorie

  • Istruzioni ambigue

  • Risposte di riferimento contrastanti

Qualsiasi ambiguità indurrà in errore il processo di formazione e indurrà il modello ad apprendere comportamenti non intenzionali.

Diversità

Il tuo set di dati dovrebbe catturare l'intera diversità dei casi d'uso di produzione per garantire solide prestazioni nel mondo reale. Include:

  • Vari tipi di problemi e livelli di difficoltà

  • Diversi formati di input e casi limite

  • Esempi rappresentativi di tutti gli scenari previsti

Questa diversità aiuta a prevenire l'overfit e garantisce che il modello gestisca gli input non familiari con garbo.

Considerazioni sulla funzione di ricompensa

Progetta la tua funzione di ricompensa per un allenamento efficiente:

  • Esegui in pochi secondi (non in minuti)

  • Parallelizza efficacemente con Lambda

  • Restituisci punteggi coerenti e affidabili

  • Gestisci con eleganza diversi tipi di output del modello

Le funzioni di ricompensa veloci e scalabili consentono un'iterazione rapida e una sperimentazione economica su larga scala.