Pipelines Amazon SageMaker permet aux data scientists et aux ingénieurs en apprentissage automatique (ML) d'automatiser les flux de travail de formation, ce qui vous aide à créer un processus reproductible pour orchestrer les étapes de développement de modèles pour une expérimentation et un recyclage rapides des modèles. Vous pouvez automatiser l'ensemble du flux de travail de création de modèle, y compris la préparation des données, l'ingénierie des fonctionnalités, la formation du modèle, le réglage et la validation du modèle, et le cataloguer dans le registre des modèles. Vous pouvez configurer les pipelines pour qu'ils s'exécutent automatiquement à intervalles réguliers ou lorsque certains événements sont déclenchés, ou vous pouvez les exécuter manuellement selon vos besoins.
Dans cet article, nous soulignons certaines des améliorations apportées au Amazon Sage Maker SDK et introduisent de nouvelles fonctionnalités d'Amazon SageMaker Pipelines qui permettent aux praticiens du ML de créer et de former plus facilement des modèles de ML.
Pipelines continue d'innover en matière d'expérience de développement et, avec ces versions récentes, vous pouvez désormais utiliser le service de manière plus personnalisée :
- 2.99.0, 2.101.1, 2.102.0, 2.104.0 – Documentation mise à jour sur
PipelineVariable
utilisation pour les classes de base d'estimateur, de processeur, de tuner, de transformateur et de modèle, les modèles Amazon et les modèles de cadre. Des modifications supplémentaires seront apportées avec les nouvelles versions du SDK pour prendre en charge toutes les sous-classes d'estimateurs et de processeurs. - 2.90.0 – Disponibilité de ModèleÉtape pour les tâches intégrées de création et d’enregistrement de ressources de modèle.
- 2.88.2 – Disponibilité de Session Pipeline pour une interaction gérée avec les entités et les ressources SageMaker.
- 2.88.2 – Compatibilité des sous-classes pour étapes de la tâche du pipeline de flux de travail afin que vous puissiez créer des abstractions de tâches et configurer et exécuter des tâches de traitement, de formation, de transformation et de réglage comme vous le feriez sans pipeline.
- 2.76.0 – Disponibilité de Étape d'échec pour arrêter conditionnellement un pipeline avec un statut d'échec.
Dans cet article, nous vous présentons un flux de travail utilisant un exemple d'ensemble de données en mettant l'accent sur la création et le déploiement de modèles pour démontrer comment implémenter les nouvelles fonctionnalités de Pipelines. À la fin, vous devriez disposer de suffisamment d’informations pour utiliser avec succès ces nouvelles fonctionnalités et simplifier vos charges de travail de ML.
Aperçu des fonctionnalités
Pipelines offre les nouvelles fonctionnalités suivantes :
- Annotation des variables de pipeline – Certains paramètres de méthode acceptent plusieurs types d'entrée, notamment
PipelineVariables
, et une documentation supplémentaire a été ajoutée pour clarifier oùPipelineVariables
sont pris en charge à la fois dans la dernière version stable de la documentation du SDK SageMaker et dans la signature init des fonctions. Par exemple, dans l'estimateur TensorFlow suivant, la signature d'initialisation montre désormais quemodel_dir
ainsi queimage_uri
SupportPipelineVariables
, alors que les autres paramètres ne le font pas. Pour plus d'informations, reportez-vous à Estimateur TensorFlow.- Avant:
- Après:
- Séance de pipeline - Session Pipeline est un nouveau concept introduit pour apporter l'unité au sein du SDK SageMaker et introduit une initialisation paresseuse des ressources du pipeline (les appels d'exécution sont capturés mais ne sont pas exécutés tant que le pipeline n'est pas créé et exécuté). Le
PipelineSession
le contexte hérite deSageMakerSession
et met en œuvre des méthodes pratiques pour vous permettre d'interagir avec d'autres entités et ressources SageMaker, telles que des tâches de formation, des points de terminaison et des ensembles de données d'entrée stockés dans Service de stockage simple Amazon (Amazon S3). - Compatibilité des sous-classes avec les étapes de travail du pipeline de workflow – Vous pouvez désormais créer des abstractions de tâches et configurer et exécuter des tâches de traitement, de formation, de transformation et de réglage comme vous le feriez sans pipeline.
- Par exemple, créer une étape de traitement avec
SKLearnProcessor
auparavant, il fallait ce qui suit : - Comme nous le voyons dans le code précédent,
ProcessingStep
doit faire fondamentalement la même logique de prétraitement que.run
, juste sans lancer l'appel API pour démarrer le travail. Mais avec la compatibilité des sous-classes désormais activée avec les étapes de travail du pipeline de workflow, nous déclarons lestep_args
argument qui prend la logique de prétraitement avec .run afin que vous puissiez créer une abstraction de tâche et la configurer comme vous l'utiliseriez sans pipelines. Nous passons également dans lepipeline_session
, Qui est unPipelineSession
objet, au lieu desagemaker_session
pour vous assurer que les appels d'exécution sont capturés mais pas appelés tant que le pipeline n'est pas créé et exécuté. Voir le code suivant :
- Par exemple, créer une étape de traitement avec
- Étape de modèle (une approche rationalisée avec des étapes de création et d'enregistrement de modèle) –Pipelines propose deux types d'étapes à intégrer aux modèles SageMaker :
CreateModelStep
ainsi queRegisterModel
. Vous pouvez désormais réaliser les deux en utilisant uniquement leModelStep
taper. Notez qu'unPipelineSession
est nécessaire pour y parvenir. Cela apporte une similitude entre les étapes du pipeline et le SDK.- Avant:
-
- Après:
- Étape d'échec (arrêt conditionnel de l'exécution du pipeline) -
FailStep
permet à un pipeline d'être arrêté avec un état d'échec si une condition est remplie, par exemple si le score du modèle est inférieur à un certain seuil.
Vue d'ensemble de la solution
Dans cette solution, votre point d'entrée est le Amazon SageMakerStudio environnement de développement intégré (IDE) pour une expérimentation rapide. Studio offre un environnement pour gérer l'expérience Pipelines de bout en bout. Avec Studio, vous pouvez contourner le Console de gestion AWS pour l’ensemble de la gestion de votre flux de travail. Pour plus d'informations sur la gestion des pipelines depuis Studio, reportez-vous à Afficher, suivre et exécuter des pipelines SageMaker dans SageMaker Studio.
Le diagramme suivant illustre l'architecture de haut niveau du flux de travail ML avec les différentes étapes pour entraîner et générer des inférences à l'aide des nouvelles fonctionnalités.
Le pipeline comprend les étapes suivantes :
- Prétraitez les données pour créer les fonctionnalités requises et divisez les données en ensembles de données d'entraînement, de validation et de test.
- Créez une tâche de formation avec le framework SageMaker XGBoost.
- Évaluez le modèle entraîné à l’aide de l’ensemble de données de test.
- Vérifiez si le score AUC est supérieur à un seuil prédéfini.
- Si le score AUC est inférieur au seuil, arrêtez l’exécution du pipeline et marquez-la comme ayant échoué.
- Si le score AUC est supérieur au seuil, créez un modèle SageMaker et enregistrez-le dans le registre des modèles SageMaker.
- Appliquez la transformation par lots sur l'ensemble de données donné à l'aide du modèle créé à l'étape précédente.
Pré-requis
Pour suivre cet article, vous avez besoin d'un compte AWS avec un Domaine Studio.
Pipelines est intégré directement aux entités et ressources SageMaker, vous n'avez donc pas besoin d'interagir avec d'autres services AWS. Vous n'avez pas non plus besoin de gérer de ressources car il s'agit d'un service entièrement géré, ce qui signifie qu'il crée et gère des ressources pour vous. Pour plus d'informations sur les différents composants SageMaker qui sont à la fois des API Python autonomes et des composants intégrés de Studio, consultez le Page produit SageMaker.
Avant de commencer, installez la version SageMaker SDK >= 2.104.0 et xlrd >=1.0.0 dans le notebook Studio à l'aide de l'extrait de code suivant :
Flux de travail ML
Pour cet article, vous utilisez les composants suivants :
- Préparation des données
- Traitement SageMaker – SageMaker Processing est un service entièrement géré vous permettant d'exécuter des transformations de données personnalisées et une ingénierie de fonctionnalités pour les charges de travail ML.
- Construction de modèles
- Formation et évaluation des modèles
- Formation en un clic – La fonctionnalité de formation distribuée SageMaker. SageMaker fournit des bibliothèques de formation distribuées pour le parallélisme des données et le parallélisme des modèles. Les bibliothèques sont optimisées pour l'environnement de formation SageMaker, vous aident à adapter vos tâches de formation distribuées à SageMaker et à améliorer la vitesse et le débit de la formation.
- Expériences SageMaker – Les expériences sont une fonctionnalité de SageMaker qui vous permet d'organiser, de suivre, de comparer et d'évaluer vos itérations ML.
- Transformation par lots SageMaker – La transformation par lots ou la notation hors ligne est un service géré dans SageMaker qui vous permet de prédire sur un ensemble de données plus grand à l'aide de vos modèles ML.
- Orchestration des flux de travail
Un pipeline SageMaker est une série d'étapes interconnectées définies par une définition de pipeline JSON. Il code un pipeline à l'aide d'un graphe acyclique dirigé (DAG). Le DAG fournit des informations sur les exigences et les relations entre chaque étape du pipeline, et sa structure est déterminée par les dépendances des données entre les étapes. Ces dépendances sont créées lorsque les propriétés de la sortie d'une étape sont transmises comme entrée à une autre étape.
Le diagramme suivant illustre les différentes étapes du pipeline SageMaker (pour un cas d'utilisation de prédiction de désabonnement) où les connexions entre les étapes sont déduites par SageMaker en fonction des entrées et sorties définies par les définitions d'étape.
Les sections suivantes expliquent la création de chaque étape du pipeline et l'exécution de l'intégralité du pipeline une fois créé.
Structure du projet
Commençons par la structure du projet :
- /sm-pipelines-exemple-de-bout-en-bout – Le nom du projet
- /Les données – Les jeux de données
- /conduites – Les fichiers de code des composants du pipeline
- /désabonnement des clients
- préprocessus.py
- évaluer.py
- /désabonnement des clients
- sagemaker-pipelines-project.ipynb – Un carnet parcourant le workflow de modélisation à l'aide des nouvelles fonctionnalités de Pipelines
Télécharger le jeu de données
Pour suivre cet article, vous devez télécharger et enregistrer le exemple de jeu de données sous le dossier data dans le répertoire personnel du projet, qui enregistre le fichier dans Système de fichiers Amazon Elastic (Amazon EFS) dans l'environnement Studio.
Construire les composants du pipeline
Vous êtes maintenant prêt à créer les composants du pipeline.
Importer des instructions et déclarer des paramètres et des constantes
Créez un bloc-notes Studio appelé sagemaker-pipelines-project.ipynb
dans le répertoire personnel du projet. Entrez le bloc de code suivant dans une cellule et exécutez la cellule pour configurer les objets client SageMaker et S3, créez PipelineSession
et configurez l'emplacement du compartiment S3 à l'aide du compartiment par défaut fourni avec une session SageMaker :
Pipelines prend en charge le paramétrage, ce qui vous permet de spécifier les paramètres d'entrée au moment de l'exécution sans modifier le code de votre pipeline. Vous pouvez utiliser les modules disponibles sous le sagemaker.workflow.parameters
modules, tels que ParameterInteger
, ParameterFloat
et ParameterString
, pour spécifier les paramètres de pipeline de différents types de données. Exécutez le code suivant pour configurer plusieurs paramètres d'entrée :
Générer un ensemble de données par lots
Générez l'ensemble de données par lots, que vous utiliserez plus tard dans l'étape de transformation par lots :
Importer des données dans un compartiment S3
Téléchargez les ensembles de données sur Amazon S3 :
Définir un script de traitement et une étape de traitement
Au cours de cette étape, vous préparez un script Python pour effectuer l'ingénierie des fonctionnalités, un encodage à chaud et organisez les fractionnements de formation, de validation et de test à utiliser pour la création de modèles. Exécutez le code suivant pour créer votre script de traitement :
Ensuite, exécutez le bloc de code suivant pour instancier le processeur et l'étape Pipelines pour exécuter le script de traitement. Le script de traitement étant écrit en Pandas, vous utilisez un SKLearnProcesseur. Les pipelines ProcessingStep
La fonction prend les arguments suivants : le processeur, les emplacements S3 d'entrée pour les ensembles de données brutes et les emplacements S3 de sortie pour enregistrer les ensembles de données traités.
Définir une étape de formation
Configurer la formation du modèle à l'aide d'un estimateur SageMaker XGBoost et des pipelines TrainingStep
fonction:
Définir le script d'évaluation et l'étape d'évaluation du modèle
Exécutez le bloc de code suivant pour évaluer le modèle une fois entraîné. Ce script encapsule la logique pour vérifier si le score AUC atteint le seuil spécifié.
Ensuite, exécutez le bloc de code suivant pour instancier le processeur et l'étape Pipelines pour exécuter le script d'évaluation. Étant donné que le script d'évaluation utilise le package XGBoost, vous utilisez un ScriptProcessor
avec l'image XGBoost. Les pipelines ProcessingStep
La fonction prend les arguments suivants : le processeur, les emplacements S3 d'entrée pour les ensembles de données brutes et les emplacements S3 de sortie pour enregistrer les ensembles de données traités.
Définir une étape de création de modèle
Exécutez le bloc de code suivant pour créer un modèle SageMaker à l'aide de l'étape de modèle Pipelines. Cette étape utilise le résultat de l’étape de formation pour empaqueter le modèle en vue du déploiement. Notez que la valeur de l'argument de type d'instance est transmise à l'aide du paramètre Pipelines que vous avez défini précédemment dans l'article.
Définir une étape de transformation par lots
Exécutez le bloc de code suivant pour exécuter la transformation par lots à l'aide du modèle entraîné avec l'entrée par lots créée lors de la première étape :
Définir une étape de modèle de registre
Le code suivant enregistre le modèle dans le registre de modèles SageMaker à l'aide de l'étape de modèle Pipelines :
Définir une étape d'échec pour arrêter le pipeline
Le code suivant définit l'étape d'échec des pipelines pour arrêter l'exécution du pipeline avec un message d'erreur si le score AUC n'atteint pas le seuil défini :
Définir une étape de condition pour vérifier le score AUC
Le code suivant définit une étape de condition pour vérifier le score AUC et créer conditionnellement un modèle, exécuter une transformation par lots et enregistrer un modèle dans le registre des modèles, ou arrêter l'exécution du pipeline en cas d'échec :
Créer et exécuter le pipeline
Après avoir défini toutes les étapes du composant, vous pouvez les assembler dans un objet Pipelines. Vous n'avez pas besoin de spécifier l'ordre du pipeline, car Pipelines déduit automatiquement la séquence d'ordre en fonction des dépendances entre les étapes.
Exécutez le code suivant dans une cellule de votre bloc-notes. Si le pipeline existe déjà, le code met à jour le pipeline. Si le pipeline n’existe pas, il en crée un nouveau.
Conclusion
Dans cet article, nous avons présenté certaines des nouvelles fonctionnalités désormais disponibles avec Pipelines ainsi que d'autres fonctionnalités intégrées de SageMaker et l'algorithme XGBoost pour développer, itérer et déployer un modèle de prédiction du taux de désabonnement. La solution peut être étendue avec des sources de données supplémentaires
pour mettre en œuvre votre propre flux de travail ML. Pour plus de détails sur les étapes disponibles dans le workflow Pipelines, reportez-vous à Pipeline de création de modèles Amazon SageMaker ainsi que Flux de travail SageMakerL’ Exemples AWS SageMaker Le dépôt GitHub contient plus d'exemples autour de divers cas d'utilisation utilisant des pipelines.
À propos des auteurs
Jerry Peng est ingénieur en développement logiciel chez AWS SageMaker. Il se concentre sur la création d'un système MLOps de bout en bout à grande échelle, de la formation à la surveillance des modèles en production. Il est également passionné par l’idée de faire connaître le concept de MLOps à un public plus large.
Dewen Qi est ingénieur en développement logiciel chez AWS. Elle se concentre actuellement sur le développement et l'amélioration des pipelines SageMaker. En dehors du travail, elle aime pratiquer le violoncelle.
Gayatri Ghanakota est un ingénieur principal en apprentissage machine chez AWS Professional Services. Elle est passionnée par le développement, le déploiement et l'explication de solutions d'IA/ML dans divers domaines. Avant d'occuper ce poste, elle a dirigé plusieurs initiatives en tant que data scientist et ingénieur ML avec les plus grandes entreprises mondiales dans le domaine de la finance et de la vente au détail. Elle est titulaire d'une maîtrise en informatique spécialisée en science des données de l'Université du Colorado à Boulder.
Rupinder Grewal est un architecte de solutions spécialisé Sr Ai/ML avec AWS. Il se concentre actuellement sur le service des modèles et des MLOps sur SageMaker. Avant d'occuper ce poste, il a travaillé en tant qu'ingénieur en apprentissage automatique pour créer et héberger des modèles. En dehors du travail, il aime jouer au tennis et faire du vélo sur les sentiers de montagne.
Ray Li est un Data Scientist senior chez AWS Professional Services. Sa spécialité se concentre sur la création et la mise en œuvre de solutions IA/ML pour des clients de différentes tailles, allant des startups aux entreprises. En dehors du travail, Ray aime le fitness et les voyages.
- AI
- art de l'IA
- générateur d'art ai
- robot IA
- Amazon Sage Maker
- intelligence artificielle
- certification en intelligence artificielle
- intelligence artificielle en banque
- robot d'intelligence artificielle
- robots d'intelligence artificielle
- logiciel d'intelligence artificielle
- Apprentissage automatique AWS
- blockchain
- conférence blockchain ai
- cognitif
- intelligence artificielle conversationnelle
- crypto conférence ai
- de dall
- l'apprentissage en profondeur
- google ai
- machine learning
- Platon
- platon ai
- Intelligence des données Platon
- Jeu de Platon
- PlatonDonnées
- jeu de platogamie
- échelle ai
- syntaxe
- zéphyrnet