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.
Soumission d'un poste de formation
Lancement d'emplois de formation
Une fois que votre agent a été déployé et que votre ensemble de données est dans S3, créez une tâche de formation en utilisant l'une des méthodes suivantes.
SageMaker Studio d'IA
-
Accédez à Modèles dans le volet de navigation et sélectionnez Modèles JumpStart de base.
-
Sélectionnez un modèle compatible avec le RL multitour (voir le tableau des modèles pris en charge) et choisissez Personnaliser le modèle, puis Personnaliser avec l'interface utilisateur.
-
Sélectionnez l'apprentissage Multi-Turn par renforcement comme technique de personnalisation.
-
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'entraînement sous forme d'URI S3 ou d'ensemble de données enregistré.
-
Ajustez les hyperparamètres selon vos besoins.
-
Vérifiez votre configuration et choisissez Soumettre.
SageMaker SDK Python pour IA
Découvrez les modèles pris en charge
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}")
Configurez votre environnement d'agents
Option 1 : durée d'exécution de Bedrock AgentCore
# List available runtimes runtimes = MultiTurnRLTrainer.list_bedrock_agentcore_runtimes() for rt in runtimes: print(f" - {rt['name']} ({rt['status']}) → {rt['arn']}")
Option 2 : agent Lambda personnalisé
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")
Enregistrez votre jeu de données (facultatif)
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}")
Créer un groupe de packages de modèles restreint pour Nova (facultatif)
Si vous choisissez Nova model (nova-textgeneration-lite-v2), créez éventuellement un groupe de packages de modèles restreints avant de soumettre une tâche de formation (étape suivante). Si vous ignorez cette étape, le SDK en crée une automatiquement pour vous.
Le groupe de packages de modèles restreint (RMPG) est un groupe de packages de modèles avec ManagedStorageType : Restreint. Cela est nécessaire pour les modèles à source fermée tels que Nova, où les poids des modèles sont gérés par le client AWS et ne sont pas directement accessibles à celui-ci.
Le schéma de travail RFT nécessite deux MPG restreints distincts :
-
Sortie MPG : enregistre le package final du modèle affiné
-
Point de contrôle intermédiaire MPG — réservé aux points de contrôle d'entraînement intermédiaires (doit être différent du MPG de sortie)
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)
Une fois le groupe de packages Model créé, transmettez-le à l'étape suivante lors de la soumission d'une offre de formation.
Proposez un poste de formation chez Bedrock 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}")
Soumettre une offre de formation avec un agent Lambda personnalisé
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}")
Soumettre une offre de formation avec le groupe de packages Restricted Model pour Nova
Reportez-vous à l'étape ci-dessus (Créer un groupe de packages de modèles restreints pour Nova) pour savoir comment créer un groupe de packages de modèles restreints.
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 INTERFACE DE LIGNE DE COMMANDE (CLI)
Créez une tâche de formation à l'aide de l'CreateJobAPI. Vous spécifiez la configuration de l'agent, l'emplacement des données d'entraînement, le modèle de base et les paramètres de sortie dans leJobConfigDocument.
Pour récupérer le JobConfigDocument schéma complet :
aws sagemaker list-job-schema-versions --job-category AgentRFT aws sagemaker describe-job-schema-version --job-category AgentRFT --version "1.0.0"
Créez un emploi avec Bedrock 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
Créez une tâche avec un agent Lambda personnalisé
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
Créez un emploi avec Bedrock 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']}")
Créez une tâche avec un agent Lambda personnalisé
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']}")
Formation en matière de surveillance
Surveillez votre job de formation
Utilisez l'DescribeJobAPI pour vérifier l'état actuel de votre tâche à tout moment. Le statut du poste passe parInProgress, puis versCompleted, Failed ouStopped.
aws sagemaker describe-job \ --job-name "my-agent-rft-job" \ --job-category AgentRFT \ --region us-west-2
Utilisez le 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}")
Surveillez l'entraînement dans MLflow
SageMaker L'IA s'intègre automatiquement à MLflow géré pour suivre la progression, les indicateurs et les artefacts de votre tâche de formation. Pour activer le suivi MLflow, incluez un MlflowConfig dans vos tâches : OutputDataConfig
"OutputDataConfig": { "S3OutputPath": "s3://your-bucket/output/", "MlflowConfig": { "MlflowResourceArn": "arn:aws:sagemaker:us-west-2:123456789012:mlflow-app/my-rft-mlflow-app" } }
Conditions préalables
-
Créez une application MLflow gérée dans votre compte. Pour les instructions de configuration, voir Configuration de l'application MLflow.
-
Assurez-vous que votre rôle d'exécution SageMaker AI est autorisé à écrire dans l'application MLflow (
sagemaker-mlflow:*actions). -
Incluez-les
MlflowResourceArndans la configuration de votre tâche.
Qu'est-ce qui est enregistré
| # | Catégorie | Ce qui est enregistré | Où dans l'interface utilisateur de MLflow |
|---|---|---|---|
| 1 | Métriques d’entraînement | Per-step compteurs, débit, comptabilisation des données et des jetons, durée totale de chaque phase d'une étape, lot de déploiement récapitulatif de la trajectoire et des récompenses et distribution du nombre de tours par trajectoire | Onglet Métriques (graphiques de séries chronologiques) |
| 2 | Traces de trajectoire | Conversations complètes à plusieurs tours avec appels aux outils et récompenses | Onglet Traces |
Référence détaillée des indicateurs d'entraînement
Les mesures suivantes sont enregistrées à chaque étape de l'entraînement.
Compteurs de pas et débit () training/
| Métrique | Description |
|---|---|
training/epoch |
Numéro d'époque actuel |
training/global_step |
Compteur de pas d'entraînement mondial |
training/num_groups |
Groupes de trajectoires dans cette étape |
training/num_trajectories |
Trajectoires totales traitées au cours de cette étape |
training/total_tokens |
Les jetons ont été additionnés à tous les microlots au cours de cette étape |
training/num_datums |
Données d'entraînement formées à partir de trajectoires |
training/datums_per_trajectory |
Valeurs de référence moyennes émises par trajectoire |
training/action_tokens_mean |
Nombre moyen de jetons d'action (réponse) par trajectoire |
training/obs_tokens_mean |
Nombre moyen de jetons d'observation (invite) par trajectoire |
training/trainable_token_positions |
Nombre total de positions cibles pouvant être entraînées au cours de cette étape |
training/nontrainable_token_positions |
Nombre total de positions cibles non entraînables à cette étape |
training/trainable_token_ratio |
Ratio : positions des trainable / (trainable + nontrainable) jetons |
Durées des phases () timing_s/
| Métrique | Description |
|---|---|
timing_s/step |
Durée totale de l'étape |
timing_s/training |
C'est l'heure des forward/backward passes et de l'étape d'optimisation |
timing_s/policy_update |
Réduction du temps consacré aux poids mis à jour pour l'échantillonneur |
timing_s/save_checkpoint |
Gain de temps à un point de contrôle (uniquement sur les étapes du point de contrôle) |
timing_s/eval |
Évaluation chronologique (uniquement pour les étapes d'évaluation) |
Distribution de récompenses (rollout/reward/)
| Métrique | Description |
|---|---|
rollout/reward/mean |
Récompense de trajectoire moyenne dans tous les groupes |
rollout/reward/valid_mean |
Récompense moyenne uniquement pour les groupes valides (avantage non nul) ; égale mean en l'absence de filtrage |
rollout/reward/std |
Écart type des récompenses liées à la trajectoire |
rollout/reward/min |
Récompense de trajectoire minimale |
rollout/reward/max |
Récompense maximale sur la trajectoire |
rollout/reward/zero_frac |
Fraction de trajectoires avec récompense totale exactement 0,0 |
Les tours comptent (rollout/turns/)
| Métrique | Description |
|---|---|
rollout/turns/mean |
Virages moyens (transitions) par trajectoire |
rollout/turns/min |
Nombre minimal de virages sur les trajectoires |
rollout/turns/max |
Nombre maximal de virages sur les trajectoires |
Longueurs des jetons (rollout/tokens/)
| Métrique | Description |
|---|---|
rollout/tokens/prompt_mean |
Nombre moyen de jetons instantanés par transition |
rollout/tokens/response_mean |
Nombre moyen de jetons de réponse par transition |
rollout/tokens/response_std |
Écart type du nombre de jetons de réponse |
rollout/tokens/response_min |
Nombre minimal de jetons de réponse |
rollout/tokens/response_max |
Nombre maximal de jetons de réponse (surveillez le clustering sursampling_max_tokens) |
Log-probability santé (rollout/logprob/)
| Métrique | Description |
|---|---|
rollout/logprob/zero_count |
Nombre total de jetons Zero-LogProb |
rollout/logprob/zero_frac |
Fraction de tous les logprobs dont la valeur est exactement de 0,0 |
rollout/logprob/zero_per_group |
Nombre moyen de probs logarithmiques nuls par groupe de trajectoires |
rollout/logprob/nz_mean |
Moyenne de probs logarithmiques non nuls |
rollout/logprob/nz_std |
Écart type des probs logprobs non nuls |
rollout/logprob/nz_min |
Logprob minimal différent de zéro |
rollout/logprob/nz_max |
Logprob maximal différent de zéro |
Distribution des avantages (rollout/advantage/)
| Métrique | Description |
|---|---|
rollout/advantage/mean |
Valeur d'avantage moyenne pour toutes les transitions |
rollout/advantage/std |
Écart type des avantages |
rollout/advantage/min |
Avantage minimal |
rollout/advantage/max |
Avantage maximal |
rollout/advantage/n_positive |
Transitions présentant un avantage positif |
rollout/advantage/n_negative |
Transitions présentant un avantage négatif |
Batch-quality classement (analysis/)
| Métrique | Description |
|---|---|
analysis/batch_completion_ratio |
total_completed / batch_size— fraction des groupes attendus qui sont arrivés |
analysis/batch_valid_ratio |
valid_count / batch_size— avantages non nuls par rapport au lot complet |
analysis/zero_adv_groups |
Groupes où toutes les transitions ont un avantage quasi nul |
analysis/zero_adv_nonzero_reward |
Zero-advantage groupes où au moins une transition a une récompense différente de 0 (cas tout à fait correct pour les récompenses binaires) |
analysis/zero_adv_zero_reward |
Zero-advantage groupes où toutes les récompenses sont nulles (faux cas) |
analysis/reward_variance_across_groups |
Variance des récompenses moyennes par groupe (élevée = lot diversifié) |
analysis/mean_group_reward_spread |
Répartition moyenne des récompenses au sein du groupe max - min |
Récompense d'évaluation et pass @k (val/reward/)
Émis à la ligne de base (étape 0), à chaque val_every intervalle et à l'étape finale. Inclut les mêmes indicateurs de distribution, auxquels s'rollout/rewardajoutent les indicateurs de récompenses de groupe agrégés par invite.
Diffusion :
| Métrique | Description |
|---|---|
val/reward/mean |
Récompense moyenne par rapport au set d'évaluation |
val/reward/std |
Récompense Std Dev |
val/reward/min |
Récompense minimale |
val/reward/max |
Récompense maximale |
val/reward/zero_frac |
Fraction de trajectoires sans récompense |
Group-reward (agrégation par invite) :
| Métrique | Description |
|---|---|
val/reward/min_within_groups |
Récompense minimale moyenne par invite |
val/reward/mean_within_groups |
Récompense moyenne par invite |
val/reward/max_within_groups |
Récompense maximale moyenne par invite |
val/reward/std_within_groups |
Récompense moyenne par invite (cohérence) |
val/reward/rollouts_per_prompt |
Nombre moyen de déploiements (n) entre les invites |
val/reward/num_prompts |
Des instructions distinctes ont été évaluées |
Pass @k et comptabilité des réussites :
| Métrique | Description |
|---|---|
val/reward/succeeded_rollouts |
Nombre total de déploiements avec récompense ≥ success_threshold |
val/reward/failed_rollouts |
Nombre total de déploiements avec récompense < success_threshold |
val/reward/success_threshold |
Seuil utilisé (reproduit en écho pour plus de clarté) |
val/reward/pass_at_{k} |
Probabilité ≥ 1 de k échantillons réussis |
val/reward/pass_power_{k} |
Probabilité de réussite de tous les k échantillons (fiabilité) |
Le tour d'évaluation compte (val/turns/)
| Métrique | Description |
|---|---|
val/turns/mean |
Nombre moyen de virages par trajectoire d'évaluation |
val/turns/min |
Nombre de tours minimum |
val/turns/max |
Nombre maximum de tours |
Longueurs des jetons d'évaluation (val/tokens/)
| Métrique | Description |
|---|---|
val/tokens/prompt_mean |
Nombre moyen de jetons rapides par transition |
val/tokens/response_mean |
Nombre moyen de jetons de réponse par transition |
val/tokens/response_std |
Écart type des jetons de réponse |
val/tokens/response_min |
Nombre minimal de jetons de réponse |
val/tokens/response_max |
Nombre maximal de jetons de réponse |
Évaluation de l'état des probabilités logarithmiques () val/logprob/
| Métrique | Description |
|---|---|
val/logprob/zero_count |
Nombre total de jetons Zero-LogProb |
val/logprob/zero_frac |
Fraction de zéro (logprobs) |
val/logprob/zero_per_group |
Zéro logprobs par groupe |
val/logprob/nz_mean |
Moyenne de probs logarithmiques non nuls |
val/logprob/nz_std |
Écart type des probs logprobs non nuls |
val/logprob/nz_min |
Logprob minimal différent de zéro |
val/logprob/nz_max |
Logprob maximal différent de zéro |
Accès à l'interface utilisateur de MLflow
Accédez à l'interface utilisateur de MLflow via une URL présignée :
aws sagemaker create-presigned-mlflow-app-url \ --arn arn:aws:sagemaker:us-west-2:123456789012:mlflow-app/mlflow-app-id \ --region us-west-2
Copiez le AuthorizedUrl résultat dans votre navigateur.
Trajectoires et traces des agents
Pendant la formation, l' SageMaker IA enregistre chaque interaction entre votre agent et le modèle de politique sous forme de trajectoire, soit l'enregistrement complet d'un déploiement. Chaque trajectoire capture chaque demande envoyée au modèle, chaque réponse générée, chaque appel d'outil effectué et la récompense finale. Les trajectoires sont publiées dans votre expérience MLflow sous forme de traces structurées.
Tracer le contenu
-
L'invite de saisie de votre ensemble de données d'entraînement
-
Chaque tour d'inférence du modèle (données d'invite, de réponse et de niveau jeton)
-
Les appels aux outils et leurs résultats, si votre agent utilise des outils
-
Le score de récompense final
-
Informations de chronométrage pour chaque tour
Affichage des trajectoires dans l'interface utilisateur de MLflow
Accédez à l'interface utilisateur de MLflow via une URL présignée :
aws sagemaker create-presigned-mlflow-app-url \ --arn arn:aws:sagemaker:us-west-2:123456789012:mlflow-app/mlflow-app-id \ --region us-west-2
Copiez le AuthorizedUrl résultat dans votre navigateur.
Ouvrez l'interface utilisateur MLflow à l'aide de l'URL présignée ci-dessus. Accédez à l'exécution de votre test et sélectionnez l'onglet Traces. Chaque trace représente un déploiement terminé et indique :
-
L'invite du système et l'invite de l'utilisateur
-
Chaque réponse de l'assistant (avec thinking/reasoning le cas échéant)
-
Plans d'utilisation des outils indiquant quels outils ont été appelés et leurs résultats
-
Le score de récompense attribué à la trajectoire
Utilisez des trajectoires pour corriger les faibles scores de récompense
| Symptôme | Ce qu’il faut rechercher |
|---|---|
| Faible récompense dans la plupart des déploiements | Les réponses des modèles sont-elles cohérentes ? Le format de l'invite est-il correct ? |
| Tool-related échecs | Les appels aux outils sont-ils couronnés de succès ? Les entrées et les sorties sont-elles bien formées ? |
| Agent en boucle | L'agent répète-t-il les mêmes actions sans progresser ? |
| Réponses tronquées | Les réponses sont-elles interrompues par la limite MaxTokens ? |
Obtenez des résultats d'entraînement
À la fin d'une tâche d'entraînement, les poids de vos modèles entraînés sont stockés sous forme de package de modèles SageMaker AI. Cette section explique comment trouver vos résultats, comprendre les types de points de contrôle produits pendant la formation et les utiliser pour le déploiement ou la formation continue.
Comment les résultats sont stockés
SageMaker L'IA stocke les résultats de formation sous forme de packages de modèles immuables et versionnés dans des groupes de packages de modèles. Multi-turn RL utilise deux groupes distincts, que vous spécifiez lors de la création d'une tâche :
| Groupe | Objectif | Table des matières |
|---|---|---|
| Groupe de packages de modèles de sortie | Modèle entraîné final | HuggingFace-compatible Poids des adaptateurs LoRa (adapter_config.json + adapter_model.safetensors) |
| Groupe de packages de modèles de points de contrôle intermédiaires | État de reprise de l'entraînement | Poids de l'adaptateur LoRa + états de l'optimiseur + métadonnées des étapes d'entraînement |
Configurez les deux groupes dans votre 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" }
Types de points de contrôle
La formation produit deux types de points de contrôle, enregistrés à chaque étape de la formation :
Point de contrôle du modèle (poids uniquement)
-
Stocké dans le groupe de packages du modèle de sortie
-
Contient les poids des adaptateurs HuggingFace-compatible LoRa au format SafeTensors
-
À utiliser pour l'inférence, le déploiement ou comme point de départ pour un nouveau travail de formation
-
Créé à chaque étape, à la fin de la tâche et lorsqu'une tâche est arrêtée
Point de contrôle réutilisable (état complet)
-
Stocké dans le groupe de packages du modèle de point de contrôle intermédiaire
-
Contient les poids des adaptateurs LoRa, les états de l'optimiseur et les métadonnées des étapes d'entraînement par GPU
-
À utiliser pour reprendre une tâche interrompue à partir de l'étape exacte à laquelle elle s'est arrêtée
-
Format interne : non directement utilisable pour l'inférence
Cycle de vie des points de contrôle
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
Récupérez votre modèle entraîné
Lorsqu'une tâche est terminée avec succès, le modèle final est enregistré en tant que package de modèles dans le groupe de packages de modèles de sortie. Le OutputModelPackageArn champ de l'enregistrement de tâche contient l'ARN.
Vérifiez l'achèvement de la tâche et récupérez l'ARN du modèle de sortie :
aws sagemaker describe-job \ --job-name "my-agent-rft-job" \ --job-category AgentRFT \ --region us-west-2
Recherchez OutputModelPackageArn dans la réponse. Utilisez-le pour décrire le Model Package et obtenir l'emplacement S3 des poids :
aws sagemaker describe-model-package \ --model-package-name "arn:aws:sagemaker:us-west-2:123456789012:model-package/my-final-models/5"
Si une tâche échoue ou est arrêtée avant d'être terminée, le dernier point de contrôle intermédiaire est promu au Output Model Package Group dans la mesure du possible. Vérifiez OutputModelPackageArn de la même manière.
Pour surveiller la création de points de contrôle pendant l'entraînement, observez les ModelCheckpoint champs ResumableCheckpoint et en DescribeJob sortie.
Reprendre une tâche interrompue
Si une tâche échoue ou est interrompue en cours de formation, vous pouvez commencer une nouvelle tâche en reprenant exactement l'étape où elle s'était arrêtée. La plateforme rétablit l'état complet de l'entraînement (poids, optimisation de l'élan et compteur de pas) à partir du point de contrôle reprenant.
Spécifiez un point de contrôle pouvant être repris dans le groupe de packages du modèle de point de contrôle intermédiaire comme suit : 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" }
Le InputModelPackageArn doit pointer vers un point de contrôle révocable (un point dont les métadonnées du Model Package IsCheckpoint=true figurent dans ses métadonnées). L'entraînement reprend à partir de l'étape qui suit le point de contrôle. Par exemple, si le point de contrôle a été enregistré à l'étape 4, l'entraînement continue à partir de l'étape 5.
Les éléments suivants doivent rester les mêmes entre le travail d'origine et le travail repris :
-
Modèle de base
-
Configuration LoRa (rang et alpha)
-
Hyperparamètres (taux d'apprentissage, taille du lot, etc.)
-
Jeu de données
Poursuivre la formation sur un nouvel emploi (formation itérative)
L'entraînement itératif vous permet de vous appuyer sur un modèle déjà entraîné avec un ensemble de données différent, différents hyperparamètres ou une fonction de récompense affinée. Contrairement à la reprise, cela permet de démarrer une nouvelle série d'entraînement : l'optimiseur se réinitialise, le compteur de pas est remis à 0 et seuls les poids LoRa entraînés sont reportés.
Spécifiez un point de contrôle du modèle dans le groupe de packages de modèles de sortie comme suit : 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-final-models/3" }
Ce que vous pouvez modifier entre les itérations :
-
Hyperparamètres (taux d'apprentissage, taille du lot, max_steps, group_size, etc.)
-
Ensemble de données (instructions ou distribution des données différentes)
-
Fonction de récompense
-
Configuration de l'agent
Ce qui doit rester inchangé :
-
Modèle de base — l'adaptateur LoRa est lié à l'architecture du modèle de base
Modèles courants pour la formation itérative :
-
Apprentissage scolaire : entraînez-vous d'abord sur les problèmes les plus simples, puis continuez sur les plus difficiles
-
Affinement des récompenses : commencez par une fonction de récompense simple, puis itérez avec une fonction plus nuancée
-
Ajustement des hyperparamètres : augmentez la taille du lot ou ajustez le taux d'apprentissage après avoir observé la dynamique d'entraînement initiale
Bonnes pratiques en matière de points de contrôle
-
Surveillez la création de points de contrôle. DescribeJob Utilisez-le pour effectuer le suivi
ResumableCheckpointModelCheckpointet le terrain pendant l'entraînement afin de savoir ce qui est disponible si vous devez le reprendre. -
Prévoyez les défaillances lors de travaux de longue durée. Si une tâche comporte de nombreuses étapes, concevez votre flux de travail pour qu'il reprenne à partir de points de contrôle plutôt que de recommencer à zéro.