View a markdown version of this page

Valutazione RFT - Amazon Nova

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

Cos'è la valutazione RFT?

La valutazione RFT consente di valutare le prestazioni del modello utilizzando funzioni di ricompensa personalizzate prima, durante o dopo il training di reinforcement learning. A differenza delle valutazioni standard che utilizzano metriche predefinite, RFT Evaluation consente di definire i propri criteri di successo tramite una funzione Lambda che valuta i risultati del modello in base ai requisiti specifici.

Perché effettuare una valutazione con RFT?

La valutazione è fondamentale per determinare se il processo di ottimizzazione RL prevede:

  • 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 tuoi criteri di successo personalizzati, definiti dalla tua funzione di ricompensa

Quando utilizzare la valutazione RFT

Usa la valutazione RFT in questi scenari:

  • Prima della formazione RFT: stabilisci le metriche di base sul tuo set di dati di valutazione

  • Durante la formazione RFT: monitora i progressi della formazione con checkpoint intermedi

  • Dopo la formazione RFT: verifica che il modello finale soddisfi i tuoi requisiti

  • Confronto dei 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), utilizza metodi di valutazione standard.

Requisiti per il formato dei dati

Struttura dei dati di input

I dati di input per la valutazione RFT devono seguire il formato OpenAI Reinforcement Fine-Tuning . Ogni esempio è un oggetto JSON contenente:

  • messages— Serie di turni di conversazione con e ruoli system user

  • reference_answer— Risultati attesi o dati di verità fondamentali utilizzati dalla funzione di ricompensa per il punteggio

Esempio di formato dei dati

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

  • Solo testo: non sono supportati ingressi multimodali (immagini, audio, video)

  • Single-turn conversazioni: supporta solo messaggi utente singoli (nessun dialogo 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

Notebook di esempio

Per un esempio completo, consulta Quaderni di valutazione.

Esempio di configurazione della ricetta

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

Due funzioni di ricompensa preimpostate (prime_codeeprime_math) sono disponibili come livello Lambda per una facile integrazione con le funzioni RFT Lambda.

Panoramica di

Queste funzioni preimpostate forniscono funzionalità di valutazione pronte all'uso per:

  • prime_code— Generazione di codice e valutazione della correttezza

  • prime_math— Ragionamento matematico e valutazione della risoluzione dei problemi

Configurazione rapida

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

  2. Pubblica il layer Lambda utilizzando Command Line Interface (): AWS 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
  3. Aggiungi il livello alla tua funzione Lambda nella Console di AWS gestione (seleziona il livello di funzione preimpostato dal livello personalizzato e aggiungilo anche per le dipendenze numpy). AWSSDKPandas-Python312

  4. Importa e utilizza 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

Valuta le attività di generazione del codice Python eseguendo il codice rispetto ai casi di test e misurandone 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

  • Validazione della sintassi e controlli di compilazione

  • Segnalazione dettagliata degli errori con traceback

funzione prime_math

Valuta le capacità di ragionamento matematico e di risoluzione dei problemi con supporto matematico simbolico.

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 normale, simbolico)

  • Verifica matematica dell'equivalenza

  • Normalizzazione e semplificazione delle espressioni

Requisiti per il formato dei dati

Per la valutazione del codice

  • Ingressi: matrice di argomenti di funzione (tipi appropriati: numeri interi, stringhe, ecc.)

  • Uscite: matrice dei valori di ritorno previsti (tipi corretti: 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 normale o notazione simbolica

  • Equivalenza: verificata simbolicamente, non solo la corrispondenza delle stringhe

Best practice

  • Usa i tipi di dati appropriati nei casi di test (numeri interi vs stringhe, booleani vs «True»)

  • Fornisci firme di funzione chiare nei problemi di codice

  • Includi casi limite negli input del 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

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 corretti

  • Scenari di timeout per loop infiniti

  • Espressioni matematiche non valide

Creazione della funzione di ricompensa

Requisiti Lambda ARN

Il tuo Lambda ARN deve seguire questo formato:

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

Se la Lambda non ha 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

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 del messaggio include l'contentarray 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

La tua funzione Lambda deve restituire i 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 esempio, «precisione», «fluidità»)

    • value— Punteggio metrico (in genere da 0,0 a 1,0)

    • type— «Metrica» (per la segnalazione) o «Ricompensa» (utilizzata nella formazione)

autorizzazioni IAM

Autorizzazioni richieste

Il ruolo di SageMaker esecuzione deve disporre delle autorizzazioni per richiamare la funzione Lambda. Aggiungi questa policy 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

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 lavoro di valutazione

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

  2. Configura la tua ricetta: aggiorna la ricetta di esempio con la tua configurazione:

    • Impostalo model_name_or_path sulla posizione del tuo modello

    • Imposta lambda_arn la tua 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

  3. Esegui la valutazione: esegui il lavoro di valutazione utilizzando il taccuino fornito: Quaderni di valutazione

  4. Monitora i progressi: monitora il tuo lavoro di valutazione tramite:

    • SageMaker Console: controlla lo stato e i registri del lavoro

    • CloudWatch Registri: visualizza i log di esecuzione dettagliati

    • Lambda Logs: problemi relativi alla funzione di ricompensa per il debug

Comprensione dei risultati della valutazione

Formato di output

Il processo di valutazione invia i risultati alla 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

Punteggio di ricompensa aggregato

  • Intervallo: in genere da 0,0 (peggiore) a 1,0 (migliore), ma dipende dall'implementazione

  • Scopo: numero singolo che riassume le prestazioni complessive

  • Utilizzo: confronta i modelli, monitora i miglioramenti rispetto alla formazione

Metriche individuali

  • Tipo di metrica: metriche informative per l'analisi

  • Tipo di ricompensa: metriche utilizzate durante la formazione RFT

  • Interpretazione: valori più alti indicano generalmente prestazioni migliori (a meno che non si progettino metriche inverse)

Parametri di riferimento delle prestazioni

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 Piccoli miglioramenti possono essere utili
0,4 - 0,6 Giusto È necessario un miglioramento significativo
0,0 - 0,4 Scarso Rivedi i dati di allenamento e la funzione di ricompensa
Importante

Queste sono linee guida generali. Definisci le tue soglie in base ai requisiti aziendali, alle prestazioni del modello di base, ai vincoli specifici del dominio e all'analisi costi-benefici della formazione continua.

Risoluzione dei problemi

Problemi comuni

Problema Causa Soluzione
Timeout Lambda Calcolo complesso delle ricompense Aumenta il timeout di Lambda o ottimizza la funzione
Autorizzazione negata Autorizzazioni IAM mancanti SageMaker Il ruolo di verifica può richiamare Lambda
Punteggi incoerenti Non-deterministic funzione di ricompensa Usa semi fissi o logica deterministica
Risultati mancanti Errori Lambda non rilevati Aggiungi una gestione completa degli errori in Lambda

Lista di controllo per il debug

  • Verifica che i dati di input seguano il formato corretto con array di contenuti annidati

  • Verifica che Lambda ARN sia corretto e che la funzione sia implementata

  • Controlla le autorizzazioni IAM per → Lambda invocation SageMaker

  • Controlla CloudWatch i log per gli errori Lambda

  • Convalida che la risposta Lambda corrisponda al formato previsto

Best practice

  • Inizia in modo semplice: inizia con le funzioni di ricompensa di base e ripeti

  • Prova 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: tieni traccia delle versioni delle funzioni di ricompensa insieme alle versioni del modello

  • Monitoraggio dei costi: le chiamate Lambda e i tempi di calcolo influiscono sui costi

  • Registra ampiamente: utilizza le istruzioni di stampa in Lambda per il debug

  • Imposta i timeout in modo appropriato: equilibrio tra pazienza e costi

  • Metriche del documento: definisci chiaramente cosa misura ciascuna metrica

Fasi successive

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 formazione RFT aggiuntive

  • Monitoraggio continuo: Re-evaluate periodicamente con nuovi dati