La création de pipelines d'apprentissage automatique (ML) robustes et réutilisables peut être un processus complexe et chronophage. Les développeurs testent généralement leurs scripts de traitement et de formation localement, mais les pipelines eux-mêmes sont généralement testés dans le cloud. La création et l'exécution d'un pipeline complet pendant l'expérimentation ajoutent des frais généraux et des coûts indésirables au cycle de vie du développement. Dans cet article, nous détaillons comment vous pouvez utiliser Mode local Amazon SageMaker Pipelines pour exécuter des pipelines ML localement afin de réduire à la fois le développement du pipeline et le temps d'exécution tout en réduisant les coûts. Une fois le pipeline entièrement testé localement, vous pouvez facilement le réexécuter avec Amazon Sage Maker ressources gérées avec seulement quelques lignes de modifications de code.
Présentation du cycle de vie du ML
L'un des principaux moteurs des nouvelles innovations et applications en ML est la disponibilité et la quantité de données, ainsi que des options de calcul moins chères. Dans plusieurs domaines, le ML s'est avéré capable de résoudre des problèmes auparavant insolubles avec les mégadonnées classiques et les techniques analytiques, et la demande de spécialistes de la science des données et du ML augmente régulièrement. À un niveau très élevé, le cycle de vie ML se compose de nombreuses parties différentes, mais la construction d'un modèle ML comprend généralement les étapes générales suivantes :
- Nettoyage et préparation des données (feature engineering)
- Formation et réglage du modèle
- Évaluation du modèle
- Déploiement de modèle (ou transformation par lots)
Lors de l'étape de préparation des données, les données sont chargées, massées et transformées en type d'entrées ou fonctionnalités attendues par le modèle ML. L'écriture des scripts pour transformer les données est généralement un processus itératif, où des boucles de rétroaction rapides sont importantes pour accélérer le développement. Il n'est normalement pas nécessaire d'utiliser l'ensemble de données complet lors du test de scripts d'ingénierie de fonctionnalités, c'est pourquoi vous pouvez utiliser le fonctionnalité de mode local du traitement SageMaker. Cela vous permet d'exécuter localement et de mettre à jour le code de manière itérative, en utilisant un jeu de données plus petit. Lorsque le code final est prêt, il est soumis au travail de traitement à distance, qui utilise l'ensemble de données complet et s'exécute sur des instances gérées par SageMaker.
Le processus de développement est similaire à l'étape de préparation des données pour les étapes de formation et d'évaluation du modèle. Les data scientists utilisent fonctionnalité de mode local de SageMaker Training pour itérer rapidement avec des ensembles de données plus petits localement, avant d'utiliser toutes les données dans un cluster géré par SageMaker d'instances optimisées pour le ML. Cela accélère le processus de développement et élimine le coût d'exécution des instances ML gérées par SageMaker pendant l'expérimentation.
À mesure que la maturité ML d'une organisation augmente, vous pouvez utiliser Pipelines Amazon SageMaker pour créer des pipelines ML qui assemblent ces étapes, créant des flux de travail ML plus complexes qui traitent, forment et évaluent des modèles ML. SageMaker Pipelines est un service entièrement géré pour automatiser les différentes étapes du flux de travail ML, y compris le chargement des données, la transformation des données, la formation et le réglage du modèle et le déploiement du modèle. Jusqu'à récemment, vous pouviez développer et tester vos scripts localement, mais vous deviez tester vos pipelines ML dans le cloud. Cela a rendu l'itération sur le flux et la forme des pipelines ML un processus lent et coûteux. Désormais, avec la fonctionnalité de mode local ajoutée de SageMaker Pipelines, vous pouvez itérer et tester vos pipelines ML de la même manière que vous testez et itérez sur vos scripts de traitement et de formation. Vous pouvez exécuter et tester vos pipelines sur votre machine locale, en utilisant un petit sous-ensemble de données pour valider la syntaxe et les fonctionnalités du pipeline.
Pipelines SageMaker
SageMaker Pipelines offre un moyen entièrement automatisé d'exécuter des workflows ML simples ou complexes. Avec SageMaker Pipelines, vous pouvez créer des flux de travail ML avec un SDK Python facile à utiliser, puis visualiser et gérer votre flux de travail à l'aide Amazon SageMakerStudio. Vos équipes de science des données peuvent être plus efficaces et évoluer plus rapidement en stockant et en réutilisant les étapes de workflow que vous créez dans SageMaker Pipelines. Vous pouvez également utiliser des modèles prédéfinis qui automatisent la création de l'infrastructure et du référentiel pour créer, tester, enregistrer et déployer des modèles dans votre environnement ML. Ces modèles sont automatiquement disponibles pour votre organisation et sont provisionnés à l'aide de Catalogue de services AWS en vente au détail.
SageMaker Pipelines apporte des pratiques d'intégration et de déploiement continus (CI/CD) au ML, telles que le maintien de la parité entre les environnements de développement et de production, le contrôle de version, les tests à la demande et l'automatisation de bout en bout, ce qui vous aide à faire évoluer le ML tout au long de votre organisme. Les praticiens DevOps savent que certains des principaux avantages de l'utilisation des techniques CI/CD incluent une augmentation de la productivité via des composants réutilisables et une augmentation de la qualité grâce à des tests automatisés, ce qui conduit à un retour sur investissement plus rapide pour vos objectifs commerciaux. Ces avantages sont désormais disponibles pour les praticiens MLOps en utilisant SageMaker Pipelines pour automatiser la formation, les tests et le déploiement des modèles ML. Avec le mode local, vous pouvez désormais itérer beaucoup plus rapidement lors du développement de scripts à utiliser dans un pipeline. Notez que les instances de pipeline locales ne peuvent pas être affichées ou exécutées dans l'IDE Studio ; cependant, des options de visualisation supplémentaires pour les pipelines locaux seront bientôt disponibles.
Le SDK SageMaker fournit un objectif général configuration du mode local qui permet aux développeurs d'exécuter et de tester les processeurs et les estimateurs pris en charge dans leur environnement local. Vous pouvez utiliser la formation en mode local avec plusieurs images de structure prises en charge par AWS (TensorFlow, MXNet, Chainer, PyTorch et Scikit-Learn) ainsi que des images que vous fournissez vous-même.
SageMaker Pipelines, qui crée un graphique acyclique dirigé (DAG) d'étapes de workflow orchestrées, prend en charge de nombreuses activités qui font partie du cycle de vie ML. En mode local, les étapes suivantes sont prises en charge :
- Traitement des étapes de travail – Une expérience simplifiée et gérée sur SageMaker pour exécuter des charges de travail de traitement de données, telles que l'ingénierie des fonctionnalités, la validation des données, l'évaluation des modèles et l'interprétation des modèles
- Étapes de la tâche de formation – Un processus itératif qui apprend à un modèle à faire des prédictions en présentant des exemples à partir d'un ensemble de données de formation
- Tâches de réglage d'hyperparamètres – Un moyen automatisé d'évaluer et de sélectionner les hyperparamètres qui produisent le modèle le plus précis
- Étapes d'exécution conditionnelles – Une étape qui fournit une série conditionnelle de branches dans un pipeline
- Étape du modèle – À l'aide des arguments CreateModel, cette étape peut créer un modèle à utiliser dans les étapes de transformation ou un déploiement ultérieur en tant que point de terminaison
- Transformer les étapes du travail – Une tâche de transformation par lots qui génère des prédictions à partir de grands ensembles de données et exécute l'inférence lorsqu'un point de terminaison persistant n'est pas nécessaire
- Échec des étapes – Une étape qui arrête l'exécution d'un pipeline et marque l'exécution comme ayant échoué
Vue d'ensemble de la solution
Notre solution illustre les étapes essentielles pour créer et exécuter SageMaker Pipelines en mode local, ce qui signifie utiliser des ressources locales de CPU, de RAM et de disque pour charger et exécuter les étapes du flux de travail. Votre environnement local peut être exécuté sur un ordinateur portable, en utilisant des IDE populaires tels que VSCode ou PyCharm, ou il peut être hébergé par SageMaker à l'aide d'instances de notebook classiques.
Le mode local permet aux scientifiques des données d'assembler des étapes, qui peuvent inclure des tâches de traitement, de formation et d'évaluation, et d'exécuter l'intégralité du flux de travail localement. Lorsque vous avez terminé les tests locaux, vous pouvez réexécuter le pipeline dans un environnement géré par SageMaker en remplaçant le LocalPipelineSession
objet avec PipelineSession
, ce qui apporte de la cohérence au cycle de vie du ML.
Pour cet exemple de bloc-notes, nous utilisons un ensemble de données standard accessible au public, le Ensemble de données d'ormeau d'apprentissage automatique UCI. L'objectif est de former un modèle ML pour déterminer l'âge d'un escargot d'ormeau à partir de ses mesures physiques. Au fond, c'est un problème de régression.
Tout le code requis pour exécuter cet exemple de bloc-notes est disponible sur GitHub dans le amazon-sagemaker-exemples dépôt. Dans cet exemple de bloc-notes, chaque étape de workflow de pipeline est créée indépendamment, puis câblée ensemble pour créer le pipeline. Nous créons les étapes suivantes :
- Étape de traitement (ingénierie des fonctionnalités)
- Étape d'entraînement (entraînement du modèle)
- Étape de traitement (évaluation du modèle)
- Étape de condition (précision du modèle)
- Créer une étape de modèle (modèle)
- Étape de transformation (transformation par lots)
- Enregistrer l'étape du modèle (paquet de modèles)
- Échec de l'étape (l'exécution a échoué)
Le schéma suivant illustre notre pipeline.
Pré-requis
Pour suivre cet article, vous avez besoin des éléments suivants :
Une fois ces conditions préalables en place, vous pouvez exécuter l'exemple de bloc-notes comme décrit dans les sections suivantes.
Construisez votre pipeline
Dans cet exemple de notebook, nous utilisons Mode de script SageMaker pour la plupart des processus ML, ce qui signifie que nous fournissons le code Python réel (scripts) pour effectuer l'activité et transmettons une référence à ce code. Le mode Script offre une grande flexibilité pour contrôler le comportement dans le traitement SageMaker en vous permettant de personnaliser votre code tout en profitant des conteneurs prédéfinis SageMaker tels que XGBoost ou Scikit-Learn. Le code personnalisé est écrit dans un fichier de script Python à l'aide de cellules commençant par la commande magique %%writefile
, comme ce qui suit :
%%writefile code/evaluation.py
Le principal catalyseur du mode local est le LocalPipelineSession
objet, qui est instancié à partir du SDK Python. Les segments de code suivants montrent comment créer un pipeline SageMaker en mode local. Bien que vous puissiez configurer un chemin de données local pour de nombreuses étapes de pipeline locales, Amazon S3 est l'emplacement par défaut pour stocker les données générées par la transformation. Le nouveau LocalPipelineSession
L'objet est transmis au SDK Python dans de nombreux appels d'API de workflow SageMaker décrits dans cet article. Notez que vous pouvez utiliser le local_pipeline_session
variable pour récupérer les références au compartiment par défaut S3 et au nom de la région actuelle.
Avant de créer les étapes de pipeline individuelles, nous définissons certains paramètres utilisés par le pipeline. Certains de ces paramètres sont des littéraux de chaîne, tandis que d'autres sont créés en tant que types énumérés spéciaux fournis par le SDK. Le typage énuméré garantit que des paramètres valides sont fournis au pipeline, comme celui-ci, qui est transmis au ConditionLessThanOrEqualTo
descendre plus bas :
mse_threshold = ParameterFloat(name="MseThreshold", default_value=7.0)
Pour créer une étape de traitement de données, qui est utilisée ici pour effectuer l'ingénierie des fonctionnalités, nous utilisons le SKLearnProcessor
pour charger et transformer le jeu de données. Nous passons le local_pipeline_session
variable au constructeur de classe, qui indique à l'étape du workflow de s'exécuter en mode local :
Ensuite, nous créons notre première étape de pipeline réelle, un ProcessingStep
objet, tel qu'importé depuis le SDK SageMaker. Les arguments du processeur sont retournés à partir d'un appel au SKLearnProcessor
méthode run(). Cette étape du flux de travail est combinée avec d'autres étapes vers la fin du bloc-notes pour indiquer l'ordre des opérations dans le pipeline.
Ensuite, nous fournissons du code pour établir une étape de formation en instanciant d'abord un estimateur standard à l'aide du SDK SageMaker. Nous passons le même local_pipeline_session
variable à l'estimateur, nommé xgb_train, comme la sagemaker_session
dispute. Parce que nous voulons former un modèle XGBoost, nous devons générer un URI d'image valide en spécifiant les paramètres suivants, y compris le framework et plusieurs paramètres de version :
Nous pouvons éventuellement appeler des méthodes d'estimation supplémentaires, par exemple set_hyperparameters()
, afin de fournir des paramètres d'hyperparamètres pour la tâche d'entraînement. Maintenant que nous avons configuré un estimateur, nous sommes prêts à créer l'étape de formation proprement dite. Encore une fois, nous importons le TrainingStep
classe de la bibliothèque SageMaker SDK :
Ensuite, nous construisons une autre étape de traitement pour effectuer l'évaluation du modèle. Cela se fait en créant un ScriptProcessor
instance et en passant le local_pipeline_session
objet en paramètre :
Pour permettre le déploiement du modèle entraîné, soit vers un Point de terminaison en temps réel SageMaker ou à une transformation par lots, nous devons créer un Model
objet en transmettant les artefacts du modèle, l'URI de l'image appropriée et éventuellement notre code d'inférence personnalisé. Nous passons ensuite ce Model
s'opposer à un ModelStep
, qui est ajouté au pipeline local. Voir le code suivant :
Ensuite, nous créons une étape de transformation par lots où nous soumettons un ensemble de vecteurs de caractéristiques et effectuons une inférence. Nous devons d'abord créer un Transformer
objet et passer le local_pipeline_session
paramètre à elle. Ensuite, nous créons un TransformStep
, en transmettant les arguments requis, et ajoutez ceci à la définition du pipeline :
Enfin, nous souhaitons ajouter une condition de branche au flux de travail afin de n'exécuter la transformation par lots que si les résultats de l'évaluation du modèle répondent à nos critères. Nous pouvons indiquer ce conditionnel en ajoutant un ConditionStep
avec un type de condition particulier, comme ConditionLessThanOrEqualTo
. Nous énumérons ensuite les étapes pour les deux branches, définissant essentiellement les branches if/else ou true/false du pipeline. Les if_steps fournis dans le ConditionStep
(step_create_model, étape_transformation) sont exécutés chaque fois que la condition est évaluée à True
.
Le schéma suivant illustre cette branche conditionnelle et les étapes if/else associées. Une seule branche est exécutée, basée sur le résultat de l'étape d'évaluation du modèle par rapport à l'étape de condition.
Maintenant que toutes nos étapes sont définies et que les instances de classe sous-jacentes sont créées, nous pouvons les combiner dans un pipeline. Nous fournissons certains paramètres et définissons de manière cruciale l'ordre des opérations en énumérant simplement les étapes dans l'ordre souhaité. Notez que le TransformStep
n'est pas affiché ici car il s'agit de la cible de l'étape conditionnelle et a été fourni comme argument d'étape à la ConditionalStep
plus tôt.
Pour exécuter le pipeline, vous devez appeler deux méthodes : pipeline.upsert()
, qui télécharge le pipeline vers le service sous-jacent, et pipeline.start()
, qui démarre l'exécution du pipeline. Vous pouvez utiliser diverses autres méthodes pour interroger l'état d'exécution, répertorier les étapes du pipeline, etc. Étant donné que nous avons utilisé la session de pipeline en mode local, ces étapes sont toutes exécutées localement sur votre processeur. La sortie de la cellule sous la méthode start montre la sortie du pipeline :
Vous devriez voir un message au bas de la sortie de la cellule semblable au suivant :
Pipeline execution d8c3e172-089e-4e7a-ad6d-6d76caf987b7 SUCCEEDED
Revenir aux ressources gérées
Une fois que nous avons confirmé que le pipeline s'exécute sans erreur et que nous sommes satisfaits du flux et de la forme du pipeline, nous pouvons recréer le pipeline mais avec des ressources gérées par SageMaker et le réexécuter. Le seul changement requis est d'utiliser le PipelineSession
objet au lieu de LocalPipelineSession
:
de sagemaker.workflow.pipeline_context importer LocalPipelineSessionfrom sagemaker.workflow.pipeline_context import PipelineSession
local_pipeline_session=LocalPipelineSession()pipeline_session = PipelineSession()
Cela informe le service d'exécuter chaque étape faisant référence à cet objet de session sur les ressources gérées SageMaker. Compte tenu du petit changement, nous illustrons uniquement les modifications de code requises dans la cellule de code suivante, mais la même modification devrait être implémentée sur chaque cellule à l'aide de la local_pipeline_session
objet. Les modifications sont cependant identiques dans toutes les cellules, car nous ne remplaçons que le local_pipeline_session
objet avec le pipeline_session
objet.
Une fois l'objet de session local remplacé partout, nous recréons le pipeline et l'exécutons avec les ressources gérées SageMaker :
Nettoyer
Si vous souhaitez conserver l'environnement Studio propre, vous pouvez utiliser les méthodes suivantes pour supprimer le pipeline SageMaker et le modèle. Le code complet peut être trouvé dans l'exemple cahier.
Conclusion
Jusqu'à récemment, vous pouviez utiliser la fonction de mode local de SageMaker Processing et SageMaker Training pour itérer localement sur vos scripts de traitement et de formation, avant de les exécuter sur toutes les données avec les ressources gérées SageMaker. Avec la nouvelle fonctionnalité de mode local de SageMaker Pipelines, les praticiens ML peuvent désormais appliquer la même méthode lors de l'itération sur leurs pipelines ML, en assemblant les différents flux de travail ML ensemble. Lorsque le pipeline est prêt pour la production, son exécution avec les ressources gérées SageMaker ne nécessite que quelques lignes de modifications de code. Cela réduit le temps d'exécution du pipeline pendant le développement, ce qui permet un développement plus rapide du pipeline avec des cycles de développement plus rapides, tout en réduisant le coût des ressources gérées par SageMaker.
Pour en savoir plus, visitez le site Pipelines Amazon SageMaker or Utilisez les pipelines SageMaker pour exécuter vos tâches localement.
À propos des auteurs
Paul Hargis a concentré ses efforts sur l'apprentissage automatique dans plusieurs entreprises, dont AWS, Amazon et Hortonworks. Il aime créer des solutions technologiques et enseigner aux gens comment en tirer le meilleur parti. Avant d'occuper son poste chez AWS, il était architecte principal pour les exportations et les extensions d'Amazon, aidant amazon.com à améliorer l'expérience des acheteurs internationaux. Paul aime aider les clients à développer leurs initiatives d'apprentissage automatique pour résoudre des problèmes réels.
Nicolas Palme est un architecte de solutions chez AWS à Stockholm, en Suède, où il aide les clients des pays nordiques à réussir dans le cloud. Il est particulièrement passionné par les technologies sans serveur, ainsi que par l'IoT et l'apprentissage automatique. En dehors du travail, Niklas est un passionné de ski de fond et de snowboard ainsi qu'un maître bouilleur d'œufs.
Kirit Thadaka est un architecte de solutions ML travaillant dans l'équipe SageMaker Service SA. Avant de rejoindre AWS, Kirit a travaillé dans des startups d'IA à un stade précoce, puis a été consultant dans divers rôles dans la recherche sur l'IA, les MLOps et la direction technique.
- Avancé (300)
- AI
- art de l'IA
- générateur d'art ai
- robot IA
- Objectif
- Amazon Sage Maker
- Pilote automatique Amazon SageMaker
- 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
- Mode d'emploi technique
- zéphyrnet