XD blog

blog page

2018-03


2018-03-31 Mettre un modèle de machine learning en production

J'écrivais un article il y a peu sur le sujet ONNX : apprendre et prédire sur différentes machines où j'évoquais deux pistes pour mettre en production un modèle de machine learning, essentiellement via une application web. Il n'y a pas d'ordre de préférence, certaines sont plus abouties que d'autres. La première tensorflow-serving propose tout clé en main mais elle repose sur l'utilisation de tensorflow. La seconde ONNX, onnxmltools, winmltools convertit un modèle dans un format commun. Il est ensuite exploité là où une librairie de prédiction (un runtime) existe (liste des runtime disponibles). Ce format commun n'est pas encore exploitable en C++ ou javascript mais ces options sont envisageables également. Tensorflow encore propose une façon d'exploiter les modèles en javascript directement avec tensorflow.js (voir https://js.tensorflow.org/tutorials/import-keras.html). ONNX réfléchit à une extension pour le langage C/C++ ONNX in C/C++ qu'il est possible de faire pour le moment pour un modèle de deep learning en convertissant un modèle appris pour la librairie caffe2 avec ONNX : ONNX: deploying a trained model in a C++ project. C'est une direction choisie par le module sklearn-porter qui propose des codes en Java, C++, Go, PhP, Ruby, Javascript pour certains des modèles implémenté par scikit-learn. Cela couvre nettement plus de modèles que ce que j'avais commencé à faire avec mlprodict. Il existe d'autres options comme Seldon, à moitié open source, à moitié tourné vers une proposition de services.

2018-03-29 Intelligence Artificielle en France

Quelques tables sont organisées lors de la conférence AI for Humanity organisée par le gouvernement pour la remise du rapport Villani. La première table ronde invitait Laurence Devillers, que j'avais vu lors du colloque organisé par les anciens de l'ENSAE Colloque Individu, données et société connectée.

Lors de la seconde table, Yann LeCun affirmait que la thèse CIFRE était une des raisons pour lesquelles Facebook avait choisi la France pour implanter un centre de recherche en Europe (Paris). Parmi les thésards, Alexis Conneau qui est passé par l'ENSAE.

D'après le directeur du CNRS, Antoine Petit, il est important d'avoir des chercheurs ou ingénieurs qui enseignent dans le monde académique et travaillent dans le monde privé. Il confirme ce qu'a dit Yann LeCun une heure plus tôt. Certains chercheurs de Facebook consacre 20%, 50% de leur temps à l'enseignement. On pense à tort que l'école est le plus souvent en retard par rapport à ce qui se fait dans le monde de l'entreprise et que les étudiants ne savent rien faire en quittant l'école. En intelligence artificielle, c'est plutôt l'inverse. La recherche académique est en avance par rapport à ce qui se fait en entreprise

Quelques annonces comme DeepMind qui va créer un centre de recherche en France où aussi : Microsoft s’engage avec les acteurs de l’écosystème pour contribuer à faire de la France la nation de l’Intelligence Artificielle.

2018-03-19 ONNX : apprendre et prédire sur différentes machines

J'écrivais sur onnx il y a peu de temps. onnx, onnxmltools sont deux librairies qui permettent de convertir des modèles de deep learning mais aussi des modèles entraînés avec scikit-learn en un format unique. Lorsque cela est possible, cela permet d'utiliser avec une librairie un modèle appris avec une autre. C'est pratique si vous trouvez un modèle de deep learning appris avec Caffe et que vous souhaitez l'associé avec un autre appris avec pytorch. La suite n'a pas tardé, il est maintenant possible d'utilser ce format unique sur une machine qui dispose de l'algorithme de prédiction associé. Concrètement, on peut maintenant apprendre un modèle avec scikit-learn et l'utiliser depuis un programme écrit en C# sans faire appel à Python : How Three Lines of Code and Windows Machine Learning Empower .NET Developers to Run AI Locally on Windows 10 Devices. Quelques informations techniques supplémentaires : Windows Machine Learning overview.

On ne se pose plus la question de savoir s'il faut utiliser du deep learning mais plutôt comment le mettre en production. TensorFlow-Serving est une solution assez aboutie qui implémente certains besoins : prédiction temps réel, adaptation à un trafic élevé, capables de conserver de vieilles versions de modèles, de le comparer, de faire de l'A/B testing. Certains ont partagé leur expérience How Zendesk Serves TensorFlow Models in Production/ L'inconvénient est d'être plus ou moins lié à TensorFlow et personnellement je préfère PyTorch. La librairie est plus intuitive et séduit beaucoup les chercheurs : PyTorch or TensorFlow?. Elle est aussi rapide que TensorFlow voire un peu plus : Deep Learning Framework Examples. Il reste le problème de la mise en production. C'est là que le projet ONNX intervient en proposant de séparer l'apprentissage et l'exploitation en production. D'un côté l'apprentissage avec une librairie, une de celle supportée par ONNX, de l'autre une autre librairie ou runtime spécifique au la machine qui fera tourner les prédictions. Le reste du site web est composée de briques classiques. C'est une approche plus modulaire est moins dépendante d'un composant en particulier.

2018-03-13 Visualiser un arbre de décision

Je me suis amusé à essayer des libraires javascript pour représenter un arbre de décision. Amuser n'est pas vraiment le bon mot. C'est le genre de trucs que je n'aime pas faire plusieurs fois. Je l'ai emballé dans une fonction : Visualiser un arbre de décision. Le seul truc est que cela ne marche pas dans jupyterlab car l'exécution de javascript customisé est désactivée à moins d'en faire une extension ert mon courage s'est arrêté là.

2018-03-12 OpenFoodFacts et Google Summer of Code

La belle aventure de OpenFoodFacts continue. Elle fait partie des élus de Google Summer of Code. C'est un beau projet qui a permis de construire une base de données sur de nombreux produits alimentaires dans le monde entier. Si vous souhaitez connaître la qualité de ce que vous achetez, les produits équivalents mais sans additifs, c'est là qu'il faut aller. Les données sont accessibles et chacun peut imaginer une application. Et OpenFoodFacts cherche à automatiser la collecte et l'enrichissement de cette base. Vous trouverez de nombreux défis à résoudre : Student projects/GSOC/Proposals et certains requièrent l'utilisation du deep learning. Parfait pour un stage.

2018-03-03 onnx

onnx est un outil qui permet de convertir des modèles de deep learning venant de plusieurs librairies différentes dans un format commun. Cela d'une certaine façon de passer d'une librairie à l'autre mais aussi de pouvoir exécuter des prédictions sur un système différent de celui ayant servi à l'apprentissage. Ordinateur, tablettes, téléphones, objets connectés... C'est l'idée. Apprendre sur un ordinateur dédié à cette usage et optimisé pour cela et prédire sur une machine de moindre puissance mais plus adaptée. onnxmltools étend la liste des librairies à celle du machine learning classique, comme bien évidemment scikit-learn. Et il se trouve que j'y ai contribué.

Cela m'a permis de redécouvrir le site de chainer qui a récemment évolué et casser quelques-uns de mes tests vérifiant mes supports de cours. Le design est similaire à celui de pytorch mais la partie GPU a été placée dans un module séparé cupy qui s'apparente à un numpy pour GPU. Je garde malgré tout une préférence pour le premier même si l'installation sous Windows est encore assez confuse et repose soit sur votre propre compilation soit sur celle disponible ici : anaconda/peterjc123. cupy est disponible quant à lui sur le site Unofficial Windows Binaries for Python Extension Packages.

03/07 : les modèles convertis par ONNX deviendra très bientôt facilement utilisables sur Windows 10 : ONNX Models to be Runnable Natively on 100s of Millions of Windows Devices.


Xavier Dupré