

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

# Valutazione RFT
<a name="nova-rft-evaluation"></a>

## Cos'è la valutazione RFT?
<a name="nova-rft-eval-what-is"></a>

RFT Evaluation consente di valutare le prestazioni del modello utilizzando funzioni di ricompensa personalizzate prima, durante o dopo la formazione di reinforcement learning. A differenza delle valutazioni standard che utilizzano metriche predefinite, RFT Evaluation consente di definire criteri di successo personalizzati tramite una funzione Lambda che assegna un punteggio agli output del modello in base ai requisiti specifici.

## Perché effettuare una valutazione con RFT?
<a name="nova-rft-eval-why"></a>

La valutazione è fondamentale per determinare se il processo di messa a punto di RL presenta:
+ Migliore allineamento del modello con il caso d'uso specifico e i valori umani
+ Funzionalità del modello mantenute o migliorate per le attività chiave
+ Ha evitato effetti collaterali indesiderati come riduzione della fattualità, aumento della verbosità o riduzione delle prestazioni in altre attività
+ Hai soddisfatto i criteri di successo personalizzati definiti dalla tua funzione di ricompensa

## Quando utilizzare la valutazione RFT
<a name="nova-rft-eval-when"></a>

Utilizza la valutazione RFT in questi scenari:
+ Prima della formazione RFT: stabilisci le metriche di base sul tuo set di dati di valutazione
+ Durante l'allenamento RFT: monitora i progressi dell'allenamento con punti di controllo intermedi
+ Dopo la formazione RFT: verifica che il modello finale soddisfi i tuoi requisiti
+ Confronto tra modelli: valuta più versioni del modello utilizzando criteri di ricompensa coerenti

**Nota**  
Usa RFT Evaluation quando hai bisogno di metriche personalizzate e specifiche del dominio. Per una valutazione generica (precisione, perplessità, BLEU), utilizzate metodi di valutazione standard.

## Requisiti per il formato dei dati
<a name="nova-rft-eval-data-format"></a>

### Struttura dei dati di input
<a name="nova-rft-eval-input-structure"></a>

I dati di input di valutazione RFT devono seguire il formato OpenAI Reinforcement Fine-Tuning. Ogni esempio è un oggetto JSON contenente:
+ `messages`— Serie di turni e ruoli di conversazione `system` `user`
+ `reference_answer`— Risultati attesi o dati fondamentali utilizzati dalla funzione di ricompensa per il punteggio

### Esempio di formato dei dati
<a name="nova-rft-eval-data-example"></a>

```
{  
  "messages": [  
    {  
      "role": "user",  
      "content": [  
        {  
          "type": "text",  
          "text": "Solve for x. Return only JSON like {\"x\": <number>}. Equation: 2x + 5 = 13"  
        }  
      ]  
    }  
  ],  
  "reference_answer": {  
    "x": 4  
  }  
}
```

### Limitazioni attuali
<a name="nova-rft-eval-limitations"></a>
+ Solo testo: non sono supportati input multimodali (immagini, audio, video)
+ Conversazioni a turno singolo: supporta solo messaggi utente singoli (non dialoghi a più turni)
+ Formato JSON: i dati di input devono essere in formato JSONL (un oggetto JSON per riga)
+ Risultati del modello: la valutazione viene eseguita sui completamenti generati dal modello specificato

## Preparazione della ricetta di valutazione
<a name="nova-rft-eval-recipe"></a>

### Notebook di esempio
<a name="nova-rft-eval-sample-notebook"></a>

Per un esempio completo, consulta [Quaderni di valutazione](https://docs.aws.amazon.com/sagemaker/latest/dg/nova-model-evaluation.html#nova-model-evaluation-notebook).

### Esempio di configurazione della ricetta
<a name="nova-rft-eval-sample-recipe"></a>

```
run:  
  name: nova-lite-rft-eval-job    
  model_type: amazon.nova-lite-v1:0:300k    
  model_name_or_path: s3://escrow_bucket/model_location # [MODIFIABLE] S3 path to your model or model identifier  
  replicas: 1 # [MODIFIABLE] For SageMaker Training jobs only; fixed for HyperPod jobs  
  data_s3_path: "" # [REQUIRED FOR HYPERPOD] Leave empty for SageMaker Training jobs and use TrainingInput in sagemaker python SDK  
  output_s3_path: "" # [REQUIRED] Output artifact S3 path for evaluation results  
  
evaluation:  
  task: rft_eval # [FIXED] Do not modify  
  strategy: rft_eval # [FIXED] Do not modify  
  metric: all # [FIXED] Do not modify  
  
# Inference Configuration  
inference:  
  max_new_tokens: 8192 # [MODIFIABLE] Maximum tokens to generate  
  top_k: -1 # [MODIFIABLE] Top-k sampling parameter  
  top_p: 1.0 # [MODIFIABLE] Nucleus sampling parameter  
  temperature: 0 # [MODIFIABLE] Sampling temperature (0 = deterministic)  
  top_logprobs: 0 # [MODIFIABLE] Set between 1-20 to enable logprobs output  
  
# =============================================================================  
# Bring Your Own Reinforcement Learning Environment  
# =============================================================================  
rl_env:  
  reward_lambda_arn: arn:aws:lambda:<region>:<account_id>:function:<reward-function-name>
```

## Funzioni di ricompensa preimpostate
<a name="nova-rft-eval-preset-functions"></a>

Due funzioni di ricompensa preimpostate (`prime_code`e`prime_math`) sono disponibili come layer Lambda per una facile integrazione con le funzioni RFT Lambda.

### Panoramica di
<a name="nova-rft-eval-preset-overview"></a>

Queste funzioni preimpostate forniscono funzionalità di valutazione per: out-of-the-box
+ `prime_code`— Generazione di codice e valutazione della correttezza
+ `prime_math`— Ragionamento matematico e valutazione della risoluzione dei problemi

### Configurazione rapida
<a name="nova-rft-eval-preset-setup"></a>

1. [Scarica il layer Lambda dalle versioni. nova-custom-eval-sdk ](https://github.com/aws/nova-custom-eval-sdk/releases)

1. Pubblica il layer Lambda utilizzando AWS Command Line Interface ()AWS CLI:

   ```
   aws lambda publish-layer-version \
       --layer-name preset-function-layer \
       --description "Preset reward function layer with dependencies" \
       --zip-file fileb://universal_reward_layer.zip \
       --compatible-runtimes python3.9 python3.10 python3.11 python3.12 \
       --compatible-architectures x86_64 arm64
   ```

1. Aggiungi il layer alla tua funzione Lambda nella Console di AWS gestione (seleziona il layer preset-function-layer dal livello personalizzato e aggiungi anche AWSSDKPandas-Python 312 per le dipendenze numpy).

1. Importa e usa nel tuo codice Lambda:

   ```
   from prime_code import compute_score  # For code evaluation
   from prime_math import compute_score  # For math evaluation
   ```

### funzione prime\_code
<a name="nova-rft-eval-preset-code"></a>

Valuta le attività di generazione di codice Python eseguendo codice in base a casi di test e misurando la correttezza.

**Esempio di formato del set di dati di input**

```
{"messages":[{"role":"user","content":"Write a function that returns the sum of two numbers."}],"reference_answer":{"inputs":["3\n5","10\n-2","0\n0"],"outputs":["8","8","0"]}}
{"messages":[{"role":"user","content":"Write a function to check if a number is even."}],"reference_answer":{"inputs":["4","7","0","-2"],"outputs":["True","False","True","True"]}}
```

**Caratteristiche principali**
+ Estrazione automatica del codice dai blocchi di codice markdown
+ Rilevamento delle funzioni e test basati sulle chiamate
+ Esecuzione di test case con protezione dal timeout
+ Convalida della sintassi e controlli di compilazione
+ Segnalazione dettagliata degli errori con traceback

### funzione prime\_math
<a name="nova-rft-eval-preset-math"></a>

Valuta le capacità di ragionamento matematico e di risoluzione dei problemi con il supporto della matematica simbolica.

**Formato di input**

```
{"messages":[{"role":"user","content":"What is the derivative of x^2 + 3x?."}],"reference_answer":"2*x + 3"}
```

**Caratteristiche principali**
+ Valutazione matematica simbolica utilizzando SymPy
+ Formati di risposta multipli (LaTeX, testo semplice, simbolico)
+ Controllo matematico dell'equivalenza
+ Normalizzazione e semplificazione delle espressioni

### Requisiti per il formato dei dati
<a name="nova-rft-eval-preset-data-format"></a>

**Per la valutazione del codice**
+ Input: matrice di argomenti delle funzioni (tipi propri: numeri interi, stringhe, ecc.)
+ Output: matrice di valori restituiti previsti (tipi appropriati: booleani, numeri, ecc.)
+ Codice: deve essere in Python con definizioni di funzioni chiare

**Per la valutazione matematica**
+ Risposta di riferimento: espressione matematica o valore numerico
+ Risposta: può essere LaTe X, testo semplice o notazione simbolica
+ Equivalenza: verificata simbolicamente, non solo in base alla corrispondenza tra stringhe

### Best practice
<a name="nova-rft-eval-preset-best-practices"></a>
+ Usa i tipi di dati appropriati nei casi di test (numeri interi contro stringhe, booleani vs «True»)
+ Fornisci firme funzionali chiare nei problemi di codice
+ Includi casi limite negli input di test (zero, numeri negativi, input vuoti)
+ Formatta le espressioni matematiche in modo coerente nelle risposte di riferimento
+ Testa la tua funzione di ricompensa con dati di esempio prima dell'implementazione

### Gestione degli errori
<a name="nova-rft-eval-preset-error-handling"></a>

Entrambe le funzioni includono una solida gestione degli errori per:
+ Errori di compilazione nel codice generato
+ Eccezioni di runtime durante l'esecuzione
+ Dati di input non validi
+ Scenari di timeout per loop infiniti
+ Espressioni matematiche non valide

## Creazione della funzione di ricompensa
<a name="nova-rft-eval-custom-reward"></a>

### Requisiti Lambda ARN
<a name="nova-rft-eval-lambda-arn"></a>

Il tuo Lambda ARN deve seguire questo formato:

```
"arn:aws:lambda:*:*:function:*SageMaker*"
```

Se la Lambda non dispone di questo schema di denominazione, il processo avrà esito negativo con questo errore:

```
[ERROR] Unexpected error: lambda_arn must contain one of: ['SageMaker', 'sagemaker', 'Sagemaker'] when running on SMHP platform (Key: lambda_arn)
```

### Formato di richiesta Lambda
<a name="nova-rft-eval-lambda-request"></a>

La tua funzione Lambda riceve i dati in questo formato:

```
[  
  {  
    "id": "sample-001",  
    "messages": [  
      {  
        "role": "user",  
        "content": [  
          {  
            "type": "text",  
            "text": "Do you have a dedicated security team?"  
          }  
        ]  
      },  
      {  
        "role": "nova_assistant",  
        "content": [  
          {  
            "type": "text",  
            "text": "As an AI developed by Company, I don't have a dedicated security team..."  
          }  
        ]  
      }  
    ],  
    "reference_answer": {  
      "compliant": "No",  
      "explanation": "As an AI developed by Company, I do not have a traditional security team..."  
    }  
  }  
]
```

**Nota**  
La struttura dei messaggi include l'`content`array annidato, corrispondente al formato dei dati di input. L'ultimo messaggio con ruolo `nova_assistant` contiene la risposta generata dal modello.

### Formato di risposta Lambda
<a name="nova-rft-eval-lambda-response"></a>

La tua funzione Lambda deve restituire dati in questo formato:

```
[  
  {  
    "id": "sample-001",  
    "aggregate_reward_score": 0.75,  
    "metrics_list": [  
      {  
        "name": "accuracy",  
        "value": 0.85,  
        "type": "Metric"  
      },  
      {  
        "name": "fluency",  
        "value": 0.90,  
        "type": "Reward"  
      }  
    ]  
  }  
]
```

**Campi di risposta**
+ `id`— Deve corrispondere all'ID del campione di input
+ `aggregate_reward_score`— Punteggio complessivo (in genere da 0,0 a 1,0)
+ `metrics_list`— Serie di metriche individuali con:
  + `name`— Identificatore metrico (ad es. «precisione», «fluidità»)
  + `value`— Punteggio metrico (in genere da 0,0 a 1,0)
  + `type`— «Metrico» (per la rendicontazione) o «Premio» (utilizzato nella formazione)

## autorizzazioni IAM
<a name="nova-rft-eval-iam"></a>

### Autorizzazioni richieste
<a name="nova-rft-eval-iam-required"></a>

Il ruolo di SageMaker esecuzione deve disporre delle autorizzazioni per richiamare la funzione Lambda. Aggiungi questa politica al tuo SageMaker ruolo di esecuzione:

```
{  
  "Version": "2012-10-17",		 	 	   
  "Statement": [  
    {  
      "Effect": "Allow",  
      "Action": [  
        "lambda:InvokeFunction"  
      ],  
      "Resource": "arn:aws:lambda:region:account-id:function:function-name"  
    }  
  ]  
}
```

### Ruolo di esecuzione Lambda
<a name="nova-rft-eval-iam-lambda"></a>

Il ruolo di esecuzione della tua funzione Lambda richiede le autorizzazioni di esecuzione Lambda di base:

```
{  
  "Version": "2012-10-17",		 	 	   
  "Statement": [  
    {  
      "Effect": "Allow",  
      "Action": [  
        "logs:CreateLogGroup",  
        "logs:CreateLogStream",  
        "logs:PutLogEvents"  
      ],  
      "Resource": "arn:aws:logs:*:*:*"  
    }  
  ]  
}
```

Se la tua funzione Lambda accede ad altri AWS servizi (ad esempio, S3 per i dati di riferimento, DynamoDB per la registrazione), aggiungi tali autorizzazioni al ruolo di esecuzione Lambda.

## Esecuzione del processo di valutazione
<a name="nova-rft-eval-execute"></a>

1. **Prepara i tuoi dati**: formatta i dati di valutazione in base ai requisiti di formato dei dati e carica il file JSONL su S3: `s3://your-bucket/eval-data/eval_data.jsonl`

1. **Configura la tua ricetta**: aggiorna la ricetta di esempio con la tua configurazione:
   + Imposta `model_name_or_path` la posizione del modello
   + Imposta `lambda_arn` sulla funzione di ricompensa ARN
   + Imposta `output_s3_path` la posizione di uscita desiderata
   + Regola `inference` i parametri secondo necessità

   Salva la ricetta con nome `rft_eval_recipe.yaml`

1. **Esegui la valutazione**: esegui il processo di valutazione utilizzando il taccuino fornito: [Quaderni di valutazione](https://docs.aws.amazon.com/sagemaker/latest/dg/nova-model-evaluation.html#nova-model-evaluation-notebook)

1. **Monitora i progressi**: monitora il processo di valutazione tramite:
   + SageMaker Console: controlla lo stato del lavoro e i registri
   + CloudWatch Registri: visualizza i registri di esecuzione dettagliati
   + Lambda Logs: problemi relativi alla funzione di ricompensa di debug

## Comprensione dei risultati della valutazione
<a name="nova-rft-eval-results"></a>

### Formato di output
<a name="nova-rft-eval-output-format"></a>

Il processo di valutazione restituisce i risultati nella posizione S3 specificata in formato JSONL. Ogni riga contiene i risultati della valutazione per un campione:

```
{  
  "id": "sample-001",  
  "aggregate_reward_score": 0.75,  
  "metrics_list": [  
    {  
      "name": "accuracy",  
      "value": 0.85,  
      "type": "Metric"  
    },  
    {  
      "name": "fluency",  
      "value": 0.90,  
      "type": "Reward"  
    }  
  ]  
}
```

**Nota**  
L'RFT Evaluation Job Output è identico al formato Lambda Response. Il servizio di valutazione analizza la risposta della funzione Lambda senza modifiche, garantendo la coerenza tra i calcoli delle ricompense e i risultati finali.

### Interpretazione dei risultati
<a name="nova-rft-eval-interpret"></a>

**Punteggio di ricompensa aggregato**
+ Intervallo: in genere da 0,0 (peggiore) a 1,0 (migliore), ma dipende dall'implementazione
+ Scopo: un unico numero che riassume le prestazioni complessive
+ Utilizzo: confronta i modelli, monitora i miglioramenti durante l'allenamento

**Metriche individuali**
+ Tipo di metrica: metriche informative per l'analisi
+ Tipo di ricompensa: metriche utilizzate durante la formazione RFT
+ Interpretazione: valori più alti in genere indicano prestazioni migliori (a meno che non si progettino metriche inverse)

### Benchmark delle prestazioni
<a name="nova-rft-eval-benchmarks"></a>

Ciò che costituisce una «buona» prestazione dipende dal caso d'uso:


| Intervallo di punteggio | Interpretazione | Azione | 
| --- | --- | --- | 
| 0,8 - 1,0 | Eccellente | Modello pronto per l'implementazione | 
| 0,6 - 0,8 | Buona | Potrebbero essere utili piccoli miglioramenti | 
| 0,4 - 0,6 | Giusto | È necessario un miglioramento significativo | 
| 0,0 - 0,4 | Povero | Rivedi i dati di allenamento e la funzione di ricompensa | 

**Importante**  
Queste sono linee guida generali. Definite le vostre soglie in base ai requisiti aziendali, alle prestazioni del modello di base, ai vincoli specifici del dominio e all'analisi costi-benefici dell'ulteriore formazione.

## Risoluzione dei problemi
<a name="nova-rft-eval-troubleshooting"></a>

### Problemi comuni
<a name="nova-rft-eval-common-issues"></a>


| Problema | Causa | Soluzione | 
| --- | --- | --- | 
| Timeout Lambda | Calcolo complesso dei premi | Aumentare il timeout Lambda o ottimizzare la funzione | 
| Autorizzazione negata | Autorizzazioni IAM mancanti | Verifica che SageMaker il ruolo possa richiamare Lambda | 
| Punteggi incoerenti | Funzione di ricompensa non deterministica | Usa seed fissi o logica deterministica | 
| Risultati mancanti | Errori Lambda non rilevati | Aggiungi una gestione completa degli errori in Lambda | 

### Lista di controllo per il debug
<a name="nova-rft-eval-debug-checklist"></a>
+ Verifica che i dati di input seguano il formato corretto con array di contenuti annidati
+ Verifica che l'ARN Lambda sia corretto e che la funzione sia stata implementata
+ Controlla le autorizzazioni IAM per SageMaker → Invocazione Lambda
+ Esamina CloudWatch i registri per gli errori Lambda
+ Verifica che la risposta Lambda corrisponda al formato previsto

## Best practice
<a name="nova-rft-eval-best-practices-section"></a>
+ Inizia in modo semplice: inizia con le funzioni di ricompensa di base e ripeti
+ Testa Lambda separatamente: utilizza gli eventi di test Lambda prima della valutazione completa
+ Convalida su set di dati di piccole dimensioni: esegui la valutazione sul sottoinsieme prima del set di dati completo
+ Controllo della versione: monitora le versioni della funzione di ricompensa insieme alle versioni del modello
+ Monitoraggio dei costi: le chiamate Lambda e il tempo di calcolo influiscono sui costi
+ Registra in modo esteso: utilizza le istruzioni di stampa in Lambda per il debug
+ Imposta i timeout in modo appropriato: equilibrio tra pazienza e costi
+ Metriche dei documenti: definisci chiaramente cosa misura ogni metrica

## Fasi successive
<a name="nova-rft-eval-next-steps"></a>

Dopo aver completato la valutazione RFT:
+ Se i risultati sono soddisfacenti: distribuisci il modello alla produzione
+ Se è necessario un miglioramento:
  + Regola la funzione di ricompensa
  + Raccogli più dati di allenamento
  + Modifica gli iperparametri di allenamento
  + Esegui iterazioni di addestramento RFT aggiuntive
+ Monitoraggio continuo: rivalutazione periodica con nuovi dati