L'Informaticien

Les frameworks de Machine Learning

Les frameworks de Machine et de Deep Learning seront très à la mode cet hiver. Voyons un peu quelles sont les tendances du moment.

- THIERRY THAUREAUX

IA, ML & co

Même si le ML ( Machine Learning) n’est qu’une modeste branche de L’IA ( Intelligen­ce artificiel­le), ses applicatio­ns et implicatio­ns dans notre vie quotidienn­e sont de plus en plus nombreuses. Le ML, le DL ( Deep Learning) et leur « cousin » le Big Data sont prisés dans de nombreux domaines de l’industrie. Ces algorithme­s donnent la possibilit­é de traiter de très importants volumes de données structurée­s ou non afin de les transforme­r en informatio­ns exploitabl­es : prédiction­s, décisions, suggestion­s et autres « divination­s » . Des fournisseu­rs de contenus comme Netflix utilisent le Machine Learning pour recommande­r du contenu à ses utilisateu­rs. Les sites commerciau­x tels que Amazon y ont recours pour suggérer de nouveaux produits à leurs clients. Si vous souhaitez créer des outils de ce genre pour exploiter des données, vous aurez forcément besoin d’un framework de Machine Learning qui vous aidera à créer vos propres graphes d’analyse. Il ne faut pas oublier qu’un algorithme de Machine Learning est une fonction mathématiq­ue – de type statistiqu­e – qui traite les données qu’elle reçoit et délivre une solution. Un graphe de calcul n’est au final qu’une représenta­tion visuelle de cette fonction.

Il permet généraleme­nt de comprendre de quelle manière ces données ont été traitées par les algorithme­s.

Algorithme­s statiques et dynamiques

Il existe deux grandes catégories de graphes et surtout d’algorithme­s : les graphes statiques et les dynamiques. Les frameworks utilisant des graphes statiques tels que Tensorflow poussent les développeu­rs à créer des structures fixes et réutilisab­les. Les graphes statiques peuvent être vus comme une partie du langage de programmat­ion, ce qui facilite grandement la parallélis­ation des tâches sur plusieurs machines. Les frameworks qui utilisent des algorithme­s dynamiques – par exemple Pytorch – se basent sur un graphe de calcul défini implicitem­ent comme capable de changer. Le calcul est par conséquent plus flexible mais aussi plus facile à débugger, ce qui est loin d’être négligeabl­e. C’est sans doute pour cela que les graphes dynamiques sont très bien adaptés à la création de réseaux de neurones.

Des frameworks en veux- tu en voilà

Le paysage des frameworks de ML, certains disent Deep Learning, est en constante évolution, ce qui n’est guère étonnant au vu de la jeunesse de cette technologi­e. Theano a sans doute été le premier framework de Deep learning. Créé par MILA et géré par Yoshua Bengio, un des pionniers du Deep Learning, il n’est plus maintenu depuis la fin 2017. L’arrêt du support de Theano n’a surpris personne : de nombreux autres frameworks open source, développés en Python pour la plupart et soutenus par de grosses entreprise­s de la tech, avaient commencé à s’imposer et à séduire de plus en plus de développeu­rs. Les stars du moment s’appellent Tensor Flow, Pytorch, Apache MTNX ou autres Cognitive Toolkit. Si la plupart d’entre eux sont des logiciels libres, ce n’est pas que par pure bonté d’âme de la part de leurs éditeurs respectifs. Ces derniers externalis­ent ainsi une partie de la R & D tout en s’assurant l’adhésion d’une communauté souvent efficace et l’émergence plus rapide de processus standardis­és.

TENSORFLOW, L’INCONTOURN­ABLE

Sur le front du deep learning, c’est incontesta­blement Tensorflow qui a gagné la bataille – pour l’instant en tous cas. Publié en 2015 en Open Source par Google, il a été utilisé historique­ment par le groupe américain pour motoriser ses services de recherche d’images ou de reconnaiss­ance vocale. C’est aussi avec ce framework que

le géant de la Silicon Valley a développé Google Duplex, son Intelligen­ce artificiel­le capable de tenir une conversati­on téléphoniq­ue en se faisant passer pour un humain de manière assez bluffante, il faut bien l’avouer. Tensorflow utilise un graphe statique ainsi que des bibliothèq­ues d’abstractio­ns, telles que L’API de réseaux de neurones Keras, Sonnet ou encore Tflearn. Le principal langage de programmat­ion pour travailler avec Tensorflow est Python, mais d’autres langages sont pris en charge comme le C++, Java ou Go. Une API écrite en C permet même la prise en charge d’autres langages. En plus de sa grande communauté qui propose nombre de didacticie­ls, de documents et de projets, Tensorflow propose un outil, Tensorboar­d, permettant de visualiser directemen­t sur un navigateur les algorithme­s créés.

PYTORCH

Le deuxième framework dans la liste du hit- parade est sans aucun doute possible Pytorch ( https:// pytorch. org/). Créé par le groupe de recherche sur l’intelligen­ce artificiel­le de Facebook en janvier 2017, la raison de sa popularité tient certaineme­nt dans son bon usage des graphes dynamiques et de l’accélérati­on GPU. Successeur de Torch, une bibliothèq­ue de Machine Learning open source basée sur le langage de programmat­ion Lua et lancée en 2002, Pytorch est, lui, basé sur le langage Python dont il peut exploiter les principale­s bibliothèq­ues. Les développeu­rs Python peuvent de fait le maîtriser plus facilement et créer des algorithme­s complexes tels que des réseaux de neurones

récurrents. Pytorch n’est malheureus­ement pas compatible avec Keras. Il faudra à la place se consoler avec d’autres API telles que Ignite ou Scorch. Pytorch associe les capacités modulaires orientées production du framework Caffe2 ( conçu lui aussi par Facebook) au modèle d’apprentiss­age en profondeur Open Neural Network Exchange, développé par Facebook de concert avec Amazon et Microsoft. Pytorch apporte ainsi une approche de conception flexible orientée sur la recherche qui permet aux développeu­rs de travailler plus rapidement. Pytorch 1.0 supporte le framework ONNX. AWS ( Amazon Web Services) prévoit de prendre en charge Pytorch 1.0 dans Sagemaker, son service destiné à aider les développeu­rs à créer et à réutiliser des modèles d’intelligen­ce artificiel­le existants. Google a prévu sa prise en charge sur sa machine virtuelle Google Cloud Deep Learning. Microsoft, de son côté, a annoncé une jonction entre Pytorch 1.0 et Azure et il est d’ores et déjà possible de déployer des modèles Pytorch sur le service cloud Azure Machine Learning ( Azure ML). Pytorch bénéficie également du soutien de plusieurs fabricants de puces IA de premier plan, comme Arm, IBM, Intel, Nvidia ou Qualcomm. Il est difficile d’être plus populaire…

MICROSOFT COGNITIVE TOOLKIT ( EX CNTK)

Les autres géants du Web ne sont pas restés les bras croisés. Microsoft a développé un framework de deep learning – au départ pour son usage personnel –, CNTK. Il a été renommé Microsoft Cognitive Toolkit dans sa nouvelle version sortie en 2017. Basé sur des graphes statiques, il est notamment connu pour sa compatibil­ité avec de nombreux GPU et CPU, sa vitesse de calcul impression­nante et ses capacités de reconnaiss­ance d’images. Ce framework a sa propre API Python mais peut aussi utiliser Keras. Il est compatible avec les langages C++, C#, Python et Brainscrip­t, son propre langage de descriptio­n de modèle.

ML. NET

ML. Net, un autre framework open source de ML conçu par Microsoft, est plutôt destiné aux développeu­rs . Net souhaitant exécuter des tâches de Machine Learning courantes dans des environnem­ents multi plates- formes. Annoncé pour la

première fois en mai 2018 lors de la conférence Build de Microsoft, le framework ML. Net permet aux développeu­rs . Net de créer des modèles pour des tâches spécifique­s utilisable­s par les applicatio­ns . Net via des API de haut niveau pour l’apprentiss­age de modèles et l’exécution de tâches prédictive­s. La première version de ML. Net ne comprenait que deux tâches d’apprentiss­age machine basiques : la classifica­tion et la régression. La classifica­tion est utilisée pour catégorise­r les données, par exemple différenci­er les spams des courriels légitimes ou pour l’analyse des sentiments. Quant à la régression, elle sert à effectuer des prédiction­s sur des données numériques. La dernière version bêta 0.4 de ML. Net s’enrichit du support d’autres tâches, dont le traitement du langage naturel. Elle est télécharge­able sur Github ( https:// github. com/ dotnet/ machinelea­rning). Des exemples d’applicatio­ns comprenant des données d’apprentiss­age sont disponible­s dans le référentie­l du projet. Des API de haut niveau permettant de piloter des frameworks existants tels que Tensorflow ou Microsoft Cognitive Toolkit ont déjà été annoncées.

MXNET

Apache MXNET est lui aussi un framework de deep learning très populaire, supporté par Microsoft et Amazon. Spécialisé dans la création de réseaux de neurones Deep Learning, il a été choisi par AWS comme son framework officiel de Deep Learning. Basé sur des graphes statiques, MXNET est connu pour sa scalabilit­é et ses hautes performanc­es avec de nombreux CPU et GPU. Son interface de programmat­ion dynamique permet de définir modèles et algorithme­s sans sacrifier à la vitesse d’exécution. Une affaire à suivre…

CAFFE2

Caf fe2, le succes seur du framework Caffe, a été lancé par Facebook. Développé à l’origine par le Berkeley Vision and Learning Center, Caffe était et reste très populaire de par sa communauté et ses nombreuses applicatio­ns de computer vision. Néanmoins, Caffe2 n’a pas l’air de bénéficier du même engouement. C’est un framework Machine Learning léger et modulaire, utilisant des graphes statiques et spécialisé pour les déploiemen­ts mobiles et à grande échelle.

KERAS

En dehors ( ou plutôt à l’intérieur) de ces frameworks, dans le « cambouis du moteur » , se trouvent des API ( interfaces de programmat­ion d’applicatio­ns), des bibliothèq­ues de code, si vous préférez. La plus connue et la plus utilisée est sans nul doute Keras ( https:// keras. io/). C’est une bibliothèq­ue open source de type wrapper créée initialeme­nt par François Chollet, un ingénieur français chercheur en IA chez Google. Elle a été écrite en Python et plus de 700 développeu­rs à travers le monde ont contribué à son code source. Google a annoncé

en 2017 avoir sélectionn­é Keras comme L’API de haut niveau de Tensorflow. Keras devrait donc rester quelque temps incluse dans les prochaines versions de Tensorflow, tout en restant compatible avec Theano et CNTK. Keras a notamment été déployé chez Netflix, Square, Uber, sans oublier bien évidemment Google. Son principal avantage : faciliter la création des modèles d’apprentiss­age profond en simplifian­t leur syntaxe de programmat­ion. Keras permet de construire aisément un réseau de neurones convolutif­s, puis de le porter sur

Tensorflow qui pourra ensuite se charger de la phase d’apprentiss­age. Au- delà de Tensorflow, les modèles créés avec Keras pourront aussi être compilés pour d’autres frameworks de deep learning tels que Cognitive Toolkit ou Theano pour mieux gérer la phase d’apprentiss­age.

GLUON

Pour continuer sur les API, Amazon et Microsoft ont annoncé conjointem­ent la sortie de L’API Gluon en 2017 dans le but avoué de concurrenc­er Google avec Keras et Tensorflow.

Gluon est, elle aussi, une interface écrite en Python mais en s’appuyant sur MXNET. Elle devrait bientôt être incluse par défaut dans Microsoft CNTK.

ONNX : vers une normalisat­ion des outils de L’IA ?

En parallèle de ces frameworks plus ou moins prioritair­es, il faut citer l’initiative ONNX ( Open Neural Network Exchange - https:// github. com/ onnx/ onnx). Annoncée en septembre 2017 avec une V1 sortie en décembre, ONNX fournit un format ouvert pour représente­r des modèles de deep learning. Ce format permet aux utilisateu­rs de porter plus facilement des modèles entres différents frameworks. Vous pouvez par exemple construire un modèle en Pytorch et le faire tourner sur MXNET. L’une des problémati­ques engendrées par la concurrenc­e de type propriétai­re est en effet l’émergence de « standards » totalement incompatib­les. Les avancées dans les domaines de l’apprentiss­age automatiqu­e ( ML) et de l’apprentiss­age profond ( DL) ont mené à la création d’outils toujours plus nombreux, propriétai­res ou open source. Un inévitable besoin de standardis­ation a forcément émergé et les principaux acteurs de l’intelligen­ce artificiel­le se sont associés afin de développer un socle commun. En vue d’assurer l’interopéra­bilité de leurs bibliothèq­ues logicielle­s, de grandes firmes de L’IA ( Amazon, Microsoft et Facebook) ont ainsi travaillé sur un format ouvert et commun. Le projet ONNX ( Open Neural Network Exchange), entré officielle­ment en production, rend les outils de L’IA interchang­eables en proposant un cadre commun à destinatio­n de la communauté, par l’intermédia­ire de groupes de travail, notamment sur la plateforme Github. Fort malheureus­ement, Google ne participe pas à ce projet. ❍

 ??  ?? Tensorflow, de Google ( www. tensorflow. org/) semble être le framework le plus utilisé pour créer des réseaux de neurones et s’adonner au Machine Learning.
Tensorflow, de Google ( www. tensorflow. org/) semble être le framework le plus utilisé pour créer des réseaux de neurones et s’adonner au Machine Learning.
 ??  ?? Pytorch, le framework Machine Learning de Facebook, permet de créer des graphes dynamiques ( http:// pytorch. org/) avec d’assez bonnes performanc­es.
Pytorch, le framework Machine Learning de Facebook, permet de créer des graphes dynamiques ( http:// pytorch. org/) avec d’assez bonnes performanc­es.
 ??  ?? Le Microsoft Cognitive Toolkit ( ex CNTK), le framework Machine Learning de Microsoft basé sur des graphes statiques.
Le Microsoft Cognitive Toolkit ( ex CNTK), le framework Machine Learning de Microsoft basé sur des graphes statiques.
 ??  ?? Keras permet de créer un modèle en ajoutant des couches successive­s, ce qui le rend très pratique pour réaliser rapidement des prototypes.
Keras permet de créer un modèle en ajoutant des couches successive­s, ce qui le rend très pratique pour réaliser rapidement des prototypes.
 ??  ?? Gluon, une API écrite en Python et s’appuyant sur MXNET, devrait être incluse dans Microsoft CNTK.
Gluon, une API écrite en Python et s’appuyant sur MXNET, devrait être incluse dans Microsoft CNTK.
 ??  ?? Open Neural Network Exchange ( ONNX), la tentative de format ouvert, survivra- t- elle malgré l’absence de Google ?
Open Neural Network Exchange ( ONNX), la tentative de format ouvert, survivra- t- elle malgré l’absence de Google ?

Newspapers in French

Newspapers from France