View a markdown version of this page

Valutazione del modello - 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à.

Valutazione del modello

Evaluation confronta l'agente in base a un set di prompt e riporta le metriche relative a reward, pass @k e traiectory. Usalo per confrontare un modello perfezionato con quello di base o per confrontare un candidato prima dell'implementazione.

Nota: utilizzo di lavori di valutazione JobCategory: AgentRFTEvaluation (diverso da AgentRFT quello utilizzato nella formazione). Utilizza questa categoria per DescribeJob le chiamate CreateJob e i lavori di valutazione.

Preparazione dei dati di valutazione

I set di dati di valutazione utilizzano lo stesso formato e lo stesso schema dei set di dati di addestramento. Per informazioni, consulta Formato rapido del set di dati. La guida riportata di seguito è specifica per eval.

  1. Estrai i dati di valutazione dai set di dati di formazione. Non fate mai valutazioni in base alle istruzioni di allenamento, poiché i punteggi sovrastimerebbero le prestazioni. Riserva una parte dei dati per un set esaurito o mantieni un set di dati di valutazione separato. Mantieni lo stesso set di valutazione tra le iterazioni in modo che i risultati siano confrontabili.

  2. Corrisponde al formato del prompt di allenamento. L'agente deve analizzare i prompt eval nello stesso modo in cui ha analizzato i prompt di addestramento. Se hai usato la codifica o la crittografia durante l'addestramento, usa la stessa struttura qui. La generazione di entrambe dallo stesso percorso di codice evita la deriva.

  3. Descrivi i comportamenti che ti interessano. Esercita ogni strumento e combinazione di strumenti utilizzati dal tuo agente. Includi i prompt che in precedenza causavano guasti in modo che le regressioni emergano.

  4. Proteggete i contenuti sensibili allo stesso modo dei corsi di formazione, in quanto il servizio trasmette le istruzioni senza ispezioni.

Avvio di un lavoro di valutazione

Al termine della formazione, valutate il modello utilizzando uno dei seguenti metodi.

SageMaker AI Studio

  • Vai alla pagina dei dettagli del tuo modello personalizzato (Modelli > I miei modelli > seleziona il tuo modello MTRL).

  • Scegli Evaluate per aprire la pagina di configurazione della valutazione.

  • Seleziona Multi-Turn RL come tipo di valutazione.

  • Configura l'ambiente del tuo agente: seleziona il tuo AgentCore runtime Bedrock o fornisci l'ARN del tuo spedizioniere Lambda.

  • Fornisci il tuo set di dati di valutazione (URI S3 o set di dati registrato contenente richieste di valutazione esaurite).

  • Scegli Invia per iniziare il processo di valutazione.

SageMaker SDK per AI per Python

MultiTurnRLEvaluatorFornisce un'interfaccia di alto livello per l'avvio di lavori di valutazione. Quando superate un corso di formazione completo, lo strumento di valutazione risolve automaticamente l'ARN del pacchetto modello, la configurazione dell'agente e il qualificatore dell'agente.

Valuta un modello ottimizzato

from sagemaker.train.evaluate import MultiTurnRLEvaluator from sagemaker.train.multi_turn_rl_trainer import MultiTurnRLTrainer # Attach to a completed training job trainer = MultiTurnRLTrainer.attach(job_name="my-mtrl-job-20260512082005") # Minimal evaluator — everything else inferred from trainer evaluator = MultiTurnRLEvaluator( model=trainer, dataset="s3://my-bucket/eval-prompts.parquet", s3_output_path="s3://my-bucket/eval-output/", ) execution = evaluator.evaluate() print(f"Evaluation started: {execution.arn}") # Wait for completion execution.wait() print(f"Status: {execution.status.overall_status}") print(f"S3 Output: {execution.s3_output_path}") print(f"MLflow: {execution.mlflow_url}")

Valuta un modello base (nessuna formazione)

Quando si valuta direttamente un modello base, agent_config è necessario poiché non esiste un trainer da cui ereditare:

from sagemaker.train.evaluate import MultiTurnRLEvaluator # With Bedrock AgentCore evaluator_base = MultiTurnRLEvaluator( model="openai-reasoning-gpt-oss-20b", dataset="s3://my-bucket/eval-prompts.parquet", agent_config="arn:aws:bedrock-agentcore:us-west-2:123456789012:runtime/my-agent", s3_output_path="s3://my-bucket/eval-output/base/", mlflow_resource_arn="arn:aws:sagemaker:us-west-2:123456789012:mlflow-tracking-server/my-mlflow", role="arn:aws:iam::123456789012:role/SageMakerRole", accept_eula=True, ) execution = evaluator_base.evaluate() execution.wait()

Side-by-side confronto (base vs ottimizzato)

Una singola evaluate() chiamata che valuta sia il modello base che il modello ottimizzato in un'unica pipeline:

comparison_evaluator = MultiTurnRLEvaluator( model=trainer, dataset="s3://my-bucket/eval-prompts.parquet", s3_output_path="s3://my-bucket/eval-output/comparison/", evaluate_base_model=True, ) execution = comparison_evaluator.evaluate() execution.wait() print(f"Status: {execution.status.overall_status}")

Monitora e recupera i risultati

# Refresh status execution.refresh() print(f"Status: {execution.status.overall_status}") # Step-level detail for step in execution.status.step_details: print(f" {step.name}: {step.status}") if step.job_arn: print(f" Job ARN: {step.job_arn}") # MLflow URL print(f"MLflow: {execution.mlflow_url}")

AWS CLI e boto3

Puoi anche creare lavori di valutazione direttamente utilizzando l'API. CreateJob

Crea un lavoro di valutazione (Bedrock AgentCore)

Per creare un lavoro di valutazione, chiama l'CreateJobAPI con JobCategory set toAgentRFTEvaluation. L'installazione e la configurazione dell'agente seguono lo stesso processo dei lavori di formazione.

Utilizzo della AWS CLI

aws sagemaker create-job \ --job-category AgentRFTEvaluation \ --job-name "my-agent-rft-eval-job" \ --role-arn "arn:aws:iam::123456789012:role/SageMakerFineTuningJobRole" \ --job-config-schema-version "1.0.0" \ --job-config-document '{ "AgentConfig": { "BedrockAgentCoreConfig": { "AgentRuntimeArn": "arn:aws:bedrock-agentcore:us-west-2:123456789012:runtime/my-agent" } }, "InputDataConfig": [{ "ChannelName": "evaluation", "DataSource": { "S3DataSource": { "S3DataType": "S3Prefix", "S3Uri": "s3://your-bucket-name/eval-prompts/" } } }], "OutputDataConfig": { "S3OutputPath": "s3://your-bucket-name/eval-output/", "MlflowConfig": { "MlflowResourceArn": "arn:aws:sagemaker:us-west-2:123456789012:mlflow-app/my-rft-mlflow-app" } }, "EvaluationConfig": { "BaseModelArn": "arn:aws:sagemaker:us-west-2:aws:hub-content/SageMakerPublicHub/Model/openai-reasoning-gpt-oss-20b", "AcceptEula": true, "HyperParameters": {"batch": { "eval_group_size": 1 }, "eval_metrics_config": { "pass_k_values": [1, 2, 4, 8, 16, 32], "success_threshold": 1 }} } }' \ --region us-west-2

Utilizzo di SageMaker AI Python SDK (boto3)

import json import boto3 sm = boto3.client("sagemaker") response = sm.create_job( JobName="my-agent-rft-eval-job", RoleArn="arn:aws:iam::123456789012:role/SageMakerFineTuningJobRole", JobCategory="AgentRFTEvaluation", JobConfigSchemaVersion="1.0.0", JobConfigDocument=json.dumps({ "AgentConfig": { "BedrockAgentCoreConfig": { "AgentRuntimeArn": "arn:aws:bedrock-agentcore:us-west-2:123456789012:runtime/my-agent" } }, "InputDataConfig": [{ "ChannelName": "evaluation", "DataSource": { "S3DataSource": { "S3DataType": "S3Prefix", "S3Uri": "s3://your-bucket-name/eval-prompts/" } } }], "OutputDataConfig": { "S3OutputPath": "s3://your-bucket-name/eval-output/", "MlflowConfig": { "MlflowResourceArn": "arn:aws:sagemaker:us-west-2:123456789012:mlflow-app/my-rft-mlflow-app" } }, "EvaluationConfig": { "BaseModelArn": "arn:aws:sagemaker:us-west-2:aws:hub-content/SageMakerPublicHub/Model/openai-reasoning-gpt-oss-20b", "AcceptEula": True, "HyperParameters": {"batch": { "eval_group_size": 1 }, "eval_metrics_config": { "pass_k_values": [1, 2, 4, 8, 16, 32], "success_threshold": 1 }} } }) ) print(f"Eval Job ARN: {response['JobArn']}")

Valutazione di un modello ottimizzato

Per valutare un modello prodotto da un lavoro di formazione, includi: ModelPackageConfig InputModelPackageArn

import json import boto3 sm = boto3.client("sagemaker") response = sm.create_job( JobName="my-agent-rft-eval-finetuned", RoleArn="arn:aws:iam::123456789012:role/SageMakerFineTuningJobRole", JobCategory="AgentRFTEvaluation", JobConfigSchemaVersion="1.0.0", JobConfigDocument=json.dumps({ "AgentConfig": {...}, "InputDataConfig": [...], "OutputDataConfig": {...}, "ModelPackageConfig": { "InputModelPackageArn": "arn:aws:sagemaker:us-west-2:123456789012:model-package/my-final-models/1" }, "EvaluationConfig": {...} }) ) print(f"Eval Job ARN: {response['JobArn']}")

Creare un processo di valutazione (agente personalizzato con Lambda Forwarder)

Utilizzate lo stesso approccio della AgentCore valutazione di Bedrock ma specificate in: CustomAgentLambdaConfig AgentConfig

"AgentConfig": { "CustomAgentLambdaConfig": { "LambdaArn": "arn:aws:lambda:us-west-2:account-id:function:rft-agent-forwarder" } }

Iperparametri di valutazione

Categoria Parametro Tipo Predefinita Description
batch eval_group_size intero 1 Implementazioni per prompt. Nota: per calcolare pass @k, imposta eval_group_size >= k.
eval_metrics_config pass_k_values array [1, 2, 4, 8, 16, 32] Elenco di valori k per il calcolo delle metriche pass @k e pass^k. pass @k = probabilità che almeno 1 delle k implementazioni campionate abbia successo. pass^k = probabilità che tutte le k implementazioni abbiano successo.
eval_metrics_config soglia di successo virgola mobile 1 Un rollout è «riuscito» quando reward >= success_threshold. Nota che questo vale per le metriche pass @k, pass^k, count. succeeded/failed
eval_sampling_params temperature virgola mobile 0 Temperatura di campionamento per le implementazioni di valutazione. Nota: si consiglia di aumentare questo valore oltre 0 per le metriche pass @k e pass^k per evitare comportamenti deterministici.
eval_sampling_params campionamento_top_p virgola mobile 1 Interruzione del campionamento del nucleo per le implementazioni di valutazione.
eval_sampling_params sampling_max_tokens intero 4096 Numero massimo di token che il modello può generare per turno durante i rollout di valutazione.
rollout timeout virgola mobile 600 Tempo (secondi) dopo il quale l'implementazione di una valutazione viene considerata fallita e può essere ritentata.
implementazione max_concurrency int 96 Numero massimo di implementazioni di valutazione che possono essere eseguite in parallelo.
implementazione max_retries int 3 Numero di tentativi di implementazione della valutazione non riusciti prima di contrassegnarli come definitivamente falliti.

Monitoraggio e valutazione

aws sagemaker describe-job \ --job-name "my-agent-rft-eval-job" \ --job-category AgentRFTEvaluation \ --region us-west-2

Interpretazione dei risultati della valutazione

Apri l'app MLFlow per visualizzare le metriche registrate, le distribuzioni delle ricompense e le visualizzazioni delle traiettorie per l'esecuzione della valutazione. Vedi sotto per una spiegazione del significato di ciascuna metrica.

Metriche sui premi (/) eval/reward

Metrica Description
eval/reward/mean Punteggio medio di ricompensa in tutte le implementazioni.
eval/reward/min Punteggio di ricompensa minimo per tutte le implementazioni.
eval/reward/max Punteggio massimo di ricompensa in tutte le implementazioni.
eval/reward/std Deviazione standard dei punteggi dei premi in tutte le implementazioni.
eval/reward/zero_frac Frazione di implementazioni che ha ottenuto esattamente 0 (fallimenti completi).
eval/reward/pass_at_1 Probabilità che almeno 1 campione su 1 per prompt abbia successo. Questa è la metrica di successo principale.
eval/reward/pass_power_1 Frequenza di superamento con ponderazione della potenza.
eval/reward/succeeded_rollouts Numero totale di implementazioni che hanno ottenuto una ricompensa positiva.
eval/reward/failed_rollouts Numero totale di implementazioni che hanno ottenuto 0.
eval/reward/num_prompts Numero di prompt distinti valutati.
eval/reward/rollouts_per_prompt Numero di tentativi (campioni) generati per prompt.
eval/reward/success_threshold Il valore della ricompensa richiesto per considerare un'implementazione «riuscita».
eval/reward/mean_within_groups Ricompensa media per gruppo di prompt (richiede l'impostazione di rollouts_per_prompt > 1).
eval/reward/std_within_groups Deviazione standard della ricompensa all'interno di ciascun gruppo di prompt.
eval/reward/min_within_groups Ricompensa minima all'interno di ogni gruppo di prompt.
eval/reward/max_within_groups Ricompensa massima all'interno di ogni gruppo di prompt.

Metriche dei token (/) eval/tokens

Metrica Description
eval/tokens/prompt_mean Lunghezza media dei prompt in token (include prompt di sistema, descrizioni degli strumenti e contesto a turni multipli).
eval/tokens/response_mean Lunghezza media della risposta del modello in token per turno.
eval/tokens/response_min Risposta più breve del modello in token.
eval/tokens/response_max Risposta più lunga del modello in token.
eval/tokens/response_std Deviazione standard delle lunghezze di risposta. Una varianza elevata può indicare un comportamento incoerente dell'agente.

Trasforma le metriche (/) eval/turns

Metrica Description
eval/turns/mean Numero medio di turni per implementazione. I valori elevati possono indicare che l'agente sta ripetendo un ciclo continuo o sta riprovando eccessivamente.
eval/turns/min Minor numero di turni in qualsiasi rollout.
eval/turns/max La maggior parte dei turni in ogni rollout. Valori molto alti suggeriscono che l'agente sia rimasto bloccato senza risolvere il problema.

Metriche di probabilità di log (eval/logprob/)

Metrica Description
eval/logprob/nz_mean Probabilità logaritmica media di token diversi da zero (senza padding). Valori vicini a 0 indicano un'elevata affidabilità del modello.
eval/logprob/nz_min Token con la probabilità logaritmica più bassa (previsione meno affidabile).
eval/logprob/nz_max Token con la più alta probabilità logaritmica (previsione più affidabile).
eval/logprob/nz_std Deviazione standard di probabilità logaritmiche diverse da zero. Valori bassi significano confidenza costantemente elevata.
eval/logprob/zero_frac Frazione di token con probabilità logaritmica esattamente pari a zero (probabilità 1,0), tipicamente token con imbottitura o token forzati.
eval/logprob/zero_count Numero totale di token zero-logprob.
eval/logprob/zero_per_group Token zero-logprob medi per gruppo di prompt.

Metriche temporali (timing_s/)

Metrica Description
timing_s/eval Tempo totale dell'orologio da parete per la valutazione in secondi. Dividi eval/reward/num_prompts per il tempo medio per richiesta.

Come diagnosticare schemi comuni

Pattern Causa probabile
pass_at_1 = 0, alto turns/mean L'agente esegue il loop senza risolvere i compiti. Controlla l'utilizzo degli utensili e i modelli di azione nelle traiettorie.
pass_at_1 = 0, basso tokens/response_mean Agente che produce risposte molto brevi (probabilmente vuote o malformate). Verifica il formato del prompt e la compatibilità del modello.
Alto turns/max con basso turns/min L'agente mostra un comportamento incoerente tra i prompt. Alcune attività potrebbero essere molto più difficili o l'agente potrebbe non riuscire a eseguire interazioni con strumenti specifici.
Alta confidenza (logprob/nz_meanprossima allo 0) ma bassa ricompensa Il modello produce con sicurezza risultati errati. Potrebbe essere necessaria una maggiore diversità dei dati di addestramento o un perfezionamento del segnale di ricompensa.
zero_frac = 1.0in ricompensa Fallimento completo. Verificate la distribuzione degli agenti, la connettività degli strumenti e che il formato del set di dati di valutazione sia corretto.

Per risultati non elaborati, esamina gli artefatti scritti nel S3OutputPath modo specificato in. OutputDataConfig

Limiti, & quote per la valutazione

Utilizza le quote di AWS servizio per richiedere un aumento del limite del numero massimo di lavori di valutazione simultanei.

Quota Predefinita
numero massimo di lavori simultanei di rft-evaluation-job 1