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.
Einreichung von Schulungsaufträgen
Ausbildungsjobs werden gestartet
Nachdem Ihr Agent bereitgestellt wurde und sich Ihr Datensatz in S3 befindet, erstellen Sie mit einer der folgenden Methoden einen Trainingsjob.
SageMaker AI Studio
-
Navigieren Sie im Navigationsbereich zu Modelle und wählen Sie JumpStart Basismodelle aus.
-
Wählen Sie ein Modell aus, das Multiturn-RL unterstützt (siehe Tabelle mit unterstützten Modellen), und wählen Sie dann Modell anpassen und anschließend Mit UI anpassen aus.
-
Wählen Sie Multi-Turn Reinforcement Learning als Anpassungstechnik aus.
-
Konfigurieren Sie Ihre Agentenumgebung — wählen Sie Ihre AgentCore Bedrock-Laufzeit aus oder geben Sie Ihren Lambda-Forwarder-ARN an.
-
Geben Sie Ihren Trainingsdatensatz als S3-URI oder als registrierten Datensatz an.
-
Passen Sie die Hyperparameter nach Bedarf an.
-
Überprüfen Sie Ihre Konfiguration und wählen Sie Senden.
SageMaker KI-Python-SDK
Entdecken Sie die unterstützten Modelle
from sagemaker.train.multi_turn_rl_trainer import MultiTurnRLTrainer supported_models = MultiTurnRLTrainer.list_supported_models() print(f"Supported MTRL models ({len(supported_models)}):") for m in supported_models: print(f" - {m}")
Richten Sie Ihre Agentenumgebung ein
Option 1: Bedrock-Laufzeit AgentCore
# List available runtimes runtimes = MultiTurnRLTrainer.list_bedrock_agentcore_runtimes() for rt in runtimes: print(f" - {rt['name']} ({rt['status']}) → {rt['arn']}")
Option 2: Benutzerdefinierter Lambda-Agent
from sagemaker.train.agent_lambda import AgentLambda # Create from inline code adapter = AgentLambda.create( source=''' import json def handler(event, context): prompt = event.get("prompt", "") return {"statusCode": 200, "body": json.dumps({"status": "ok", "agentResponse": prompt})} ''', role="arn:aws:iam::123456789012:role/AgentLambdaRole", ) # Create from a local file adapter = AgentLambda.create( source="~/my_agent_handler.py", role="arn:aws:iam::123456789012:role/AgentLambdaRole", ) # Create from S3 adapter = AgentLambda.create( source="s3://my-bucket/agent_handler.py", role="arn:aws:iam::123456789012:role/AgentLambdaRole", ) # Wrap an existing Lambda adapter = AgentLambda.get("arn:aws:lambda:us-west-2:123456789012:function:my-agent")
Registrieren Sie Ihren Datensatz (optional)
from sagemaker.ai_registry.dataset import DataSet dataset = DataSet.create( name="my-mtrl-dataset", source="s3://my-bucket/prompts/training_prompts.parquet" ) print(f"Dataset ARN: {dataset.arn}")
Eingeschränkte Modellpaketgruppe für Nova erstellen (optional)
Wenn Sie das Nova-Modell (nova-textgeneration-lite-v2) wählen, erstellen Sie optional eine eingeschränkte Modellpaketgruppe, bevor Sie einen Schulungsjob einreichen (nächster Schritt). Wenn Sie diesen Schritt überspringen, erstellt das SDK automatisch einen für Sie.
Restricted Model Package Group (RMPG) ist eine Modellpaketgruppe mit ManagedStorageType: Eingeschränkt. Sie ist für Closed-Source-Modelle wie Nova erforderlich, bei denen die Modellgewichte vom Kunden verwaltet werden AWS und der Kunde nicht direkt darauf zugreifen kann.
Das RFT-Auftragsschema erfordert zwei separate eingeschränkte MPGs:
-
Ausgabe-MPG — speichert das endgültige, fein abgestimmte Modellpaket
-
Intermediate Checkpoint MPG — reserviert für Trainings-Checkpoints für Fortgeschrittene (muss sich vom Output-MPG unterscheiden)
from sagemaker.core.resources import Job, ModelPackageGroup from sagemaker.core.shapes import ManagedConfiguration model_name = "nova-textgeneration-lite-v2" # Restricted configuration managed_config = ManagedConfiguration(managed_storage_type="Restricted") # Output Model package group output_mpg_name = f"{model_name}-mtrl-output-mpg" create_kwargs = { "model_package_group_name": output_mpg_name, "region": "us-east-1", "managed_configuration": managed_config } output_mpg = ModelPackageGroup.create(**create_kwargs) # Intermediate Model package group intermediate_mpg_name = f"{model_name}-mtrl-inter-mpg" create_kwargs = { "model_package_group_name": intermediate_mpg_name, "region": "us-east-1", "managed_configuration": managed_config } intermediate_mpg = ModelPackageGroup.create(**create_kwargs)
Sobald die Modell-Paketgruppe erstellt wurde, übergeben Sie die Gruppen im nächsten Schritt, wenn Sie einen Schulungsjob einreichen.
Reichen Sie einen Schulungsjob bei Bedrock ein AgentCore
from sagemaker.train.multi_turn_rl_trainer import MultiTurnRLTrainer trainer = MultiTurnRLTrainer( model="openai-reasoning-gpt-oss-20b", agent_env="arn:aws:bedrock-agentcore:us-west-2:123456789012:runtime/my-agent-runtime", training_dataset="s3://my-bucket/prompts/prompts.parquet", mlflow_app_arn="arn:aws:sagemaker:us-west-2:123456789012:mlflow-app/mlflow-app-id", s3_output_path="s3://my-bucket/output/", role="arn:aws:iam::123456789012:role/SageMakerRole", accept_eula=True, ) # View and adjust hyperparameters trainer.hyperparameters.get_info() trainer.hyperparameters.max_epochs = 1 trainer.hyperparameters.global_batch_size = 32 trainer.hyperparameters.max_steps = 12 job = trainer.train(wait=True) print(f"Job: {job.job_name}") print(f"Status: {job.job_status}") print(f"Output Model Package: {job.output_model_package_arn}")
Reichen Sie einen Schulungsjob mit einem benutzerdefinierten Lambda-Agenten ein
trainer = MultiTurnRLTrainer( model="openai-reasoning-gpt-oss-20b", agent_env=adapter, # AgentLambda object or Lambda ARN string training_dataset="s3://my-bucket/prompts/prompts.parquet", mlflow_app_arn="arn:aws:sagemaker:us-west-2:123456789012:mlflow-app/mlflow-app-id", s3_output_path="s3://my-bucket/output/", role="arn:aws:iam::123456789012:role/SageMakerRole", accept_eula=True, ) trainer.hyperparameters.max_epochs = 1 trainer.hyperparameters.global_batch_size = 32 trainer.hyperparameters.max_steps = 12 job = trainer.train(wait=True) print(f"Job: {job.job_name}") print(f"Status: {job.job_status}") print(f"Output Model Package: {job.output_model_package_arn}")
Reichen Sie einen Schulungsjob mit der Paketgruppe Restricted Model für Nova ein
Im obigen Schritt (Eingeschränkte Modellpaketgruppe für Nova erstellen) erfahren Sie, wie Sie eine eingeschränkte Modellpaketgruppe erstellen.
from sagemaker.train.multi_turn_rl_trainer import MultiTurnRLTrainer trainer = MultiTurnRLTrainer( model="nova-textgeneration-lite-v2", agent_env="arn:aws:bedrock-agentcore:us-west-2:123456789012:runtime/my-agent-runtime", training_dataset="s3://my-bucket/prompts/prompts.parquet", mlflow_app_arn="arn:aws:sagemaker:us-west-2:123456789012:mlflow-app/mlflow-app-id", s3_output_path="s3://my-bucket/output/", role="arn:aws:iam::123456789012:role/SageMakerRole", accept_eula=True, output_model_package_group=output_mpg, intermediate_checkpoint_model_package_group=intermediate_mpg ) # View and adjust hyperparameters trainer.hyperparameters.get_info() trainer.hyperparameters.max_epochs = 1 trainer.hyperparameters.global_batch_size = 32 trainer.hyperparameters.max_steps = 12 job = trainer.train(wait=True) print(f"Job: {job.job_name}") print(f"Status: {job.job_status}") print(f"Output Model Package: {job.output_model_package_arn}")
AWS CLI
Erstellen Sie mithilfe der CreateJob API einen Schulungsjob. Sie geben die Agentenkonfiguration, den Speicherort der Trainingsdaten, das Basismodell und die Ausgabeeinstellungen in der anJobConfigDocument.
So rufen Sie das vollständige JobConfigDocument Schema ab:
aws sagemaker list-job-schema-versions --job-category AgentRFT aws sagemaker describe-job-schema-version --job-category AgentRFT --version "1.0.0"
Job bei Bedrock erstellen AgentCore
aws sagemaker create-job \ --job-category AgentRFT \ --job-name "my-agent-rft-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": [...], "OutputDataConfig": {...}, "ModelPackageConfig": {...}, "TrainingConfig": {...} }' \ --region us-west-2
Job mit benutzerdefiniertem Lambda-Agent erstellen
aws sagemaker create-job \ --job-category AgentRFT \ --job-name "my-custom-agent-rft-job" \ --role-arn "arn:aws:iam::account-id:role/SageMakerFineTuningJobRole" \ --job-config-schema-version "1.0.0" \ --job-config-document '{ "AgentConfig": { "CustomAgentLambdaConfig": { "LambdaArn": "arn:aws:lambda:us-west-2:account-id:function:rft-agent-forwarder" } }, "InputDataConfig": [...], "OutputDataConfig": {...}, "ModelPackageConfig": {...}, "TrainingConfig": {...} }' \ --region us-west-2
boto3
Job bei Bedrock erstellen AgentCore
import json import boto3 sm = boto3.client("sagemaker") response = sm.create_job( JobName="my-agent-rft-job", RoleArn="arn:aws:iam::123456789012:role/SageMakerFineTuningJobRole", JobCategory="AgentRFT", JobConfigSchemaVersion="1.0.0", JobConfigDocument=json.dumps({ "AgentConfig": { "BedrockAgentCoreConfig": { "AgentRuntimeArn": "arn:aws:bedrock-agentcore:us-west-2:123456789012:runtime/my-agent" } }, "InputDataConfig": [...], "OutputDataConfig": {...}, "ModelPackageConfig": {...}, "TrainingConfig": {...} }) ) print(f"Job ARN: {response['JobArn']}")
Job mit benutzerdefiniertem Lambda-Agent erstellen
import json import boto3 sm = boto3.client("sagemaker") response = sm.create_job( JobName="my-custom-agent-rft-job", RoleArn="arn:aws:iam::account-id:role/SageMakerFineTuningJobRole", JobCategory="AgentRFT", JobConfigSchemaVersion="1.0.0", JobConfigDocument=json.dumps({ "AgentConfig": { "CustomAgentLambdaConfig": { "LambdaArn": "arn:aws:lambda:us-west-2:account-id:function:rft-agent-forwarder" } }, "InputDataConfig": [...], "OutputDataConfig": {...}, "ModelPackageConfig": {...}, "TrainingConfig": {...} }) ) print(f"Job ARN: {response['JobArn']}")
Schulung überwachen
Überwachen Sie Ihren Trainingsjob
Verwenden Sie die DescribeJob API, um den aktuellen Status Ihres Jobs jederzeit zu überprüfen. Der Jobstatus wechselt durch InProgress und dann zu Completed Failed oderStopped.
aws sagemaker describe-job \ --job-name "my-agent-rft-job" \ --job-category AgentRFT \ --region us-west-2
Verwenden Sie das SDK:
# Run without blocking job = trainer.train(wait=False) job.wait(poll=5, timeout=3000, max_log_lines=10) # Check status job.refresh() print(f"Status: {job.job_status}") print(f"Secondary Status: {job.secondary_status}") print(f"Output Model Package: {job.output_model_package_arn}") print(f"MLflow Details: {job.mlflow_details}") print(f"Billable Tokens: {job.billable_token_usage}") # Open MLflow tracking URL job.get_mlflow_url() # Stop a running job job.stop() # Attach to an existing job from a different session existing_job = MultiTurnRLTrainer.attach(job_name="my-existing-job-name") print(f"Status: {existing_job.job_status}") print(f"Output Model: {existing_job.output_model_package_arn}") # List all completed jobs from sagemaker.train.agent_rft_job import AgentRFTJob for j in AgentRFTJob.get_all(status_equals="Completed"): print(f"{j.job_name}: {j.job_status}")
Überwachen Sie das Training in MLflow
SageMaker KI lässt sich automatisch in Managed MLflow integrieren, um den Fortschritt, die Kennzahlen und Artefakte Ihres Trainingsjobs zu verfolgen. Um das MLFlow-Tracking zu aktivieren, fügen Sie Ihrem Job Folgendes hinzu: MlflowConfig OutputDataConfig
"OutputDataConfig": { "S3OutputPath": "s3://your-bucket/output/", "MlflowConfig": { "MlflowResourceArn": "arn:aws:sagemaker:us-west-2:123456789012:mlflow-app/my-rft-mlflow-app" } }
Voraussetzungen
-
Erstellen Sie eine verwaltete MLflow App in Ihrem Konto. Anweisungen zur Einrichtung finden Sie unter MLflow App Setup.
-
Stellen Sie sicher, dass Ihre SageMaker AI-Ausführungsrolle berechtigt ist, in die MLflow App zu schreiben (
sagemaker-mlflow:*Aktionen). -
Nehmen Sie das
MlflowResourceArnin Ihre Jobkonfiguration auf.
Was wird protokolliert
| # | Kategorie | Was wird protokolliert | Wo in der MLflow-Benutzeroberfläche |
|---|---|---|---|
| 1 | Trainingsmetriken | Per-step Zähler, Durchsatz, Datums- und Tokenabrechnung, Gesamtdauer jeder Phase eines Schritts, Zusammenfassung des Rollout-Batches mit Zusammenfassung der Trajektorien und Verteilung der Anzahl an Runden pro Trajektorie | Registerkarte „Metriken“ (Zeitreihendiagramme) |
| 2 | Trajektorienspuren | Vollständige Multi-Turn-Konversationen mit Tool-Calls und Prämien | Registerkarte „Spuren“ |
Detaillierte Referenz zu Trainingsmetriken
Die folgenden Messwerte werden bei jedem Trainingsschritt protokolliert.
Schrittzähler und Durchsatz () training/
| Metrik | Description |
|---|---|
training/epoch |
Aktuelle Epochennummer |
training/global_step |
Globaler Trainingsschrittzähler |
training/num_groups |
Trajektoriegruppen in diesem Schritt |
training/num_trajectories |
Gesamtzahl der in diesem Schritt verarbeiteten Trajektorien |
training/total_tokens |
In diesem Schritt wurden die Tokens für alle Mikrobatches summiert |
training/num_datums |
Aus Trajektorien gebildete Trainingsdaten |
training/datums_per_trajectory |
Durchschnittliche Daten, die pro Trajektorie ausgegeben wurden |
training/action_tokens_mean |
Durchschnittliche Aktions-Token (Antwort-Token) pro Trajektorie |
training/obs_tokens_mean |
Durchschnittliche Beobachtungs- (Aufforderung-) Tokens pro Trajektorie |
training/trainable_token_positions |
Gesamtzahl der trainierbaren Zielpositionen in diesem Schritt |
training/nontrainable_token_positions |
Gesamtzahl der in diesem Schritt nicht trainierbaren Zielpositionen |
training/trainable_token_ratio |
Verhältnis: Token-Positionen trainable / (trainable + nontrainable) |
Dauer der Phasen () timing_s/
| Metrik | Description |
|---|---|
timing_s/step |
Gesamtzeit für den vollständigen Schritt |
timing_s/training |
Zeit für forward/backward Durchläufe und Optimierungsschritt |
timing_s/policy_update |
Zeitersparnis bei aktualisierten Gewichten für den Sampler |
timing_s/save_checkpoint |
Zeitersparnis an einem Checkpoint (nur bei Checkpoint-Schritten) |
timing_s/eval |
Zeitaufwändige Evaluierung (nur bei Evaluierungsschritten) |
Verteilung der Prämien (rollout/reward/)
| Metrik | Description |
|---|---|
rollout/reward/mean |
Durchschnittliche Belohnung für den weiteren Verlauf aller Gruppen |
rollout/reward/valid_mean |
Durchschnittliche Belohnung nur für die gültigen Gruppen (ohne Vorteil); entspricht dem Wert, wenn keine Filterung vorgenommen wurde mean |
rollout/reward/std |
Standardabweichung der Trajektorieprämien |
rollout/reward/min |
Minimale Belohnung für die Flugbahn |
rollout/reward/max |
Maximale Belohnung für die Flugbahn |
rollout/reward/zero_frac |
Bruchteil der Flugbahnen mit einer Gesamtbelohnung von genau 0,0 |
Runde zählt () rollout/turns/
| Metrik | Description |
|---|---|
rollout/turns/mean |
Durchschnittliche Kurven (Übergänge) pro Trajektorie |
rollout/turns/min |
Minimale Anzahl an Kurven zwischen Trajektorien |
rollout/turns/max |
Maximale Anzahl an Kurven über Trajektorien |
Token-Längen () rollout/tokens/
| Metrik | Description |
|---|---|
rollout/tokens/prompt_mean |
Durchschnittliche Anzahl von Prompt-Tokens pro Übergang |
rollout/tokens/response_mean |
Durchschnittliche Anzahl von Antwort-Token pro Übergang |
rollout/tokens/response_std |
Standardabweichung der Anzahl der Antwort-Token |
rollout/tokens/response_min |
Minimale Anzahl von Antwort-Token |
rollout/tokens/response_max |
Maximale Anzahl an Antwort-Token (achten Sie auf Clustering untersampling_max_tokens) |
Log-probability Gesundheit () rollout/logprob/
| Metrik | Description |
|---|---|
rollout/logprob/zero_count |
Gesamtzahl der Zero-Logprob-Token |
rollout/logprob/zero_frac |
Bruchteil aller Logprobs, die genau 0,0 sind |
rollout/logprob/zero_per_group |
Durchschnittlich null Logprobs pro Trajektoriengruppe |
rollout/logprob/nz_mean |
Mittelwert der Logprobs ungleich Null |
rollout/logprob/nz_std |
Standardabweichung von Logprobs ungleich Null |
rollout/logprob/nz_min |
Minimaler Logprob ungleich Null |
rollout/logprob/nz_max |
Maximaler Logprob-Wert ungleich Null |
Verteilung der Vorteile () rollout/advantage/
| Metrik | Description |
|---|---|
rollout/advantage/mean |
Mittlerer Wert des Vorteils bei allen Übergängen |
rollout/advantage/std |
Standardabweichung der Vorteile |
rollout/advantage/min |
Minimaler Vorteil |
rollout/advantage/max |
Maximaler Vorteil |
rollout/advantage/n_positive |
Übergänge mit positivem Vorteil |
rollout/advantage/n_negative |
Übergänge mit negativem Vorteil |
Batch-quality Einstufung (analysis/)
| Metrik | Description |
|---|---|
analysis/batch_completion_ratio |
total_completed / batch_size— Bruchteil der erwarteten Gruppen, die eingetroffen sind |
analysis/batch_valid_ratio |
valid_count / batch_size— Gruppen, für die kein Vorteil besteht, im Vergleich zur gesamten Charge |
analysis/zero_adv_groups |
Gruppen, bei denen alle Übergänge fast keinen Vorteil haben |
analysis/zero_adv_nonzero_reward |
Zero-advantage Gruppen, bei denen mindestens ein Übergang eine Belohnung ungleich 0 hat (völlig korrekter Fall für binäre Prämien) |
analysis/zero_adv_zero_reward |
Zero-advantage Gruppen, bei denen alle Belohnungen 0 sind (völlig falscher Fall) |
analysis/reward_variance_across_groups |
Varianz der durchschnittlichen Prämien pro Gruppe (hoch = unterschiedliche Charge) |
analysis/mean_group_reward_spread |
Durchschnittliche Verteilung der Prämien innerhalb der Gruppe max - min |
Bewertung belohnen und bestehen @k () val/reward/
Wird zu Beginn (Schritt 0), in jedem val_every Intervall und im letzten Schritt ausgegeben. Beinhaltet dieselben Verteilungskennzahlen wie rollout/reward plus die nach Aufforderung aggregierten Kennzahlen zur Gruppenprämie.
Verteilung:
| Metrik | Description |
|---|---|
val/reward/mean |
Durchschnittliche Belohnung im Vergleich zum Bewertungssatz |
val/reward/std |
Belohnen Sie std dev |
val/reward/min |
Minimale Belohnung |
val/reward/max |
Maximale Belohnung |
val/reward/zero_frac |
Bruchteil der Trajektorien ohne Belohnung |
Group-reward (Aggregation pro Aufforderung):
| Metrik | Description |
|---|---|
val/reward/min_within_groups |
Durchschnittliche Mindestvergütung pro Aufforderung |
val/reward/mean_within_groups |
Durchschnittliche durchschnittliche Belohnung pro Aufforderung |
val/reward/max_within_groups |
Durchschnittliche maximale Belohnung pro Aufforderung |
val/reward/std_within_groups |
Durchschnittliche Standardbelohnung pro Aufforderung (Konsistenz) |
val/reward/rollouts_per_prompt |
Durchschnittliche Anzahl von Rollouts (n) über mehrere Eingabeaufforderungen |
val/reward/num_prompts |
Verschiedene Eingabeaufforderungen wurden ausgewertet |
Pass @k und Erfolgsrechnung:
| Metrik | Description |
|---|---|
val/reward/succeeded_rollouts |
Gesamtzahl der Rollouts mit Prämie ≥ success_threshold |
val/reward/failed_rollouts |
Gesamtzahl der Rollouts mit Belohnung < success_threshold |
val/reward/success_threshold |
Verwendeter Schwellenwert (aus Gründen der Übersichtlichkeit wiedergegeben) |
val/reward/pass_at_{k} |
Die Wahrscheinlichkeit liegt bei ≥1 von k Stichproben |
val/reward/pass_power_{k} |
Wahrscheinlichkeit, dass alle k Stichproben erfolgreich sind (Zuverlässigkeit) |
Die Auswertung zählt (val/turns/)
| Metrik | Description |
|---|---|
val/turns/mean |
Durchschnittliche Anzahl an Umdrehungen pro Berechnungsbahn |
val/turns/min |
Minimale Anzahl an Kurven |
val/turns/max |
Maximale Anzahl an Umdrehungen |
Längen der Evaluierungstoken (val/tokens/)
| Metrik | Description |
|---|---|
val/tokens/prompt_mean |
Durchschnittliche Anzahl von Prompt-Tokens pro Übergang |
val/tokens/response_mean |
Durchschnittlicher Wert der Antwort-Token pro Übergang |
val/tokens/response_std |
Standardabweichung der Antwort-Token |
val/tokens/response_min |
Minimale Anzahl von Antwort-Token |
val/tokens/response_max |
Maximale Anzahl an Antwort-Token |
Bewertung des Zustands anhand von Log-Wahrscheinlichkeitsdaten () val/logprob/
| Metrik | Description |
|---|---|
val/logprob/zero_count |
Gesamtzahl der Null-Logprob-Token |
val/logprob/zero_frac |
Bruchteil von null Logprobs |
val/logprob/zero_per_group |
Null Logprobs pro Gruppe |
val/logprob/nz_mean |
Mittelwert von Logprobs ungleich Null |
val/logprob/nz_std |
Standardabweichung von Logprobs ungleich Null |
val/logprob/nz_min |
Minimaler Logprob ungleich Null |
val/logprob/nz_max |
Maximaler Logprob-Wert ungleich Null |
Zugriff auf die MLflow-Benutzeroberfläche
Greifen Sie über eine vorsignierte URL auf die MLflow-Benutzeroberfläche zu:
aws sagemaker create-presigned-mlflow-app-url \ --arn arn:aws:sagemaker:us-west-2:123456789012:mlflow-app/mlflow-app-id \ --region us-west-2
Kopieren Sie das AuthorizedUrl aus der Ausgabe in Ihren Browser.
Flugbahnen und Spuren der Agenten
Während der Schulung zeichnet SageMaker KI jede Interaktion zwischen Ihrem Agenten und dem Richtlinienmodell als Verlauf auf — die vollständige Aufzeichnung eines Rollouts. Jede Trajektorie erfasst jede an das Modell gesendete Aufforderung, jede generierte Antwort, jeden Tool-Aufruf und die endgültige Belohnung. Trajektorien werden als strukturierte Spuren in Ihrem MLflow-Experiment veröffentlicht.
Inhalt der Spuren
-
Die Eingabeaufforderung aus Ihrem Trainingsdatensatz
-
Jede Inferenzrunde des Modells (Daten auf Prompt-, Antwort- und Token-Ebene)
-
Tool-Aufrufe und ihre Ergebnisse, falls Ihr Agent Tools verwendet
-
Die endgültige Prämienpunktzahl
-
Informationen zum Zeitplan für jede Runde
Trajektorien in der MLflow-Benutzeroberfläche anzeigen
Greifen Sie über eine vorsignierte URL auf die MLflow-Benutzeroberfläche zu:
aws sagemaker create-presigned-mlflow-app-url \ --arn arn:aws:sagemaker:us-west-2:123456789012:mlflow-app/mlflow-app-id \ --region us-west-2
Kopieren Sie das AuthorizedUrl aus der Ausgabe in Ihren Browser.
Öffnen Sie die MLflow-Benutzeroberfläche mit der oben vorsignierten URL. Navigieren Sie zur Ausführung Ihres Experiments und wählen Sie die Registerkarte Traces aus. Jeder Trace steht für einen abgeschlossenen Rollout und zeigt:
-
Die Systemaufforderung und die Benutzeraufforderung
-
Jede Antwort des Assistenten (mit thinking/reasoning , falls zutreffend)
-
Die Nutzungsdauer der Tools zeigt an, welche Tools aufgerufen wurden und welche Ergebnisse sie erzielt haben
-
Die der Trajektorie zugewiesene Belohnungspunktzahl
Verwenden Sie Trajektorien, um niedrige Belohnungswerte zu debuggen
| Symptom | Worauf zu achten ist |
|---|---|
| Niedrige Belohnung bei den meisten Rollouts | Sind die Antworten der Modelle kohärent? Ist das Format der Aufforderung korrekt? |
| Tool-related Misserfolge | Sind Tool-Aufrufe erfolgreich? Sind Eingaben und Ausgaben wohlgeformt? |
| Endlosschleife für Agenten | Wiederholt der Agent dieselben Aktionen, ohne Fortschritte zu machen? |
| Verkürzte Antworten | Werden Antworten durch das MaxToken-Limit abgeschnitten? |
Holen Sie sich Trainingsergebnisse
Wenn ein Trainingsjob abgeschlossen ist, werden Ihre trainierten Modellgewichte als SageMaker KI-Modellpaket gespeichert. In diesem Abschnitt wird erklärt, wie Sie Ihre Ergebnisse ermitteln, die während des Trainings erstellten Checkpoint-Typen verstehen und sie für den Einsatz oder die Weiterbildung verwenden können.
Wie werden Ergebnisse gespeichert
SageMaker KI speichert die Trainingsergebnisse als versionierte, unveränderliche Modellpakete innerhalb von Modellpaketgruppen. Multi-turn RL verwendet zwei separate Gruppen, die Sie bei der Erstellung eines Jobs angeben:
| Group (Gruppieren) | Zweck | Inhalt |
|---|---|---|
| Paketgruppe „Ausgabemodell“ | Endgültiges trainiertes Modell | HuggingFace-compatible Gewichte des LoRa-Adapters (adapter_config.json + adapter_model.safetensors) |
| Paketgruppe „Intermediate Checkpoint Model“ | Zustand des Trainings wieder aufnehmbar | Gewichte des LoRa-Adapters + Optimizer-Status + Metadaten für Trainingsschritte |
Konfigurieren Sie beide Gruppen in Ihrem: ModelPackageConfig
"ModelPackageConfig": { "OutputModelPackageGroupArn": "arn:aws:sagemaker:us-west-2:123456789012:model-package-group/my-final-models", "IntermediateCheckpointModelPackageGroupArn": "arn:aws:sagemaker:us-west-2:123456789012:model-package-group/my-intermediate-checkpoints" }
Checkpoint-Typen
Beim Training werden zwei Arten von Checkpoints erstellt, die bei jedem Trainingsschritt gespeichert werden:
Modell-Checkpoint (nur Gewichte)
-
In der Ausgabemodell-Paketgruppe gespeichert
-
Enthält die Gewichte des HuggingFace-compatible LoRa-Adapters im Format SafeTensors
-
Verwenden Sie es für Rückschlüsse, für die Implementierung oder als Ausgangspunkt für einen neuen Schulungsjob
-
Wird bei jedem Schritt, bei Abschluss eines Jobs und wenn ein Job beendet wird, erstellt
Prüfpunkt, der wieder aufgenommen werden kann (vollständiger Status)
-
In der Intermediate Checkpoint Model Package Group gespeichert
-
Enthält LoRa-Adaptergewichte, Optimizer-Status und Metadaten für Trainingsschritte pro GPU
-
Wird verwendet, um einen unterbrochenen Job genau in dem Schritt fortzusetzen, in dem er gestoppt wurde
-
Internes Format — nicht direkt für Inferenzen nutzbar
Checkpoint-Lebenszyklus
Step 1 → Intermediate Checkpoint (resumable) Step 1 → Intermediate Checkpoint (HF-compatible) ... Step N-1 → Intermediate Checkpoint (resumable) Step N-1 → Intermediate Checkpoint (HF-compatible) ... Step N (final) → Model Checkpoint (HuggingFace LoRA) → Output Model Package Group
Rufen Sie Ihr trainiertes Modell ab
Wenn ein Job erfolgreich abgeschlossen wurde, wird das endgültige Modell als Modellpaket in der Ausgabemodellpaketgruppe gespeichert. Das OutputModelPackageArn Feld im Jobdatensatz enthält den ARN.
Überprüfen Sie den Abschluss des Jobs und rufen Sie den ARN des Ausgabemodells ab:
aws sagemaker describe-job \ --job-name "my-agent-rft-job" \ --job-category AgentRFT \ --region us-west-2
Suchen Sie OutputModelPackageArn in der Antwort nach. Verwenden Sie es, um das Modellpaket zu beschreiben und die S3-Position der Gewichte zu ermitteln:
aws sagemaker describe-model-package \ --model-package-name "arn:aws:sagemaker:us-west-2:123456789012:model-package/my-final-models/5"
Wenn ein Job fehlschlägt oder vor Abschluss gestoppt wird, wird der letzte Zwischenprüfpunkt nach bestem Wissen in die Output Model Package Group heraufgestuft. Überprüfen Sie OutputModelPackageArn auf dieselbe Weise.
Um die Erstellung von Checkpoints während des Trainings zu überwachen, schauen Sie sich die ModelCheckpoint Felder ResumableCheckpoint und in der DescribeJob Ausgabe an.
Setzt einen unterbrochenen Job fort
Wenn ein Job fehlschlägt oder während des Trainings unterbrochen wird, können Sie einen neuen Job beginnen, der genau dort weitermacht, wo er aufgehört hat. Die Plattform stellt den gesamten Trainingsstatus — Gewichte, Optimizer-Impuls und Schrittzähler — vom Kontrollpunkt aus wieder her.
Geben Sie einen wiederaufnehmbaren Checkpoint aus der Intermediate Checkpoint Model Package Group wie folgt an: InputModelPackageArn
"ModelPackageConfig": { "OutputModelPackageGroupArn": "arn:aws:sagemaker:us-west-2:123456789012:model-package-group/my-final-models", "IntermediateCheckpointModelPackageGroupArn": "arn:aws:sagemaker:us-west-2:123456789012:model-package-group/my-intermediate-checkpoints", "InputModelPackageArn": "arn:aws:sagemaker:us-west-2:123456789012:model-package/my-intermediate-checkpoints/5" }
Der InputModelPackageArn muss auf einen wiederaufnehmbaren Prüfpunkt verweisen (einen mit Metadaten IsCheckpoint=true in den Modellpaket-Metadaten). Das Training wird mit dem Schritt nach dem Checkpoint fortgesetzt. Wenn der Checkpoint beispielsweise in Schritt 4 gespeichert wurde, wird das Training ab Schritt 5 fortgesetzt.
Folgendes muss zwischen dem ursprünglichen Job und dem wiederaufgenommenen Job gleich bleiben:
-
Basismodell
-
LoRa-Konfiguration (Rang und Alpha)
-
Hyperparameter (Lernrate, Batchgröße usw.)
-
Datensatz
Setzen Sie das Training für einen neuen Job fort (iteratives Training)
Mit iterativem Training können Sie auf einem zuvor trainierten Modell mit einem anderen Datensatz, anderen Hyperparametern oder einer verfeinerten Belohnungsfunktion aufbauen. Im Gegensatz zur Wiederaufnahme wird damit ein neuer Trainingslauf gestartet — der Optimierer wird zurückgesetzt, der Schrittzähler wird auf 0 zurückgesetzt und nur die trainierten LoRa-Gewichte werden übernommen.
Geben Sie einen Modell-Checkpoint aus der Output Model Package Group an alsInputModelPackageArn:
"ModelPackageConfig": { "OutputModelPackageGroupArn": "arn:aws:sagemaker:us-west-2:123456789012:model-package-group/my-final-models", "IntermediateCheckpointModelPackageGroupArn": "arn:aws:sagemaker:us-west-2:123456789012:model-package-group/my-intermediate-checkpoints", "InputModelPackageArn": "arn:aws:sagemaker:us-west-2:123456789012:model-package/my-final-models/3" }
Was Sie zwischen den Iterationen ändern können:
-
Hyperparameter (Lernrate, Batchgröße, max_steps, group_size usw.)
-
Datensatz (verschiedene Eingabeaufforderungen oder Datenverteilung)
-
Belohnungsfunktion
-
Konfiguration des Agenten
Was muss gleich bleiben:
-
Basismodell — Der LoRa-Adapter ist an die Architektur des Basismodells gebunden
Übliche Muster für iteratives Training:
-
Lernen im Lehrplan — zuerst an einfacheren Problemen trainieren, dann an schwierigeren weitermachen
-
Verfeinerung der Belohnung — beginnen Sie mit einer einfachen Belohnungsfunktion und wiederholen Sie diese dann mit einer differenzierteren
-
Anpassung der Hyperparameter — Erhöhen Sie die Chargengröße oder passen Sie die Lernrate an, nachdem Sie die anfängliche Trainingsdynamik beobachtet haben
Bewährte Methoden bei Checkpoint
-
Überwachen Sie die Erstellung von Checkpoints. Verwenden Sie DescribeJob es, um während des
ModelCheckpointTrainings nachzuverfolgenResumableCheckpointund zu erfassen, damit Sie wissen, was verfügbar ist, falls Sie das Training fortsetzen müssen. -
Planen Sie Ausfälle bei langen Aufträgen ein. Wenn ein Job aus vielen Schritten besteht, sollten Sie Ihren Arbeitsablauf so gestalten, dass er von Checkpoints aus wieder aufgenommen wird, anstatt von vorne neu zu beginnen.