XD blog

blog page


2018-04-16 Notebook sur Spark

J'ai déplacé les notebooks sur Spark depuis le site Python dans tout ses états vers Spark approximatif. Des petits modules sont plus faciles à maintenir.

2018-04-01 Revue de presse : ENSAE

A l’Ensae, « faute de bouger facilement, les étudiants s’investissent dans les associations », Le Monde 29 Mars 2018.

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 envisageable é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.

2018-02-17 Machine learning sans diagonale

La plupart de mes cours se font sous la forme de notebooks, plus ou moins indépendant, des exercices en pagaille qui manquent de cohérence et de continuité. Pour l'instant, ça s'appelle Petit voyage au pays du machine learning, ça n'est pas parfait mais ça a un début et une fin.

2018-02-16 280 notes en un jour

J'ai rendu 280 notes la semaine dernière, trois années, plus d'une centaine de projets - que je n'ai pas relus seul je vous rassure -, plus de 1 Go envoyés sur ma boîte mail et que j'ai dû télécharger. C'est aussi plus de 70 heures de cours, des nuits courtes en pagaille, 4 à 5h de sommeil, plus de 300 notebooks à maintenir, un qui pète par semaine à cause d'un module qui a mué d'une version, un hackathon avec 90 étudiants, des fous rires, un serveur qui tourne en permanence, plus d'une cinquantaine de jobs sur Jenkins, une trentaine de projets sur Github. Je m'arrête là, cela tourne à l'inventaire à la Prévert.

2018-01-31 ImagineCup

Microsoft organise la compétition ImagineCup depuis plus de 15 ans.

Imagine Cup est une compétition mondiale d’innovation réservée aux étudiants. Le principe : formez une équipe de 3 au maximum, présentez une solution logicielle répondant à la problématique de votre choix. Votre challenge : faire reposer cette solution sur une brique d’Intelligence Artificielle et la relier au Cloud Microsoft Azure. Vous pouvez présenter un projet personnel aussi bien qu’un projet intégré à votre parcours d’études.

Si vous avez un projet de startup utilisant l'intelligence artificielle, une idée qui végète dans votre esprit, c'est l'occasion de la développer et peut-être partir à Seattle la défendre. Deadline pour la soumission de projets : 25 février minuit.

2018-01-22 La statistique expliquée à mon chat

Je suis en train de corriger des copies et quand l'une d'elles n'oublie pas de citer le modèle dont elle s'est inspirée, je tombe sur ce genre de vidéo...

Ca me rappelle cette collection du Seuil : Le Changement climatique expliqué à ma fille .

2018-01-21 Back in the past: fear of computers

I'm currently watching videos made by students about projects on machine learning. As their video is on youtube, the website decided to recommend the following video, news back from 1981 with an interview of Steve Jobs who was 26 at this time.

Jobs claimed he was able to reach one computer in every 1000 families and was confident enough he could reach 1 out of 10 in the next five years. The journalist introduced the short story which preceeds the interview by asking : "Should we fear computers?" Jobs replied by saying that a computer is just a tool, like a bicycle is, which emphasizes our inner talents.

We now wonder whether we should fear artificial intelligence. It seems we do not fear computers anymore. But the first five minutes are quite interesting in a way that it shows computers had invaded the society was already addicted to them. Planes, credit cards... so many things were already using them. The journalist questions Jobs about the danger of giving so much data about ourselves to these machine. Could it become a danger to our freedom? Computers could be replaced by artifical intelligence, the story could have been shown today on TV but the final question would not change: should we be giving away so much data? One answer from Jobs: there is no way back and the best way is not to reject computers but to learn how to use them to finally understand what danger we are talking about.

To conclude, I doubt any TV would display such a long sequence on any subject now. I fear that we have less and less wisdom and patience to answer the original question "Should we fear computers?".

2018-01-17 Montage vidéo avec Python

La programmation peut aussi servir à faire du montage vidéo. C'est du moins ce que j'ai essayé de construire en imaginant l'atelier pour Lille - Devoxx4Kid - 13 janvier 2018. Pour un néophite, le module moviepy n'est pas si évident que ça à manipuler. J'ai donc commencé à imaginer une interface avec uniquement des fonctions : Vidéos et Sons. J'y ai fait mon premier trucage vidéo :

Si on ajoute des modules tels que fcn qui permet de séparer les personnages du fond d'une image, on peut commencer à fabriquer des vidéos assez trafiquées.

2018-01-03 Small change and potentially big impact (pandas)

pandas updated its interface in its version 0.22. More particularly v0.22.0 (December 29, 2017),

print(pd.Series([]).sum())
0.0  # It was nan in 0.21.

This is typically the kind of change which could have a huge impact on many functions if you don't have unit tests to capture that. According to the documentation of sum, the previous behaviour can be retrieved by adding min_count=1.

print(pd.Series([]).sum(min_count=1))
nan

And in 10 days, computers might slow down: Kernel-memory-leaking Intel processor design flaw forces Linux, Windows redesign. See also KASLR is Dead: Long Live KASLR.


-->

Xavier Dupré