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.
Évaluez avec Inspect AI Container
Le conteneur SageMaker Inspect AI exécute des évaluations de modèles LLM sur les emplois SageMaker de formation. Le conteneur utilise Inspect AI
Les approches d'évaluation précédentes (basées sur lighteval
Présentation de
Les principaux avantages sont les suivants :
-
Apportez vos propres points de référence : rédigez des tâches d'évaluation au format Inspect AI, puis intégrez des tâches d'évaluation spécifiques à un domaine sans dépendre d'une équipe centralisée pour les intégrer.
-
Évaluez à l'aide de différentes options d'inférence : fonctionne avec SageMaker Inference (point de terminaison existant ou créé à la volée), Amazon Bedrock et d'autres backends d'inférence entrants.
-
Itérez plus rapidement : passez du développement de référence à l'évaluation de la production sans modifier l'infrastructure. L'intégration d'une nouvelle référence, qui prenait auparavant des jours, se fait en quelques minutes.
-
Exécutez à grande échelle : enchaînez plusieurs benchmarks en une seule tâche, combinez les benchmarks standard de la bibliothèque inspect-evals avec vos propres tâches personnalisées dans le même travail.
-
Un point d'entrée unique pour toutes les techniques d'entraînement : que votre modèle ait été affiné avec SFT (SMTJ, SMHP), CPT (SMHP) ou RFT (SMTJ, SMHP), le conteneur l'évalue via la même interface. L'évaluation des points de contrôle enregistrés à mi-entraînement à des étapes spécifiques est également prise en charge (par exemple, étape 500, étape 1000) en pointant
model_s3_urisur le chemin du point de contrôle.
Comment ça marche
Vous fournissez deux entrées au conteneur :
-
Un fichier de configuration YAML (recette) qui définit le fournisseur d'inférence, les benchmarks et les paramètres d'évaluation
-
Fichiers de référence (scripts Python avec le
@taskdécorateur) téléchargés sur Amazon S3
Le conteneur gère la gestion des terminaux, l'exécution des évaluations et la collecte des résultats. Lorsque la tâche de formation est terminée, les résultats sont écrits sur l'emplacement de sortie S3 que vous avez spécifié.
Image de conteneur
Le tableau suivant répertorie les URI des images du conteneur Inspect AI par AWS région.
| Région | URI de l'image de conteneur |
|---|---|
| us-east-1 | 763104351884.dkr.ecr.us-east-1.amazonaws.com/sagemaker-inspect-ai:latest |
| us-west-2 | 763104351884.dkr.ecr.us-west-2.amazonaws.com/sagemaker-inspect-ai:latest |
| eu-west-2 | 763104351884.dkr.ecr.eu-west-2.amazonaws.com/sagemaker-inspect-ai:latest |
Conditions préalables
Avant de commencer, assurez-vous de disposer des ressources et des accès suivants.
| Exigence | Description |
|---|---|
| AWS compte avec SageMaker accès | Un actif autorisé Compte AWS à créer des emplois SageMaker de formation |
| compartiment S3 | Un compartiment pour stocker vos recettes d'évaluation, vos fichiers de référence et vos résultats de sortie |
| Rôle d'exécution IAM | Un rôle que SageMaker vous pouvez assumer pour accéder à vos ressources |
| SageMaker Point de terminaison d'inférence ou accès à Amazon Bedrock | Un point de terminaison du modèle déployé ou un accès au modèle Amazon Bedrock pour le modèle que vous souhaitez évaluer |
| AWS CLI ou SageMaker Python SDK | Outils pour soumettre des offres de formation et gérer les ressources |
| Réservation de capacité (grands modèles) | Pour les modèles qui nécessitent des instances accélérées (telles que p5 pour Nova Lite 2), contactez le AWS Support pour réserver de la capacité pour SageMaker Inference ou Amazon Bedrock |
Étape 1 : configurer les autorisations IAM
Le SageMaker Training Job s'exécute sous un rôle d'exécution que vous fournissez. Ce rôle a besoin d'autorisations pour lire les benchmarks depuis S3, écrire les résultats, invoquer le point de terminaison d'inférence et écrire CloudWatch des journaux.
1.1 Création de la politique de confiance
Enregistrez ce qui suit sous le nom trust_policy.json :
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "sagemaker.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
1.2 Création du rôle
aws iam create-role \ --role-name InspectLensEvalRole \ --assume-role-policy-document file://trust_policy.json
1.3 Joindre la politique d'autorisations
Enregistrez ce qui suit sous le nomeval_policy.json, en remplaçant toutes les valeurs d'espace réservé (REGIONACCOUNT_ID,, noms de compartiments) par vos valeurs :
{ "Version": "2012-10-17", "Statement": [ { "Sid": "S3ReadBenchmarkData", "Effect": "Allow", "Action": ["s3:GetObject", "s3:ListBucket"], "Resource": [ "arn:aws:s3:::YOUR_BENCHMARK_BUCKET", "arn:aws:s3:::YOUR_BENCHMARK_BUCKET/*" ] }, { "Sid": "S3WriteResults", "Effect": "Allow", "Action": ["s3:GetObject", "s3:PutObject", "s3:ListBucket"], "Resource": [ "arn:aws:s3:::YOUR_RESULTS_BUCKET", "arn:aws:s3:::YOUR_RESULTS_BUCKET/*" ] }, { "Sid": "SageMakerInvokeExistingEndpoint", "Effect": "Allow", "Action": [ "sagemaker:InvokeEndpoint", "sagemaker:InvokeEndpointWithResponseStream", "sagemaker:DescribeEndpoint" ], "Resource": "arn:aws:sagemaker:REGION:ACCOUNT_ID:endpoint/*" }, { "Sid": "BedrockInference", "Effect": "Allow", "Action": [ "bedrock:InvokeModel", "bedrock:InvokeModelWithResponseStream" ], "Resource": [ "arn:aws:bedrock:REGION::foundation-model/*", "arn:aws:bedrock:REGION:ACCOUNT_ID:inference-profile/*", "arn:aws:bedrock:REGION:ACCOUNT_ID:provisioned-model/*", "arn:aws:bedrock:REGION:ACCOUNT_ID:custom-model/*", "arn:aws:bedrock:REGION:ACCOUNT_ID:imported-model/*", "arn:aws:bedrock:REGION:ACCOUNT_ID:custom-model-deployment/*" ] }, { "Sid": "BedrockCustomModelAccess", "Effect": "Allow", "Action": [ "bedrock:GetCustomModel", "bedrock:GetImportedModel", "bedrock:GetProvisionedModelThroughput", "bedrock:GetCustomModelDeployment", "bedrock:GetInferenceProfile" ], "Resource": [ "arn:aws:bedrock:REGION:ACCOUNT_ID:custom-model/*", "arn:aws:bedrock:REGION:ACCOUNT_ID:imported-model/*", "arn:aws:bedrock:REGION:ACCOUNT_ID:provisioned-model/*", "arn:aws:bedrock:REGION:ACCOUNT_ID:custom-model-deployment/*", "arn:aws:bedrock:REGION:ACCOUNT_ID:inference-profile/*" ] }, { "Sid": "SageMakerCreateEndpointLifecycle", "Effect": "Allow", "Action": [ "sagemaker:CreateModel", "sagemaker:DescribeModel", "sagemaker:DeleteModel", "sagemaker:CreateEndpointConfig", "sagemaker:DescribeEndpointConfig", "sagemaker:DeleteEndpointConfig", "sagemaker:CreateEndpoint", "sagemaker:DescribeEndpoint", "sagemaker:DeleteEndpoint", "sagemaker:InvokeEndpoint", "sagemaker:InvokeEndpointWithResponseStream" ], "Resource": [ "arn:aws:sagemaker:REGION:ACCOUNT_ID:model/inspectlens-*", "arn:aws:sagemaker:REGION:ACCOUNT_ID:endpoint/inspectlens-*", "arn:aws:sagemaker:REGION:ACCOUNT_ID:endpoint-config/inspectlens-*" ] }, { "Sid": "ECRAuth", "Effect": "Allow", "Action": "ecr:GetAuthorizationToken", "Resource": "*" }, { "Sid": "PassRoleToSageMaker", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::ACCOUNT_ID:role/InspectLensEvalRole", "Condition": { "StringEquals": { "iam:PassedToService": "sagemaker.amazonaws.com" } } }, { "Sid": "VPCNetworkingForEndpoint", "Effect": "Allow", "Action": [ "ec2:CreateNetworkInterface", "ec2:CreateNetworkInterfacePermission", "ec2:DeleteNetworkInterface", "ec2:DeleteNetworkInterfacePermission", "ec2:DescribeNetworkInterfaces", "ec2:DescribeVpcs", "ec2:DescribeDhcpOptions", "ec2:DescribeSubnets", "ec2:DescribeSecurityGroups" ], "Resource": "*" }, { "Sid": "CloudWatchLogs", "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents", "logs:DescribeLogStreams" ], "Resource": [ "arn:aws:logs:REGION:ACCOUNT_ID:log-group:/aws/sagemaker/TrainingJobs:*", "arn:aws:logs:REGION:ACCOUNT_ID:log-group:/aws/sagemaker/Endpoints/*" ] }, { "Sid": "MLflowTrackingServer", "Effect": "Allow", "Action": [ "sagemaker:DescribeMlflowTrackingServer", "sagemaker:CreatePresignedMlflowTrackingServerUrl" ], "Resource": "arn:aws:sagemaker:REGION:ACCOUNT_ID:mlflow-tracking-server/*" }, { "Sid": "MLflowTrackingOperations", "Effect": "Allow", "Action": [ "sagemaker-mlflow:AccessUI", "sagemaker-mlflow:CreateExperiment", "sagemaker-mlflow:GetExperiment", "sagemaker-mlflow:GetExperimentByName", "sagemaker-mlflow:SearchExperiments", "sagemaker-mlflow:CreateRun", "sagemaker-mlflow:GetRun", "sagemaker-mlflow:UpdateRun", "sagemaker-mlflow:SearchRuns", "sagemaker-mlflow:LogMetric", "sagemaker-mlflow:LogParam", "sagemaker-mlflow:LogBatch", "sagemaker-mlflow:SetTag", "sagemaker-mlflow:LogArtifact", "sagemaker-mlflow:ListArtifacts" ], "Resource": "arn:aws:sagemaker:REGION:ACCOUNT_ID:mlflow-tracking-server/*" }, { "Sid": "KMSForVolumeEncryption", "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:GenerateDataKey", "kms:CreateGrant", "kms:DescribeKey" ], "Resource": "arn:aws:kms:REGION:ACCOUNT_ID:key/*" } ] }
Attachez la stratégie au rôle :
aws iam put-role-policy \ --role-name InspectLensEvalRole \ --policy-name InspectLensEvalPolicy \ --policy-document file://eval_policy.json
Étape 2 : Rédigez votre recette d'évaluation
La recette d'évaluation est un fichier de configuration YAML qui définit la manière dont le conteneur exécute vos évaluations. La recette spécifie le fournisseur d'inférence, les benchmarks, les paramètres d'évaluation et les paramètres de sortie.
Pour des exemples de bout en bout, consultez les blocs-notes suivants :
Option A : évaluer un point de SageMaker terminaison existant
Utilisez cette option lorsqu'un modèle est déjà déployé sur un point de terminaison d' SageMaker inférence.
inference_provider: sagemaker_endpoint: endpoint_name: "my-existing-endpoint" region: "us-east-1" benchmarks: s3_path: "s3://your-bucket/benchmarks/my_benchmarks/" tasks: - name: mmlu eval: max_connections: 10 max_retries: 100 timeout: 600 output: s3_path: "s3://your-bucket/eval-results/"
Option B : créer un point de terminaison, évaluer, puis nettoyer
Utilisez cette option pour que le conteneur déploie une base Amazon Nova ou un modèle affiné, exécute des évaluations et démonte automatiquement le point de terminaison. Il s'agit de l'approche recommandée pour les séries d'évaluation ponctuelles. Récupérez le dernier conteneur SageMaker d'inférence dans la documentation relative aux images du conteneur Amazon Nova SageMaker Inference.
inference_provider: sagemaker_endpoint: endpoint_name: null # null = create new endpoint model_s3_uri: "s3://your-bucket/models/nova-micro/" inference_image_uri: "708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-inference-repo:SM-Inference-latest" instance_type: "ml.p5.48xlarge" instance_count: 1 execution_role_arn: "arn:aws:iam::ACCOUNT_ID:role/InspectLensEvalRole" region: "us-east-1" context_length: "16000" max_concurrency: "32" cleanup_endpoint: true # Auto-delete after eval benchmarks: s3_path: "s3://your-bucket/benchmarks/my_benchmarks/" tasks: - name: mmlu_pro - name: arc_c - name: boolq eval: fail_on_error: false decoding: temperature: 0.0 top_p: 1.0 top_k: -1 max_tokens: 16000 reasoning_effort: null max_connections: 16 max_retries: 100 timeout: 600 extra_args: - "-M" - "completion_mode=True" - "--logprobs" - "--top-logprobs" - "5" output: s3_path: "s3://your-bucket/eval-results/"
Remarque sur model_s3_uri :
-
Modèles Amazon Nova GA (points de contrôle de base) : par exemple,
s3://escrow-nova-model-708977205387-us-east-1/nova-lite-2/prod/— SageMaker gère l'accès automatiquement, aucune autorisation S3 supplémentaire n'est nécessaire. -
Modèles Amazon Nova personnalisés (points de contrôle après la formation) :
s3://customer-escrow-ACCOUNT_ID-SUFFIX/YOUR_RUN_NAME/outputs/checkpoints/step_N/— il s'agit de la procédure d'entiercement à partir des résultats de votre travail de formation.
Option C : évaluer via Amazon Bedrock
Utilisez cette option pour évaluer un modèle disponible via Amazon Bedrock sans gérer de point de terminaison.
inference_provider: bedrock: model_id: amazon.nova-pro-v1:0 region: us-east-1 benchmarks: - name: mmlu path: benchmarks/mmlu_pro.py limit: 100 eval: fail_on_error: false decoding: temperature: 0.0 top_p: 1.0 top_k: -1 max_tokens: 8192 reasoning_effort: null max_connections: 10 max_retries: 50 timeout: 600 extra_args: - "--display" - "plain" output: s3_path: s3://your-bucket/eval/output/
Configuration des benchmarks
La benchmarks section définit les tâches d'évaluation à exécuter. Vous pouvez enchaîner plusieurs points de référence en une seule tâche.
| Champ | Obligatoire | Par défaut | Description |
|---|---|---|---|
name |
Oui | — | Un nom descriptif pour l'essai de référence |
path |
Oui | — | Chemin relatif vers le fichier Python de référence dans votre répertoire de benchmarks S3 |
limit |
Non | Aucun (tous les échantillons) | Nombre maximum d'échantillons à évaluer. À utiliser pour les tests avant les essais complets. |
epochs |
Non | 1 | Nombre de fois où l'évaluation de la signification statistique doit être répétée |
task_args |
Non | — | Key-value paires passées en arguments à la fonction de tâche de référence |
Configuration de l'évaluation
La eval section contrôle la manière dont le conteneur exécute les évaluations.
| Paramètre | Obligatoire | Par défaut | Description |
|---|---|---|---|
fail_on_error |
Non | false | Arrêtez l'évaluation en cas d'échec d'un échantillon. Défini sur true pour une validation stricte. |
max_connections |
Non | 10 | Nombre de requêtes parallèles adressées au point de terminaison d'inférence |
max_retries |
Non | 3 | Nombre de nouvelles tentatives pour des demandes d'inférence ayant échoué |
timeout |
Non | 600 | Délai d'expiration de la demande en secondes pour chaque appel d'inférence |
extra_args |
Non | — | Paires clé-valeur supplémentaires transmises directement à la commande Inspect AI eval |
Paramètres de décodage
Configurez les paramètres de décodage du modèle dans la eval.decoding section :
| Paramètre | Obligatoire | Par défaut | Description |
|---|---|---|---|
temperature |
Non | 0.0 | Contrôle le caractère aléatoire de la génération. 0.0À utiliser pour des résultats de référence déterministes et reproductibles. |
top_p |
Non | 1.0 | Seuil d'échantillonnage du noyau. 1.0signifie qu'il n'y a aucune restriction. |
top_k |
Non | -1 | Limite le choix des mots aux K jetons les plus probables. -1désactive ce filtre. |
max_tokens |
Non | 8192 | Nombre maximum de jetons à générer par réponse. Augmentation pour les indices de référence nécessitant de longues chaînes de raisonnement. |
reasoning_effort |
Non | null | Contrôle la profondeur du raisonnement pour les modèles qui le prennent en charge (par exemple, les modèles Amazon Nova avec pensée étendue). Options : lowhigh, ou null pour désactiver. |
Configuration de sortie
La output section définit où et comment les résultats d'évaluation sont stockés.
| Champ | Obligatoire | Par défaut | Description |
|---|---|---|---|
s3_path |
Oui | — | URI S3 où les résultats de l'évaluation sont écrits |
output_format |
Non | eval | Format des fichiers de résultats. Consultez le tableau suivant pour connaître les options. |
Les formats de sortie suivants sont disponibles :
| Format | Description |
|---|---|
eval |
Format Inspect AI natif. Compatible avec inspect view pour une analyse interactive. |
csv |
Comma-separated valeurs. Convient à l'analyse de feuilles de calcul et aux pipelines de données. |
jsonl |
Format de lignes JSON. Un objet JSON par ligne pour le traitement du streaming. |
json |
Format JSON standard. Résultats complets dans un seul fichier structuré. |
Configuration de MLflow
Vous pouvez éventuellement enregistrer les mesures d'évaluation sur un serveur de suivi MLflow. Ajoutez la tracking section suivante à votre recette :
tracking: mlflow_tracking_arn: null # ARN of SageMaker MLflow tracking server mlflow_experiment_name: "inspectlens" # experiment name mlflow_tracing: true # log full request/response traces mlflow_log_artifacts: true # upload .eval files to MLflow
| Champ | Obligatoire | Par défaut | Description |
|---|---|---|---|
mlflow_tracking_arn |
Non | null | ARN de votre serveur de suivi SageMaker MLflow. Cette configuration active la journalisation MLflow. Omettre ou définir sur null pour désactiver. |
mlflow_experiment_name |
Non | inspecter l'objectif | Nom de l'expérience MLflow sous laquelle enregistrer les essais. |
mlflow_tracing |
Non | true | Quandtrue, enregistre les request/response traces complètes pour chaque échantillon. |
mlflow_log_artifacts |
Non | true | Quandtrue, télécharge les fichiers .eval journaux sous forme d'artefacts MLflow. |
Référence complète de la recette
L'exemple suivant montre une recette complète avec toutes les options de configuration disponibles :
inference_provider: sagemaker_endpoint: endpoint_name: my-nova-endpoint model_s3_uri: s3://your-bucket/models/my-model/ inference_image_uri: "708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-inference-repo:SM-Inference-latest" instance_type: ml.g5.12xlarge cleanup_endpoint: true region: us-west-2 benchmarks: - name: mmlu path: benchmarks/mmlu_pro.py limit: 100 epochs: 3 task_args: subject: math - name: truthfulqa path: benchmarks/truthfulqa.py limit: 50 eval: fail_on_error: false decoding: temperature: 0.0 top_p: 1.0 top_k: -1 max_tokens: 8192 reasoning_effort: null max_connections: 256 max_retries: 50 timeout: 600 extra_args: - "--display" - "plain" output: s3_path: s3://your-bucket/eval/output/ output_format: eval tracking: mlflow_tracking_arn: "arn:aws:sagemaker:us-west-2:123456789012:mlflow-tracking-server/my-server" mlflow_experiment_name: "inspectlens" mlflow_tracing: true mlflow_log_artifacts: true
Étape 3 : Préparation des fichiers de référence
Les benchmarks sont des fichiers Python qui utilisent le @task décorateur Inspect AI pour définir les tâches d'évaluation. Le référentiel inspect-evals
Exemple de référence
L'exemple suivant montre un point de référence minimal qui évalue les performances à choix multiples sur un ensemble de données : HuggingFace
from inspect_ai import task, Task from inspect_ai.dataset import hf_dataset from inspect_ai.scorer import choice from inspect_ai.solver import multiple_choice @task def my_benchmark(): return Task( dataset=hf_dataset( path="cais/mmlu", name="abstract_algebra", split="test", ), solver=multiple_choice(), scorer=choice(), )
Dépendances
Si votre benchmark a besoin de dépendances supplémentaires, incluez un pyproject.toml ou requirements.txt dans le même répertoire S3 :
[project] name = "my-benchmark" version = "0.1.0" requires-python = ">=3.12" dependencies = [ "datasets>=2.14.0", ]
Pre-installed colis
Le conteneur comprend les emballages suivants. Vous n'avez pas besoin de les répertorier dans votrepyproject.toml.
| Package | Version |
|---|---|
| Python | 3,12 |
| inspect-ai | 0,3,220 |
| boto3 | 1,40,61 |
| aioboto 3 | 15,5,0 |
| openai | 2.36.0 |
| mlflow | 3.12.0 |
| pyyaml | 6.0.3 |
Sélection des tâches
Le tasks champ de votre recette contrôle les tâches à exécuter dans un fichier de référence.
| Configuration | Exemple | Comportement |
|---|---|---|
Vide tasks |
tasks: [] |
Exécute toutes les tâches définies dans le fichier de référence |
| Filtre de nom | tasks: ["algebra"] |
Exécute les tâches dont le nom contient la sous-chaîne « algèbre » |
limit |
limit: 50 |
Limite le nombre d'échantillons évalués par tâche |
epochs |
epochs: 3 |
Répète l'évaluation plusieurs fois pour mesurer la variance |
Étape 4 : Préparez votre structure S3
La structure suivante est une recommandation pour organiser les configurations, les benchmarks et les résultats. Vous pouvez pointer le conteneur vers n'importe quel emplacement S3 ; la structure elle-même n'est pas requise.
s3://your-bucket/ ├── config/ │ └── inspect_config.yaml # Your eval recipe ├── benchmarks/ │ └── my_benchmarks/ # Your benchmark Python files │ ├── pyproject.toml # Optional: benchmark dependencies │ ├── my_task.py # @task decorated functions │ └── _helpers.py # Shared utilities └── output/ # Results written here
Téléchargez vos fichiers sur S3 :
# Upload benchmark files aws s3 cp my_benchmarks/ s3://your-bucket/benchmarks/my_benchmarks/ --recursive # Upload your eval recipe aws s3 cp inspect_config.yaml s3://your-bucket/config/inspect_config.yaml
Étape 5 : Soumettre le poste de formation
Soumettez un job de SageMaker formation pour exécuter votre évaluation. Vous pouvez utiliser le AWS CLI ou le SDK SageMaker Python.
Option A : AWS CLI
aws sagemaker create-training-job \ --training-job-name inspect-eval-$(date +%Y%m%d-%H%M%S) \ --algorithm-specification \ TrainingImage=763104351884.dkr.ecr.us-east-1.amazonaws.com/sagemaker-inspect-ai:latest,TrainingInputMode=File \ --role-arn arn:aws:iam::123456789012:role/SageMakerInspectAIRole \ --resource-config \ InstanceType=ml.m5.large,InstanceCount=1,VolumeSizeInGB=30 \ --stopping-condition MaxRuntimeInSeconds=86400 \ --input-data-config '[ { "ChannelName": "config", "DataSource": { "S3DataSource": { "S3DataType": "S3Prefix", "S3Uri": "s3://your-bucket/eval/config/", "S3DataDistributionType": "FullyReplicated" } } } ]' \ --output-data-config S3OutputPath=s3://your-bucket/eval/output/ \ --region us-west-2
Option B : SDK SageMaker Python V3
from sagemaker.train import ModelTrainer from sagemaker.train.configs import InputData, Compute from sagemaker.core.shapes.shapes import StoppingCondition, OutputDataConfig trainer = ModelTrainer( training_image="763104351884.dkr.ecr.us-east-1.amazonaws.com/sagemaker-inspect-ai:latest", compute=Compute( instance_type="ml.m5.large", instance_count=1, volume_size_in_gb=30, ), output_data_config=OutputDataConfig( s3_output_path="s3://your-bucket/eval/output/" ), role="arn:aws:iam::123456789012:role/SageMakerInspectAIRole", stopping_condition=StoppingCondition(max_runtime_in_seconds=86400), ) trainer.train( input_data_config=[ InputData( channel_name="config", data_source="s3://your-bucket/eval/config/", ) ] )
Principaux paramètres
| Paramètre | Value | Description |
|---|---|---|
TrainingImage |
763104351884.dkr.ecr.us-east-1.amazonaws.com/sagemaker-inspect-ai:latest |
L'image du conteneur Inspect AI |
InstanceType |
ml.m5.large |
Type d'instance d'orchestrateur (pas l'instance d'inférence) |
VolumeSizeInGB |
30 |
Stockage pour les données de référence et les journaux |
MaxRuntimeInSeconds |
86400 |
Durée maximale du travail (24 heures) |
ChannelName |
config |
Canal d'entrée contenant vos fichiers de recettes et de référence |
Conseils sur les types d'instances d'Orchestrator
L'instance de tâche de formation exécute la logique d'orchestration de l'évaluation, et non l'inférence du modèle. Choisissez un type d'instance en fonction de votre charge de travail d'évaluation.
| Type d’instance | Cas d’utilisation | Conseils |
|---|---|---|
ml.m5.large |
Valeur par défaut recommandée | Suffisant pour la plupart des charges de travail d'évaluation avec un parallélisme modéré |
ml.m5.4xlarge |
Grandes suites de référence | À utiliser lors de l'exécution de nombreux benchmarks avec des max_connections valeurs élevées |
ml.c5.large |
Cost-sensitive | Alternative à moindre coût pour des évaluations simples avec un faible parallélisme |
Variables d'environnement
Vous pouvez transmettre des variables d'environnement au conteneur à des fins d'authentification ou de configuration. Ajoutez le --environment paramètre à la AWS CLI commande :
aws sagemaker create-training-job \ ... --environment '{ "HF_TOKEN": "hf_your_token_here", "HF_HUB_DOWNLOAD_TIMEOUT": "300" }'
Étape 6 : Surveiller le travail
Une fois que vous avez soumis la tâche de formation, vous pouvez suivre sa progression via le AWS CLI ou CloudWatch les journaux.
Vérifiez le statut du poste
aws sagemaker describe-training-job \ --training-job-name your-job-name \ --query "TrainingJobStatus" \ --output text
Journaux de diffusion
aws logs tail /aws/sagemaker/TrainingJobs \ --log-stream-name-prefix your-job-name \ --follow
À quoi s'attendre dans les journaux
Les journaux des conteneurs indiquent les progrès réalisés au cours des étapes suivantes :
-
Démarrage — Initialisation du conteneur et validation de la configuration
-
Téléchargement de benchmarks — Téléchargement de fichiers de référence et installation de dépendances
-
Configuration du point de terminaison : création ou connexion au point de terminaison d'inférence
-
Évaluation — Exécution de tâches de référence à l'aide d'indicateurs de progression
-
Téléchargement des résultats : écriture des résultats dans S3 et journalisation facultative dans MLflow
-
Nettoyage : suppression des points de terminaison temporaires si
cleanup_endpoint: true
Délais estimés
| Étape | Durée estimée |
|---|---|
| Démarrage du conteneur | 2 à 5 minutes |
| Création d'un point de terminaison (le cas échéant) | 15 à 30 minutes |
| Évaluation | Varie selon la taille de la référence et la latence du modèle |
| Nettoyage | 1 à 2 minutes |
Étape 7 : Afficher et interpréter les résultats
Une fois le travail terminé, consultez les résultats de votre évaluation.
Afficher avec Inspect AI
Utilisez le visualiseur Inspect AI pour explorer de manière interactive les résultats directement depuis S3 :
inspect view --log-dir s3://your-bucket/eval-results/
Cette commande ouvre une interface Web locale dans laquelle vous pouvez parcourir les scores, consulter des échantillons individuels et comparer des essais.
Téléchargez et partagez
Pour télécharger les résultats localement :
aws s3 cp s3://your-bucket/eval/output/ ./results/ --recursive INSPECT_LOG_DIR=./results inspect view
Extension VS Code
L'extension Inspect AI VS Code
-
Installez l'extension depuis le marché VS Code (recherchez « Inspect AI »)
-
Dans la barre d'activité d'inspection, recherchez le volet Logs et choisissez l'icône du dossier
-
Entrez votre chemin S3 :
s3://your-bucket/eval-results/
Structure de sortie
Chaque évaluation produit un fichier .eval journal qui contient les sections suivantes :
-
results.scores— Scores agrégés pour chaque métrique -
samples— Échantillons d'évaluation individuels avec entrées, sorties et scores -
stats— Statistiques d'exécution, y compris l'utilisation des jetons et la latence -
eval.config— La configuration utilisée pour l'exécution de l'évaluation
Afficher les résultats dans MLflow (facultatif)
Si vous avez configuré MLflow dans votre recette, générez une URL présignée pour accéder au serveur de suivi :
aws sagemaker create-presigned-mlflow-tracking-server-url \ --tracking-server-name my-server \ --region us-west-2
Ouvrez l'URL renvoyée dans votre navigateur pour consulter les statistiques, comparer les résultats et analyser les tendances des évaluations.
Benchmarks disponibles
Le conteneur Inspect AI fonctionne avec n'importe quel benchmark écrit au format de tâche Inspect AI. Le référentiel inspect-evals
Pour rédiger vos propres benchmarks, consultez la documentation de rédaction de tâches Inspect AI
Évaluations des agences
Les benchmarks Agentic testent la capacité d'un modèle à effectuer des tâches en plusieurs étapes qui nécessitent l'utilisation d'outils, une planification et un raisonnement itératif. Ces évaluations simulent des scénarios réels dans lesquels le modèle doit faire appel à des outils, interpréter les résultats et décider des prochaines actions.
Exigences relatives aux terminaux
Les évaluations agentic nécessitent des terminaux qui prennent en charge les fonctionnalités suivantes :
-
Appel d'outils — Le point de terminaison doit prendre en charge l'appel de fonction pour permettre au modèle d'invoquer des outils lors de l'évaluation
-
Grande taille du contexte : Multi-turn les conversations avec les résultats des outils nécessitent une longueur de contexte suffisante pour conserver l'historique des conversations
SageMaker Configuration du point de terminaison d'inférence
Lorsque vous utilisez un point de terminaison d' SageMaker inférence pour des évaluations agentiques, configurez les variables d'environnement suivantes sur votre point de terminaison :
| Variable d'environnement | Value | Description |
|---|---|---|
ENABLE_TOOL_CALLING |
True |
Active la prise en charge des appels d'outils sur le point de terminaison d'inférence |
CONTEXT_LENGTH |
Suffisant pour plusieurs tours | Définissez une valeur suffisamment grande pour permettre des conversations à plusieurs tours avec les résultats de l'outil |
Pour plus d'informations sur la configuration des points de terminaison Amazon Nova sur SageMaker Inference, consultez la section Déployer des modèles Amazon Nova sur. SageMaker Pour plus d'informations sur les fonctionnalités et la configuration du conteneur, consultez la section Fonctionnalités du conteneur.
Points de terminaison Amazon Bedrock
Pour les points de terminaison Amazon Bedrock, l'appel d'outils est pris en charge de manière native pour les modèles compatibles. Pour plus d'informations, consultez la section Utilisation des outils avec Amazon Bedrock.
Débuter avec les évaluations agentiques
Pour exécuter des évaluations agentic, remplissez les conditions préalables suivantes :
-
Déployer un point de terminaison avec l'appel d'outils activé
-
Choisissez un benchmark agentic dans le référentiel inspect-evals
(recherchez des benchmarks utilisant des solveurs utilisant des outils) -
Configurez votre recette avec des
max_tokensvaleurstimeoutet des valeurs appropriées pour les interactions à plusieurs tours
Point de terminaison Amazon Bedrock
-
Pour une configuration et un déploiement complets, consultez Amazon Bedrock endpoints.
-
Pour obtenir de l'aide concernant les appels d'outils, consultez la section relative aux appels d'outils côté client dans Utilisation des outils avec Amazon Bedrock.
Exemples de carnets
Le bloc-notes suivant montre comment exécuter un benchmark agentic basé sur l'appel d'outils avec le conteneur Inspect AI :
-
tau-bench (basé sur le travail)
— Évaluez le raisonnement assisté par des outils sur les tâches de service client à l'aide du conteneur Inspect AI
Pour les benchmarks agentic qui nécessitent un bac à sable Docker, utilisez le SDK Inspect AI :
-
SWE-bench avec le SDK Inspect AI
— Évaluez les capacités de génie logiciel à l'aide du sandbox Docker
Important
Les benchmarks Agentic qui nécessitent un sandbox Docker (tel que SWE-bench) ne sont pas pris en charge dans l'expérience du conteneur Inspect AI. L'environnement SageMaker Training Job ne fournit aucune Docker-in-Docker fonctionnalité. Pour exécuter ces tests, utilisez le SDK Inspect AI dans un environnement informatique avec accès Docker (par exemple, une instance Amazon EC2 SageMaker ou un bloc-notes sur lequel Docker est installé).
Résolution des problèmes
Cette section fournit des solutions aux problèmes courants rencontrés lors de l'exécution d'évaluations avec le conteneur Inspect AI.
Conseil d'itération rapide
Avant de soumettre un job de SageMaker formation, testez vos points de référence localement avec le SDK Inspect AI. Exécutez-le inspect eval my_benchmark.py sur votre machine locale pour valider les définitions des tâches, les dépendances et la logique de notation avant de les exécuter à grande échelle.
InsufficientInstanceCapacity error
Cette erreur se produit lorsque la capacité AWS n'est pas suffisante pour le type d'instance demandé dans votre région.
-
Essayez un autre type d'instance ou soumettez le travail dans une autre AWS région
-
Utilisez un autre type d'instance (par exemple,
ml.m5.xlargeau lieu deml.m5.large) -
Réessayez la demande après quelques minutes
AccessDenied error
Si la tâche de formation échoue en raison d'un message d'erreur de refus d'accès, vérifiez les points suivants :
-
L'ARN du rôle dans la configuration de votre tâche est correct
-
La politique de confiance permet
sagemaker.amazonaws.comd'assumer le rôle -
Votre utilisateur ou votre rôle dispose de l'
iam:PassRoleautorisation pour le rôle d'exécution -
Le rôle d'exécution est autorisé à accéder au compartiment S3, au point de terminaison d'inférence ou au modèle Amazon Bedrock
Échec de la création du terminal
Lors de l'utilisation cleanup_endpoint: true avec la création automatique de terminaux, les problèmes suivants peuvent survenir :
| Erreur | Solution |
|---|---|
| ResourceLimitExceeded | Demandez une augmentation du quota de service pour le type d'instance d'inférence dans votre région |
| OutOfMemoryError | Utiliser un type d'instance d'inférence plus grand ou réduire la taille du modèle |
Faux model_s3_uri |
Vérifiez que le chemin S3 pointe vers un répertoire d'artefacts du modèle valide |
| URI d'image d'inférence incorrect | Vérifiez que l'URI de l'image est correcte pour votre région et votre structure de modèle |
| Endpoint bloqué lors de la création | Vérifiez les CloudWatch journaux du point de terminaison. Le modèle peut échouer aux tests de santé. Augmentez MaxRuntimeInSeconds si le point final a besoin de plus de temps. |
HuggingFace délais de téléchargement
Si les benchmarks qui téléchargent des ensembles de données depuis le HuggingFace Hub expirent, définissez la variable d'HF_HUB_DOWNLOAD_TIMEOUTenvironnement sur une valeur plus élevée (en secondes) :
--environment '{"HF_HUB_DOWNLOAD_TIMEOUT": "600"}'
Job annulé mais point de terminaison toujours en cours d'exécution
Si le travail de formation est interrompu avant la fin du nettoyage, le point de terminaison d'inférence peut rester actif. Supprimez manuellement le terminal pour éviter des frais récurrents :
# List endpoints to find the orphaned one aws sagemaker list-endpoints \ --name-contains inspect \ --query "Endpoints[].EndpointName" \ --output table # Delete the endpoint aws sagemaker delete-endpoint \ --endpoint-name your-endpoint-name # Delete the endpoint configuration aws sagemaker delete-endpoint-config \ --endpoint-config-name your-endpoint-name # Delete the model aws sagemaker delete-model \ --model-name your-endpoint-name
Conflits de dépendance de référence
Si un benchmark échoue en raison de conflits de dépendance avec des packages préinstallés, créez-en un pyproject.toml dans le répertoire du benchmark avec des contraintes de version explicites. Le conteneur installe les dépendances de référence de manière isolée afin de minimiser les conflits.
Les scores d'évaluation semblent erronés
Si les scores d'évaluation sont étonnamment faibles ou incohérents, vérifiez les paramètres suivants dans votre recette :
-
température — Réglée sur
0.0pour des résultats déterministes et reproductibles -
max_tokens — Assurez-vous que la valeur est suffisamment grande pour que le modèle puisse terminer sa réponse
-
completion_mode — Pour les modèles de base (autres que le chat), configurez votre recette pour utiliser des
completion_mode: trueinstructions de type complétion au lieu du format de discussion
Confidentialité des données
Vos données d'évaluation sont traitées différemment selon le fournisseur d'inférence que vous utilisez.
SageMaker point de terminaison
Lorsque vous utilisez un point de terminaison d' SageMaker inférence, toutes les données restent dans votre Compte AWS. Les demandes d'évaluation et les modèles de réponses ne sont pas envoyés en dehors de votre compte et ne sont pas utilisés pour améliorer les AWS services. Aucune politique de désinscription n'est nécessaire.
Amazon Bedrock
Lorsque vous utilisez Amazon Bedrock comme fournisseur d'inférence, vos données sont soumises à la politique relative aux services Opt-Out d' AWS intelligence artificielle. Pour empêcher que vos données ne soient utilisées pour améliorer les services d' AWS IA, activez la politique de désinscription au niveau AWS des Organisations. Pour plus d'informations, consultez les politiques de désinscription des services d'intelligence artificielle.
| Fournisseur d'inférence | Opt-out requis | Détails |
|---|---|---|
| SageMaker point de terminaison | Non | Les données restent dans votre compte. Non couvert par la politique de désinscription de l'IA. |
| Amazon Bedrock | Oui | Activez la Opt-Out politique des services d' AWS IA au niveau des Organisations pour empêcher l'utilisation des données pour améliorer les services. |