Nous sommes ravis d'annoncer deux nouvelles fonctionnalités dans Amazon SageMakerStudio qui accélérera le développement itératif pour les praticiens de l'apprentissage automatique (ML) : mode local et prise en charge de Docker. Le développement de modèles ML implique souvent des cycles d'itération lents, car les développeurs basculent entre le codage, la formation et le déploiement. Chaque étape nécessite d'attendre le démarrage des ressources de calcul distantes, ce qui retarde la validation des implémentations et l'obtention de retours sur les modifications.
Avec le mode local, les développeurs peuvent désormais former et tester des modèles, déboguer du code et valider des pipelines de bout en bout directement sur leur instance de bloc-notes SageMaker Studio sans avoir besoin de faire tourner des ressources de calcul à distance. Cela réduit le cycle d'itération de quelques minutes à quelques secondes, augmentant ainsi la productivité des développeurs. La prise en charge de Docker dans les notebooks SageMaker Studio permet aux développeurs de créer sans effort des conteneurs Docker et d'accéder à des conteneurs prédéfinis, fournissant ainsi un environnement de développement cohérent au sein de l'équipe et évitant une configuration et une gestion des dépendances fastidieuses.
La prise en charge du mode local et de Docker offre un flux de travail rationalisé pour valider les modifications de code et les modèles de prototypage à l'aide de conteneurs locaux exécutés sur un bloc-notes SageMaker Studio.
exemple. Dans cet article, nous vous guidons dans la configuration du mode local dans SageMaker Studio, l'exécution d'un exemple de tâche de formation et le déploiement du modèle sur un Amazon Sage Maker point de terminaison à partir d’un bloc-notes SageMaker Studio.
Mode local de SageMaker Studio
SageMaker Studio introduit le mode local, vous permettant d'exécuter des tâches de formation, d'inférence, de transformation par lots et de traitement SageMaker directement sur vos instances de notebook JupyterLab, Code Editor ou SageMaker Studio Classic sans nécessiter de ressources de calcul distantes. Les avantages de l'utilisation du mode local incluent :
- Validation et test instantanés des flux de travail directement dans les environnements de développement intégrés (IDE)
- Itération plus rapide à travers les exécutions locales pour les travaux à plus petite échelle afin d'inspecter les résultats et d'identifier les problèmes plus tôt
- Amélioration de l'efficacité du développement et du débogage en éliminant l'attente pour les tâches de formation à distance
- Commentaires immédiats sur les modifications de code avant d'exécuter des tâches complètes dans le cloud
La figure suivante illustre le flux de travail utilisant le mode local sur SageMaker.
Pour utiliser le mode local, définissez instance_type='local'
lors de l'exécution de tâches du SDK SageMaker Python telles que la formation et l'inférence. Cela les exécutera sur les instances utilisées par vos IDE SageMaker Studio au lieu de provisionner les ressources cloud.
Bien que certaines fonctionnalités telles que la formation distribuée ne soient disponibles que dans le cloud, le mode local supprime le besoin de changer de contexte pour des itérations rapides. Lorsque vous êtes prêt à profiter de toute la puissance et de l'évolutivité de SageMaker, vous pouvez exécuter votre flux de travail en toute transparence dans le cloud.
Prise en charge de Docker dans SageMaker Studio
SageMaker Studio permet désormais également de créer et d'exécuter des conteneurs Docker localement sur votre instance de notebook SageMaker Studio. Cette nouvelle fonctionnalité vous permet de créer et de valider des images Docker dans SageMaker Studio avant de les utiliser pour la formation et l'inférence SageMaker.
Le diagramme suivant illustre l'architecture d'orchestration Docker de haut niveau dans SageMaker Studio.
Avec la prise en charge de Docker dans SageMaker Studio, vous pouvez :
- Créez des conteneurs Docker avec des modèles et des dépendances intégrés directement dans SageMaker Studio
- Éliminez le besoin de processus de construction Docker externes pour simplifier la création d'images
- Exécutez les conteneurs localement pour valider les fonctionnalités avant de déployer des modèles en production
- Réutilisez les conteneurs locaux lors du déploiement sur SageMaker pour la formation et l'hébergement
Bien que certaines fonctionnalités avancées de Docker, telles que les réseaux multi-conteneurs et personnalisés, ne soient pas prises en charge au moment d'écrire ces lignes, la fonctionnalité principale de création et d'exécution est disponible pour accélérer le développement de conteneurs pour les flux de travail Bring Your Own Container (BYOC).
Pré-requis
Pour utiliser le mode local dans les applications SageMaker Studio, vous devez remplir les conditions préalables suivantes :
- Pour extraire des images de Registre des conteneurs élastiques Amazon (Amazon ECR), le compte hébergeant l'image ECR doit fournir une autorisation d'accès au compte de l'utilisateur. Identity and Access Management (IAM). Le rôle du domaine doit également autoriser l'accès à Amazon ECR.
- Pour activer les fonctionnalités du mode local et de Docker, vous devez définir le
EnableDockerAccess
paramètre à true pour le domaineDockerSettings
utilisant l' Interface de ligne de commande AWS (AWS CLI). Cela permet aux utilisateurs du domaine d'utiliser les fonctionnalités du mode local et de Docker. Par défaut, le mode local et Docker sont désactivés dans SageMaker Studio. Toutes les applications SageMaker Studio existantes devront être redémarrées pour que la mise à jour du service Docker prenne effet. Voici un exemple de commande AWS CLI pour mettre à jour un domaine SageMaker Studio :
- Vous devez mettre à jour le rôle IAM de SageMaker afin de pouvoir pousser les images Docker vers Amazon ECR :
Exécutez des fichiers Python dans les espaces SageMaker Studio en utilisant le mode local
SageMaker Studio JupyterLab et Code Editor (basé sur Code-OSS, Visual Studio Code – Open Source), étend SageMaker Studio afin que vous puissiez écrire, tester, déboguer et exécuter vos analyses et votre code ML à l'aide de l'IDE léger populaire. Pour plus de détails sur la façon de démarrer avec les IDE SageMaker Studio, reportez-vous à Augmentez la productivité sur Amazon SageMaker Studio : présentation des espaces JupyterLab et des outils d'IA générative ainsi que Nouveau – L'éditeur de code, basé sur Code-OSS VS Code Open Source, désormais disponible dans Amazon SageMaker Studio. Effectuez les étapes suivantes :
- Créez un nouveau terminal.
- Installez le plugin Docker CLI et Docker Compose en suivant les instructions ci-dessous GitHub repo. Si les commandes chaînées échouent, exécutez les commandes une par une.
Vous devez mettre à jour le SDK SageMaker vers la dernière version.
- Courir
pip install sagemaker -Uq
dans le terminal.
Pour l'éditeur de code uniquement, vous devez configurer l'environnement Python pour qu'il s'exécute dans le terminal actuel.
- Dans l'éditeur de code, sur le menu Fichier¸ choisissez Préférences ainsi que Paramètres.
- Rechercher et sélectionner Terminal : exécuter dans le répertoire du fichier.
- Dans l'éditeur de code ou JupyterLab, ouvrez le
scikit_learn_script_mode_local_training_and_serving
dossier et exécutez lescikit_learn_script_mode_local_training_and_serving.py
fichier.
Vous pouvez exécuter le script en choisissant Courir dans l'éditeur de code ou à l'aide de la CLI dans un terminal JupyterLab. Vous pourrez voir comment le modèle est formé localement. Ensuite, vous déployez le modèle sur un point de terminaison SageMaker localement et calculez l'erreur quadratique moyenne (RMSE
).
Simulez la formation et l'inférence dans SageMaker Studio Classic en utilisant le mode local
Vous pouvez également utiliser un bloc-notes dans SageMaker Studio Classic pour exécuter une tâche de formation à petite échelle sur CIFAR10
en utilisant le mode local, déployez le modèle localement et effectuez une inférence.
Configurer votre bloc-notes
Pour configurer le bloc-notes, procédez comme suit :
- Ouvrez SageMaker Studio Classic et clonez ce qui suit GitHub repo.
- Ouvrez le
pytorch_local_mode_cifar10.ipynb notebook in blog/pytorch_cnn_cifar10
.
- Pour Image(s), choisissez
PyTorch 2.1.0 Python 3.10 CPU Optimized
.
Confirmez que votre bloc-notes affiche la sélection correcte de l'instance et du noyau.
- Ouvrez un terminal en choisissant Lancer le terminal dans l'image SageMaker actuelle.
- Installez le plugin Docker CLI et Docker Compose en suivant les instructions ci-dessous GitHub repo.
Étant donné que vous utilisez Docker de SageMaker Studio Classic, supprimez sudo lors de l'exécution de commandes car le terminal s'exécute déjà sous le superutilisateur. Pour SageMaker Studio Classic, les commandes d'installation dépendent du système d'exploitation de l'image de l'application SageMaker Studio. Par exemple, les images de framework basées sur DLC sont basées sur Ubuntu, dans lequel les instructions suivantes fonctionneraient. Cependant, pour une image basée sur Debian telle que DataScience Images, vous devez suivre les instructions ci-dessous. GitHub repo. Si les commandes chaînées échouent, exécutez les commandes une par une. Vous devriez voir la version Docker affichée.
- Laissez la fenêtre du terminal ouverte, revenez au bloc-notes et commencez à l'exécuter cellule par cellule.
Assurez-vous d'exécuter la cellule avec pip install -U sagemaker
vous utilisez donc la dernière version du SDK SageMaker Python.
Formation locale
Lorsque vous commencez à exécuter la tâche de formation SageMaker locale, vous verrez les lignes de journal suivantes :
Cela indique que la formation s'est déroulée localement à l'aide de Docker.
Soyez patient pendant que pytorch-training:2.1-cpu-py310
L'image Docker est extraite. En raison de sa grande taille (5.2 Go), cela peut prendre quelques minutes.
Les images Docker seront stockées dans le volume racine de l'instance de l'application SageMaker Studio, qui n'est pas accessible aux utilisateurs finaux. La seule façon d'accéder aux images Docker et d'interagir avec elles consiste à utiliser les opérations de l'API Docker exposées.
Du point de vue de la confidentialité des utilisateurs, la plateforme SageMaker Studio n'accède ni ne stocke jamais les images spécifiques à l'utilisateur.
Une fois la formation terminée, vous pourrez voir les lignes de journal de réussite suivantes :
Inférence locale
Effectuez les étapes suivantes:
- Déployez le point de terminaison SageMaker à l'aide du mode local de SageMaker.
Soyez patient pendant que pytorch-inference:2.1-cpu-py310
L'image Docker est extraite. En raison de sa grande taille (4.32 Go), cela peut prendre quelques minutes.
- Appelez le point de terminaison SageMaker déployé localement à l’aide des images de test.
Vous pourrez voir les classes prédites : grenouille, bateau, voiture et avion :
- Étant donné que le point de terminaison SageMaker Local est toujours actif, revenez à la fenêtre du terminal ouverte et répertoriez les conteneurs en cours d'exécution :
docker ps
Vous pourrez voir la course pytorch-inference:2.1-cpu-py310
conteneur prenant en charge le point de terminaison SageMaker.
- Pour arrêter le point de terminaison local SageMaker et arrêter le conteneur en cours d'exécution, car vous ne pouvez exécuter qu'un seul point de terminaison local à la fois, exécutez le code de nettoyage.
- Pour vous assurer que le conteneur Docker est en panne, vous pouvez accéder à la fenêtre du terminal ouverte, exécuter docker ps et vous assurer qu'aucun conteneur n'est en cours d'exécution.
- Si vous voyez un conteneur en cours d'exécution, exécutez
docker stop <CONTAINER_ID>
pour l'arrêter.
Conseils pour utiliser le mode local de SageMaker
Si vous utilisez SageMaker pour la première fois, reportez-vous à Former des modèles d’apprentissage automatique. Pour en savoir plus sur le déploiement de modèles pour l'inférence avec SageMaker, reportez-vous à Déployer des modèles pour l'inférence.
Gardez à l’esprit les recommandations suivantes :
- Imprimez les fichiers et dossiers d'entrée et de sortie pour comprendre le chargement des ensembles de données et des modèles.
- Utilisez 1 à 2 époques et de petits ensembles de données pour des tests rapides
- Pré-installer les dépendances dans un Dockerfile pour optimiser la configuration de l'environnement
- Isoler le code de sérialisation dans les points de terminaison pour le débogage
Configurer l'installation de Docker en tant que configuration de cycle de vie
Vous pouvez définir le processus d'installation de Docker en tant que script de configuration du cycle de vie (LCC) pour simplifier la configuration à chaque démarrage d'un nouvel espace SageMaker Studio. Les LCC sont des scripts que SageMaker exécute lors d'événements tels que la création d'espace. Se référer au laboratoire jupyter, Éditeur de codeou SageMaker Studio Classique Configuration LCC (en utilisant docker installer cli comme référence) pour en savoir plus.
Créez et testez des images Docker personnalisées dans les espaces SageMaker Studio
Au cours de cette étape, vous installez Docker dans l'espace d'application JupyterLab (ou Code Editor) et utilisez Docker pour créer, tester et publier des images Docker personnalisées avec les espaces SageMaker Studio. Les espaces sont utilisés pour gérer les besoins en stockage et en ressources de certaines applications SageMaker Studio. Chaque espace a une relation 1:1 avec une instance d'une application. Chaque application prise en charge créée dispose de son propre espace. Pour en savoir plus sur les espaces SageMaker, reportez-vous à Augmentez la productivité sur Amazon SageMaker Studio : présentation des espaces JupyterLab et des outils d'IA générative. Assurez-vous de provisionner un nouvel espace avec au moins 30 Go de stockage pour permettre un stockage suffisant pour les images et les artefacts Docker.
Installer Docker dans un espace
Pour installer le plugin Docker CLI et Docker Compose dans un espace JupyterLab, exécutez les commandes suivantes GitHub repo. SageMaker Studio ne prend en charge que la version 20.10.X de Docker.
Créer des images Docker
Pour confirmer que Docker est installé et fonctionne dans votre espace JupyterLab, exécutez le code suivant :
Pour créer une image Docker personnalisée dans un espace JupyterLab (ou éditeur de code), procédez comme suit :
- Créez un Dockerfile vide :
touch Dockerfile
- Modifiez le Dockerfile avec les commandes suivantes, qui créent une simple image de serveur Web Flask à partir de l'image de base python : 3.10.13-bullseye hébergée sur Docker Hub:
Le code suivant montre le contenu d'un exemple de fichier d'application Flask app.py
:
De plus, vous pouvez mettre à jour les commandes Dockerfile de référence pour inclure les packages et les artefacts de votre choix.
- Créez une image Docker à l'aide du Dockerfile de référence :
docker build --network sagemaker --tag myflaskapp:v1 --file ./Dockerfile .
Comprendre --network
sagemaker dans votre commande docker build, sinon la construction échouera. Les conteneurs ne peuvent pas être exécutés dans le pont par défaut Docker ou dans les réseaux Docker personnalisés. Les conteneurs sont exécutés sur le même réseau que le conteneur d'application SageMaker Studio. Les utilisateurs ne peuvent utiliser sagemaker que pour le nom du réseau.
- Une fois votre build terminé, validez si l'image existe. Re-étiquetez la construction en tant qu'image ECR et poussez. Si vous rencontrez des problèmes d'autorisation, exécutez la commande aws ecr get-login-password… et essayez de réexécuter le push/pull Docker :
Tester les images Docker
L'installation de Docker dans un espace SageMaker Studio JupyterLab (ou éditeur de code) vous permet de tester des images Docker prédéfinies ou personnalisées en tant que conteneurs (ou applications conteneurisées). Dans cette section, nous utilisons la commande docker run pour provisionner des conteneurs Docker dans un espace SageMaker Studio afin de tester les charges de travail conteneurisées telles que les services Web REST et les scripts Python. Effectuez les étapes suivantes :
- Si l'image de test n'existe pas, exécutez docker pull pour extraire l'image sur votre ordinateur local :
sagemaker-user@default:~$ docker pull 123456789012.dkr.ecr.us-east-2.amazonaws.com/myflaskapp:v1
- Si vous rencontrez des problèmes d'authentification, exécutez les commandes suivantes :
aws ecr get-login-password --region region | docker login --username AWS --password-stdin aws_account_id.dkr.ecr.region.amazonaws.com
- Créez un conteneur pour tester votre charge de travail :
docker run --network sagemaker 123456789012.dkr.ecr.us-east-2.amazonaws.com/myflaskapp:v1
Cela lance une nouvelle instance de conteneur et exécute l'application définie à l'aide du ENTRYPOINT de Docker :
- Pour tester si votre point de terminaison Web est actif, accédez à l'URL
https://<sagemaker-space-id>.studio.us-east-2.sagemaker.aws/jupyterlab/default/proxy/6006/
.
Vous devriez voir une réponse JSON similaire à la capture d'écran suivante.
Nettoyer
Pour éviter d'encourir des frais inutiles, supprimez les ressources que vous avez créées lors de l'exécution des exemples de cet article :
- Dans votre domaine SageMaker Studio, choisissez Studio classique dans le volet de navigation, puis choisissez Arrêter.
- Dans votre domaine SageMaker Studio, choisissez laboratoire jupyter or Éditeur de code dans le volet de navigation, choisissez votre application, puis choisissez Arrêter.
Conclusion
Le mode local de SageMaker Studio et la prise en charge de Docker permettent aux développeurs de créer, tester et itérer plus rapidement sur les implémentations ML sans quitter leur espace de travail. En fournissant un accès instantané aux environnements de test et aux résultats, ces fonctionnalités optimisent les flux de travail et améliorent la productivité. Essayez le modèle local de SageMaker Studio et la prise en charge de Docker à l'aide de notre fonctionnalité intégrée rapide, qui vous permet de créer un nouveau domaine pour des utilisateurs uniques en quelques minutes. Partagez vos réflexions dans la section commentaires !
À propos des auteurs
Shweta Singh est chef de produit senior au sein de l'équipe de la plateforme Amazon SageMaker Machine Learning (ML) chez AWS, responsable du SDK SageMaker Python. Elle a occupé plusieurs postes de produits chez Amazon pendant plus de 5 ans. Elle est titulaire d'un baccalauréat ès sciences en génie informatique et d'une maîtrise ès sciences en ingénierie financière, tous deux obtenus à l'Université de New York.
Eitan Sela est un architecte de solutions spécialisé en IA générative et en apprentissage automatique chez AWS. Il travaille avec les clients AWS pour leur fournir des conseils et une assistance technique, les aidant à créer et à exploiter des solutions d'IA générative et d'apprentissage automatique sur AWS. Dans ses temps libres, Eitan aime faire du jogging et lire les derniers articles sur l'apprentissage automatique.
Pranav Murthy est un architecte de solutions spécialisé en IA/ML chez AWS. Il s'efforce d'aider les clients à créer, former, déployer et migrer des charges de travail d'apprentissage automatique (ML) vers SageMaker. Il a auparavant travaillé dans l'industrie des semi-conducteurs en développant de grands modèles de vision par ordinateur (CV) et de traitement du langage naturel (NLP) pour améliorer les processus de semi-conducteurs à l'aide de techniques de pointe de ML. Pendant son temps libre, il aime jouer aux échecs et voyager. Vous pouvez trouver Pranav sur LinkedIn.
Mufaddal Rohawala est ingénieur logiciel chez AWS. Il travaille sur la bibliothèque SageMaker Python SDK pour Amazon SageMaker. Dans ses temps libres, il aime les voyages, les activités de plein air et est un fan de football.
- Contenu propulsé par le référencement et distribution de relations publiques. Soyez amplifié aujourd'hui.
- PlatoData.Network Ai générative verticale. Autonomisez-vous. Accéder ici.
- PlatoAiStream. Intelligence Web3. Connaissance Amplifiée. Accéder ici.
- PlatonESG. Carbone, Technologie propre, Énergie, Environnement, Solaire, La gestion des déchets. Accéder ici.
- PlatoHealth. Veille biotechnologique et essais cliniques. Accéder ici.
- La source: https://aws.amazon.com/blogs/machine-learning/accelerate-ml-workflows-with-amazon-sagemaker-studio-local-mode-and-docker-support/