Workshop Machine Learning AWS
Quel est le point commun entre un turc mécanique, Alan Turing et la conférence de Dartmouth en 1956 ? Réponse: ce sont les fondements de l’intelligence artificielle telle que nous la connaissons aujourd’hui. En effet, tandis que le turc mécanique était l’un des premiers automates, qu’Alan Turing développait le premier ordinateur, les conférenciers de Dartmouth posaient les bases des théories englobant l’intelligence artificielle et les réseaux de neurones.
Ce sont avec ces rappels historiques que nous abordons cette journée de Workshop sous le thème « IA / Machine Learning » proposée par Amazon Web Services. Ce bootcamp se focalise sur « l’Art du Possible » des services ML sur AWS : modèle de déploiement ML, automatisation, maintenance.
Commençons par dégrossir ces termes techniques. L’Intelligence artificielle est le socle qui englobe et le Machine Learning et le Deep learning. C’est « l’ensemble des théories et des techniques mises en œuvre en vue de réaliser des machines capables de simuler l’intelligence ». Le Machine Learning regroupe les méthodes de calculs qui utilisent des algorithmes apprenants, pour construire des modèles à partir de données (modèle supervisé, non-supervisé, etc…). Enfin, la dernière brique est le Deep Learning, qui consiste à utiliser des algorithmes suivant le même paradigme que les réseaux de neurones (de multiples couches de neurones qui apprennent successivement des représentations complexes).
Cette technologie permet de mettre en place de nouveaux outils de classification de la donnée, à notre époque où cette dernière est présente partout et en grand volume. De nouveaux outils de traitement permettent de nouveaux usages : de la régression (prédire un nombre), de la classification ou encore du clustering (regrouper des consommateurs dans des catégories par exemple).
Concrètement, cela se traduit par des avancées dans le domaine de la génomique, la reconnaissance vocale ou du traitement automatique de langage naturel (plus communément appelé NPL).
Pour rentrer un peu plus profondément dans le sujet, la routine d’un “use case” de Machine Learning procède comme suit:
- Une phase de Data Selection.
- Préparation de cette data.
- Sélection du modèle le plus approprié.
- Entraînement du modèle avec les data sélectionnées et mises au propre.
- Evaluation du modèle (savoir si l’analyse a été pertinente ou non, si la classification a bien été faite)
- Déploiement, avec la prédiction comme résultat final par exemple.
AWS nous fournit une explication détaillée de deux grandes catégories de Machine Learning, qui sont récurrentes à de nombreux modèles: l’apprentissage supervisé et le non-supervisé :
- L’apprentissage supervisé: il y a une intervention humaine requise, ainsi qu’une validation de sa part. On pourrait citer un logiciel de détection de fraude. Le modèle doit être entrainé et corrigé par une main humaine. On s’en sert surtout pour de la régression et de la classification.
- L’apprentissage non-supervisé: la main de l’homme n’est plus nécessaire. Ce modèle est très utile pour faire de la clusterisation: auto-classification de documents, speech recognition (via des réseaux de neurones) par exemple. Fait surprenant, c’est un modèle non supervisé, AlphaGo, qui a vaincu le meilleur joueur de Go du monde. On ne demandait pas à l’algorithme quel coup il devait jouer en avance. Il apprenait par lui-même.
Petit point sur les réseaux de neurones, car c’est un sujet souvent abordé. Même si ne nous ne nous focaliserons pas outre-mesure dessus, car il faudrait beaucoup de temps pour expliquer leur fonctionnement en détail. Sachez seulement que c’est une méthode extrêmement utile pour faire du clustering (entre autre) car c’est une technique permettant de résoudre des problématiques non linéairement séparables. L’algorithme va re-découper les données de manière à ce qu’on puisse effectuer une séparation et donc classer les données (voici un blog qui est plutot pertinent si jamais le sujet vous intéresse et que vous êtes débutant en la matière ).
Reprenons sur les services managés par AWS. En effet, le slogan d’AWS sur ce sujet est le suivant « put machine learning in the hands of every developer and data scientist ». À ce titre, on doit reconnaître que beaucoup de choses sont mises en place pour faciliter la vie des ingénieurs travaillant sur ces sujets. Comme le montre le diagramme ci-dessous, le nombre de services managés ne cesse de s’enrichir (de nombreux services ont été ajouté lors de AWS re: Invent 2018, consulter la liste ici) :
La stack Machine Learning d’AWS se décompose donc en 3 groupes: Application services, Platform Services, Frameworks & Infrastructure. Nous avons eu le droit à une démonstration pour une grande partie des services des deux premiers groupes, ainsi qu’un environnement Jupyter fonctionnel (application web permettant de créer et lancer des applications sans avoir à créer son propre environnement) où nous pouvions lancer nos propres scripts et avoir du code sous les yeux pour expérimenter. En plus de l’aspect pédagogique et pratique (avoir le code fonctionnel avec un “use case” concret), nous avons eu accès à des comptes tests AWS pour nous familiariser avec les outils.
Commençons par la catégorie Application Services: ce sont des services entièrement managés par AWS. On peut passer soit par le SDK d’AWS avec le langage souhaité, soit par un appel API en ligne de commande, soit par la console AWS directement. Le service se charge du reste. Les modèles sont tous déjà pré-entrainés cependant. Ces services sont conçus pour être utilisés très facilement et rapidement.
- Rekognition est un service dédié à l’analyse de la photo et vous renvoie, sous format json, les résultats de son analyse. À savoir que ce service propose plusieurs fonctionnalités: Object and scene detection, image moderation (reconnaître les contenus pouvant choquer), facial analysis, celebrity recognition (oui, oui, un service pour reconnaître les stars qui voudraient se cacher des méchants paparazzis), face comparaison et text in image (analyser du texte compris sur une photo).
- Polly s’occupe de lire du texte. Vous lui donnez un texte, choisissez la langue et la région, et vous pourrez télécharger un MP3 avec votre fichier son.
- Transcribe analyse les fichiers audio qui contiennent des données vocales et utilise des techniques d’apprentissage automatique pour transcrire ces données en texte. Vous parlez, le service le transcrit sous format texte.
- Lex permet de construire des assistants conversationnels, que cela soit par la voix ou par le texte. Un des usages les plus connus est celui des chatbots.
- Translate est le service de traduction proposé par AWS.
- Comprehend est le dernier outil de cette catégorie. C’est un service de traitement du langage naturel qui exploite l’apprentissage automatique pour identifier des informations et des relations dans un texte. En résumé, vous donnez un texte à ce service, et il va l’analyser, en sortir les mots clefs et le sens du document, et finalement classer les thèmes dans un recueil de texte. C’est le service de natural language processing par excellence chez AWS.
Poursuivons avec la catégorie Platform Services. Dans ce Workshop, nous n’avons abordé « que » AWS DeepLens et Amazon SageMaker, je me concentrerais donc sur ces deux services:
- AWS DeepLens est le seul service de hardware exposé durant ce workshop. C’est une caméra embarquée avec un système d’apprentissage profond directement placé dans un boitier sous la caméra. C’est un usage un peu particulier, il est notamment utilisé pour des voitures autonomes. En effet, pour des questions de sécurité et de rapidité, la technologie d’analyse de l’image est directement relié à la caméra, et non pas hébergé par un serveur sur le cloud. Il est facile de développer sur ce système, ce service étant pensé pour être prêt à l’usage et entrainé rapidement.
- Amazon SageMaker est le service qui « fournit le moyen le plus simple et le plus rapide, pour les data scientist et les développeurs, de produire des modèles de Machine Learning ». Durant le workshop, nous utiliserons une nouvelle fois Jupyter et son système de notebook afin de lancer un par un les scripts nécessaire au lancement du service. En effet, le service de SageMaker permet de lancer des instances entièrement managées (fonctionnant immédiatement et entièrement sur le cloud). Le service fonctionne en 3 phases:
- La première est la phase de construction (build): c’est la phase de set-up, durant laquelle divers outils vont être mis en place pour pouvoir mener à bien la mission de Machine Learning. L’environnement est géré par les notebook Jupyter, des modèles de ML sont déjà pré-installés. De plus, SageMaker utilise aussi des librairies de Machine Learning connues (Tensorflow, Apache MxNet, etc…) pour des usages plus personnalisés. Enfin, on peut même utiliser son propre framework si besoin. La phase de build est vraiment modulable.
- La seconde est la phase d’entraînement (train). SageMaker est un puissant outil qui va faire de l’entraînement distribué: vous pouvez entraîner votre modèle sur plusieurs instances (très scalable donc). L’entraînement est entièrement géré par SageMaker une fois le modèle choisie.
- La dernière phase est celle de déploiement (deploy): on peut finalement utiliser les résultats donnés par le modèle qui a été entraîné. De la prédiction en temps réel par exemple.
En conclusion, ce workshop s’adresse, je pense, principalement à des gens souhaitant découvrir ce qu’on pourrait appeler le MLaaS (Machine Learning as a Service) chez AWS. En effet, le workshop ne traite pas du Machine Learning en tant que tel, il ne rentre pas en profondeur dans la partie algorithmique. Les data scientistes aguerris resteront peut-être un peu sur leur faim. Mais je pense que pour la majorité des développeurs / data engineers s’intéressant à ce sujet, cette journée de formation fait un bel état de l’art de tous les outils à dispositions chez AWS. Elle présente aussi de nombreux usages métiers, ainsi que des exemples d’entreprises utilisant déjà ses services. Enfin, même si la partie “mise en pratique” avec du Python est courte et rapide, elle permet de mieux appréhender la manière d’utiliser ces outils.
Pour découvrir et approfondir le sujet, AWS propose plus de 30 cours en ligne et des labs accessibles gratuitement :