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.
Réglez les hyperparamètres d'un modèle d'apprentissage automatique dans SageMaker
Cet exemple de projet montre comment SageMaker ajuster les hyperparamètres d'un modèle d'apprentissage automatique et transformer par lots un ensemble de données de test.
Dans ce projet, Step Functions utilise une fonction Lambda pour ajouter un ensemble de données de test à un bucket Amazon S3. Il crée ensuite une tâche de réglage des hyperparamètres à l'aide de l'intégration du SageMaker service. Il utilise ensuite une fonction Lambda pour extraire le chemin des données, enregistre le modèle de réglage, extrait le nom du modèle, puis exécute une tâche de transformation par lots pour effectuer une inférence. SageMaker
Pour plus d'informations sur les intégrations de services Step Functions SageMaker et sur celles-ci, consultez les rubriques suivantes :
Note
Cet exemple de projet peut entraîner des frais.
Pour les nouveaux AWS utilisateurs, un niveau d'utilisation gratuit est disponible. Dans cette offre, les services sont gratuits en-dessous d'un certain niveau d'utilisation. Pour plus d'informations sur AWS les coûts et le niveau gratuit, voir SageMakerTarification
Étape 1 : Création de la machine à états
-
Ouvrez la console Step Functions
et choisissez Create state machine. -
Tapez
Tune a machine learning model
dans le champ de recherche, puis choisissez Tune a machine learning model à partir des résultats de recherche renvoyés. -
Choisissez Next (Suivant) pour continuer.
-
Choisissez Exécuter une démo pour créer un ready-to-deploy flux de travail et un mode de travail en lecture seule, ou choisissez Construire dessus pour créer une définition de machine à états modifiable sur laquelle vous pourrez vous appuyer pour la déployer ultérieurement.
Cet exemple de projet déploie les ressources suivantes :
-
Trois AWS Lambda functions
-
Un compartiment Amazon Simple Storage Service (Amazon S3)
-
Un AWS Step Functions machine d'état
-
Relié AWS Identity and Access Management (IAM) rôles
L'image suivante montre le graphique du flux de travail de l'exemple de projet Tune a machine learning model :
-
-
Choisissez Utiliser le modèle pour poursuivre votre sélection.
Les prochaines étapes dépendent de votre choix précédent :
-
Exécuter une démonstration : vous pouvez passer en revue la machine d'état avant de créer un projet en lecture seule avec des ressources déployées par AWS CloudFormation à votre Compte AWS.
Vous pouvez consulter la définition de la machine d'état et, lorsque vous êtes prêt, choisissez Déployer et exécuter pour déployer le projet et créer les ressources.
Le déploiement peut prendre jusqu'à 10 minutes pour créer des ressources et des autorisations. Vous pouvez utiliser le lien Stack ID pour suivre les progrès dans AWS CloudFormation.
Une fois le déploiement terminé, vous devriez voir votre nouvelle machine d'état dans la console.
-
Tirez parti de cette information : vous pouvez revoir et modifier la définition du flux de travail. Vous devrez peut-être définir des valeurs pour les espaces réservés dans l'exemple de projet avant de tenter d'exécuter votre flux de travail personnalisé.
Note
Des frais standard peuvent s'appliquer pour les services déployés sur votre compte.
Étape 2 : Exécuter la machine à états
-
Sur la page State machines, choisissez votre exemple de projet.
-
Sur la page d'exemple de projet, choisissez Démarrer l'exécution.
-
Dans la boîte de dialogue Démarrer l'exécution, procédez comme suit :
-
(Facultatif) Entrez un nom d'exécution personnalisé pour remplacer le nom par défaut généré.
ASCIINon-noms et journalisation
Step Functions accepte les noms des machines d'état, des exécutions, des activités et des étiquettes contenant des caractères autres que des ASCII caractères. Comme ces caractères ne fonctionneront pas avec Amazon CloudWatch, nous vous recommandons de n'utiliser que des ASCII caractères afin de pouvoir suivre les statistiques CloudWatch.
-
(Facultatif) Dans la zone de saisie, entrez les valeurs d'entrée sous la formeJSON. Vous pouvez ignorer cette étape si vous lancez une démonstration.
-
Choisissez Start execution (Démarrer l'exécution).
La console Step Functions vous dirige vers une page de détails d'exécution où vous pouvez choisir des états dans la vue graphique pour explorer les informations associées dans le Détails de l'étape volet.
-
Exemple de code de machine d'état
Dans cet exemple de projet, la machine à états s'intègre à SageMaker et AWS Lambda en transmettant des paramètres directement à ces ressources, et utilise un compartiment Amazon S3 pour la source et la sortie des données d'entraînement.
Parcourez cet exemple de machine à états pour découvrir comment Step Functions contrôle Lambda et. SageMaker
Pour plus d'informations sur la façon dont AWS Step Functions peut contrôler d'autres AWS services, voirIntégrer les services avec Step Functions.
{
"StartAt": "Generate Training Dataset",
"States": {
"Generate Training Dataset": {
"Resource": "arn:aws:lambda:us-west-2:012345678912:function:StepFunctionsSample-SageMa-LambdaForDataGeneration-1TF67BUE5A12U",
"Type": "Task",
"Next": "HyperparameterTuning (XGBoost)"
},
"HyperparameterTuning (XGBoost)": {
"Resource": "arn:aws:states:::sagemaker:createHyperParameterTuningJob.sync",
"Parameters": {
"HyperParameterTuningJobName.$": "$.body.jobName",
"HyperParameterTuningJobConfig": {
"Strategy": "Bayesian",
"HyperParameterTuningJobObjective": {
"Type": "Minimize",
"MetricName": "validation:rmse"
},
"ResourceLimits": {
"MaxNumberOfTrainingJobs": 2,
"MaxParallelTrainingJobs": 2
},
"ParameterRanges": {
"ContinuousParameterRanges": [{
"Name": "alpha",
"MinValue": "0",
"MaxValue": "1000",
"ScalingType": "Auto"
},
{
"Name": "gamma",
"MinValue": "0",
"MaxValue": "5",
"ScalingType": "Auto"
}
],
"IntegerParameterRanges": [{
"Name": "max_delta_step",
"MinValue": "0",
"MaxValue": "10",
"ScalingType": "Auto"
},
{
"Name": "max_depth",
"MinValue": "0",
"MaxValue": "10",
"ScalingType": "Auto"
}
]
}
},
"TrainingJobDefinition": {
"AlgorithmSpecification": {
"TrainingImage": "433757028032.dkr.ecr.us-west-2.amazonaws.com/xgboost:latest",
"TrainingInputMode": "File"
},
"OutputDataConfig": {
"S3OutputPath": "s3://amzn-s3-demo-bucket/models"
},
"StoppingCondition": {
"MaxRuntimeInSeconds": 86400
},
"ResourceConfig": {
"InstanceCount": 1,
"InstanceType": "ml.m4.xlarge",
"VolumeSizeInGB": 30
},
"RoleArn": "arn:aws:iam::012345678912:role/StepFunctionsSample-SageM-SageMakerAPIExecutionRol-1MNH1VS5CGGOG",
"InputDataConfig": [{
"DataSource": {
"S3DataSource": {
"S3DataDistributionType": "FullyReplicated",
"S3DataType": "S3Prefix",
"S3Uri": "s3://amzn-s3-demo-bucket/csv/train.csv"
}
},
"ChannelName": "train",
"ContentType": "text/csv"
},
{
"DataSource": {
"S3DataSource": {
"S3DataDistributionType": "FullyReplicated",
"S3DataType": "S3Prefix",
"S3Uri": "s3://amzn-s3-demo-bucket/csv/validation.csv"
}
},
"ChannelName": "validation",
"ContentType": "text/csv"
}],
"StaticHyperParameters": {
"precision_dtype": "float32",
"num_round": "2"
}
}
},
"Type": "Task",
"Next": "Extract Model Path"
},
"Extract Model Path": {
"Resource": "arn:aws:lambda:us-west-2:012345678912:function:StepFunctionsSample-SageM-LambdaToExtractModelPath-V0R37CVARUS9",
"Type": "Task",
"Next": "HyperparameterTuning - Save Model"
},
"HyperparameterTuning - Save Model": {
"Parameters": {
"PrimaryContainer": {
"Image": "433757028032.dkr.ecr.us-west-2.amazonaws.com/xgboost:latest",
"Environment": {},
"ModelDataUrl.$": "$.body.modelDataUrl"
},
"ExecutionRoleArn": "arn:aws:iam::012345678912:role/StepFunctionsSample-SageM-SageMakerAPIExecutionRol-1MNH1VS5CGGOG",
"ModelName.$": "$.body.bestTrainingJobName"
},
"Resource": "arn:aws:states:::sagemaker:createModel",
"Type": "Task",
"Next": "Extract Model Name"
},
"Extract Model Name": {
"Resource": "arn:aws:lambda:us-west-2:012345678912:function:StepFunctionsSample-SageM-LambdaToExtractModelName-8FUOB30SM5EM",
"Type": "Task",
"Next": "Batch transform"
},
"Batch transform": {
"Type": "Task",
"Resource": "arn:aws:states:::sagemaker:createTransformJob.sync",
"Parameters": {
"ModelName.$": "$.body.jobName",
"TransformInput": {
"CompressionType": "None",
"ContentType": "text/csv",
"DataSource": {
"S3DataSource": {
"S3DataType": "S3Prefix",
"S3Uri": "s3://amzn-s3-demo-bucket/csv/test.csv"
}
}
},
"TransformOutput": {
"S3OutputPath": "s3://amzn-s3-demo-bucket/output"
},
"TransformResources": {
"InstanceCount": 1,
"InstanceType": "ml.m4.xlarge"
},
"TransformJobName.$": "$.body.jobName"
},
"End": true
}
}
}
Pour plus d'informations sur la configuration IAM lors de l'utilisation de Step Functions avec d'autres AWS services, voirComment Step Functions génère IAM des politiques pour les services intégrés.
IAMExemples
Ces exemples AWS Identity and Access Management (IAM) les politiques générées par l'exemple de projet incluent le moindre privilège nécessaire pour exécuter la machine à états et les ressources associées. Nous vous recommandons de n'inclure que les autorisations nécessaires dans vos IAM politiques.
La IAM politique suivante est attachée à la machine d'état et permet à l'exécution de la machine d'état d'accéder aux SageMaker ressources nécessaires, Lambda et Amazon S3.
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"sagemaker:CreateHyperParameterTuningJob",
"sagemaker:DescribeHyperParameterTuningJob",
"sagemaker:StopHyperParameterTuningJob",
"sagemaker:ListTags",
"sagemaker:CreateModel",
"sagemaker:CreateTransformJob",
"iam:PassRole"
],
"Resource": "*",
"Effect": "Allow"
},
{
"Action": [
"lambda:InvokeFunction"
],
"Resource": [
"arn:aws:lambda:us-west-2:012345678912:function:StepFunctionsSample-SageMa-LambdaForDataGeneration-1TF67BUE5A12U",
"arn:aws:lambda:us-west-2:012345678912:function:StepFunctionsSample-SageM-LambdaToExtractModelPath-V0R37CVARUS9",
"arn:aws:lambda:us-west-2:012345678912:function:StepFunctionsSample-SageM-LambdaToExtractModelName-8FUOB30SM5EM"
],
"Effect": "Allow"
},
{
"Action": [
"events:PutTargets",
"events:PutRule",
"events:DescribeRule"
],
"Resource": [
"arn:aws:events:*:*:rule/StepFunctionsGetEventsForSageMakerTrainingJobsRule",
"arn:aws:events:*:*:rule/StepFunctionsGetEventsForSageMakerTransformJobsRule",
"arn:aws:events:*:*:rule/StepFunctionsGetEventsForSageMakerTuningJobsRule"
],
"Effect": "Allow"
}
]
}
La IAM politique suivante est référencée dans les HyperparameterTuning
champs TrainingJobDefinition
et de l'HyperparameterTuning
État.
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"cloudwatch:PutMetricData",
"logs:CreateLogStream",
"logs:PutLogEvents",
"logs:CreateLogGroup",
"logs:DescribeLogStreams",
"ecr:GetAuthorizationToken",
"ecr:BatchCheckLayerAvailability",
"ecr:GetDownloadUrlForLayer",
"ecr:BatchGetImage",
"sagemaker:DescribeHyperParameterTuningJob",
"sagemaker:StopHyperParameterTuningJob",
"sagemaker:ListTags"
],
"Resource": "*",
"Effect": "Allow"
},
{
"Action": [
"s3:GetObject",
"s3:PutObject"
],
"Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
"Effect": "Allow"
},
{
"Action": [
"s3:ListBucket"
],
"Resource": "arn:aws:s3:::amzn-s3-demo-bucket",
"Effect": "Allow"
}
]
}
La IAM politique suivante permet à la fonction Lambda d'ensemencer le compartiment Amazon S3 avec des exemples de données.
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"s3:PutObject"
],
"Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
"Effect": "Allow"
}
]
}
Pour plus d'informations sur la configuration IAM lors de l'utilisation de Step Functions avec d'autres AWS services, voirComment Step Functions génère IAM des politiques pour les services intégrés.