

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à.

# Reinforcement Fine-Tuning (RFT) attivo SageMaker HyperPod
Regolazione fine del rinforzo (RFT)

Reinforcement Fine-Tuning (RFT) è una tecnica di apprendimento automatico che migliora le prestazioni del modello attraverso segnali di feedback (punteggi misurabili o premi che indicano la qualità della risposta) anziché la supervisione diretta con risposte esatte e corrette. A differenza della tradizionale regolazione di precisione supervisionata che apprende dalle coppie input-output, RFT utilizza le funzioni di ricompensa per valutare le risposte del modello e ottimizza iterativamente il modello per massimizzare tali ricompense.

Questo approccio è particolarmente efficace per le attività in cui è difficile definire l'output esatto e corretto, ma è possibile misurare in modo affidabile la qualità della risposta. RFT consente ai modelli di apprendere comportamenti e preferenze complessi attraverso prove e feedback, il che lo rende ideale per applicazioni che richiedono un processo decisionale articolato, una risoluzione creativa dei problemi o il rispetto di criteri di qualità specifici che possono essere valutati programmaticamente.

**Quando usare RFT**  
Usa RFT quando puoi definire criteri di successo chiari e misurabili ma hai difficoltà a fornire risultati esatti e corretti per la formazione. È ideale per attività in cui la qualità è soggettiva o multiforme, come la scrittura creativa, l'ottimizzazione del codice o il ragionamento complesso, in cui esistono più soluzioni valide ma alcune sono chiaramente migliori di altre.

RFT funziona al meglio quando si dispone di quanto segue:
+ Una funzione di ricompensa affidabile in grado di valutare gli output del modello in modo programmatico
+ È necessario allineare il comportamento del modello a preferenze o vincoli specifici
+ Situazioni in cui la messa a punto tradizionale con supervisione non è sufficiente perché la raccolta di esempi etichettati di alta qualità è costosa o poco pratica

Prendi in considerazione RFT per le applicazioni che richiedono miglioramenti iterativi, personalizzazione o aderenza a regole aziendali complesse che possono essere codificate come segnali di ricompensa.

**Per cosa RFT è più adatto**  
RFT eccelle nei settori in cui la qualità dell'output può essere misurata oggettivamente, ma le risposte ottimali sono difficili da definire in anticipo:
+ **Risoluzione matematica dei problemi: correttezza verificabile con percorsi di soluzione multipli**
+ **Generazione e ottimizzazione del codice: risultati di esecuzione testabili e metriche prestazionali**
+ **Compiti di ragionamento scientifico**: coerenza logica e accuratezza dei fatti
+ **Analisi strutturata dei dati: output verificabili** a livello di codice
+ Ragionamento in **più fasi**: attività che richiedono una progressione logica step-by-step
+ **Utilizzo degli strumenti e chiamate API**: successo misurabile in base ai risultati di esecuzione
+ **Flussi di lavoro complessi**: rispetto di vincoli e regole aziendali specifici

RFT funziona eccezionalmente bene quando è necessario bilanciare più obiettivi concorrenti come precisione, efficienza e stile.

**Quando utilizzare la modalità di ragionamento per l'allenamento RFT**  
Amazon Nova 2.0 supporta la modalità di ragionamento durante l'addestramento RFT. Sono disponibili le seguenti modalità:
+ **nessuno**: nessun ragionamento (ometti il campo reasoning\$1effort)
+ **basso: sovraccarico minimo di ragionamento**
+ **high**: massima capacità di ragionamento (impostazione predefinita quando è specificato reasoning\$1effort)

**Nota**  
Non esiste un'opzione media per RFT. Se il campo reasoning\$1effort non è presente nella configurazione, il ragionamento è disabilitato.

Usa un ragionamento elevato per quanto segue:
+ Compiti analitici complessi
+ Risoluzione di problemi matematici
+ Deduzione logica in più fasi
+ Attività in cui il step-by-step pensiero aggiunge valore

Usa none (ometti reasoning\$1effort) o low reasoning per quanto segue:
+ Semplici domande fattuali
+ Classificazioni dirette
+ Ottimizzazione della velocità e dei costi
+ Risposta semplice alle domande

**Importante**  
Le modalità di ragionamento più avanzate aumentano i tempi e i costi di formazione, la latenza e i costi dell'inferenza, ma aumentano anche la capacità del modello per attività di ragionamento complesse.

**Modelli supportati**  
RFT onSageMaker HyperPod supporta Amazon Nova Lite 2.0 (amazon.nova-2-lite-v 1:0:256k).

**Fasi principali**  
Il processo RFT prevede quattro fasi chiave:
+ **Implementazione di un valutatore**: crea una funzione di ricompensa per assegnare un punteggio programmatico alle risposte del modello in base ai tuoi criteri di qualità.
+ Istruzioni di **caricamento: prepara e carica i dati di allenamento nel formato** conversazionale specificato con dati di riferimento per la valutazione.
+ **Avvio di un lavoro**: avvia il processo di messa a punto del rinforzo con i parametri configurati.
+ **Monitoraggio**: monitora i progressi della formazione tramite dashboard di metriche per garantire che il modello apprenda in modo efficace.

Ogni fase si basa su quella precedente e il valutatore funge da base che guida l'intero processo di formazione fornendo segnali di feedback coerenti.

**Topics**
+ [

# RFT su Nova 2.0
](nova-hp-rft-nova2.md)

# 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.

**Topics**
+ [

## Formato e struttura dei dati
](#nova-hp-rft-data-format)
+ [

## Descrizioni dei campi
](#nova-hp-rft-field-descriptions)
+ [

## Guida agli iperparametri
](#nova-hp-rft-monitoring-hyperparams)
+ [

## Proprietà aggiuntive
](#nova-hp-rft-additional-properties)
+ [

## Suggerimenti sulle dimensioni dei set di dati
](#nova-hp-rft-dataset-size)
+ [

## Caratteristiche dei dati di allenamento efficaci
](#nova-hp-rft-effective-data)
+ [

# Monitoraggio della formazione RFT
](nova-hp-rft-monitoring.md)

## 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\$1answer**: 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.

### Esempio 1: problema di chimica


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\$1answer 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.

### Esempio 2: problema matematico


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"]  
  }  
}
```

### Esempio 3: utilizzo degli strumenti


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. | Sì | 
| 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». | No | 
| risposta\$1di 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\$1id, difficy\$1level, context\$1data) non vengono convalidati e verranno passati alla funzione di ricompensa come metadati.

## Guida agli iperparametri


Utilizza i seguenti iperparametri consigliati in base al tuo approccio di allenamento:

**Generale:**
+ Epoche: 1
+ Tasso di apprendimento (lr): 1e-7
+ Numero di generazioni: 8
+ Numero massimo di nuovi token: 8192
+ Dimensione del lotto: 256

**LoRa (adattamento a basso rango):**
+ Grado LoRa: 32

**Nota**  
Modifica questi valori in base alle dimensioni del set di dati e alle prestazioni di convalida. Monitora le metriche di allenamento per evitare un sovradimensionamento.

## 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\$1id: identificatore univoco per il tracciamento
+ difficily\$1level: indicatore di complessità del problema
+ dominio: area tematica o categoria
+ expected\$1reasoning\$1steps: numero di passaggi nella soluzione

**Criteri di valutazione:**
+ evaluation\$1criteria: Rubriche di valutazione specifiche
+ custom\$1scoring\$1weights: importanza relativa dei diversi aspetti
+ context\$1data: informazioni di base sul problema
+ external\$1references: 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 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.

# Monitoraggio della formazione RFT


Monitora le metriche chiave durante la formazione per garantire un apprendimento efficace e identificare tempestivamente potenziali problemi.

**Topics**
+ [

## Metriche chiave da monitorare
](#nova-hp-rft-monitoring-metrics)
+ [

## Valutazione dopo RFT
](#nova-hp-rft-monitoring-evaluation)
+ [

## Utilizzo di modelli ottimizzati
](#nova-hp-rft-monitoring-checkpoints)
+ [

## Limitazioni e procedure consigliate
](#nova-hp-rft-monitoring-limitations)
+ [

## Risoluzione dei problemi
](#nova-hp-rft-monitoring-troubleshooting)

## Metriche chiave da monitorare


Monitora le seguenti metriche utilizzate MlFlow durante l'allenamento:

**Metriche sui premi:**
+ **Punteggio medio di ricompensa**: qualità complessiva delle risposte del modello (dovrebbe aumentare nel tempo)
+ **Distribuzione dei premi**: percentuale di risposte che ricevono premi alti, medi e bassi
+ **Premi per la formazione e la convalida**: confronta per individuare l'overfit

**Metriche di formazione:**
+ **Aggiornamenti delle norme: numero di aggiornamenti** del peso eseguiti con successo
+ **Percentuale di completamento dell'implementazione**: percentuale di campioni valutati con successo

**Per quanto riguarda i modelli:**
+ Stabilizzazione dei premi (indica uno scarso apprendimento)
+ I premi di convalida diminuiscono mentre aumentano i premi di formazione (sovradimensionamento)
+ La varianza delle ricompense aumenta in modo significativo nel tempo (instabilità)
+ Alta percentuale di errori nella funzione di ricompensa (problemi di implementazione)

**Quando interrompere l'allenamento:**
+ Le metriche prestazionali prefissate sono state raggiunte
+ I premi si stabilizzano e non migliorano più
+ Le prestazioni di convalida peggiorano (è stato rilevato un sovradimensionamento)
+ È stato raggiunto il budget massimo per la formazione

## Valutazione dopo RFT


Al termine della formazione, valuta il tuo modello perfezionato per valutare i miglioramenti delle prestazioni:
+ **Esegui il processo di valutazione RFT**: utilizza il checkpoint del tuo corso di formazione RFT come modello
+ **Confronto con quello di base**: valuta sia il modello base che il modello perfezionato sullo stesso set di test
+ **Analizza le metriche**: esamina le metriche specifiche delle attività (precisione, punteggi di ricompensa, ecc.)
+ **Esegui una revisione qualitativa**: ispeziona manualmente i campioni in uscita per verificarne la qualità

Per le procedure di valutazione dettagliate, consultate la sezione Valutazione.

## Utilizzo di modelli ottimizzati


**Accesso ai posti di blocco:**

Al termine dell'addestramento, individua il checkpoint:

1. Accedi al tuo `output_path` account in S3

1. Scarica ed estrai `output.tar.gz`

1. Aprire `manifest.json`

1. Copia il `checkpoint_s3_bucket` valore

**Distribuzione per l'inferenza:**

Usa il percorso S3 del checkpoint per l'inferenza o l'ulteriore formazione:

```
run:
    model_type: amazon.nova-2-lite-v1:0:256k
    model_name_or_path: "s3://customer-escrow-<account-number>-smtj-<unique-identifier>/<job-name>"
```

Per le istruzioni di distribuzione e inferenza, consulta la sezione Inferenza.

## Limitazioni e procedure consigliate


**Limitazioni attuali:**

**Restrizioni relative alla beta:**
+ È necessario creare un nuovo gruppo RIG per RFT. Questa limitazione verrà risolta da GA.
+ Requisiti relativi al tipo di istanza: sono supportate solo le istanze P5 (minimo 8x P5.48xLarge). Prossimamente: supporto per tipi di istanze più piccoli (ETA: metà gennaio 2025).

**Limitazioni funzionali:**
+ Timeout Lambda di 15 minuti: le funzioni Reward devono essere completate entro 15 minuti
+ Solo turno singolo: le conversazioni a turni multipli non sono supportate
+ Set di dati di convalida: non supportati durante l'allenamento. Utilizza processi di valutazione separati per valutare i progressi della formazione.

**Considerazioni sulla formazione:**
+ Scenari con ricompense ridotte: potrebbero avere difficoltà quando meno del 5% degli esempi riceve ricompense positive: prendete in considerazione innanzitutto l'SFT
+ Requisiti in materia di dati: è necessaria una diversità sufficiente per apprendere in modo efficace
+ Costo computazionale: più costoso della regolazione fine supervisionata

**Nova Forge rimuove alcune di queste limitazioni:**
+ Supporta conversazioni a più turni
+ Consente funzioni di ricompensa che superano i timeout di 15 minuti
+ Fornisce algoritmi e opzioni di ottimizzazione avanzati
+ Progettato per casi d'uso aziendali complessi, ottimizzato specificamente per creare modelli di frontiera

**Le migliori pratiche:**

**Inizia in piccolo e scala:**
+ Inizia con set di dati minimi (100-200 esempi) e poche epoche di formazione
+ Convalida il tuo approccio prima di ampliare
+ Aumenta gradualmente le dimensioni del set di dati e le fasi di formazione in base ai risultati

**Baseline con SFT innanzitutto:**
+ Se i punteggi di ricompensa sono costantemente bassi (ad esempio, sempre 0), esegui SFT prima di RFT
+ RFT richiede prestazioni di base ragionevoli per migliorare efficacemente

**Progetta funzioni di ricompensa efficienti:**
+ Esegui in pochi secondi, non in minuti
+ Riduci al minimo le chiamate API esterne
+ Utilizza algoritmi e strutture dati efficienti
+ Implementa una corretta gestione degli errori
+ Esegui un test accurato prima dell'allenamento
+ Sfrutta le funzionalità di scalabilità parallela di Lambda

**Monitora attivamente la formazione:**
+ Tieni traccia dei punteggi medi di ricompensa nel tempo
+ Guarda la distribuzione delle ricompense tra i campioni
+ Confronta i premi di formazione e quelli di convalida
+ Cerca modelli preoccupanti (plateaus, overfitting, instabilità)

**Iterate in base ai risultati:**
+ Se i premi non migliorano dopo diverse iterazioni, modifica il design della funzione di ricompensa
+ Aumenta la diversità dei set di dati per fornire segnali di apprendimento più chiari
+ Prendi in considerazione la possibilità di passare a SFT se i premi rimangono vicini allo zero
+ Sperimenta con diversi iperparametri (tasso di apprendimento, dimensione del batch)

**Ottimizza la qualità dei dati:**
+ Garantisci esempi diversi e rappresentativi
+ Includi casi limite e campioni difficili
+ La funzione Verify Reward assegna un punteggio corretto a tutti i tipi di esempi
+ Rimuovi o correggi i campioni che confondono la funzione di ricompensa

## Risoluzione dei problemi


**Errori della funzione di ricompensa:**

Sintomi: elevato tasso di errore nelle chiamate alla funzione di ricompensa durante l'allenamento


| Problema | Caratteristiche | Risoluzione | 
| --- |--- |--- |
| Timeout Lambda | Timeout frequenti dopo 15 minuti | Ottimizzate le prestazioni delle funzioni; prendete in considerazione Nova Forge per valutazioni complesse | 
| Concorrenza insufficiente | Errori di limitazione Lambda | Aumenta lambda\$1concurrency\$1limit o richiedi un aumento della quota | 
| Formato di restituzione non valido | La formazione fallisce a causa di errori di formato | Verifica che la struttura restituita corrisponda al formato di interfaccia richiesto | 
| Eccezioni non gestite | Errori intermittenti | Aggiungi una gestione e una registrazione complete degli errori | 
| Guasti delle API esterne | Punteggio incoerente | Implementa la logica dei tentativi e le strategie di fallback | 

**Scarse prestazioni di allenamento:**

Sintomi: le ricompense non migliorano o si stabilizzano a valori bassi

Risoluzioni:
+ **Verifica della correttezza della funzione di ricompensa**: prova con esempi noti good/bad 
+ **Verifica le prestazioni di base**: valuta il modello base; se la precisione è prossima allo zero, esegui prima l'SFT
+ **Aumenta la diversità dei dati**: aggiungi esempi più vari che coprono diversi scenari
+ **Modifica gli iperparametri**: prova diversi tassi di apprendimento o dimensioni di batch diverse
+ **Verifica la qualità del segnale di ricompensa**: assicurati che i premi distinguano tra risposte positive e negative

**Sovradattamento:**

Sintomi: i premi di allenamento aumentano mentre i premi di convalida diminuiscono

Risoluzioni:
+ **Riduci le fasi di allenamento**: interrompi l'allenamento prima
+ **Aumenta le dimensioni del set** di dati: aggiungi altri esempi di formazione
+ **Aggiungi regolarizzazione: Regola** o `weight_decay` `entropy_coeff`
+ **Aumenta la diversità dei dati**: assicurati che il set di formazione rappresenti la distribuzione completa