Modèle de Machine Learning du notebook à la production (Partie 1 - SageMaker Studio)

Dans cette série de deux articles, nous verrons comment construire une application simple d'apprentissage automatique serverless, basée sur Amazon API Gateway, AWS Lambda et un endpoint SageMaker pour la classification des images. Les articles sont orientés débutant et vous proposent une recette simple et très détaillée pour réaliser cette application.

J'utiliserai Amazon SageMaker Studio pour la préparation des données, l'entraînement du modèle, Chalice pour écrire des applications serverless ainsi que Boto3, le kit de développement AWS qui permet de créer, configurer et gérer des services AWS.

Dans cette partie, je vous donnerai un aperçu d'Amazon SageMaker Studio, et vous montrerai comment l'utiliser pour construire et déployer un modèle de Machine Learning.

Amazon SageMaker Studio : Qu’est-ce que c’est ?

Amazon SageMaker est un environnement de développement intégré (IDE), entièrement géré et managé par AWS, pour le Machine Learning, qui offre la possibilité de construire, entraîner, déployer et monitorer rapidement des modèles de Machine Learning (ML).

Pour l'instant, Amazon SageMaker Studio n'est disponible que dans les régions AWS suivantes :

  • US East (Ohio), us-east-2,
  • US East (N. Virginia), us-east-1,
  • US West (N. Oregon), us-west-2,
  • China (Beijing), cn-north-1,
  • China (Ningxia), cn-northwest-1,
  • EU (Ireland), eu-west-1.

SageMaker Studio fournit plusieurs outils dont :

SageMaker Studio Notebooks fournit des notebooks collaboratifs qui peuvent être lancés en moins de deux minutes (plus rapide que le lancement d'une instance de notebook). Vous pouvez partager des notebooks Jupyter avec d'autres et passer rapidement d'une configuration matérielle à une autre sans avoir à gérer une quelconque infrastructure.

SageMaker Experiments vous aide à suivre et à comparer les performances des modèles ML en capturant les paramètres d'entrée, les configurations et les résultats et en les stockant sous forme d'expériences 'experiments'. Vous pouvez ensuite explorer ces expériences et les comparer par une visualisation sur un tableau de bord.

SageMaker Debugger permet de monitorer, d'analyser et de visualiser les processus d’entraînement ML en temps réel, en détectant également les problèmes courants qui pourraient être rencontrés dans les jobs d’entraînement (e.g., un mauvais seed pour les paramètres d’optimisation, problèmes liés au gradient, une fonction de coût qui ne diminue pas, etc.), ainsi que la possibilité d'envoyer des alertes.

SageMaker Model Monitor monitore automatiquement les modèles ML en production et vous alerte lorsque des problèmes de qualité des données apparaissent.

SageMaker Autopilot vous aide à construire automatiquement des modèles ML (prétraitement des données, sélection des algorithmes et réglage des modèles), ainsi qu'à approvisionner l'infrastructure.

Mise en place de l’Amazon SageMaker Studio

Pour commencer à utiliser Amazon SageMaker Studio, vous devez suivre les étapes suivantes :

  1. Connectez-vous à la console de gestion AWS.

  2. À partir du sélecteur de région situé dans le coin supérieur droit de la console, changez votre région en eu-west-1 - Europe (Irland) ou toute région où Amazon SageMaker Studio est disponible.

    0

  3. Dans la console, cliquez sur Services > Amazon SageMaker.

    1

  4. Depuis la console SageMaker, dans la barre latérale gauche, cliquez sur Amazon SageMaker Studio.

    2

  5. Dans le tableau de bord Amazon SageMaker Studio, sous Get started, choisissez Quickstart.

  6. Pour le User name, gardez le nom par défaut ou créez-en un nouveau.

  7. Sélectionnez ensuite un Execution role avec la policy AmazonSageMakerFullAccess, ce rôle IAM donne à Amazon SageMaker la permission d'effectuer des actions dans d'autres services AWS en votre nom.

    3

  8. Si vous n'avez pas de rôle IAM, choisissez Create a new role dans la fenêtre contextuelle Créer un rôle IAM, choisissez Any S3 bucket > Create role.

    4

    SageMaker crée un nouveau rôle IAM avec la AmazonSageMakerFullAccess policy jointe.

    5-5

  9. Cliquez sur Submit.

  10. Après quelques secondes, SageMaker Studio sera prêt à être utilisé.

    6

  11. Une fois qu'il est prêt, lancez SageMaker Studio en cliquant sur le bouton Open Studio qui vous redirigera vers la console Amazon SageMaker Studio.

Vue d’ensemble de l’interface utilisateur Amazon SageMaker Studio

Amazon SageMaker Studio dispose d'une interface web où vous pouvez effectuer tous les processus de Machine Learning, de l'expérimentation à la production.

La capture d'écran suivante montre l'interface utilisateur de SageMaker Studio, il y a un onglet Bienvenue et un onglet Lanceur pour exécuter les tâches courantes, comme le lancement d'un nouveau notebook, l'ouverture d'une session de terminal et la création de fichiers texte ou de Markdown.

7

Dans la barre latérale gauche, vous pouvez faire ce qui suit :

  • Charger des fichiers dans SageMaker Studio,
  • Se connecter aux dépôts Git,
  • Voir les terminaux, kernels et images qui tournent,
  • Rechercher et accéder aux commandes les plus courantes,
  • Afficher une liste d'expériences,
  • Accéder aux métadonnées d'un notebook via la section Advanced Tools,
  • Afficher une liste des endpoints,
  • Afficher une liste des onglets ouverts.

Utilisation des notebooks Amazon SageMaker Studio

Avec Amazon SageMaker Studio, vous pouvez utiliser un Jupyter notebook sans avoir besoin de lancer une instance et d'attendre qu'elle soit lancée. Vous pouvez créer un notebook dans SageMaker Studio depuis le File menu ou depuis le Lanceur Amazon SageMaker Studio, ici nous utiliserons un notebook existant pour déployer un modèle pré-entraîné de PyTorch qui a été entraîné sur un large ensemble de données pour classer des images de chats et de chiens.

Nous utiliserons donc le Launcher SageMaker comme ci-dessous :

  1. Dans l'onglet Launcher, choisissez System Terminal.

    8

  2. Clonez le notebook de classification des images, qui est récupéré dans amazon-sagemaker-examples avec la commande suivante :
    git clone https://github.com/a-shlash/dogs_vs_cats_image_classifier.git

    9

  3. Dans la barre latérale gauche, choisissez l'icône du navigateur de fichiers et naviguez jusqu'à /dogsvscatsimageclassifier/ puis, double-cliquez sur pytorchtorchvisionneostudio.ipynb

    10

Ce notebook contient tout le code et les instructions nécessaires pour importer le modèle ResNet18, créer un endpoint de prédiction puis envoyer des requêtes au endpoint.

SageMaker Studio Notebooks fournit une liste d'images que les utilisateurs peuvent choisir, incluant Data Science, PyTorch, MXNet, TensorFlow, etc.

  1. Pour ouvrir le notebook, double-cliquez dessus, puis une boîte de dialogue apparaît pour sélectionner le Kernel du notebook comme ci-dessous.

    11

Sélectionnez Python 3 (Data Science) > Select. Le kernel Data Science est une image Conda avec les packages et bibliothèques Python les plus utilisés, tels que NumPy et SciKit Learn.

  1. Pour choisir le type d'instance, cliquez sur "Unknown", une autre fenêtre pop-up apparaît qui contient une liste d'instances disponibles pour un lancement rapide avec leur vCPU, GPU et leur mémoire. Choisissez l’instance ml.t3.medium > Save and Continue, comme indiqué dans la capture d'écran suivante.

    12

Vous pouvez commencer par une petite instance puis la modifier à partir du notebook si vous souhaitez augmenter l'instance selon vos besoins.

  1. Vous recevrez une notification vous informant que le processus est en cours.
    13

  2. Quelques minutes plus tard, votre Python3 Jupyter notebook tournera sur l'image SageMaker de Data Science en utilisant une instance avec 2 vCPU et 4 GiB de mémoire.

    14

Votre instance Jupyter notebook est maintenant prête et nous pouvons suivre les instructions fournies pour déployer notre modèle de classification d'images comme endpoint.

Voir le endpoint SageMaker

En complétant l'exemple dans le notebook, vous obtiendrez un endpoint. Dans la barre latérale gauche, cliquez sur l'icône pour afficher le endpoint qui tourne.

Il doit ressembler à TorchVision-RestNet18-Neo-2020-07-15-17-35-33-456-Endpoint.

15

Nettoyage

  1. Depuis le notebook, assurez-vous d'appeler sess.deleteendpoint(endpointname) pour supprimer le endpoint.

  2. Cliquez sur File > Shut down.

    16

Une fenêtre contextuelle de confirmation d'arrêt (Shutdown confirmation) apparaît.

17

Cliquez sur "Shutdown All" pour mettre fin à toutes les images, noyaux, terminaux et au serveur Jupyter en cours d'exécution.

  1. Arrêtez SageMaker Studio :

Depuis le panneau de contrôle d'Amazon SageMaker Studio

  • Choisissez l'utilisateur.

  • Sur la page Détails de l'utilisateur, choisissez Delete user.

    18

  • Dans la fenêtre contextuelle Delete user, cliquez sur Yes, delete Studio, tapez delete pour confirmer puis choisissez Delete.

    19

  1. Lorsque l'utilisateur est supprimé, choisissez Delete Studio.

    20-1

  2. Dans la fenêtre contextuelle Delete Studio, cliquez sur Yes, delete Studio, tapez delete pour confirmer, puis choisissez Delete.

    21

  3. Dans le bucket s3, supprimez tous les fichiers téléchargés par SageMaker Studio.

    22

Conclusion :

À ce stade, nous savons comment créer une instance de notebook Jupyter avec des ressources personnalisées et déployer un modèle ML sur le endpoint SageMaker.