Esecuzione di valutazioni e interpretazione dei risultati - 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à.

Esecuzione di valutazioni e interpretazione dei risultati

Esecuzione del lavoro di valutazione

Fase 1: Preparare i dati

  • Formattate i dati di valutazione in base ai requisiti relativi al formato dei dati

  • Carica il tuo file JSONL su S3: s3://your-bucket/eval-data/eval_data.jsonl

Passaggio 2: 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

Fase 3: Eseguire la valutazione

Esegui il processo di valutazione utilizzando il taccuino fornito: Quaderni di valutazione

Contenitore di valutazione

708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-evaluation-repo:SM-TJ-Eval-V2-latest

Fase 4: Monitora i progressi

Monitora il tuo lavoro di valutazione attraverso:

  • 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

Formato di output

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

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

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 a:

  • Requisiti aziendali

  • Prestazioni del modello di base

  • Vincoli specifici del dominio

  • Analisi costi-benefici della formazione continua

Analisi dei risultati

Calcola statistiche riassuntive

import json import numpy as np scores = [] with open('evaluation_results.jsonl', 'r') as f: for line in f: result = json.loads(line) scores.append(result['aggregate_reward_score']) print(f"Mean: {np.mean(scores):.3f}") print(f"Median: {np.median(scores):.3f}") print(f"Std Dev: {np.std(scores):.3f}") print(f"Min: {np.min(scores):.3f}") print(f"Max: {np.max(scores):.3f}")
  • Identifica i casi di fallimento: esamina i campioni con punteggi bassi per comprendere i punti deboli

  • Confronta le metriche: analizza la correlazione tra diverse metriche per identificare i compromessi

  • Track Over Time: confronta i risultati della valutazione tra le iterazioni di formazione

risoluzione dei problemi

Problemi comuni

Problema Causa Soluzione
Timeout Lambda Calcolo complesso delle ricompense 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

  • 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

  • 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

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

Funzioni di ricompensa preimpostate

Due funzioni di ricompensa preimpostate (prime_code, prime_math) dalla libreria open source verl sono disponibili in un livello Lambda che puoi abbinare alla tua RFT Lambda.

Panoramica di

Queste funzioni out-of-the-box preimpostate forniscono funzionalità di valutazione 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

  2. Pubblica il layer Lambda utilizzando: 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 layer alla tua funzione Lambda in Console di gestione AWS (Seleziona il livello preset-function-layer dal livello personalizzato e aggiungi anche AWSSDKPandas-Python 312 per le dipendenze numpy)

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

Scopo: valuta le attività di generazione del codice Python eseguendo codice in base a casi di test e misurando la correttezza.

Esempio di formato del set di dati di input tratto dalla valutazione

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

Scopo: 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 semplice, simbolico)

  • Controllo matematico dell'equivalenza

  • Normalizzazione e semplificazione delle espressioni

Requisiti per il formato dei dati

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: verifica simbolica, non solo corrispondenza tra stringhe

Best practice

  • Usa i tipi di dati appropriati nei casi di test (numeri interi contro stringhe, booleani contro «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

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