

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

# Preparazione dei dati per RFT su Amazon Nova 2
<a name="nova-data-prep-rft-2"></a>

RFT su Amazon Nova 2 attualmente supporta dati di formazione basati su testo. Questa pagina descrive il formato dei dati, le funzionalità supportate, i vincoli e le best practice per la preparazione dei dati di addestramento RFT per i modelli Amazon Nova 2 Understanding.

**Suggerimento**  
Per convalidare il formato del set di dati prima di iniziare un processo di formazione, consulta. [Strumenti di convalida](nova-data-preparation.md#nova-data-validation-tools)

**Topics**
+ [Formato dei dati](#nova-2-rft-data-overview)
+ [Input di esempio](#nova-2-rft-data-examples)
+ [Funzionalità supportate](#nova-2-rft-supported-features)
+ [General/Text comprensione](#rft-general-constraints)
+ [Chiamata tramite strumento](#rft-tool-calling)
+ [Ragionamento](#rft-reasoning)
+ [Caratteristiche dei dati di addestramento efficaci](#nova-rft-effective-data)
+ [Formazione RFT utilizzando LLM come giudice](#nova-rft-llm-judge)

## Formato dei dati
<a name="nova-2-rft-data-overview"></a>

I dati di formazione RFT seguono il formato OpenAI Reinforcement. Fine-Tuning [https://developers.openai.com/api/docs/guides/reinforcement-fine-tuning#prepare-your-dataset](https://developers.openai.com/api/docs/guides/reinforcement-fine-tuning#prepare-your-dataset) Ogni riga del file di training JSONL è un oggetto JSON con i seguenti campi di primo livello. Espandi una sezione per saperne di più:

### messages
<a name="rft-field-messages"></a>

Obbligatorio. Una serie di turni di conversazione che utilizzano ruoli e`system`, `user` `assistant` opzionalmente, ruoli.
+ **ruolo**: obbligatorio. Valori comuni: `system` (istruzioni per il modello) e `user` (l'attività o l'input).
+ **contenuto**: obbligatorio. Il contenuto testuale del messaggio. Per i turni di sistema si tratta di istruzioni; per i turni utente si tratta dell'operazione o dell'input.

```
"messages": [
    {
        "role": "system",
        "content": "{{instructions}}"
    },
    {
        "role": "user",
        "content": "{{prompt}}"
    }
]
```

### reference\_answer
<a name="rft-field-reference-answer"></a>

Obbligatorio. L'output previsto o i criteri di valutazione utilizzati dalla funzione di ricompensa per assegnare un punteggio alla risposta del modello. Questo campo non si limita ai risultati strutturati: può contenere qualsiasi formato che aiuti la funzione di ricompensa a valutare la qualità.

```
"reference_answer": {
    "{{field}}": "{{value}}"
}
```

### strumenti (opzionale)
<a name="rft-field-tools"></a>

Opzionale. Una serie di specifiche degli utensili disponibili per il modello durante questo esempio. Ogni elemento definisce l'interfaccia e i metadati di uno strumento. Per un esempio completo, vedere. [Chiamata tramite strumento](#rft-tool-calling)

```
"tools": [
    {
        "type": "function",
        "function": {
            "name": "{{tool-name}}",
            "description": "{{tool-description}}",
            "parameters": { {{...}} }
        }
    }
]
```

### Proprietà aggiuntive (facoltative)
<a name="rft-field-additional-properties"></a>

Il formato dati RFT supporta campi personalizzati oltre `messages` a. `reference_answer` Includi tutti i dati aggiuntivi necessari alla tua funzione di ricompensa per una corretta valutazione. Non è necessario configurarli nella ricetta: vengono trasmessi alla funzione di ricompensa sul `metadata` campo in fase di esecuzione.

Esempi comuni comprendono:

**Metadati**
+ `id`— Identificatore univoco per il tracciamento
+ `task_id`— identificatore Task-level 
+ `difficulty_level`— Indicatore di complessità del problema
+ `domain`— Area o categoria tematica
+ `expected_reasoning_steps`— Numero di passaggi nella soluzione

**Criteri di valutazione **
+ `evaluation_criteria`— Rubriche di classificazione 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

**Convalida dei dati **

Prima di inviare il lavoro di formazione, convalida il set di dati per individuare tempestivamente i problemi di formattazione. Per gli strumenti di convalida disponibili, vedere. [Strumenti di convalida](nova-data-preparation.md#nova-data-validation-tools)

## Input di esempio
<a name="nova-2-rft-data-examples"></a>

Di seguito sono riportati esempi completi di oggetti JSON che mostrano come combinare i campi per diversi casi d'uso di RFT.

------
#### [ Chemistry problem ]

```
{
    "id": "chem-01",
    "messages": [
        {
            "role": "system",
            "content": "You are a helpful chemistry assistant"
        },
        {
            "role": "user",
            "content": "Calculate the molecular weight of caffeine (C8H10N4O2)"
        }
    ],
    "reference_answer": {
        "molecular_weight": 194.19,
        "unit": "g/mol",
        "calculation": "8(12.01) + 10(1.008) + 4(14.01) + 2(16.00) = 194.19"
    }
}
```

------
#### [ Math problem ]

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

------
#### [ Code problem ]

```
{
    "id": "code-002",
    "messages": [
        {
            "role": "system",
            "content": "You are a helpful programming assistant"
        },
        {
            "role": "user",
            "content": "Write a Python function that reverses a string without using built-in reverse methods"
        }
    ],
    "reference_answer": {
        "code": "def reverse_string(s):\n    result = ''\n    for i in range(len(s) - 1, -1, -1):\n        result += s[i]\n    return result",
        "test_cases": [
            {
                "input": "hello",
                "expected_output": "olleh"
            },
            {
                "input": "",
                "expected_output": ""
            },
            {
                "input": "a",
                "expected_output": "a"
            },
            {
                "input": "Python123",
                "expected_output": "321nohtyP"
            }
        ],
        "all_tests_pass": true
    }
}
```

------
#### [ Tool usage ]

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

------
#### [ With additional properties ]

L'esempio seguente include campi di metadati personalizzati che vengono passati alla funzione di ricompensa durante la valutazione, consentendo una sofisticata logica di punteggio adattata al caso d'uso specifico.

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

------

## Funzionalità supportate
<a name="nova-2-rft-supported-features"></a>

La tabella seguente riassume il supporto delle funzionalità per RFT su Amazon Nova 2.


**Supporto delle funzionalità RFT**  

| Funzionalità | RFT su Amazon Nova 2 | 
| --- | --- | 
| Comprensione del testo | Supportato su Nova 2.0 Lite. Consulta [General/Text comprensione](#rft-general-constraints). | 
| Comprensione delle immagini | Non supportata | 
| Comprensione dei video | Non supportata | 
| Comprensione dei documenti | Non supportata | 
| Chiamata tramite strumenti | Supportato su Nova 2.0 Lite. Consulta [Chiamata tramite strumento](#rft-tool-calling). | 
| Ragionamento | Supportato su Nova 2.0 Lite. Consulta [Ragionamento](#rft-reasoning). | 

## General/Text comprensione
<a name="rft-general-constraints"></a>

Questa sezione riassume i vincoli generali e le migliori pratiche per la preparazione dei dati di addestramento RFT su Amazon Nova 2.

**Vincoli**


**Vincoli generali dei set di dati**  

| Vincolo | Informazioni | 
| --- | --- | 
| Formato del set di dati | JSONL (un oggetto JSON per riga). | 
| Esempi di formazione minimi | 100 | 
| Esempi di valutazione minimi | 100 | 
| Modalità supportate | Solo testo | 

**Best practice**
+ Ti consigliamo di iniziare con le dimensioni minime dei set di dati (100 esempi di formazione e 100 esempi di valutazione) e di aumentarli dopo aver convalidato la funzione di ricompensa e confermato che l'RFT è appropriato per il tuo caso d'uso.
+ Consigliamo un approccio basato sulla valutazione. Prima di investire nella formazione RFT su larga scala, valutate le prestazioni di base del vostro modello:
  + **Alte prestazioni (rendimento superiore al 95%)**: la RFT potrebbe non essere necessaria perché il modello funziona già bene.
  + **Prestazioni molto scarse (ricompensa dello 0%)**: passa prima a SFT per stabilire le funzionalità di base.
  + **Prestazioni moderate**: l'RFT è probabilmente appropriato.
+ Partire da un piccolo set di dati ti aiuta a verificare che la tua funzione di ricompensa sia priva di bug, a confermare che RFT è l'approccio giusto, a identificare e risolvere i problemi in anticipo e a testare il flusso di lavoro prima di ampliarlo.
+ Dai priorità ai dati di input di alta qualità e a una funzione di ricompensa affidabile che venga eseguita in modo coerente sulle risposte del modello.

**Esempio di input **

### Text-only campione
<a name="rft-general-sample"></a>

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

## Chiamata tramite strumento
<a name="rft-tool-calling"></a>

RFT supporta i modelli di addestramento sui modelli di chiamata degli strumenti, consentendo al modello di apprendere quando e come richiamare strumenti o funzioni esterni.

**Vincoli**


**Vincoli di chiamata agli strumenti**  

| Vincolo | Informazioni | 
| --- | --- | 
| Posizione di definizione dello strumento | Gli strumenti sono dichiarati nell'toolsarray di primo livello dell'esempio di addestramento. | 
| Formato di definizione degli strumenti | Ogni strumento deve includeretype, function.namefunction.description, e uno schema JSON valido infunction.parameters. | 
| Risposta di riferimento | Usala reference\_answer per specificare l'invocazione prevista dello strumento (ad esempio,tool\_called,tool\_parameters) in modo che la funzione di ricompensa possa valutarne la correttezza. | 

**Best practice**
+ Assicurati che le definizioni degli strumenti siano coerenti in tutti gli esempi di formazione.
+ Il modello apprende i modelli di richiamo degli strumenti dalle dimostrazioni fornite.
+ Includi diversi esempi di quando usare ogni strumento e quando non usarlo.

**Esempio di input **

### Esempio di utilizzo dello strumento
<a name="rft-tool-sample"></a>

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

## Ragionamento
<a name="rft-reasoning"></a>

RFT su Amazon Nova 2 supporta la modalità di ragionamento, in cui il modello genera segnali di pensiero espliciti prima di produrre una risposta definitiva. Puoi controllare il comportamento di ragionamento durante l'allenamento con il campo di configurazione dell'allenamento. `reasoning_effort`

**Vincoli**


**Vincoli di ragionamento**  

| Vincolo | Informazioni | 
| --- | --- | 
| Modalità disponibili | none(ometti il reasoning\_effort campo)low, ehigh. Non è medium disponibile alcuna opzione per RFT. | 
| Comportamento predefinito | Se il reasoning\_effort campo è assente dalla configurazione, il ragionamento è disabilitato. | 
| Limite di token | Quando il ragionamento è abilitato, imposta su 32768 max\_new\_tokens per consentire output di ragionamento estesi. | 

**Quando usare ciascuna modalità **

Usa il `high` ragionamento per:
+ Compiti analitici complessi
+ Risoluzione di problemi matematici
+ Multi-step deduzione logica
+ Compiti in cui il pensiero passo dopo passo aggiunge valore

Usa `none` (ometti) il nostro `reasoning_effort` ragionamento per: `low`
+ Semplici domande fattuali
+ Classificazioni dirette
+ Ottimizzazione della velocità e dei costi
+ Risposta semplice alle domande

**Compromessi in termini di costi e prestazioni **

Le modalità di ragionamento più elevate aumentano:
+ Tempi e costi della formazione
+ Latenza e costo dell'inferenza
+ Capacità del modello per attività di ragionamento complesse

## Caratteristiche dei dati di addestramento efficaci
<a name="nova-rft-effective-data"></a>

**Chiarezza e coerenza **

I buoni esempi di RFT richiedono dati di input chiari e inequivocabili che consentano un calcolo accurato delle ricompense tra i diversi output del modello. Evita il rumore nei tuoi dati, tra cui:
+ Formattazione incoerente
+ Etichette o istruzioni contraddittorie
+ Istruzioni ambigue
+ Risposte di riferimento contrastanti

Qualsiasi ambiguità indurrà in errore il processo di formazione e farà sì che il modello apprenda comportamenti non intenzionali.

**Diversità **

Il tuo set di dati dovrebbe cogliere l'intera diversità dei casi d'uso in produzione per garantire solide prestazioni nel mondo reale. Includi:
+ Diversi formati di input e casi limite
+ Mappa i modelli effettivi di utilizzo della produzione a partire da registri e analisi degli utenti
+ Esamina i tipi di utenti, le aree geografiche e le variazioni stagionali
+ Includi livelli di difficoltà, dai problemi semplici a quelli complessi

**Considerazioni sulla funzione di ricompensa **

Progetta la tua funzione di ricompensa per un allenamento efficiente:
+ Esegui in pochi secondi (non minuti)
+ Parallelizza in modo efficace con Lambda
+ Restituisci punteggi coerenti e affidabili
+ Gestisci con garbo diversi tipi di output del modello

Le funzioni di ricompensa veloci e scalabili consentono un'iterazione rapida e una sperimentazione conveniente.

## Formazione RFT utilizzando LLM come giudice
<a name="nova-rft-llm-judge"></a>

### Panoramica di
<a name="nova-rft-llm-judge-overview"></a>

I Large Language Models (LLM) vengono sempre più utilizzati come giudici nei flussi di lavoro RFT (Reinforcement Fine Tuning), che forniscono segnali di ricompensa automatici che guidano l'ottimizzazione dei modelli. In questo approccio, un LLM valuta i risultati del modello in base a criteri specifici, che si tratti di correttezza, qualità, aderenza stilistica o equivalenza semantica, e assegna ricompense che guidano il processo di reinforcement learning.

Ciò è particolarmente utile per le attività in cui le tradizionali funzioni di ricompensa sono difficili da definire programmaticamente, come determinare se rappresentazioni diverse (come "1/3«, «0,333" e «un terzo») sono semanticamente equivalenti o valutare qualità sfumate come coerenza e pertinenza. Utilizzando LLM-based i giudici come funzioni di ricompensa, è possibile adattare RFT a domini complessi senza richiedere un'ampia annotazione umana, consentendo una rapida iterazione e un miglioramento continuo dei modelli in diversi casi d'uso oltre ai tradizionali problemi di allineamento.

### Convalida del tuo giudice LLM
<a name="nova-rft-validating-judge"></a>

Prima di implementarne uno LLM-as-a-judge in produzione, verificate che le valutazioni del modello di giudice siano in linea con il giudizio umano. Questa operazione prevede:
+ Misurazione dei tassi di concordanza tra il giudice LLM e i valutatori umani su campioni rappresentativi del vostro compito
+ Garantire che l'accordo del LLM con gli esseri umani soddisfi o superi i tassi di accordo interumani
+ Identificazione di potenziali pregiudizi nel modello di giudice
+ Acquisire la certezza che il segnale di ricompensa guidi il modello nella direzione prevista

Questa fase di convalida aiuta a garantire che il processo di valutazione automatizzato produca modelli che soddisfano i criteri di qualità della produzione.

### Configurazione Lambda per il giudice LLM
<a name="nova-rft-lambda-config"></a>

L'utilizzo di un LLM come giudice è un'estensione dell'uso delle funzioni Lambda per il Reinforcement Learning with Verifiable Rewards (RLVR). All'interno della funzione Lambda, effettui una chiamata a uno dei modelli ospitati in Amazon Bedrock.

**Requisiti di configurazione importanti: **


| Configurazione | Requisito | Informazioni | 
| --- | --- | --- | 
| Throughput di Amazon Bedrock | Quota sufficiente | Assicurati che la tua quota di throughput per il modello Amazon Bedrock utilizzato sia sufficiente per il carico di lavoro di formazione | 
| Timeout Lambda | Timeout prolungato | Configura il timeout della funzione Lambda fino a un massimo di 15 minuti. L'impostazione predefinita è di 3 secondi, insufficiente per le risposte del modello Amazon Bedrock | 
| Simultaneità Lambda | Maggiore concorrenza | La Lambda viene richiamata in parallelo durante l'allenamento. Aumenta la concorrenza per massimizzare la produttività disponibile | 
| Configurazione delle ricette | Abbina le impostazioni Lambda | Il limite di concorrenza deve essere configurato nella tua ricetta | 