View a markdown version of this page

Évaluation de modèle - Amazon SageMaker AI

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Évaluation de modèle

L'évaluation confronte votre agent à un ensemble rapide et indique les indicateurs de récompense, de pass @k et de trajectoire. Utilisez-le pour comparer un modèle affiné à sa base ou pour comparer un candidat avant le déploiement.

Remarque : Utilisation des tâches d'évaluation JobCategory: AgentRFTEvaluation (et non de celles utilisées dans le AgentRFT cadre de la formation). Utilisez cette catégorie pour CreateJob les DescribeJob appels à des tâches d'évaluation.

Préparation des données d'évaluation

Les ensembles de données d'évaluation utilisent le même format et le même schéma que les ensembles de données d'entraînement. Consultez Format de jeu de données rapide. Les directives ci-dessous sont spécifiques à l'égal.

  1. Extrayez les données d'évaluation des ensembles de données d'entraînement. N'évaluez jamais en fonction des instructions d'entraînement, car les scores surestimeront les performances. Réservez une partie des données pour un ensemble conservé ou conservez un ensemble de données d'évaluation distinct. Conservez le même ensemble d'évaluation entre les itérations afin que les résultats soient comparables.

  2. Correspond au format de l'invite d'entraînement. L'agent doit analyser les instructions d'évaluation de la même manière qu'il a analysé les instructions d'entraînement. Si vous avez utilisé le codage ou le chiffrement pendant l'entraînement, utilisez la même structure ici. La génération des deux à partir du même chemin de code évite la dérive.

  3. Couvrez les comportements qui vous intéressent. Testez chaque outil et chaque combinaison d'outils utilisés par votre agent. Incluez les instructions qui ont précédemment provoqué des défaillances, de sorte que des régressions apparaissent.

  4. Protégez le contenu sensible de la même manière que lors d'une formation, car le service transmet les instructions sans inspection.

Lancer une tâche d'évaluation

Une fois la formation terminée, évaluez votre modèle à l'aide de l'une des méthodes suivantes.

SageMaker Studio d'IA

  • Accédez à la page de détails de votre modèle personnalisé (Modèles > Mes modèles > sélectionnez votre modèle MTRL).

  • Choisissez Evaluate pour ouvrir la page de configuration de l'évaluation.

  • Sélectionnez Multi-Turn RL comme type d'évaluation.

  • Configurez votre environnement d'agent : sélectionnez votre environnement AgentCore d'exécution Bedrock ou fournissez l'ARN de votre redirecteur Lambda.

  • Fournissez votre ensemble de données d'évaluation (URI S3 ou ensemble de données enregistré contenant des instructions d'évaluation persistantes).

  • Choisissez Soumettre pour démarrer le travail d'évaluation.

SageMaker SDK Python pour IA

MultiTurnRLEvaluatorfournit une interface de haut niveau pour lancer des tâches d'évaluation. Lorsque vous réussissez un formateur terminé, l'évaluateur résout automatiquement l'ARN du package modèle, la configuration de l'agent et le qualificatif de l'agent.

Évaluer un modèle affiné

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}")

Évaluer un modèle de base (aucune formation)

Lors de l'évaluation directe d'un modèle de base, cela agent_config est nécessaire car aucun formateur ne peut hériter de :

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 comparaison (de base ou affiné)

Un evaluate() appel unique qui évalue à la fois le modèle de base et le modèle affiné dans un seul 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}")

Surveiller et récupérer les résultats

# 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 et boto3

Vous pouvez également créer des tâches d'évaluation directement à l'aide de l'CreateJobAPI.

Créer une tâche d'évaluation (Bedrock AgentCore)

Pour créer une tâche d'évaluation, appelez l'CreateJobAPI avec JobCategory set toAgentRFTEvaluation. L'installation et la configuration de l'agent suivent le même processus que les tâches de formation.

Utilisation de la 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

Utilisation du SDK SageMaker AI Python (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']}")

Évaluation d'un modèle affiné

Pour évaluer un modèle produit par un poste de formation, joignez-le ModelPackageConfig aux documents InputModelPackageArn suivants :

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']}")

Création d'une tâche d'évaluation (agent personnalisé avec Lambda Forwarder)

Utilisez la même approche que l' AgentCore évaluation de Bedrock, mais précisez CustomAgentLambdaConfig dans le AgentConfig :

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

Hyperparamètres d'évaluation

Catégorie Paramètre Type Par défaut Description
lot val_group_size entier 1 Déploiements par invite. Remarque : pour calculer pass @k, définissez eval_group_size >= k.
eval_metrics_config pass_k_values array [1, 2, 4, 8, 16, 32] Liste de k valeurs pour le calcul des métriques pass @k et pass^k. pass @k = probabilité qu'au moins un des k déploiements échantillonnés réussisse. pass^k = probabilité que tous les k déploiements réussissent.
eval_metrics_config seuil_de réussite float 1 Un déploiement est « réussi » lorsque reward >= success_threshold. Notez que cela s'applique aux métriques pass @k, pass^k et succeeded/failed count.
eval_sampling_params temperature float 0 Température d'échantillonnage pour les déploiements d'évaluation. Remarque : il est recommandé d'augmenter cette valeur au-delà de 0 pour les métriques pass @k et pass^k afin d'éviter un comportement déterministe.
eval_sampling_params sampling_top_p float 1 Arrêt de l'échantillonnage du noyau pour les déploiements d'évaluation.
eval_sampling_params sampling_max_tokens entier 4096 Nombre maximum de jetons que le modèle peut générer par tour lors des déploiements d'évaluation.
déploiement timeout float 600 Durée (secondes) après laquelle un déploiement d'évaluation est considéré comme ayant échoué et peut être réessayé.
déploiement max_concurrency int 96 Nombre maximum de déploiements d'évaluation pouvant être exécutés en parallèle.
déploiement max_retries int 3 Nombre de nouvelles tentatives en cas d'échec des déploiements d'évaluation avant de les marquer comme ayant échoué définitivement.

Suivi et évaluation

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

Interprétation des résultats d'évaluation

Ouvrez votre application MLflow pour afficher les métriques enregistrées, les distributions de récompenses et les visualisations de trajectoire pour le cycle d'évaluation. Vous trouverez ci-dessous des explications sur la signification de chacun des indicateurs.

Indicateurs de récompenses (eval/reward/)

Métrique Description
eval/reward/mean Note de récompense moyenne pour tous les déploiements.
eval/reward/min Note de récompense minimale pour tous les déploiements.
eval/reward/max Note de récompense maximale pour tous les déploiements.
eval/reward/std Écart type des scores de récompense dans tous les déploiements.
eval/reward/zero_frac Fraction des déploiements ayant obtenu un score exact de 0 (échecs complets).
eval/reward/pass_at_1 Probabilité qu'au moins un échantillon sur un par invite réussisse. Il s'agit du principal indicateur de réussite.
eval/reward/pass_power_1 Taux de réussite avec pondération de puissance.
eval/reward/succeeded_rollouts Nombre total de déploiements ayant donné lieu à une récompense positive.
eval/reward/failed_rollouts Nombre total de déploiements ayant obtenu un score de 0.
eval/reward/num_prompts Nombre de demandes distinctes évaluées.
eval/reward/rollouts_per_prompt Nombre de tentatives (échantillons) générées par invite.
eval/reward/success_threshold La valeur de récompense requise pour qu'un déploiement soit considéré comme « réussi ».
eval/reward/mean_within_groups Récompense moyenne par groupe d'invités (nécessite de définir rollouts_per_prompt > 1).
eval/reward/std_within_groups Écart type de récompense au sein de chaque groupe de prospects.
eval/reward/min_within_groups Récompense minimale au sein de chaque groupe invité.
eval/reward/max_within_groups Récompense maximale au sein de chaque groupe invité.

Métriques relatives aux jetons (eval/tokens/)

Métrique Description
eval/tokens/prompt_mean Durée moyenne des instructions en jetons (inclut l'invite du système, les descriptions des outils et le contexte à plusieurs tours).
eval/tokens/response_mean Durée moyenne de réponse du modèle en jetons par tour.
eval/tokens/response_min Réponse du modèle la plus courte en jetons.
eval/tokens/response_max Réponse du modèle la plus longue en jetons.
eval/tokens/response_std Écart type des longueurs de réponse. Une variance élevée peut indiquer un comportement incohérent de l'agent.

Indicateurs de rotation (eval/turns/)

Métrique Description
eval/turns/mean Nombre moyen de tours par déploiement. Des valeurs élevées peuvent indiquer que l'agent fonctionne en boucle ou réessaie de manière excessive.
eval/turns/min Le plus petit nombre de tours lors de tous les déploiements.
eval/turns/max La plupart des tours, quel que soit le déploiement. Des valeurs très élevées indiquent que l'agent est resté bloqué sans résoudre la tâche.

Métriques de probabilité logarithmique (eval/logprob/)

Métrique Description
eval/logprob/nz_mean Probabilité logarithmique moyenne de jetons non nuls (sans rembourrage). Des valeurs proches de 0 indiquent un niveau de confiance élevé du modèle.
eval/logprob/nz_min Jeton de probabilité logarithmique le plus faible (prédiction la moins fiable).
eval/logprob/nz_max Jeton de probabilité logarithmique le plus élevé (prédiction la plus fiable).
eval/logprob/nz_std Écart type des probabilités logarithmiques non nulles. Des valeurs faibles signifient un niveau de confiance constamment élevé.
eval/logprob/zero_frac Fraction de jetons dont la probabilité logarithmique est exactement nulle (probabilité 1,0), généralement des jetons rembourrés ou forcés.
eval/logprob/zero_count Nombre total de jetons zero-logprob.
eval/logprob/zero_per_group Nombre moyen de jetons Zero-LogProb par groupe d'invites.

Métriques de chronométrage (timing_s/)

Métrique Description
timing_s/eval Durée totale de l'évaluation par horloge murale, en secondes. Divisez par eval/reward/num_prompts le temps moyen par invite.

Comment diagnostiquer les modèles courants

Modèle Cause probable
pass_at_1 = 0, haut turns/mean L'agent fonctionne en boucle sans résoudre de tâches. Vérifiez l'utilisation des outils et les modèles d'action dans les trajectoires.
pass_at_1 = 0, faible tokens/response_mean Agent produisant des réponses très courtes (éventuellement vides ou mal formées). Vérifiez rapidement la compatibilité du format et du modèle.
Haut turns/max et bas turns/min L'agent affiche un comportement incohérent d'une invite à l'autre. Certaines tâches peuvent être beaucoup plus difficiles ou l'agent peut échouer lors d'interactions spécifiques avec des outils.
Confiance élevée (logprob/nz_meanproche de 0) mais faible récompense Le modèle produit en toute confiance de mauvaises sorties. Cela peut nécessiter une plus grande diversité des données d'entraînement ou un affinement du signal de récompense.
zero_frac = 1.0en récompense Échec complet. Vérifiez le déploiement de l'agent, la connectivité des outils et le format du jeu de données d'évaluation correct.

Pour obtenir des résultats bruts, passez en revue les artefacts écrits dans le S3OutputPath champ spécifié dansOutputDataConfig.

Limite & les quotas d'évaluation

Utilisez les quotas de AWS service pour demander une augmentation du nombre maximum de tâches d'évaluation simultanées.

Quota Par défaut
rft-evaluation-job (nombre maximal de tâches simultanées) 1