Création de tâches de régression ou de classification pour les données tabulaires à l’aide de l’API AutoML
Vous pouvez créer une tâche Autopilot de régression ou de classification pour les données tabulaires par programmation en appelant l’action d’API CreateAutoMLJobV2 dans n’importe quel langage pris en charge par Autopilot ou par l’AWS CLI. Vous trouverez ci-dessous un ensemble de paramètres de demande d’entrée obligatoires ou facultatifs pour l’action d’API CreateAutoMLJobV2. Vous pouvez trouver les informations alternatives pour la version précédente de cette action, CreateAutoMLJob. Toutefois, nous vous recommandons d’utiliser CreateAutoMLJobV2.
Pour en savoir plus sur la façon dont cette action d’API se traduit par une fonction dans le langage de votre choix, consultez la section Voir aussi de CreateAutoMLJobV2 et choisissez un kit SDK. À titre d’exemple, pour les utilisateurs de Python, consultez la syntaxe complète des demandes de create_auto_ml_job_v2 dans le kit AWS SDK pour Python (Boto3).
Note
CreateAutoMLJobV2 et DescribeAutoMLJobV2 sont de nouvelles versions de CreateAutoMLJob et DescribeAutoMLJob qui offrent une rétrocompatibilité.
Nous vous recommandons d’utiliser CreateAutoMLJobV2. CreateAutoMLJobV2 peut gérer des types de problèmes tabulaires identiques à ceux de sa version précédente CreateAutoMLJob, ainsi que des types de problèmes non tabulaires, tels que la classification d’images ou de texte, et les prédictions de séries temporelles.
Au minimum, toutes les expériences sur des données tabulaires nécessitent de spécifier le nom de l’expérience, de fournir des emplacements pour les données d’entrée et de sortie, et de spécifier les données cibles à prédire. Facultatif : Vous pouvez également spécifier le type de problème que vous souhaitez résoudre (régression, classification, classification multi-classes), choisir votre stratégie de modélisation (ensembles empilés ou optimisation des hyperparamètres), sélectionner la liste des algorithmes utilisés par la tâche Autopilot pour entraîner les données, etc.
Après l’exécution de l’expérience, vous pouvez comparer les essais et examiner en détail les étapes de prétraitement, les algorithmes et les plages d’hyperparamètres de chaque modèle. Vous avez également la possibilité de télécharger leurs rapports d’explicabilité et de performance. Utilisez les blocs-notes fournis pour voir les résultats de l’exploration automatique des données ou les définitions de modèles candidats.
Trouvez les instructions indiquant comment migrer CreateAutoMLJob vers CreateAutoMLJobV2 dans Migration d’une action CreateAutoMLJob en action CreateAutoMLJobV2.
Paramètres requis
Tous les autres paramètres sont facultatifs.
Paramètres facultatifs
Les sections suivantes fournissent des détails sur certains paramètres facultatifs que vous pouvez transmettre à votre action d’API CreateAutoMLJobV2 lorsque vous utilisez des données tabulaires. Vous pouvez trouver les informations alternatives pour la version précédente de cette action, CreateAutoMLJob. Toutefois, nous vous recommandons d’utiliser CreateAutoMLJobV2.
Pour les données tabulaires, l’ensemble d’algorithmes exécutés sur vos données pour entraîner vos modèles candidats dépend de votre stratégie de modélisation (ENSEMBLING ou HYPERPARAMETER_TUNING). Vous trouverez ci-dessous des informations sur la façon de définir ce mode d’entraînement.
Si vous laissez le champ vide (ou null), le Mode est déduit en fonction de la taille de votre jeu de données.
Pour en savoir plus sur les méthodes d’entraînement d’Autopilot par ensembles empilés et par optimisation des hyperparamètres, consultez Modes d’entraînement et prise en charge des algorithmes.
Sélection des fonctionnalités
Autopilot fournit des étapes de prétraitement automatique des données, notamment la sélection et l’extraction des caractéristiques. Toutefois, vous pouvez fournir manuellement les caractéristiques à utiliser lors de l’entraînement avec l’attribut FeatureSpecificatioS3Uri.
Les fonctionnalités sélectionnées doivent être contenues dans un fichier JSON au format suivant :
{ "FeatureAttributeNames":["col1", "col2", ...] }
Les valeurs répertoriées dans ["col1", "col2", ...] ne sont pas sensibles à la casse. Il doit s’agir d’une liste de chaînes contenant des valeurs uniques qui sont des sous-ensembles des noms de colonnes dans les données d’entrée.
Note
La liste des colonnes fournies en tant que fonctionnalités ne peut pas inclure la colonne cible.
Sélection des algorithmes
Par défaut, votre tâche Autopilot exécute une liste prédéfinie d’algorithmes sur votre jeu de données afin d’entraîner les modèles candidats. La liste des algorithmes dépend du mode d’entraînement (ENSEMBLING ou HYPERPARAMETER_TUNING) utilisé par la tâche.
Vous pouvez fournir un sous-ensemble de la sélection par défaut d’algorithmes.
Pour obtenir la liste des algorithmes disponibles par Mode d’entraînement, consultez AutoMLAlgorithms. Pour plus d’informations sur chaque algorithme, consultez Modes d’entraînement et prise en charge des algorithmes.
Vous pouvez fournir votre propre jeu de données de validation et un rapport de répartition des données personnalisé, ou laisser Autopilot répartir automatiquement le jeu de données.
Pour en savoir plus sur la répartition et la validation croisée dans Autopilot, consultez Validation croisée dans Autopilot.
Note
Dans certains cas, lorsque Autopilot ne peut pas inférer le ProblemType avec une fiabilité suffisante, vous devez fournir cette valeur pour que la tâche réussisse.
Vous pouvez ajouter une colonne de poids d’échantillons à votre jeu de données tabulaire, puis la transmettre à votre tâche AutoML pour demander à ce que les lignes du jeu de données soient pondérées pendant l’entraînement et l’évaluation.
La prise en charge des poids d’échantillons est disponible en mode ensembliste uniquement. Vos poids doivent être numériques et non négatifs. Les points de données sans valeur de poids ou avec une valeur de poids non valide sont exclus. Pour plus d’informations sur les métriques d’objectif disponibles, consultez Métriques pondérées Autopilot.
Vous pouvez configurer votre tâche AutoML V2 afin de lancer automatiquement une tâche distante sur Amazon EMR sans serveur lorsque des ressources de calcul supplémentaires sont nécessaires pour traiter des jeux de données volumineux. Grâce à une transition fluide vers EMR sans serveur lorsque cela est nécessaire, la tâche AutoML peut gérer des jeux de données qui dépasseraient autrement les ressources initialement provisionnées, sans aucune intervention manuelle de votre part. EMR sans serveur est disponible pour les types de problèmes de données tabulaires et de séries temporelles. Nous recommandons de configurer cette option pour les jeux de données tabulaires de plus de 5 Go.
Pour permettre à votre tâche AutoML V2 de basculer automatiquement vers EMR sans serveur pour les jeux de données volumineux, vous devez fournir un objet EmrServerlessComputeConfig, comprenant un champ ExecutionRoleARN, à la classe AutoMLComputeConfig de la demande d’entrée de la tâche AutoML V2.
ExecutionRoleARN est l’ARN du rôle IAM octroyant à la tâche AutoML V2 les autorisations nécessaires pour exécuter des tâches EMR sans serveur.
Ce rôle doit avoir la relation d’approbation suivante :
Et octroyer les autorisations pour :
-
créer, répertorier et mettre à jour des applications EMR sans serveur ;
-
démarrer, répertorier, obtenir ou annuler des tâches exécutées sur une application EMR sans serveur ;
-
baliser les ressources EMR sans serveur ;
-
transmettre un rôle IAM au service EMR sans serveur pour l’exécution.
En octroyant l’autorisation
iam:PassRole, la tâche AutoML V2 peut assumer temporairement le rôleEMRServerlessRuntimeRole-*et le transmettre au service EMR sans serveur. Il s’agit des rôles IAM utilisés par les environnements d’exécution des tâches EMR sans serveur pour accéder aux autres services et ressources AWS nécessaires pendant l’exécution, tels qu’Amazon S3 pour l’accès aux données, CloudWatch pour la journalisation, l’accès au catalogue de données AWS Glue ou à d’autres services en fonction des exigences de la charge de travail.Consultez Rôles d’exécution des tâches pour Amazon EMR sans serveur pour plus de détails sur les autorisations associées à ces rôles.
La politique IAM définie dans le document JSON fourni accorde les autorisations suivantes :
{ "Version": "2012-10-17", "Statement": [{ + "Sid": "EMRServerlessCreateApplicationOperation", + "Effect": "Allow", + "Action": "emr-serverless:CreateApplication", + "Resource": "arn:aws:emr-serverless:*:*:/*", + "Condition": { + "StringEquals": { + "aws:RequestTag/sagemaker:is-canvas-resource": "True", + "aws:ResourceAccount": "${aws:PrincipalAccount}" + } + } + }, + { + "Sid": "EMRServerlessListApplicationOperation", + "Effect": "Allow", + "Action": "emr-serverless:ListApplications", + "Resource": "arn:aws:emr-serverless:*:*:/*", + "Condition": { + "StringEquals": { + "aws:ResourceAccount": "${aws:PrincipalAccount}" + } + } + }, + { + "Sid": "EMRServerlessApplicationOperations", + "Effect": "Allow", + "Action": [ + "emr-serverless:UpdateApplication", + "emr-serverless:GetApplication" + ], + "Resource": "arn:aws:emr-serverless:*:*:/applications/*", + "Condition": { + "StringEquals": { + "aws:ResourceTag/sagemaker:is-canvas-resource": "True", + "aws:ResourceAccount": "${aws:PrincipalAccount}" + } + } + }, + { + "Sid": "EMRServerlessStartJobRunOperation", + "Effect": "Allow", + "Action": "emr-serverless:StartJobRun", + "Resource": "arn:aws:emr-serverless:*:*:/applications/*", + "Condition": { + "StringEquals": { + "aws:RequestTag/sagemaker:is-canvas-resource": "True", + "aws:ResourceAccount": "${aws:PrincipalAccount}" + } + } + }, + { + "Sid": "EMRServerlessListJobRunOperation", + "Effect": "Allow", + "Action": "emr-serverless:ListJobRuns", + "Resource": "arn:aws:emr-serverless:*:*:/applications/*", + "Condition": { + "StringEquals": { + "aws:ResourceTag/sagemaker:is-canvas-resource": "True", + "aws:ResourceAccount": "${aws:PrincipalAccount}" + } + } + }, + { + "Sid": "EMRServerlessJobRunOperations", + "Effect": "Allow", + "Action": [ + "emr-serverless:GetJobRun", + "emr-serverless:CancelJobRun" + ], + "Resource": "arn:aws:emr-serverless:*:*:/applications/*/jobruns/*", + "Condition": { + "StringEquals": { + "aws:ResourceTag/sagemaker:is-canvas-resource": "True", + "aws:ResourceAccount": "${aws:PrincipalAccount}" + } + } + }, + { + "Sid": "EMRServerlessTagResourceOperation", + "Effect": "Allow", + "Action": "emr-serverless:TagResource", + "Resource": "arn:aws:emr-serverless:*:*:/*", + "Condition": { + "StringEquals": { + "aws:RequestTag/sagemaker:is-canvas-resource": "True", + "aws:ResourceAccount": "${aws:PrincipalAccount}" + } + } + }, + { + "Sid": "IAMPassOperationForEMRServerless", + "Effect": "Allow", + "Action": "iam:PassRole", + "Resource": "arn:aws:iam::*:role/EMRServerlessRuntimeRole-*", + "Condition": { + "StringEquals": { + "iam:PassedToService": "emr-serverless.amazonaws.com", + "aws:ResourceAccount": "${aws:PrincipalAccount}" + } + } } ] }
Migration d’une action CreateAutoMLJob en action CreateAutoMLJobV2
Nous recommandons aux utilisateurs de l’action CreateAutoMLJob de migrer vers l’action CreateAutoMLJobV2.
Cette section explique les différences au niveau des paramètres d’entrée entre CreateAutoMLJob et CreateAutoMLJobV2 en mettant en évidence les modifications de position, de nom ou de structure des objets et des attributs de la demande d’entrée entre les deux versions.
-
Attributs de demande qui n’ont pas changé entre les versions.
{ "AutoMLJobName": "string", "AutoMLJobObjective": { "MetricName": "string" }, "ModelDeployConfig": { "AutoGenerateEndpointName": boolean, "EndpointName": "string" }, "OutputDataConfig": { "KmsKeyId": "string", "S3OutputPath": "string" }, "RoleArn": "string", "Tags": [ { "Key": "string", "Value": "string" } ] } -
Attributs de demande qui ont changé de position et de structure entre les versions.
Les attributs suivants ont changé de position :
DataSplitConfig,Security Config,CompletionCriteria,Mode,FeatureSpecificationS3Uri,SampleWeightAttributeName,TargetAttributeName. -
Les attributs suivants ont changé de position et de structure entre les versions.
Le code JSON suivant illustre comment AutoMLJobConfig.CandidateGenerationConfig de type AutoMLCandidateGenerationConfig est passé à AutoMLProblemTypeConfig.TabularJobConfig.CandidateGenerationConfig de type CandidateGenerationConfig dans la version V2.
-
Attributs de demande dont le nom et la structure ont changé.
Le code JSON suivant illustre comment InputDataConfig (un tableau de AutoMLChannel) est devenu AutoMLJobInputDataConfig (un tableau de AutoMLJobChannel) dans la version V2. Notez que les attributs
SampleWeightAttributeNameetTargetAttributeNamesortent deInputDataConfiget sont placés dansAutoMLProblemTypeConfig.