Logo Zéphyrnet

Gérez les workflows AutoML avec AWS Step Functions et AutoGluon sur Amazon SageMaker

Date :

L'exécution d'expériences d'apprentissage automatique (ML) dans le cloud peut s'étendre sur de nombreux services et composants. La capacité de structurer, d'automatiser et de suivre les expériences de ML est essentielle pour permettre le développement rapide de modèles de ML. Avec les dernières avancées dans le domaine du machine learning automatisé (AutoML), à savoir le domaine du ML dédié à l'automatisation des processus ML, vous pouvez construire des modèles décisionnels précis sans avoir besoin de connaissances approfondies en ML. Dans cet article, nous découvrons AutoGluon, un framework AutoML open source qui vous permet de créer des modèles ML précis avec seulement quelques lignes de Python.

AWS propose une large gamme de services pour gérer et exécuter des flux de travail ML, vous permettant de sélectionner une solution en fonction de vos compétences et de votre application. Par exemple, si vous utilisez déjà Fonctions d'étape AWS pour orchestrer les composants des applications distribuées, vous pouvez utiliser le même service pour créer et automatiser vos workflows ML. Les autres outils MLOps proposés par AWS incluent Pipelines Amazon SageMaker, qui vous permet de créer des modèles de ML dans Amazon SageMakerStudio avec des capacités MLOps (telles que la compatibilité CI/CD, la surveillance des modèles et les approbations des modèles). Des outils open source, tels que Flux d'air Apache—disponible sur AWS via Flux de travail gérés par Amazon pour Apache Airflow-et KubeFlow, ainsi que les solutions hybrides, sont également pris en charge. Par exemple, vous pouvez gérer l'ingestion et le traitement des données avec Step Functions tout en entraînant et en déployant vos modèles ML avec SageMaker Pipelines.

Dans cet article, nous montrons comment même les développeurs sans expertise ML peuvent facilement créer et maintenir des modèles ML à la pointe de la technologie en utilisant AutoGluon sur Amazon Sage Maker et Step Functions pour orchestrer les composants du flux de travail.

Après un aperçu de l'algorithme AutoGluon, nous présentons les définitions de flux de travail avec des exemples et un tutoriel de code que vous pouvez appliquer à vos propres données.

AutoGluon

AutoGluon est un framework AutoML open source qui accélère l'adoption du ML en formant des modèles ML précis avec seulement quelques lignes de code Python. Bien que cet article se concentre sur les données tabulaires, AutoGluon vous permet également de former des modèles de pointe pour la classification d'images, la détection d'objets et la classification de texte. AutoGluon tabular crée et combine différents modèles pour trouver la solution optimale.

L'équipe AutoGluon d'AWS a publié un papier qui présente les principes qui structurent la bibliothèque :

  • Simplicité – Vous pouvez créer des modèles de classification et de régression directement à partir de données brutes sans avoir à analyser les données ou à effectuer une ingénierie des fonctionnalités
  • La solidité des mécanismes : – Le processus de formation global devrait réussir même si certains des modèles individuels échouent
  • Calendrier prévisible – Vous pouvez obtenir des résultats optimaux dans le temps que vous souhaitez investir pour la formation
  • Tolérance aux pannes – Vous pouvez arrêter la formation et la reprendre à tout moment, ce qui optimise les coûts si le processus s'exécute sur des images ponctuelles dans le cloud

Pour plus de détails sur l'algorithme, reportez-vous au papier publié par l'équipe AutoGluon d'AWS.

Après avoir installé le Forfait AutoGluon et ses dépendances, former un modèle est aussi simple que d'écrire trois lignes de code :

from autogluon.tabular import TabularDataset, TabularPredictor

train_data = TabularDataset('s3://my-bucket/datasets/my-csv.csv')
predictor = TabularPredictor(label="my-label", path="my-output-folder").fit(train_data)

L'équipe AutoGluon a prouvé la force du framework en atteignant le top 10 des classements dans plusieurs compétitions Kaggle.

Vue d'ensemble de la solution

Nous utilisons Step Functions pour implémenter un flux de travail ML qui couvre la formation, l'évaluation et le déploiement. La conception du pipeline permet des expériences rapides et configurables en modifiant les paramètres d'entrée que vous alimentez dans le pipeline au moment de l'exécution.

Vous pouvez configurer le pipeline pour implémenter différents workflows, tels que les suivants :

  • Former un nouveau modèle ML et le stocker dans le registre de modèles SageMaker, si aucun déploiement n'est nécessaire à ce stade
  • Déployer un modèle de ML pré-entraîné, soit pour en ligne (Point de terminaison SageMaker) ou hors ligne (Transformation par lots SageMaker) inférence
  • Exécutez un pipeline complet pour former, évaluer et déployer un modèle ML à partir de zéro

Les solutions consistent en un général machine d'état (voir le schéma suivant) qui orchestre l'ensemble des actions à exécuter en fonction d'un ensemble de paramètres d'entrée.

Les étapes de la machine d'état sont les suivantes :

  1. La première étape IsTraining décide si nous utilisons un modèle pré-formé ou formons un modèle à partir de zéro. Si vous utilisez un modèle pré-formé, la machine d'état passe à l'étape 7.
  2. Lorsqu'un nouveau modèle de ML est requis, TrainSteps déclenche une deuxième machine d'état qui exécute toutes les actions nécessaires et renvoie le résultat à la machine d'état actuelle. Nous détaillons la machine d'état d'entraînement dans la section suivante.
  3. Lorsque la formation est terminée, PassModelName stocke le nom de la tâche d'apprentissage dans un emplacement spécifié du contexte de la machine d'état à réutiliser dans les états suivants.
  4. Si une phase d'évaluation est sélectionnée, IsEvaluation redirige la machine d'état vers la branche d'évaluation. Sinon, il passe à l'étape 7.
  5. La phase d'évaluation est ensuite mise en œuvre à l'aide d'un AWS Lambda fonction invoquée par le ModelValidation marcher. La fonction Lambda récupère les performances du modèle sur un ensemble de test et les compare à un seuil configurable par l'utilisateur spécifié dans les paramètres d'entrée. Le code suivant est un exemple de résultats d'évaluation :
    "Payload":{
       "IsValid":true,
       "Scores":{
          "accuracy":0.9187,
          "balanced_accuracy":0.7272,
          "mcc":0.5403,
          "roc_auc":0.9489,
          "f1":0.5714,
          "precision":0.706,
          "recall":0.4799
       }
    }

  6. Si l'évaluation du modèle à EvaluationResults réussit, la machine d'état continue avec les étapes de déploiement éventuelles. Si le modèle fonctionne en dessous d'un critère défini par l'utilisateur, la machine d'état s'arrête et le déploiement est ignoré.
  7. Si le déploiement est sélectionné, IsDeploy démarre une troisième machine d'état via DeploySteps, que nous décrivons plus loin dans cet article. Si le déploiement n'est pas nécessaire, la machine d'état s'arrête ici.

Un ensemble d'échantillons de paramètres d'entrée est disponible sur le GitHub repo.

Machine d'état d'entraînement

La machine d'état pour la formation d'un nouveau modèle ML à l'aide d'AutoGluon comprend deux étapes, comme illustré dans le diagramme suivant. La première étape est une tâche de formation SageMaker qui crée le modèle. La seconde enregistre les entrées dans le registre des modèles SageMaker.

Vous pouvez exécuter ces étapes soit automatiquement dans le cadre de la machine d'état principale, soit en tant que processus autonome.

Machine d'état de déploiement

Regardons maintenant la machine d'état dédiée à la phase de déploiement (voir le schéma suivant). Comme mentionné précédemment, l'architecture prend en charge le déploiement en ligne et hors ligne. Le premier consiste à déployer un point de terminaison SageMaker, tandis que le second exécute un Job de transformation par lots SageMaker.

Les étapes de mise en œuvre sont les suivantes :

  1. ChoiceDeploymentMode examine les paramètres d'entrée pour définir le mode de déploiement nécessaire et dirige la machine d'état vers la branche correspondante.
  2. Si un point final est choisi, le EndpointConfig étape définit sa configuration, tandis que CreateEndpoint démarre le processus d'allocation des ressources informatiques nécessaires. Cette allocation peut prendre plusieurs minutes, donc la machine d'état s'arrête à WaitForEndpoint et utilise une fonction Lambda pour interroger l'état du point de terminaison.
  3. Pendant la configuration du point de terminaison, ChoiceEndpointStatus retourne à la WaitForEndpoint état, sinon il continue soit DeploymentFailed or DeploymentSucceeded.
  4. Si le déploiement hors ligne est sélectionné, la machine d'état exécute une tâche de transformation par lots SageMaker, après quoi la machine d'état s'arrête.

Conclusion

Cet article présente un pipeline facile à utiliser pour orchestrer les flux de travail AutoML et permettre des expériences rapides dans le cloud, permettant des solutions ML précises sans nécessiter de connaissances avancées en ML.

Nous fournissons un pipeline général ainsi que deux modules modulaires qui vous permettent d'effectuer la formation et le déploiement séparément si nécessaire. De plus, la solution est entièrement intégrée à SageMaker, bénéficiant de ses fonctionnalités et de ses ressources informatiques.

Commencez maintenant avec ceci tutoriel de code pour déployer les ressources présentées dans cet article dans votre compte AWS et exécuter vos premières expériences AutoML.


À propos des auteurs

Federico Piccinini est un architecte d'apprentissage en profondeur pour le laboratoire de solutions d'apprentissage automatique d'Amazon. Il est passionné par l'apprentissage automatique, l'IA explicable et les MLOps. Il se concentre sur la conception de pipelines ML pour les clients AWS. En dehors du travail, il aime le sport et la pizza.

Paul Irrera est Data Scientist au Amazon Machine Learning Solutions Lab, où il aide les clients à résoudre les problèmes commerciaux avec les capacités de ML et de cloud. Il est titulaire d'un doctorat en vision par ordinateur de Télécom ParisTech, Paris.

spot_img

Dernières informations

spot_img

Discutez avec nous

Salut! Comment puis-je t'aider?