AWS re:Invent, focus sur le Machine Learning et Sagemaker
Nous continuons notre analyse des annonces du re:Invent après l’article consacré aux services de sécurité sur le Cloud AWS. Place au machine learning : cette année nous avons senti une vraie volonté d’AWS de se positionner largement sur ce sujet. Que ce soit par le nombre de conférences qui étaient consacrées au sujet, par les annonces de nouveaux services, ou encore l’existence d’un AI Summit, l’IA et le Machine Learning étaient à l’honneur lors du AWS re:Invent 2018.
Rappel des trois couches du Machine Learning sur AWS
Sur le Cloud AWS, l’Intelligence Artificielle et le Machine Learning peuvent être utilisés au travers de trois couches de service :
Pour l’expert en Machine Learning, désirant contrôler tous les aspects de son projet ML, Amazon fournit de l’infrastructure (des instances EC2 spécialisées pour ces workloads) et les framework les plus classiques, avec un effort notable pour améliorer et optimiser les interactions entre framework et infrastructure.
Pour celui qui n’a pas la moindre idée de ce qu’est le Machine Learning, mais qui souhaite quand même profiter de ses applications les plus courantes, AWS fournit des services applicatifs managés. Reconnaissance d’image, lecture de texte, traductions et d’autres services font partie de la famille.
Enfin, pour tout ceux dont le besoin ou les connaissances se situent entre ces deux mondes, AWS fournit SageMaker. Le novice le trouvera difficile à prendre en main, l’expert le trouvera trop rigide pour ses besoins, SageMaker fait le pont entre les deux autres couches de service et semble avoir l’ambition de devenir un framework universel.
N’étant pas un DataScientist qualifié, je me limiterais ici à ne parler que des deux premières couches : Application & SageMaker.
Services entièrement managés : Forecast / Personalize / Textract
Ces services entièrement managés par AWS ne nécessitent aucune connaissance en ML pour être utilisés. Trois nouveaux services, Personalize, Forecast, et Textract, ont récemment été ajoutés. Tour d’horizon des services proposés :
- Rekognition : ce service d’analyse d’image et de vidéos permet de détecter des objets, des situations, de faire de la modération d’image, l’analyse d’un visage (age, sexe, humeur,…), ou de la détection de visage au sein d’une photo de groupe. Exemple d’analyse faciale avec ma photo, testée en 15 secondes directement via la console AWS:
- Polly: service de text to speech, Polly lit du texte avec un effort sur le rythme de la voix et le respect de la ponctuation pour paraître le plus naturel possible. Le français est supporté et trois voix sont proposées (deux féminines et une masculine). Polly peut être testé directement sur la console AWS.
- Transcribe: service de speech to text, pour convertir des fichiers audio en texte. Parmi les langues supportées, le français est disponible depuis décembre 2018, nous vous en reparlerons donc très prochainement.
- Lex: est un service permettant de construire des chatbots (seul l’anglais est supporté pour l’instant). On peut, par exemple, créer un bot qui prend une commande auprès d’un client en guidant celui-ci dans un processus d’achat.
- Translate: service de traduction automatique. Petite comparaison de ses performances avec un extrait d’anglais… :
Sur cet exemple particulier, le résultat est mitigé : Google traduction livre une traduction plus naturelle sur la première partie de la phrase, là ou Amazon Translate est plus littéral, dans les deux cas le résultat n’est pas encore parfait.
- Comprehend: pour faire du Natural Language Processing. Le service analyse un texte et en donne la structure syntaxique : quel mot est un verbe, un nom, un adjectif. Il essaie de deviner le sentiment général qui se dégage du texte, de reconnaître les noms d’organisations, les mots faisant référence à des quantités… On peut aisément tester le service depuis la console AWS, mais les données qui ressortent sont trop nombreuses pour vous offrir un petit screenshot… Vous pouvez le tester en quelques secondes dans votre compte AWS et il supporte le français !
Et les trois nouveaux venus de cette famille de service:
Personalize: vous avez peut-être besoin d’un moteur de recommandation, mais malheureusement vous n’avez pas de datascientist sous la main. Avec Personalize, vous n’avez besoin que d’avoir les données. Le principe de Personalize est d’analyser des “associations” entre des “users” et des “items” pour en tirer des recommandations. Vous devez donc obligatoirement, au minimum, lui donner un fichier (NB: j’écris fichier par souci de simplicité, mais on parle en réalité de “schéma” décrivant les données qu’on passe à Personalize) contenant les associations entre “users” et “items” avec les dates de ces associations.
Vos données de départ sont donc au minimum un CSV contenant 3 colonnes: [USER_ID, ITEM_ID, TIMESTAMP]. Vous pouvez optionnellement ajouter une colonne EVENT_TYPE et EVENT_VALUE pour signaler des pondérations entre les associations de votre fichier (si l’event est un “clic”, est-ce que le clic mène à 1€ d’achat ou 100€ ? Cela n’est pas la même valeur pour vous). Vous pouvez encore améliorer les prédictions de Personalize en fournissant des données supplémentaires sur vos “users” et/ou “items”. Cela devra être fait dans des fichiers (schémas) séparés:
- Users, dans lequel on retrouve la colonne USER_ID et d’autres informations pertinentes pour le modèle (âge ? genre ? code postal ?)
- Items, dans lequel on retrouve la colonne ITEM_ID et d’autres informations pertinentes pour le modèle (prix ? catégorie ?)
Forecast : dans tout type de métier, nous aimerions pouvoir prévoir précisément le futur… mais ce n’est pas possible. Néanmoins, on peut toujours analyser les données passées pour tenter de faire des prédictions, même si elles sont approximatives. AWS fournit le service Forecast pour répondre à ce besoin. C’est un service spécialisé dans l’analyse et la prédiction de “time-series”: des séries de données indexées dans le temps (les ventes quotidiennes d’un produit sur l’année passée par exemple). Pour l’instant, il n’est pas facile d’estimer les performances du service car nous n’y avons pas encore eu accès et il existe peu de retours d’expérience. Quelques aspects semblent néanmoins prometteurs:
Forecast semble capable d’analyser non seulement les données sur lesquelles vous voulez faire des prédictions, mais également de le faire en corrélation avec d’autres données qui pourraient les impacter. Par exemple, les ventes que vous cherchez à prédire sont peut-être influencées par la météo ou les vacances scolaires.
Autre point intéressant, Forecast ne repose pas sur un modèle de ML unique, il est capable d’en tester plusieurs (il fait ça tout seul) et de déterminer celui qui fonctionne le mieux sur vos données. On peut donc espérer qu’il saura s’adapter à une grande variété de jeux de données.
Textract : un service d’Optical Character Recognition (OCR)… encore un ? On sait pourtant faire ça depuis des années… Oui mais ! Textract ajoute en amont de la pure phase OCR une couche d’intelligence qui lui permet de comprendre la structure du document. Est-ce une page de journal, organisée en colonnes ? Combien de colonnes ? Y a-t-il des données sous forme de tableaux ? Est-ce qu’il a affaire à un formulaire ? Son habileté à répondre à ces questions permet à Textract d’offrir des résultats plus cohérents que les algorithmes OCR classiques en conservant la structure du document d’origine au lieu de faire une lecture bête et méchante, de gauche à droite, de tous les caractères qui le compose.
Amazon SageMaker
Construire un modèle de Machine Learning est long et implique de nombreuses étapes :
- Obtenir les données d’entraînement
- Préparer les données d’entraînement, c’est à dire les “labelliser”, un joli terme pour désigner l’étape consistant à passer sur toutes vos données d’entraînement pour donner la bonne réponse. Exemple basique: vous voulez apprendre à votre modèle à reconnaître un tank sur une image. Sur chacune de vos centaines ou milliers d’images, vous devez indiquer s’il y a un tank ou pas… Fastidieux !
- Choisir un des modèles de ML les plus courants, en espérant que ça soit le bon, faire le tuning du modèle. Cette étape de tuning relève encore souvent du pifomètre, même avec de l’expérience.
- Créer et configurer l’environnement pour faire l’entraînement, c’est à dire obtenir la puissance de calcul dont vous avez besoin.
- Entraîner le modèle, constater que le résultat n’est pas optimum, changer le tuning du modèle, recommencer.
- Déployer votre modèle chèrement acquis en production et faire en sorte que cette production soit scalable.
On le comprend assez vite, c’est une affaire complexe, longue et impliquant différentes équipes venant de différents mondes (des datascientists, des ops, des devs, des DevOps). Bref c’est l’enfer.
SageMaker existe pour faciliter ce processus, avec différents niveaux de customisations à chaque étape . Il vous accompagne depuis la labélisation des données jusqu’à la gestion de votre production de manière scalable. Parmi ses atouts on citera:
- Ground Truth ; la nouvelle fonctionnalité permettant de faciliter la labellisation de vos données. Pour faire simple, GroundTruth va utiliser lui-même du machine learning pour déterminer si il peut automatiquement labelliser une donnée ou s’il doit le faire faire par un humain (un employé de votre entreprise ou un prestataire).
- Automatic Model Tuning ; permet de laisser SageMaker choisir les meilleurs paramètres pour un modèle. Vous vous demandez quels paramètres sont les meilleurs pour vous ? Laissez SageMaker en essayer des différents, en parallèle, et choisir celui qui produit les meilleurs résultats (en regard d’une métrique que vous choisissez).
- Interfaçage avec GreenGrass pour le déploiement des modèles “at the Edge”
SageMaker RL
Parmi les annonces marquantes du re:Invent, celle de l’introduction du “Reinforcement Learning” (RL) dans SageMaker. N’étant pas un datascientist ou un expert en ML, SageMaker RL est une bonne nouvelle pour moi. Voyons pourquoi.
Il existe plusieurs manières d’entraîner un modèle dans le monde du Machine Learning :
- L’apprentissage supervisé ou Supervised Learning : vous avez des données d’exemple labellisées, c’est à dire que vous fournissez à votre modèle des exemples de bonnes et de mauvaises réponses, marquées (labellisées) au préalable comme bonnes ou mauvaises. C’est ainsi que le modèle apprend. Cette technique est utilisée pour faire de la classification de données.
- L’apprentissage non supervisé ou Unsupervised Learning : vous avez des données d’exemple mais non labellisées, vous ne fournissez à votre modèle que des données et il va apprendre grâce aux régularités ou irrégularités de vos données en essayant de dégager des patterns. dans les données. C’est typiquement la technique utilisée pour regrouper des données (clustering).
- L’apprentissage par renforcement ou Reinforcement Learning : vous n’avez même plus vraiment de données fixes à fournir à votre modèle. A la place, il va évoluer dans une simulation qui lui permettra d’apprendre à résoudre votre problème. Tout ce qu’on doit fournir (en plus de la simulation) est une fonction de récompense ou “Reward function” qui va servir à récompenser les “bons comportements” et punir les “mauvais comportements” pendant la simulation. Le modèle apprend en faisant des milliers de simulations avec des paramètres différents (au début aléatoires) et lorsque les paramètres d’un modèle candidat produisent de meilleurs comportements que d’autres, on tend vers eux. Jusqu’à obtenir un modèle qui résout notre problème.
Le Reinforcement Learning m’intéresse car il se rapproche (sans être identique) des “Evolutionary Strategies” (stratégies basées sur la théorie de l’évolution), que j’ai déjà expérimentées. L’avantage de ces techniques est qu’elles ne demandent pas beaucoup de connaissance en ML pour les utiliser : en effet, seule la “Reward function” (“Fitness function” dans les “Evolutionary Strategies”) doit être écrite et toute notre intelligence de programmeur humain se concentre sur elle.
Ces méthodes ont déjà prouvé leur capacité à produire des modèles capables de comportements extrêmement complexes, et à titre personnel je considère que l’avènement d’une IA forte se fera via ces techniques. Bien sûr, elles ont également un défaut de taille: leur coût prohibitif. En effet l’entraînement se fait grosso-modo en “brute force”, c’est à dire qu’on essaie à peu près n’importe quoi au hasard en espérant que ça finisse par marcher, le coût d’entraînement est donc très supérieur à celui des méthodes d’apprentissage supervisé ou non supervisé.
Pour encourager les développeurs à prendre en main SageMaker RL, AWS a annoncé la création de DeepRacer, une voiture électrique conduite par un modèle entraîné via SageMaker RL. AWS fournit aussi un simulateur complet permettant l’entraînement du modèle avant de pouvoir le tester dans le monde réel sur un véritable DeepRacer. En parallèle et pour stimuler la passion, la “Deep Racer League” a vue le jour : la première league de courses entre voitures autonomes. Chez D2SI, on attend avec impatience notre DeepRacer pour commencer à jouer avec !