Commencez avec la distribution open-source Amazon SageMaker

Start with Amazon SageMaker open-source distribution.

Les data scientists ont besoin d’un environnement cohérent et reproductible pour les charges de travail d’apprentissage automatique (ML) et de science des données qui permettent de gérer les dépendances et qui est sécurisé. AWS Deep Learning Containers fournit déjà des images Docker pré-construites pour l’entraînement et le service des modèles dans des frameworks courants tels que TensorFlow, PyTorch et MXNet. Pour améliorer cette expérience, nous avons annoncé une version bêta publique de la distribution open-source SageMaker à la conférence JupyterCon 2023. Cela fournit une expérience ML de bout en bout unifiée pour les développeurs de ML de différents niveaux d’expertise. Les développeurs n’ont plus besoin de passer d’un conteneur de framework à un autre pour l’expérimentation, ou lorsqu’ils passent des environnements locaux JupyterLab et des notebooks SageMaker à des travaux de production sur SageMaker. La distribution open-source SageMaker prend en charge les packages et les bibliothèques les plus courants pour la science des données, le ML et la visualisation, tels que TensorFlow, PyTorch, Scikit-learn, Pandas et Matplotlib. Vous pouvez commencer à utiliser le conteneur à partir de la galerie publique Amazon ECR dès aujourd’hui.

Dans cet article, nous vous montrons comment vous pouvez utiliser la distribution open-source SageMaker pour expérimenter rapidement sur votre environnement local et les promouvoir facilement pour des travaux sur SageMaker.

Aperçu de la solution

Pour notre exemple, nous présentons l’entraînement d’un modèle de classification d’images à l’aide de PyTorch. Nous utilisons l’ensemble de données KMNIST disponible publiquement sur PyTorch. Nous entraînons un modèle de réseau neuronal, testons les performances du modèle et imprimons enfin la perte d’entraînement et de test. Le notebook complet pour cet exemple est disponible dans le référentiel des exemples SageMaker Studio Lab. Nous commençons l’expérimentation sur un ordinateur portable local en utilisant la distribution open-source, le déplaçons vers Amazon SageMaker Studio pour utiliser une instance plus grande, puis planifions le notebook en tant que travail de notebook.

Conditions préalables

Vous avez besoin des prérequis suivants:

  • Docker installé.
  • Un compte AWS actif avec des autorisations d’administrateur.
  • Un environnement avec l’interface de ligne de commande AWS (AWS CLI) et Docker installé.
  • Un domaine SageMaker existant. Pour créer un domaine, reportez-vous à Onboard to Amazon SageMaker Domain.

Configurer votre environnement local

Vous pouvez commencer à utiliser la distribution open-source directement sur votre ordinateur portable local. Pour démarrer JupyterLab, exécutez les commandes suivantes dans votre terminal:

export ECR_IMAGE_ID='public.ecr.aws/sagemaker/sagemaker-distribution:latest-cpu'
docker run -it \
    -p 8888:8888 \
    --user `id -u`:`id -g` \
    -v `pwd`/sample-notebooks:/home/sagemaker-user/sample-notebooks \
    $ECR_IMAGE_ID jupyter-lab --no-browser --ip=0.0.0.0

Vous pouvez remplacer ECR_IMAGE_ID par l’un des tags d’image disponibles dans la galerie publique Amazon ECR, ou choisir le tag latest-gpu si vous utilisez une machine qui prend en charge le GPU.

Cette commande démarrera JupyterLab et fournira une URL sur le terminal, comme http://127.0.0.1:8888/lab?token= <token>. Copiez le lien et entrez-le dans votre navigateur préféré pour démarrer JupyterLab.

Configurer Studio

Studio est un environnement de développement intégré (IDE) de bout en bout pour le ML qui permet aux développeurs et aux scientifiques des données de construire, d’entraîner, de déployer et de surveiller des modèles ML à grande échelle. Studio fournit une liste étendue d’images de première partie avec des frameworks et des packages courants, tels que Data Science, TensorFlow, PyTorch et Spark. Ces images rendent simple pour les scientifiques des données de commencer avec le ML en choisissant simplement un framework et un type d’instance de leur choix pour le calcul.

Vous pouvez maintenant utiliser la distribution open-source SageMaker sur Studio en utilisant la fonctionnalité bring your own image de Studio. Pour ajouter la distribution open-source à votre domaine SageMaker, suivez les étapes suivantes:

  1. Ajoutez la distribution open-source au référentiel Amazon Elastic Container Registry (Amazon ECR) de votre compte en exécutant les commandes suivantes dans votre terminal:

    # Utilisez les tags latest-cpu ou latest-gpu en fonction de vos besoins
    export ECR_GALLERY_IMAGE_ID='sagemaker-distribution:latest-cpu'
    export SAGEMAKER_IMAGE_NAME='sagemaker-runtime'
    export SAGEMAKER_STUDIO_DOMAIN_ID='d-xxxx'
    export SAGEMAKER_STUDIO_IAM_ROLE_ARN='<studio-default-execution-role-arn>'
    
    docker pull public.ecr.aws/sagemaker/$ECR_GALLERY_IMAGE_ID
    
    export ECR_PRIVATE_REPOSITORY_NAME='sm-distribution'
    export ECR_IMAGE_TAG='sagemaker-runtime-cpu'
    export AWS_ACCOUNT_ID='0123456789'
    export AWS_ECR_REPOSITORY_REGION='us-east-1'
    
    # créer un référentiel
    aws --region ${AWS_ECR_REPOSITORY_REGION} ecr create-repository --repository-name $ECR_PRIVATE_REPOSITORY_NAME
    aws --region ${AWS_ECR_REPOSITORY_REGION} ecr get-login-password | docker login --username AWS --password-stdin ${AWS_ACCOUNT_ID}.dkr.ecr.${AWS_ECR_REPOSITORY_REGION}.amazonaws.com
    export ECR_IMAGE_URI=$AWS_ACCOUNT_ID.dkr.ecr.$AWS_ECR_REPOSITORY_REGION.amazonaws.com/$ECR_PRIVATE_REPOSITORY_NAME:$ECR_IMAGE_TAG
    
    # Tag
    docker tag public.ecr.aws/sagemaker/$ECR_GALLERY_IMAGE_ID $ECR_IMAGE_URI
    # Pousser l'image vers votre référentiel privé
    docker push $ECR_IMAGE_URI
  2. Créez une image SageMaker et attachez l’image au domaine Studio:

    # Créer une image SageMaker
    aws sagemaker create-image \
        --image-name $SAGEMAKER_IMAGE_NAME \
        --role-arn $SAGEMAKER_STUDIO_IAM_ROLE_ARN
    # Créer une version d'image SageMaker.
    aws sagemaker create-image-version \
        --image-name $SAGEMAKER_IMAGE_NAME \
        --base-image $ECR_IMAGE_URI
    
    # En option, décrire la version de l'image pour s'assurer qu'elle est créée avec succès
    aws sagemaker describe-image-version \
        --image-name $SAGEMAKER_IMAGE_NAME \
        --version-number 1
    
    # Créer le fichier de configuration d'image d'application
    cat > /tmp/app-config.json << EOF
    {
       "AppImageConfigName": "app-image-config-$SAGEMAKER_IMAGE_NAME",
       "KernelGatewayImageConfig": { 
          "FileSystemConfig": { 
             "DefaultGid": 100,
             "DefaultUid": 1000,
             "MountPath": "/home/sagemaker-user"
          },
          "KernelSpecs": [ 
             { 
                "DisplayName": "Python 3 (ipykernel)",
                "Name": "python3"
             }
          ]
       }
    }
    EOF
    
    # Créer une configuration d'image d'application Amazon SageMaker.
    aws sagemaker create-app-image-config \
        --cli-input-json file:///tmp/app-config.json
    
    # Créer un fichier de paramètres utilisateur par défaut
    # Mettez à jour le fichier avec vos paramètres existants si vous avez des images personnalisées supplémentaires
    cat > /tmp/default-user-settings.json << EOF
    {
        "DefaultUserSettings": {
            "KernelGatewayAppSettings": {
                "CustomImages": [
                    {
                        "ImageName": "$SAGEMAKER_IMAGE_NAME",
                        "AppImageConfigName": "app-image-config-$SAGEMAKER_IMAGE_NAME",
                        "ImageVersionNumber": 1
                    }
                ]
            }
        }
    }
    EOF
    
    # Mettre à jour le domaine Amazon SageMaker avec les nouveaux paramètres utilisateur par défaut.
    aws sagemaker update-domain \
        --domain-id $SAGEMAKER_STUDIO_DOMAIN_ID \
        --cli-input-json file:///tmp/default-user-settings.json
  3. Sur la console SageMaker, lancez Studio en choisissant votre domaine et votre profil utilisateur existant.

  4. En option, redémarrez Studio en suivant les étapes dans Shut down and update SageMaker Studio.

Télécharger le notebook

Téléchargez le notebook d’exemple localement depuis le repo GitHub.

Ouvrez le notebook dans votre IDE préféré et ajoutez une cellule au début du notebook pour installer torchsummary. Le package torchsummary ne fait pas partie de la distribution et l’installation de celui-ci sur le notebook garantira que le notebook s’exécute de bout en bout. Nous recommandons d’utiliser conda ou micromamba pour gérer les environnements et les dépendances. Ajoutez la cellule suivante au notebook et enregistrez le notebook :

%pip install torchsummary

Expérimentez sur le notebook local

Téléchargez le notebook sur l’interface JupyterLab que vous avez lancée en choisissant l’icône de téléchargement comme indiqué dans la capture d’écran suivante.

Lorsqu’il est téléchargé, lancez le notebook cv-kmnist.ipynb. Vous pouvez commencer à exécuter les cellules immédiatement, sans avoir à installer des dépendances telles que torch, matplotlib, ou ipywidgets.

Si vous avez suivi les étapes précédentes, vous pouvez voir que vous pouvez utiliser la distribution localement depuis votre ordinateur portable. À l’étape suivante, nous utilisons la même distribution sur Studio pour profiter des fonctionnalités de Studio.

Déplacez l’expérimentation vers Studio (facultatif)

Optionnellement, promouvons l’expérimentation vers Studio. L’un des avantages de Studio est que les ressources de calcul sous-jacentes sont entièrement élastiques, vous pouvez donc facilement ajuster les ressources disponibles à la hausse ou à la baisse, et les changements sont automatiquement pris en compte en arrière-plan sans interrompre votre travail. Si vous voulez exécuter le même notebook que précédemment sur un jeu de données et une instance de calcul plus importants, vous pouvez migrer vers Studio.

Naviguez vers l’interface utilisateur de Studio que vous avez lancée précédemment et choisissez l’icône de téléchargement pour télécharger le notebook.

Après avoir lancé le notebook, vous serez invité à choisir l’image et le type d’instance. Sur le lanceur de noyau, choisissez sagemaker-runtime comme image et une instance ml.t3.medium, puis choisissez Sélectionner.

Vous pouvez maintenant exécuter le notebook de bout en bout sans avoir besoin de modifier le notebook depuis votre environnement de développement local vers les notebooks de Studio !

Planifiez le notebook en tant que tâche

Lorsque vous avez terminé vos expérimentations, SageMaker propose plusieurs options pour mettre en production votre notebook, telles que les tâches de formation et les pipelines SageMaker. Une telle option consiste à exécuter directement le notebook lui-même en tant que tâche de notebook planifiée et non interactive en utilisant les tâches de notebook SageMaker. Par exemple, vous voudrez peut-être réentraîner votre modèle périodiquement ou obtenir des inférences sur les données entrantes périodiquement et générer des rapports à consommer par vos parties prenantes.

À partir de Studio, choisissez l’icône de tâche de notebook pour lancer la tâche de notebook. Si vous avez installé l’extension des tâches de notebook localement sur votre ordinateur portable, vous pouvez également planifier le notebook directement depuis votre ordinateur portable. Consultez le Guide d’installation pour configurer l’extension des tâches de notebook localement.

La tâche de notebook utilise automatiquement l’URI de l’image ECR de la distribution open-source, vous pouvez donc directement planifier la tâche de notebook.

Choisissez Exécuter selon un calendrier, choisissez un calendrier, par exemple tous les samedis de la semaine, et choisissez Créer. Vous pouvez également choisir Exécuter maintenant si vous souhaitez voir les résultats immédiatement.

Lorsque le premier travail de notebook est terminé, vous pouvez visualiser les sorties du notebook directement depuis l’interface utilisateur Studio en choisissant Notebook sous Fichiers de sortie.

Considérations supplémentaires

En plus d’utiliser l’image ECR disponible publiquement directement pour les charges de travail ML, la distribution open-source offre les avantages suivants :

  • Le Dockerfile utilisé pour construire l’image est disponible publiquement pour que les développeurs puissent l’explorer et construire leurs propres images. Vous pouvez également hériter de cette image en tant qu’image de base et installer vos bibliothèques personnalisées pour avoir un environnement reproductible.
  • Si vous n’êtes pas habitué à Docker et préférez utiliser des environnements Conda sur votre environnement JupyterLab, nous fournissons un fichier env.out pour chacune des versions publiées. Vous pouvez utiliser les instructions dans le fichier pour créer votre propre environnement Conda qui imitera le même environnement. Par exemple, voir le fichier d’environnement CPU cpu.env.out.
  • Vous pouvez utiliser les versions GPU de l’image pour exécuter des charges de travail compatibles avec les GPU telles que l’apprentissage en profondeur et le traitement d’image.

Nettoyage

Suivez les étapes suivantes pour nettoyer vos ressources :

  1. Si vous avez planifié l’exécution de votre notebook selon un calendrier, mettez en pause ou supprimez le calendrier dans l’onglet Définitions de travaux de notebook pour éviter de payer pour les travaux futurs.
  2. Arrêtez toutes les applications Studio pour éviter de payer pour l’utilisation inutilisée de calcul. Voir la page Arrêter et mettre à jour les applications Studio pour les instructions.
  3. Facultativement, supprimez le domaine Studio si vous en avez créé un.

Conclusion

Maintenir un environnement reproductible sur différentes étapes du cycle de vie ML est l’un des plus grands défis pour les scientifiques de données et les développeurs. Avec la distribution open-source de SageMaker, nous fournissons une image avec des versions mutuellement compatibles des cadres et des packages ML les plus courants. La distribution est également open source, offrant aux développeurs une transparence quant aux packages et aux processus de construction, ce qui facilite la personnalisation de leur propre distribution.

Dans ce post, nous vous avons montré comment utiliser la distribution sur votre environnement local, sur Studio et en tant que conteneur pour vos travaux de formation. Cette fonctionnalité est actuellement en version bêta publique. Nous vous encourageons à l’essayer et à partager vos commentaires et problèmes sur le dépôt GitHub public !

We will continue to update IPGirl; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

AI

L'avenir de l'apprentissage automatique tendances émergentes et opportunités

L'apprentissage automatique est apparu comme une force transformative dans tous les secteurs, révolutionnant notre ap...

AI

Meilleures newsletters sur l'Intelligence Artificielle (IA) en 2023

Une variété de bulletins d'information sur l'IA ont émergé dans le domaine de l'intelligence artificielle (IA) pour r...

AI

Explorer l'interaction entre l'intelligence artificielle et l'intelligence humaine

Cet article met en évidence ce que l'humanité a à gagner lorsque l'intelligence artificielle et l'intelligence humain...

Technologie de l'IA

Conseils d'investissement en Intelligence Artificielle - Avantages et Inconvénients

Nous ne pouvons pas envisager de vivre dans le futur sans technologie. Nous vérifions nos téléphones dès le matin pou...

AI

Le pouvoir de l'IA dans le domaine de la santé révolutionner les soins aux patients et les diagnostics

Dans cet article, nous explorerons les orientations futures de l'IA dans le domaine de la santé, ainsi que ses applic...

AI

Commencer avec le Web Scraping en Python pour les LLM

Se lancer dans le domaine du web scraping peut être une véritable aventure. En tant que débutant, vous pourriez vous ...