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