SageMaker, le service de Machine Learning d’AWS

Partager sur linkedin
Partager sur twitter
Partager sur facebook

SageMaker, le service de Machine Learning d’AWS

Aujourd’hui, la data est présente partout et sous toutes les formes, structurées ou non structurées (image, texte, son…). Elle permet aux entreprises de se démarquer stratégiquement et de gagner en efficacité grâce au levier de la data science et de l’IA. Seulement il n’est pas toujours évident de franchir le pas entre un POC (Proof of Concept) et l’industrialisation d’un projet data science, seulement 20% des POC réalisés sont industrialisés.  

L’arrivée à maturité du Cloud facilite grandement le passage d’un projet data science du lab à l’industrialisation, notamment grâce aux nombreux services disponibles sur les différentes plateformes (Amazon AWS, Microsoft Azure, Google GCP…) mais également grâce à l’infrastructure qui est totalement gérée par les éditeurs, ainsi qu’un fonctionnement du coût à l’usage qui rend les solutions cloud attractives. 

Introduction

La plateforme AWS est née dans les années 2000, suite à la mise en place d’un service de e-commerce qui avait pour but d’aider les marchands à développer des sites de e-commerce. Lors du développement de cette solution, Amazon a rencontré des problèmes d’organisation de l’environnement de développement. C’est ainsi que l’idée de proposer différents services pour créer une plateforme de développement centralisée et utilisable par tout le monde voit le jour.   

21 ans plus tard, AWS est aujourd’hui le leader des solutions Cloud (d’après le Gartner). Il propose 200 services avec des fonctionnalités, allant des technologies d’infrastructure (calculs, stockage et bases de données…) aux technologies émergentes comme le machine learning et l’intelligence artificielle avec des services pré-packagés et simples à mettre en place comme les services cognitifs (Amazone Comprehend, Amazone Translate…) et des solutions plus spécifiques comme Amazone Sagemaker dédiée à l’analyse de données. 

Amazone Sagemaker est un service entièrement managé par AWS qui aide les data scientists à préparer, créer, entraîner et déployer rapidement des modèles de machine learning. Sagemaker propose autour de ces 4 points, différentes fonctionnalités : 

  • Préparation de données :

    • Sagemaker Data wrangler, une interface utilisateur « user friendly » pour mettre en place des flux de travail de préparation des données (sélection, nettoyage, exploration et visualisation de la donnée)
    • Sagemaker Feature store, un référentiel entièrement géré par AWS conçu pour centraliser les données préparées, issues du « feature engineering » (extraction de caractéristiques, propriétés et attributs des données brutes) de chaque source de données.
    • Sagemaker Ground truth pour labelliser les données
    • Sagemaker Clarify fournit des rapports d’analyse et des visualisations pour identifier et limiter les biais, et expliquer les prédictions des modèles entrainés.
  • Création des modèles :

    • Sagemaker Studio,un environnement de développement intégré (IDE) dédié au machine learning.
    • Sagemaker Autopilot un outil d’AutoML permettant de créer, entraîner et ajuster automatiquement les meilleurs modèles de machine learning en fonction des données.
    • Sagemaker JumpStart, un ensemble de solutions pour des cas d’usage standards pouvant être déployés
  • Entraînement des modèles :

    • Sagemaker Debugger permet de surveiller en temps réel des métriques d’entraînement pour prévenir le sur-apprentissage par exemple. Il permet également depuis peu de surveiller automatiquement l’utilisation des ressources système et alerter en cas de suralimentation.
    • Bibliothèque d’entrainement distribué permet d’entrainer de grands modèles (deep learning par exemple) plus rapidement en répartissant les données d’entraînement et les modèles volumineux sur différentes instances AWS GPU.
  • Déploiement et gestion :

    • Sagemaker Pipeline, un service d’intégration continue et de livraison continue (CI/CD), qui permet d’orchestrer les flux de travail à chaque étape du processus de machine learning.
    • Sagemaker Model monitorpermet de surveiller les modèles de machine learning déployés en production en monitorant la dérive des modèles et la dérive liée à une différence entre les données entraînées et les données de production.
    • Sagemaker Edge manager permet d’optimiser, sécuriser, surveiller et maintenir les modèles de machine learning sur des appareils périphériques.
    • Sagemaker Neo optimise automatiquement les modèles de ML en ajustant le modèle pour le système d’exploitation et le matériel processeurs sélectionnés

 

Le point de vue des consultants

Amazon Sagemaker est un outil complet, permettant de gérer de bout en bout des projets machine learning. Il s’adresse essentiellement aux spécialistes de la donnée, cependant AWS met à disposition certaines fonctionnalités dans Sagemaker qui rendent le machine learning plus accessible à des profils moins experts, comme Sagemaker Data Wrangler, Sagemaker Autopilote ou bien Sagemaker Pipeline.  

Ces services ont des interfaces « user friendly », simples d’utilisation, qui ne nécessitent pas de compétences en développement et qui simplifient les tâches de préparation des données, d’apprentissage, d’évaluation des modèles et d’orchestration des modèles. Ces services sont également utiles pour les experts en machine learning pour mettre en place rapidement des POC et observer des premiers résultats.  

Pour aller plus loin dans la personnalisation des modèles, AWS propose également des services comme Jupyter Notebook qui permettent aux spécialistes de la donnée d’intégrer ou de développer leur propre code.  

Quels sont les avantages de Sagemaker ? 

  1. Facilité d’industrialisation  

Pour faciliter l’industrialisation des modèles de machine learning, Sagemaker utilise les technologies de conteneurisation Docker. 

Un conteneur docker est une boite qui enveloppe une application avec tout ce dont il a besoin pour l’exécuter comme le système d’exploitation, le code de l’application, les outils système et les librairies. Un conteneur docker est la copie d’une image docker qui elle, est stockée dans un registre de conteneur. Un registre de conteneur est quant à lui une bibliothèque dans laquelle nous avons à la place de livres, des images docker disponible que l’on peut prendre à notre guise et en fonction de notre besoin. Ce qui équivaut à prendre une image et la déployer sur n’importe quelle machine.   

AWS propose un service de registre de conteneur ECR dans lequel sont disponibles de nombreuses images et notamment les images préconçues pour les algorithmes de machine learning intégrés d’AWS. Il est également possible d’intégrer ses propres modèles en créant des images docker qui seront ensuite stockées sur le registre de conteneur ECR. Ces images contiennent le code d’inférence du modèle c’est à dire l’application et son environnement permettant d’appliquer les prédictions d’un modèle pour toutes nouvelles données en entrée.  

Basé sur cette technologie, Sagemaker, propose deux méthodes de déploiement possible : « Offlines » et « Online » via les procédés respectif Sagemaker Batch Transform et Sagemaker Hosting Services. La méthode « Offlines » permet de générer les prédictions d’un modèle pour tout un lot de données en entrée (Batch) en une seule fois. La méthode « Online » elle, permet d’obtenir des prédictions en temps réel en créant un point de terminaison correspondant au point de contact d’une API vers une application client, déployé sur le service d’hébergement Sagemaker.  

En utilisant des conteneurs docker pré-packagé, Sagemaker permet d’entraîner et déployer des modèles rapidement en une ligne de code et à n’importe quelle échelle. Une image docker est comme un service sur étagère, on prend l’image dont on a besoin pour faire l’entrainement de notre modèle puis on prend l’image d’inférence dont on a besoin pour déployer le modèle entraîné et ce sur n’importe quelle machine. 

  1. Modèle pré-packagé AWS et customisation  

Pour faciliter et accélérer le développement de projets machine learning, Sagemaker fournit ses propres algorithmes et les met à disposition via des images docker. Ils proposent également des images Docker pré-packagées pour utiliser les framework de machine learning les plus connus : Apache MXNet, Tensorflow et Pytorch mais également certaines librairies de machine learning comme scikit-learn et SparkML.  

Cependant, il est également possible de personnaliser les conteneurs si ceux existants ne suffisent pas en les agrémentant de librairies ou autre fonctionnalités non supportées par les images Docker pré-packagées. Ou bien, si aucun des conteneur Sagemaker existant ne convient au besoin, il est également possible de créer ses propres conteneurs Docker avec ses propres algorithmes. Ces souplesses, permettent de faciliter la récupération de projets interne On Premise. 

  1. Scalabilitédes modèles

Dans le but de répondre au mieux à la sollicitation des modèles lorsqu’ils sont en production, Sagemaker propose deux solutions pour améliorer les temps de calculs : la mise à l’échelle automatique des modèles et Elastic Inference 

 

La mise à l’échelle automatique « auto-scalling » ajuste dynamiquement le nombre d’instances allouées pour un modèle en réponse à la modification de la charge de travail. Lorsque le modèle est fortement sollicité la mise à l’échelle automatique met à disposition plus d’instance et inversement lorsque la sollicitation des modèles en production diminue. 

 

La fonctionnalité Elastic Inference est quant a elle plutôt utilisée pour les modèles de deep learning puisque ceux-ci demandent en général beaucoup de puissance de calculs. Lorsqu’il est déployé sur une instance CPU pour faire des prédictions en temps réel, il est possible de rencontrer des problèmes de latence lors des périodes de fortes demandes. Plutôt que de devoir déployer de nouveau le modèle sur une instance GPU, ce qui serait plus coûteux, Sagemaker propose d’utiliser la fonctionnalité Elastic Inference ce qui permet d’allouer du GPU a un point de terminaison lorsque celui-ci est fortement sollicité. Ce qui permet de réduire les coûts comparés à l’utilisation d’une instance GPU en continuCependant, cette fonctionnalité n’est pas disponible pour tous les algorithmes pré-packagés d’AWS.  

 

Gérer la scalabilité des modèles permet de répondre au niveau de sollicitation des modèles : forte ou faible en fonction des moments de la journée, mais elle permet également de maîtriser les coûts : plus une instance est puissante et dispose de mémoire, plus elle sera chère. La solliciter à la demande permet de maîtriser les coûts. Cest l’un des avantages du business modèle du cloud.  

 

  1. Monitoring des modèles en production 

Sagemaker utilise plusieurs services AWS pour pouvoir monitorer les modèles lorsqu’ils sont en production. Le monitoring dans Sagemaker n’implique pas seulement les performances des modèles. Un modèle créé dans Sagemaker vit dans un écosystème de machines virtuelles et de points de terminaison. Ils peuvent donc être monitorés selon trois axes différents. Le premier permet de surveiller la performance des modèles, le deuxième vérifie les ressources (CPU/GPU) sur lesquels sont déployés les modèles, et le troisième concerne le monitoring des appels API lorsqu’un modèle est déployé en temps réel via un point de terminaison.

Pour monitorer les modèles en production, Amazon Sagemaker propose depuis fin 2020 une nouvelle fonctionnalité « Model Monitor » qui permet de surveiller les dérives de qualité dans les modèles. Dans ce sens, Model Monitor propose quatre types de monitoring :

  • Monitorer la qualité des données, cela permet de surveiller si les données de production sont statistiquement cohérentes par rapport aux données d’apprentissage. La nature statistique des données comprend, par exemple, pour des variables numériques certaines statistiques descriptives (min, max, médiane…) et des informations sur la distribution et pour des variables catégorielles le nombre de valeurs manquantes et de modalités…
  • Monitorer les performances du modèle en mesurant la précision du modèle au fil de l’eau.
  • Monitorer les biais dans les données à l’aide de Sagemaker Clarify. Cette fonctionnalité permet d’identifier des changements de comportements, ponctuels ou permanents dans les données, dus à des évènements par exemple.
  • Monitorer les biais dans les variables. Model Monitor se base sur Sagemaker Clarify pour détecter des différences entre les données de production et les données d’apprentissage. En effet, il est possible que des règles d’agrégation soient appliquées sur les données d’apprentissage et non sur les données de production ce qui biaise les résultats des modèles une fois qu’ils sont en production.


Pour monitorer les ressources, Sagemaker utilise le service CloudWatch d’AWS. Ce service permet entre autres de traquer les ressources CPU/GPU des machines sur lesquels sont déployés les modèles. Les dashboard Cloudwatch permettent de monitorer aisément ses ressources mais aussi de mettre en place des alarmes pour être notifié lorsqu’une métrique dépasse un seuil que l’on s’est fixé. Avec quel outil fait ont les dashboards ?
 

Le service Amazon CloudTrail, lui, se charge de monitorer les appels API. Ce service permet de mesurer le trafic d’un point de terminaison. Il est donc possible d’identifier les utilisateurs et les comptes qui ont appelé le point de terminaison, l’adresse IP source à partir de laquelle les appels ont été effectués et le moment où ils ont eu lieu.

  1. Gestion de différentes volumétries de données 

Pour faire face à une volumétrie de données conséquentes, Amazon Sagemaker fournit une librairie Apache Spark pour pouvoir intégrer des applications Spark dans Sagemaker, cela équivaut à utiliser Apache Spark MLLib. Par exemple il est possible d’utiliser Apache Spark pour pré-processer les données et ensuite d’utiliser la librairie Sagemaker Spark pour entrainer et héberger des modèles via le package SparkML sur Sagemaker

  1. Utilisation dans un environnement sécurisé 

Pour pouvoir développer des projets de machine learning, Sagemaker met à disposition des notebook Jupyter pour préparer, processer les données, écrire le code pour entraîner les modèles et déployer les modèles dans Sagemaker, tester et valider les modèles. Ce notebook Jupyter tourne sur une « notebook instance ». Une instance est tout simplement une machine virtuelle (EC2). Ces instances de notebook tournent sur le cloud AWS par défaut, cependant, il est possible de créer un environnement sécurisé sur lequel faire tourner ses instances à l’aide du service VPC. Et où est cet environnement du coup ?

AWS met à disposition le service VPC (Virtual Private Cloud) qui permet de mettre en service une section du cloud AWS de manière isolée afin de lancer les ressources AWS de votre choix sur un réseau virtuel que vous définissez. Le service network ACL permet de contrôler le trafic entrant en sortant du sous-réseau et le service Security group permet de contrôler le flux entrant et sortant d’une instance au sein d’un sous réseau.

Prenons un exemple :  

Imaginons qu’un VPC soit un lotissement. Seules les personnes faisant partie de la copropriété auront le code du portail (Virtual private gateway) pour rentrer dans le lotissement. Chaque propriété au sein du lotissement est un sous réseau de mon VPC, une propriété représente une maison, son jardin, son allée…. Toutes les personnes de la copropriété n’auront pas accès à ma propriété, seulement certains amis et les membres de ma famille à qui je donne le code d’accès de mon portail (Network ACL). Chaque chambre de ma maison correspond à mes instances notebook de mes différents projet ML par exemple. Les membres de ma famille auront accès à toutes les chambres et les amis des enfants auront seulement accès à leur chambre respective (Security group).

Conclusion 

Amazon Sagemaker est un outil d’analyse des données offrant de nombreuses fonctionnalités permettant aux spécialistes de la données de créer des modèles de machine learning, de les déployer  et les monitorer facilement grâce aux différentes fonctionnalités offertent par Sagemaker mais également à l’aide des autres services AWS nécessaires pour mener un projet de bout-en-bout.

La force de Sagemaker est de vivre dans l’éco-système d’AWS ce qui lui permet de s’appuyer sur les services annexes pour être ce qu’il est aujourd’hui et pour pouvoir proposer davantage de fonctionnalités. De plus, c’est un outil qui s’adapte vite puisque tous les ans AWS améliore ses solutions en leur apportant de nouvelles fonctionnalités.

Margot Riviere et Sarah Zoubir, consultantes Data.

 

En réagissant à cet article, vous nous permettez d'affiner les contenus que nous publions ici !

  • Awesome (4)
  • Useful (2)
  • Interesting (1)
  • Boring (0)
  • Sucks (0)

Si cet article vous a plu, n’hésitez pas à le partager via

Partager sur linkedin
Partager sur twitter
Partager sur facebook

Ces articles peuvent également vous intéresser