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