Des dizaines de milliers de clients AWS utilisent les services d'apprentissage automatique (ML) d'AWS pour accélérer leur développement ML avec une infrastructure et des outils entièrement gérés. Pour les clients qui ont développé des modèles ML sur site, tels que leur bureau local, ils souhaitent migrer leurs anciens modèles ML vers le cloud AWS pour tirer pleinement parti de l'ensemble le plus complet de services ML, d'infrastructure et de ressources de mise en œuvre disponibles sur AWS. .
Le terme code hérité fait référence au code qui a été développé pour être exécuté manuellement sur un bureau local et qui n'est pas construit avec des SDK prêts pour le cloud tels que le AWS SDK pour Python (Boto3) or SDK Amazon SageMaker Python. En d'autres termes, ces codes hérités ne sont pas optimisés pour le déploiement dans le cloud. La meilleure pratique pour la migration consiste à refactoriser ces anciens codes à l'aide de la API Amazon SageMaker ou le SDK SageMaker Python. Cependant, dans certains cas, les organisations disposant d'un grand nombre de modèles hérités peuvent ne pas avoir le temps ou les ressources nécessaires pour réécrire tous ces modèles.
Dans cet article, nous partageons une approche évolutive et facile à mettre en œuvre pour migrer le code ML hérité vers le cloud AWS pour l'inférence à l'aide Amazon Sage Maker et de Fonctions d'étape AWS, avec un minimum de refactorisation de code requis. Vous pouvez facilement étendre cette solution pour ajouter plus de fonctionnalités. Nous montrons comment deux personnalités différentes, un scientifique des données et un ingénieur MLOps, peuvent collaborer pour soulever et déplacer des centaines de modèles hérités.
Vue d'ensemble de la solution
Dans ce cadre, nous exécutons le code hérité dans un conteneur en tant que Traitement SageMaker emploi. SageMaker exécute le script hérité dans un conteneur de traitement. L'image du conteneur de traitement peut être une image intégrée SageMaker ou une image personnalisée. L'infrastructure sous-jacente d'une tâche de traitement est entièrement gérée par SageMaker. Aucune modification de l'ancien code n'est requise. Une familiarité avec la création de tâches de traitement SageMaker est tout ce qui est nécessaire.
Nous supposons l'implication de deux personas : un data scientist et un ingénieur MLOps. Le scientifique des données est chargé de déplacer le code dans SageMaker, soit manuellement, soit en le clonant à partir d'un référentiel de code tel que Code AWSCommit. Amazon SageMakerStudio fournit un environnement de développement intégré (IDE) pour la mise en œuvre de diverses étapes du cycle de vie ML, et le data scientist l'utilise pour créer manuellement un conteneur personnalisé qui contient les artefacts de code nécessaires au déploiement. Le conteneur sera enregistré dans un registre de conteneurs tel que Registre des conteneurs élastiques Amazon (Amazon ECR) à des fins de déploiement.
L'ingénieur MLOps prend en charge la création d'un workflow Step Functions que nous pouvons réutiliser pour déployer le conteneur personnalisé développé par le data scientist avec les paramètres appropriés. Le flux de travail Step Functions peut être aussi modulaire que nécessaire pour s'adapter au cas d'utilisation, ou il peut consister en une seule étape pour lancer un seul processus. Afin de minimiser l'effort requis pour migrer le code, nous avons identifié trois composants modulaires pour créer un processus de déploiement entièrement fonctionnel :
- Prétraitement
- Inférence
- Post-traitement
Le diagramme suivant illustre l'architecture et le flux de travail de notre solution.
Les étapes suivantes sont impliquées dans cette solution :
- Le personnage de data scientist utilise Studio pour importer du code hérité par clonage à partir d'un référentiel de code, puis modulariser le code en composants distincts qui suivent les étapes du cycle de vie ML (prétraitement, inférence et post-traitement).
- Le data scientist utilise Studio, et plus particulièrement le Interface de ligne de commande de création d'images Studio outil fourni par SageMaker, pour construire une image Docker. Cet outil CLI permet au data scientist de créer l'image directement dans Studio et enregistre automatiquement l'image dans Amazon ECR.
- L'ingénieur MLOps utilise l'image de conteneur enregistrée et crée un déploiement pour un cas d'utilisation spécifique à l'aide de Step Functions. Step Functions est un service de flux de travail sans serveur qui peut contrôler les API SageMaker directement via l'utilisation de la langue des états d'Amazon.
Travail de traitement SageMaker
Comprenons comment un Travail de traitement SageMaker court. Le schéma suivant montre comment SageMaker lance une tâche de traitement.
SageMaker prend votre script, copie vos données à partir de Service de stockage simple Amazon (Amazon S3), puis extrait un conteneur de traitement. L'image du conteneur de traitement peut être une image intégrée SageMaker ou une image personnalisée que vous fournissez. L'infrastructure sous-jacente d'une tâche de traitement est entièrement gérée par SageMaker. Les ressources de cluster sont provisionnées pour la durée de votre tâche et nettoyées lorsqu'une tâche est terminée. La sortie de la tâche de traitement est stockée dans le compartiment S3 que vous avez spécifié. Pour en savoir plus sur la création de votre propre conteneur, consultez Créez votre propre conteneur de traitement (scénario avancé).
La tâche de traitement SageMaker configure votre image de traitement à l'aide d'un script de point d'entrée de conteneur Docker. Vous pouvez également fournir votre propre point d'entrée personnalisé en utilisant les paramètres ContainerEntrypoint et ContainerArguments du Spécification de l'application API. Si vous utilisez votre propre point d'entrée personnalisé, vous avez la possibilité supplémentaire de l'exécuter en tant que script autonome sans reconstruire vos images.
Pour cet exemple, nous construisons un conteneur personnalisé et utilisons une tâche de traitement SageMaker pour l'inférence. Les tâches de prétraitement et de post-traitement utilisent le mode script avec un conteneur scikit-learn pré-construit.
Pré-requis
Pour suivre cet article, suivez les étapes préalables suivantes :
- Créez un domaine Studio. Pour obtenir des instructions, reportez-vous à Intégration au domaine Amazon SageMaker à l'aide de la configuration rapide.
- Créez un compartiment S3.
- Cloner le fourni GitHub repo dans Studio.
Le référentiel GitHub est organisé en différents dossiers qui correspondent aux différentes étapes du cycle de vie ML, facilitant la navigation et la gestion :
Migrer l'ancien code
Dans cette étape, nous agissons en tant que data scientist responsable de la migration du code hérité.
On commence par ouvrir le build_and_push.ipynb
carnet.
La première cellule du notebook vous guide dans l'installation du Interface de ligne de commande de création d'images Studio. Cette CLI simplifie le processus de configuration en créant automatiquement un environnement de génération réutilisable avec lequel vous pouvez interagir via des commandes de haut niveau. Avec la CLI, créer une image est aussi simple que de lui dire de créer, et le résultat sera un lien vers l'emplacement de votre image dans Amazon ECR. Cette approche élimine le besoin de gérer le flux de travail sous-jacent complexe orchestré par la CLI, rationalisant le processus de création d'image.
Avant d'exécuter la commande build, il est important de s'assurer que le rôle exécutant la commande dispose des autorisations nécessaires, comme spécifié dans la CLI GitHub Lisez-moi ou Article similaire. Le fait de ne pas accorder les autorisations requises peut entraîner des erreurs lors du processus de génération.
Voir le code suivant:
Pour rationaliser votre ancien code, divisez-le en trois scripts Python distincts nommés preprocessing.py, predict.py et postprocessing.py. Adhérez aux meilleures pratiques de programmation en convertissant le code en fonctions appelées à partir d'une fonction principale. Assurez-vous que toutes les bibliothèques nécessaires sont importées et que le fichier requirements.txt est mis à jour pour inclure toutes les bibliothèques personnalisées.
Après avoir organisé le code, empaquetez-le avec le fichier requirements dans un conteneur Docker. Vous pouvez facilement créer le conteneur depuis Studio à l'aide de la commande suivante :
Par défaut, l'image sera transmise à un référentiel ECR appelé sagemakerstudio avec la balise latest. De plus, le rôle d'exécution de l'application Studio sera utilisé, ainsi que le compartiment SageMaker Python SDK S3 par défaut. Cependant, ces paramètres peuvent être facilement modifiés à l'aide des options CLI appropriées. Voir le code suivant :
Maintenant que le conteneur a été créé et enregistré dans un référentiel ECR, il est temps d'approfondir la manière dont nous pouvons l'utiliser pour exécuter predict.py. Nous vous montrons également le processus d'utilisation d'un pré-construit scikit-apprendre conteneur pour exécuter preprocessing.py et postprocessing.py.
Production du conteneur
Dans cette étape, nous agissons en tant qu'ingénieur MLOps qui produit le conteneur construit à l'étape précédente.
Nous utilisons Step Functions pour orchestrer le flux de travail. Step Functions permet une flexibilité exceptionnelle dans l'intégration d'une gamme diversifiée de services dans le flux de travail, en s'adaptant à toutes les dépendances existantes qui peuvent exister dans le système hérité. Cette approche garantit que tous les composants nécessaires sont intégrés de manière transparente et exécutés dans l'ordre souhaité, ce qui se traduit par une solution de flux de travail efficace et efficiente.
Step Functions peut contrôler certains services AWS directement à partir de la langue des états d'Amazon. Pour en savoir plus sur l'utilisation de Step Functions et son intégration avec SageMaker, reportez-vous à Gérer SageMaker avec les fonctions d'étape. À l'aide de la capacité d'intégration Step Functions avec SageMaker, nous exécutons les scripts de prétraitement et de post-traitement à l'aide d'un travail de traitement SageMaker en mode script et exécutons l'inférence en tant que travail de traitement SageMaker à l'aide d'un conteneur personnalisé. Nous le faisons en utilisant AWS SDK pour Python (Boto3) Créer un travail de traitement Appels API.
Prétraitement
SageMaker offre plusieurs options pour exécuter du code personnalisé. Si vous n'avez qu'un script sans aucune dépendance personnalisée, vous pouvez exécuter le script en tant que BYOS (Bring Your Own Script). Pour ce faire, transmettez simplement votre script au conteneur de framework scikit-learn pré-construit et exécutez une tâche de traitement SageMaker en mode script à l'aide des paramètres ContainerArguments et ContainerEntrypoint dans le Spécification de l'application API. Il s'agit d'une méthode simple et pratique pour exécuter des scripts simples.
Consultez la configuration de l'état "Preprocessing Script Mode" dans le exemple de flux de travail Step Functions pour comprendre comment configurer l'appel d'API CreateProcessingJob pour exécuter un script personnalisé.
Inférence
Vous pouvez exécuter un conteneur personnalisé à l'aide de Construisez votre propre conteneur de traitement approche. Le travail de traitement SageMaker fonctionne avec le /opt/ml
chemin local, et vous pouvez spécifier vos ProcessingInputs et leur chemin local dans la configuration. La tâche de traitement copie ensuite les artefacts dans le conteneur local et démarre la tâche. Une fois le travail terminé, il copie les artefacts spécifiés dans le chemin d'accès local des ProcessingOutputs vers son emplacement externe spécifié.
Consultez la configuration de l'état "Conteneur personnalisé d'inférence" dans le exemple de flux de travail Step Functions pour comprendre comment configurer l'appel d'API CreateProcessingJob pour exécuter un conteneur personnalisé.
Post-traitement
Vous pouvez exécuter un script de post-traitement comme un script de pré-traitement à l'aide de l'étape Step Functions CreateProcessingJob. L'exécution d'un script de post-traitement vous permet d'effectuer des tâches de traitement personnalisées une fois la tâche d'inférence terminée.
Créer le flux de travail Step Functions
Pour un prototypage rapide, nous utilisons les Step Functions Langue Amazon States. Vous pouvez modifier la définition des fonctions d'étape directement à l'aide du langage d'états. Se référer au exemple de flux de travail Step Functions.
Vous pouvez créer une nouvelle machine d'état Step Functions sur la console Step Functions en sélectionnant Écrivez votre flux de travail en code.
Step Functions peut examiner les ressources que vous utilisez et créer un rôle. Cependant, vous pouvez voir le message suivant :
"Step Functions ne peut pas générer de stratégie IAM si le RoleArn pour SageMaker provient d'un chemin. Codez en dur le SageMaker RoleArn dans la définition de votre machine d'état, ou choisissez un rôle existant avec les autorisations appropriées pour que Step Functions appelle SageMaker.
Pour résoudre ce problème, vous devez créer un Gestion des identités et des accès AWS (IAM) rôle pour Step Functions. Pour obtenir des instructions, reportez-vous à Créer un rôle IAM pour votre machine d'état. Attachez ensuite la stratégie IAM suivante pour fournir les autorisations requises pour exécuter le workflow :
La figure suivante illustre le flux de données et d'images de conteneurs dans chaque étape du flux de travail Step Functions.
Voici une liste des paramètres minimum requis pour initialiser dans Step Functions ; vous pouvez également vous référer au exemples de paramètres d'entrée JSON:
- entrée_uri – L'URI S3 pour les fichiers d'entrée
- sortie_uri – L'URI S3 pour les fichiers de sortie
- code_uri – L'URI S3 pour les fichiers de script
- uri_image_personnalisée – L'URI du conteneur pour le conteneur personnalisé que vous avez construit
- scikit_image_uri - L'URI du conteneur pour le framework scikit-learn pré-construit
- rôle de l' – Le rôle d'exécution pour exécuter le travail
- type_instance – Le type d'instance que vous devez utiliser pour exécuter le conteneur
- taille_volume – La taille du volume de stockage dont vous avez besoin pour le conteneur
- max_runtime – La durée d'exécution maximale du conteneur, avec une valeur par défaut de 1 heure
Exécutez le workflow
Nous avons décomposé le code hérité en parties gérables : prétraitement, inférence et post-traitement. Pour répondre à nos besoins d'inférence, nous avons construit un conteneur personnalisé équipé des dépendances de bibliothèque nécessaires. Notre plan est d'utiliser Step Functions, en tirant parti de sa capacité à appeler l'API SageMaker. Nous avons montré deux méthodes pour exécuter du code personnalisé à l'aide de l'API SageMaker : une tâche de traitement SageMaker qui utilise une image prédéfinie et prend un script personnalisé au moment de l'exécution, et une tâche de traitement SageMaker qui utilise un conteneur personnalisé, qui est fourni avec les éléments nécessaires. artefacts pour exécuter une inférence personnalisée.
La figure suivante montre l'exécution du workflow Step Functions.
Résumé
Dans cet article, nous avons discuté du processus de migration du code ML Python hérité à partir d'environnements de développement locaux et de la mise en œuvre d'une procédure MLOps standardisée. Avec cette approche, vous pouvez facilement transférer des centaines de modèles et intégrer les pratiques de déploiement d'entreprise souhaitées. Nous avons présenté deux méthodes différentes pour exécuter du code personnalisé sur SageMaker, et vous pouvez sélectionner celle qui correspond le mieux à vos besoins.
Si vous avez besoin d'une solution hautement personnalisable, il est recommandé d'utiliser l'approche de conteneur personnalisé. Vous trouverez peut-être plus approprié d'utiliser des images prédéfinies pour exécuter votre script personnalisé si vous avez des scripts de base et n'avez pas besoin de créer votre conteneur personnalisé, comme décrit dans l'étape de prétraitement mentionnée précédemment. De plus, si nécessaire, vous pouvez appliquer cette solution pour conteneuriser les étapes de formation et d'évaluation des modèles hérités, tout comme la façon dont l'étape d'inférence est conteneurisée dans cet article.
À propos des auteurs
Bhavana Chirumamilla est un architecte résident senior chez AWS avec une forte passion pour les opérations de données et d'apprentissage automatique. Elle apporte une richesse d'expérience et d'enthousiasme pour aider les entreprises à élaborer des stratégies de données et de ML efficaces. Dans ses temps libres, Bhavana aime passer du temps avec sa famille et se livrer à diverses activités telles que les voyages, la randonnée, le jardinage et regarder des documentaires.
Shyam Namavaram est architecte principal de solutions spécialisées en intelligence artificielle (IA) et en apprentissage automatique (ML) chez Amazon Web Services (AWS). Il travaille avec passion avec les clients pour accélérer leur adoption de l'IA et du ML en leur fournissant des conseils techniques et en les aidant à innover et à créer des solutions cloud sécurisées sur AWS. Il est spécialisé dans l'IA et le ML, les conteneurs et les technologies d'analyse. En dehors du travail, il aime faire du sport et découvrir la nature avec la randonnée.
Qingwei Li est un spécialiste de l'apprentissage automatique chez Amazon Web Services. Il a obtenu son doctorat en recherche opérationnelle après avoir cassé le compte de subvention de recherche de son conseiller et n'a pas réussi à remettre le prix Nobel qu'il avait promis. Actuellement, il aide les clients du secteur des services financiers et de l'assurance à créer des solutions d'apprentissage automatique sur AWS. Dans ses temps libres, il aime lire et enseigner.
Shaik Srinivasa est un architecte de solutions chez AWS basé à Boston. Il aide les entreprises clientes à accélérer leur transition vers le cloud. Il est passionné par les conteneurs et les technologies d'apprentissage automatique. Dans ses temps libres, il aime passer du temps avec sa famille, cuisiner et voyager.
- Contenu propulsé par le référencement et distribution de relations publiques. Soyez amplifié aujourd'hui.
- Platoblockchain. Intelligence métaverse Web3. Connaissance Amplifiée. Accéder ici.
- La source: https://aws.amazon.com/blogs/machine-learning/bring-legacy-machine-learning-code-into-amazon-sagemaker-using-aws-step-functions/
- :est
- $UP
- 1
- 10
- 100
- 214
- 7
- 8
- a
- capacité
- A Propos
- accélérer
- accès
- Compte
- Agis
- Action
- d'activités
- ajoutée
- En outre
- propos
- adhérer
- Adoption
- Avancée
- Avantage
- Après
- AI
- Tous
- permet
- Amazon
- Amazon Sage Maker
- Amazon Web Services
- Amazon Web Services (AWS)
- montant
- analytique
- et de
- api
- Apis
- appli
- Appliquer
- une approche
- approprié
- architecture
- SONT
- artificiel
- intelligence artificielle
- Intelligence artificielle (AI)
- AS
- At
- joindre
- automatiquement
- disponibles
- AWS
- Apprentissage automatique AWS
- Fonctions d'étape AWS
- basé
- Essentiel
- BE
- commencer
- LES MEILLEURS
- boston
- apporter
- Apportez le
- Cassé
- Cassé
- construire
- Développement
- construit
- intégré
- by
- Appelez-nous
- appelé
- Appels
- CAN
- ne peut pas
- maisons
- cas
- certaines
- Change
- Selectionnez
- client
- le cloud
- Grappe
- code
- collaborons
- COM
- complet
- complexe
- composants électriques
- complet
- condition
- configuration
- Console
- construire
- Contenant
- Conteneurs
- contient
- des bactéries
- Pratique
- engendrent
- crée des
- La création
- Lecture
- Customiser
- Clients
- personnalisables
- données
- Data Scientist
- profond
- Réglage par défaut
- livrer
- démontrer
- déployer
- déploiement
- décrit
- voulu
- à poser
- développé
- développement
- Développement
- différent
- directement
- discuté
- distinct
- plusieurs
- Docker
- documentaires
- domaine
- Ne pas
- down
- pendant
- chacun
- Plus tôt
- même
- effet
- Efficace
- efficace
- effort
- non plus
- élimine
- engageant
- ingénieur
- assurer
- Assure
- Entreprise
- entreprises
- à leurs besoins.
- Environment
- environnements
- équipé
- Erreurs
- évaluation
- exemple
- exceptionnel
- exécution
- existant
- d'experience
- l'expérience
- étendre
- externe
- faciliter
- Échoué
- Familiarité
- famille
- Figure
- Déposez votre dernière attestation
- la traduction de documents financiers
- service financier
- Trouvez
- s'adapter
- Flexibilité
- flux
- suivre
- Abonnement
- Pour
- Framework
- De
- d’étiquettes électroniques entièrement
- fonction
- fonctionnel
- fonctions
- En outre
- générer
- GitHub
- subvention
- l'orientation
- Guides
- Vous avez
- aider
- aider
- aide
- de haut niveau
- très
- Comment
- How To
- Cependant
- HTML
- http
- HTTPS
- Des centaines
- identifié
- Identite
- image
- satellite
- la mise en oeuvre
- la mise en œuvre
- importer
- important
- in
- Dans d'autres
- comprendre
- intégrer
- industrie
- Infrastructure
- initiale
- initier
- innovons
- contribution
- installer
- installer
- instance
- Des instructions
- Assurance
- des services
- Intégration
- l'intégration
- Intelligence
- interagir
- impliqué
- participation
- IT
- SES
- Emploi
- Emplois
- chemin
- jpg
- json
- juste un
- langue
- gros
- Nouveautés
- APPRENTISSAGE
- apprentissage
- Legacy
- bibliothèques
- Bibliothèque
- vos produits
- comme
- LINK
- Liste
- locales
- emplacement
- Style
- click
- machine learning
- Entrée
- gérer
- gérés
- gestion
- manuellement
- maximales
- mentionné
- message
- méthode
- méthodes
- émigrer
- migration
- minimum
- ML
- MLOps
- Mode
- modèle
- numériques jumeaux (digital twin models)
- application
- PLUS
- (en fait, presque toutes)
- en mouvement
- Nommé
- Nature
- Navigation
- nécessaire
- Besoin
- Besoins
- Nouveauté
- prix Nobel
- cahier
- nombre
- of
- Offres Speciales
- on
- ONE
- ouverture
- exploite
- Opérations
- optimisé
- Options
- orchestrée
- organisations
- Organisé
- Autre
- sortie
- au contrôle
- propre
- possession
- paquet
- paramètres
- les pièces
- passion
- passionné
- chemin
- Effectuer
- autorisations
- plan
- Platon
- Intelligence des données Platon
- PlatonDonnées
- jouer
- politique
- Post
- pratique
- pratiques
- prévoir
- présenté
- précédent
- prix
- processus
- traitement
- Programmation
- promis
- correct
- prototypage
- fournir
- à condition de
- fournit
- aportando
- RÉSERVES
- des fins
- Poussé
- Python
- Rapide
- vite.
- gamme
- en cours
- reçu
- recommandé
- Refactoriser
- se réfère
- inscrit
- registres
- enregistrement
- dépôt
- exigent
- conditions
- Exigences
- un article
- ressource
- Resources
- responsables
- résultat
- résultant
- réutilisable
- Rôle
- Courir
- pour le running
- sagemaker
- évolutive
- scénario
- Scientifique
- scikit-apprendre
- scripts
- Sdk
- de façon transparente
- sécurisé
- la sélection
- supérieur
- séparé
- Séquence
- Sans serveur
- service
- Services
- set
- Sets
- Paramétres
- installation
- plusieurs
- Partager
- décalage
- montrer
- montré
- Spectacles
- étapes
- simplement
- unique
- Taille
- So
- sur mesure
- Solutions
- quelques
- spécialiste
- spécialise
- groupe de neurones
- spécifiquement
- spécifié
- Dépenses
- spins
- Sports
- étapes
- autonome
- départs
- Région
- Déclaration
- États
- étapes
- Étapes
- storage
- stockée
- simple
- les stratégies
- rationaliser
- la rationalisation
- STRONG
- studio
- tel
- convient
- Support
- SYS
- combustion propre
- TAG
- Prenez
- prend
- prise
- tâches
- Enseignement
- Technique
- Les technologies
- qui
- La
- leur
- Les
- Ces
- milliers
- trois
- Avec
- fiable
- à
- outil
- les outils
- Formation
- transférer
- Voyages
- sous-jacent
- comprendre
- a actualisé
- utilisé
- cas d'utilisation
- utilitaire
- utiliser
- utilisé
- utilise
- Plus-value
- divers
- version
- le volume
- personne(s) regarde(nt) cette fiche produit
- Richesse
- web
- services Web
- qui
- WHO
- sera
- comprenant
- dans les
- sans
- des mots
- activités principales
- de travail
- vos contrats
- Vous n'avez
- Votre
- zéphyrnet