View a markdown version of this page

Bewertung des Modells - Amazon SageMaker KI

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Bewertung des Modells

Bei der Evaluierung wird Ihr Agent anhand einer Reihe von Eingabeaufforderungen ausgeführt und es werden Kennzahlen zur Prämie, zum Bestehen und zur Trajektorie gemeldet. @k Verwenden Sie es, um ein fein abgestimmtes Modell mit seinem Basismodell zu vergleichen oder einen Kandidaten vor der Implementierung zu bewerten.

Hinweis: Bewertungsjobs verwenden JobCategory: AgentRFTEvaluation (nicht AgentRFT wie bei Schulungen). Verwenden Sie diese Kategorie bei Evaluierungsjobs CreateJob und DescribeJob ruft dazu auf.

Vorbereitung der Bewertungsdaten

Bewertungsdatensätze verwenden dasselbe Format und Schema wie Trainingsdatensätze. Siehe Promptes Datensatzformat. Die folgenden Leitlinien sind evaluationsspezifisch.

  1. Halten Sie Bewertungsdaten aus Trainingsdatensätzen bereit. Evaluieren Sie niemals anhand von Trainingsanweisungen, da die Ergebnisse die Leistung überbewerten würden. Reservieren Sie einen Teil der Daten für einen gespeicherten Datensatz oder verwalten Sie einen separaten Bewertungsdatensatz. Behalten Sie für alle Iterationen den gleichen Bewertungssatz bei, damit die Ergebnisse vergleichbar sind.

  2. Passen Sie das Format der Trainingsaufforderung an. Der Agent muss Evaluationsaufforderungen auf die gleiche Weise analysieren, wie er Trainingsaufforderungen analysiert hat. Wenn Sie während des Trainings Kodierung oder Verschlüsselung verwendet haben, verwenden Sie hier dieselbe Struktur. Wenn Sie beide aus demselben Codepfad generieren, wird eine Drift vermieden.

  3. Verdecken Sie die Verhaltensweisen, die Ihnen wichtig sind. Üben Sie jedes Tool und jede Werkzeugkombination aus, die Ihr Agent verwendet. Fügen Sie Eingabeaufforderungen hinzu, die zuvor zu Fehlern geführt haben, sodass Regressionen auftauchen.

  4. Schützen Sie vertrauliche Inhalte genauso wie bei Schulungen, da der Service die Eingabeaufforderungen ungeprüft weiterleitet.

Starten eines Evaluierungsauftrags

Evaluieren Sie Ihr Modell nach Abschluss des Trainings mit einer der folgenden Methoden.

SageMaker AI Studio

  • Navigieren Sie zur Detailseite Ihres benutzerdefinierten Modells (Modelle > Meine Modelle > Wählen Sie Ihr MTRL-Modell aus).

  • Wählen Sie Evaluieren, um die Seite mit der Testkonfiguration zu öffnen.

  • Wählen Sie Multi-Turn RL als Evaluierungstyp aus.

  • Konfigurieren Sie Ihre Agentenumgebung — wählen Sie Ihre AgentCore Bedrock-Laufzeit aus oder geben Sie Ihren Lambda-Forwarder-ARN an.

  • Geben Sie Ihren Bewertungsdatensatz an (S3-URI oder registrierter Datensatz mit ausgehaltenen Bewertungsaufforderungen).

  • Wählen Sie „Senden“, um den Bewertungsauftrag zu starten.

SageMaker KI-Python-SDK

Das MultiTurnRLEvaluator bietet eine übergeordnete Schnittstelle zum Starten von Evaluierungsjobs. Wenn Sie einen abgeschlossenen Trainer bestehen, löst der Evaluator automatisch den Modellpaket-ARN, die Agentenkonfiguration und den Agentenqualifizierer auf.

Evaluieren Sie ein fein abgestimmtes Modell

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

Evaluieren Sie ein Basismodell (kein Training)

Bei der direkten Evaluierung eines Basismodells agent_config ist Folgendes erforderlich, da es keinen Trainer gibt, von dem man erben könnte:

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 Vergleich (Basis- und Feinabstimmung)

Ein einziger evaluate() Aufruf, der sowohl das Basismodell als auch das fein abgestimmte Modell in einer Pipeline bewertet:

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

Ergebnisse überwachen und abrufen

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

Sie können Evaluierungsjobs auch direkt über die CreateJob API erstellen.

Erstellen Sie einen Bewertungsjob (Bedrock AgentCore)

Um einen Evaluierungsjob zu erstellen, rufen Sie die CreateJob API mit der JobCategory Einstellung auf auf auf auf auf auf auf auf aufAgentRFTEvaluation. Die Einrichtung und Konfiguration von Agenten erfolgt nach demselben Verfahren wie bei Trainingsjobs.

AWS CLI verwenden

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

Verwenden des SageMaker KI-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']}")

Evaluierung eines fein abgestimmten Modells

Um ein Modell zu evaluieren, das im Rahmen einer Ausbildungsstelle erstellt wurde, muss Folgendes ModelPackageConfig mitgeliefert werden: 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']}")

Erstellen Sie einen Evaluierungsjob (Benutzerdefinierter Agent mit Lambda Forwarder)

Verwenden Sie den gleichen Ansatz wie bei der AgentCore Bedrock-Bewertung, geben Sie jedoch Folgendes anCustomAgentLambdaConfig: AgentConfig

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

Hyperparameter für die Bewertung

Kategorie Parameter Typ Standard Description
Batch eval_group_size Ganzzahl 1 Rollouts pro Eingabeaufforderung. Hinweis: Um pass @k zu berechnen, legen Sie eval_group_size >= k fest.
eval_metrics_config übergeben_k_Werte Array [1, 2, 4, 8, 16, 32] Liste von k Werten für die Berechnung der Metriken pass @k und pass^k. pass @k = Wahrscheinlichkeit, dass mindestens einer von k getesteten Rollouts erfolgreich ist. pass^k = Wahrscheinlichkeit, dass alle k Rollouts erfolgreich sind.
eval_metrics_config Erfolgschwelle float 1 Ein Rollout ist „erfolgreich“, wenn die Belohnung >= success_threshold ist. Beachten Sie, dass dies für die Metriken pass @k, pass^k und count gilt. succeeded/failed
eval_sampling_params temperature float 0 Temperatur der Probenahme für Evaluierungs-Rollouts Hinweis: Es wird empfohlen, diesen Wert für die Kennzahlen pass @k und pass^k auf über 0 zu erhöhen, um deterministisches Verhalten zu vermeiden.
eval_sampling_params Stichproben_top_p float 1 Grenzwert für die Nucleus-Probenahme bei der Einführung von Evaluierungen.
eval_sampling_params maximale Anzahl von Tokens Ganzzahl 4096 Maximale Anzahl von Tokens, die das Modell während der Evaluierungs-Rollouts pro Spielzug generieren kann.
Rollout timeout float 600 Zeit (Sekunden), nach der ein Test-Rollout als fehlgeschlagen behandelt wird und erneut versucht werden kann.
Rollout max_Parallelität int 96 Maximale Anzahl von Evaluierungs-Rollouts, die parallel ausgeführt werden können.
Rollout max_retries int 3 Anzahl der Wiederholungsversuche für fehlgeschlagene Evaluierungs-Rollouts, bevor sie als dauerhaft fehlgeschlagen markiert wurden.

Überwachung der Bewertung

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

Interpretation der Bewertungsergebnisse

Öffnen Sie Ihre MLflow App, um protokollierte Kennzahlen, Belohnungsverteilungen und Trajektorienvisualisierungen für den Bewertungslauf einzusehen. Im Folgenden wird erklärt, was die einzelnen Metriken bedeuten.

Kennzahlen belohnen (eval/reward/)

Metrik Description
eval/reward/mean Durchschnittliche Prämienpunktzahl für alle Rollouts.
eval/reward/min Minimale Prämienpunktzahl für alle Rollouts.
eval/reward/max Maximaler Prämienwert für alle Rollouts.
eval/reward/std Standardabweichung der Prämienwerte für alle Rollouts.
eval/reward/zero_frac Bruchteil der Rollouts, bei denen genau 0 Punkte erzielt wurden (vollständige Fehlschläge).
eval/reward/pass_at_1 Wahrscheinlichkeit, dass mindestens 1 von 1 Stichprobe pro Aufforderung erfolgreich ist. Dies ist die primäre Erfolgsmetrik.
eval/reward/pass_power_1 Erfolgsquote bei Gewichtung der Leistung.
eval/reward/succeeded_rollouts Gesamtzahl der Rollouts, für die eine positive Belohnung erzielt wurde.
eval/reward/failed_rollouts Gesamtzahl der Rollouts, für die 0 Punkte erzielt wurden.
eval/reward/num_prompts Anzahl der ausgewerteten separaten Eingabeaufforderungen.
eval/reward/rollouts_per_prompt Anzahl der Versuche (Beispiele), die pro Aufforderung generiert wurden.
eval/reward/success_threshold Der Prämienwert, der erforderlich ist, um einen Rollout als „erfolgreich“ zu zählen.
eval/reward/mean_within_groups Durchschnittliche Belohnung pro Prompt-Gruppe (erfordert die Einstellung rollouts_per_prompt > 1).
eval/reward/std_within_groups Standardabweichung der Belohnung innerhalb jeder Prompt-Gruppe.
eval/reward/min_within_groups Mindestbelohnung innerhalb jeder Prompt-Gruppe.
eval/reward/max_within_groups Maximale Belohnung innerhalb jeder Prompt-Gruppe.

Token-Metriken (eval/tokens/)

Metrik Description
eval/tokens/prompt_mean Durchschnittliche Länge der Eingabeaufforderung in Tokens (einschließlich Systemaufforderung, Werkzeugbeschreibungen und Multi-Turn-Kontext).
eval/tokens/response_mean Durchschnittliche Länge der Modellantwort in Token pro Runde.
eval/tokens/response_min Kürzeste Modellantwort in Tokens.
eval/tokens/response_max Längste Modellantwort in Tokens.
eval/tokens/response_std Standardabweichung der Antwortlängen. Eine hohe Varianz kann auf ein inkonsistentes Verhalten der Agenten hinweisen.

Metriken anzeigen (/) eval/turns

Metrik Description
eval/turns/mean Durchschnittliche Anzahl von Umdrehungen pro Rollout. Hohe Werte können darauf hindeuten, dass der Agent eine Schleife wiederholt oder es zu oft wiederholt.
eval/turns/min Die wenigsten Umdrehungen in einem Rollout.
eval/turns/max Die meisten Kurven in einem Rollout. Sehr hohe Werte deuten darauf hin, dass der Agent stecken geblieben ist, ohne die Aufgabe zu lösen.

Wahrscheinlichkeitsmetriken protokollieren (eval/logprob/)

Metrik Description
eval/logprob/nz_mean Mittlere Log-Wahrscheinlichkeit von Tokens, die ungleich Null sind (kein Auffüllen). Werte nahe 0 deuten auf eine hohe Modellsicherheit hin.
eval/logprob/nz_min Token mit niedrigster Log-Wahrscheinlichkeit (am wenigsten sichere Vorhersage).
eval/logprob/nz_max Token mit der höchsten Log-Wahrscheinlichkeit (zuverlässigste Vorhersage).
eval/logprob/nz_std Standardabweichung von logarithmischen Wahrscheinlichkeiten ungleich Null. Niedrige Werte bedeuten ein gleichbleibend hohes Konfidenzniveau.
eval/logprob/zero_frac Bruchteil der Tokens mit einer Log-Wahrscheinlichkeit von exakt Null (Wahrscheinlichkeit 1,0), typischerweise Padding- oder Forced-Token.
eval/logprob/zero_count Gesamtzahl der Zero-Logprob-Token.
eval/logprob/zero_per_group Durchschnittliche Anzahl von Null-Logprob-Token pro Eingabeaufforderungsgruppe.

Timing-Metriken (timing_s/)

Metrik Description
timing_s/eval Gesamtdauer der Auswertung während der gesamten Uhrzeit in Sekunden. Dividieren Sie durch, eval/reward/num_prompts um die durchschnittliche Zeit pro Aufforderung zu erhalten.

Wie diagnostiziert man häufig auftretende Muster

Muster Wahrscheinliche Ursache
pass_at_1 = 0, hoch turns/mean Der Agent wiederholt sich, ohne Aufgaben zu lösen. Überprüfen Sie die Verwendung von Tools und die Aktionsmuster in den einzelnen Trajektorien.
pass_at_1 = 0, niedrig tokens/response_mean Wirkstoff, der sehr kurze (möglicherweise leere oder fehlerhafte) Antworten erzeugt. Überprüfen Sie das Format und die Modellkompatibilität der Aufforderung.
Hoch turns/max mit Niedrig turns/min Der Agent zeigt bei allen Eingabeaufforderungen ein inkonsistentes Verhalten. Einige Aufgaben sind möglicherweise viel schwieriger, oder der Agent versagt möglicherweise bei bestimmten Interaktionen mit dem Tool.
Hohes Selbstvertrauen (logprob/nz_meannahe 0), aber geringe Belohnung Das Modell erzeugt mit Zuversicht falsche Ergebnisse. Möglicherweise ist eine größere Diversität der Trainingsdaten oder eine Verfeinerung der Belohnungssignale erforderlich.
zero_frac = 1.0als Belohnung Vollständiger Misserfolg. Stellen Sie sicher, dass der Agent bereitgestellt und die Toolkonnektivität aktiviert ist und ob das Format des Bewertungsdatensatzes korrekt ist.

Unformatierte Ergebnisse finden Sie in den Artefakten, die in den unter S3OutputPath angegebenen Code geschrieben wurdenOutputDataConfig.

Beschränkt die & Quoten für die Evaluierung

Verwenden Sie AWS Servicekontingenten, um eine Erhöhung des Limits für die maximale Anzahl gleichzeitiger Evaluierungsjobs zu beantragen.

Kontingent Standard
rft-evaluation-job maximale Anzahl gleichzeitiger Jobs 1