Scikit-Learn : Titan du Machine Learning, Champion de l’open source

Gaël Varoquaux, cofondateur de Scikit Learn et Probabl et directeur de recherche à l’INRIA est l’invité de l’épisode 70 du podcast Data Driven 101. 

Comment Scikit-learn est-il devenu un outil incontournable pour les data scientists, et comment est-il né ? 

Gaël Varoquaux nous révèle les origines de cette librairie open source incontournable pour l’apprentissage statistique en Python, l’organisation et les défis de ce projet open source qui a révolutionné le monde de la data science.

Un épisode riche en enseignements sur l’apprentissage statistique, la gouvernance des projets open source et les défis de la collaboration dans le monde de la data science.

Scikit-Learn : Titan du Machine Learning, Champion de l’open source - Gaël Varoquaux (Co Founder @SickitLearn & Probabl) #70

Marc sanselme 00:00:20 – 00:01:15 : Bonjour et bienvenue sur Data Driven 101, le podcast qui s’intéresse aux applications concrètes et variées de l’intelligence artificielle et de la data. Je suis Marc Saint-Selm, fondateur de Scopeo, une agence d’intelligence artificielle qui accompagne toutes les entreprises à tirer le meilleur de cette technologie. Dans notre podcast Data Driven 101, je reçois chaque semaine des professionnels pour qu’ils nous partagent leurs expériences et leurs visions sans filtre. Aujourd’hui, je reçois Gaël Varoco, directeur de recherche à l’INRIA et cofondateur de Scikit-Learn et Probable. Scikit-Learn est un projet open source, outil incontournable du data scientist pour l’apprentissage statistique en Python. Bonjour Gaël. Bonjour. 

 

Gael Varoquaux 00:01:15 – 00:01:17 : Bonjour Marc. 

 

Marc sanselme 00:01:17 – 00:01:35 : Alors Gaël, c’est un grand honneur de recevoir quelqu’un de chez Scikit-Learn après avoir passé autant de temps sur cette librairie. Est-ce que tu peux nous parler de ce qu’il y a derrière ? Quelle est l’organisation qui permet à cette librairie d’exister ? 

 

Gael Varoquaux 00:01:35 – 00:02:32 : C’est un projet open source qui est multifacette. Il n’y a pas une seule organisation. C’est vraiment comme d’autres projets open source. C’est un projet qui vit par un ensemble de contributeurs qui peuvent agir avec des motifs différents. Historiquement, INRIA, l’institut de recherche français, a beaucoup soutenu Scikit-Learn parce que INRIA a soutenu des gens comme moi, mais beaucoup d’autres personnes qui ont travaillé dessus, soit à temps partiel, soit à temps plein. Mais il y a d’autres acteurs dans le monde. qui ont soutenu, soit en embauchant des développeurs spécifiquement pour ça, encore une fois, à temps partiel ou à temps plein, soit en acceptant que certaines personnes passent du temps un jour par semaine ou plus dessus. Et puis, il y a plein de volontaires qui font ça aussi dans leur temps libre. 

 

Marc sanselme 00:02:33 – 00:02:37 : Ok. Qui sont ces volontaires ? C’est quoi les profils ? 

 

Gael Varoquaux 00:02:37 – 00:03:01 : Alors, comme il y a plus de 2000 personnes qui ont contribué, ça va être difficile à dire. On va avoir des profils assez variés, mais on va quand même avoir souvent, de temps en temps, des étudiants qui ont envie d’apprendre en contribuant, mais aussi des professionnels qui peuvent avoir envie d’améliorer quelque chose ou encore une fois d’apprendre parce qu’on apprend des choses différentes dans un groupe que tout seul. 

 

Marc sanselme 00:03:02 – 00:03:21 : OK. En quelques mots, Scikit-Learn a pas mal de fonctionnalités et ça m’a sans doute gagné plein depuis le début. Est-ce que tu peux nous faire un tour d’horizon de qu’est-ce qu’on peut faire, quels algos on a sur Scikit-Learn ? 

 

Gael Varoquaux 00:03:21 – 00:04:55 : Scikit-Learn, c’est… C’est un peu comme un livre de référence d’apprentissage statistique classique, donc non deep learning. D’ailleurs, c’est vraiment comme ça qu’on l’a pensé. On avait des livres qu’on aimait bien, mais on voulait que ces livres, ce soit aussi des objets vivants, des algorithmes du code qu’on puisse utiliser. Donc on va avoir l’apprentissage supervisé, l’apprentissage supervisé c’est j’ai des données et une cible, un target à prédire, je vais apprendre l’association entre les deux et puis après avec des nouvelles données je vais pouvoir prédire la cible avec les données. Après, on va avoir l’apprentissage non supervisé, qui est beaucoup plus varié, mais on va avoir un certain nombre de classes. Donc l’apprentissage non supervisé, j’ai uniquement des données, je n’ai pas de cible. Et donc, je vais avoir des réductions de dimensions, des algorithmes de clustering, des algorithmes de chercher des sous-variétés. Ça fait pédant, chercher la structure. Et en plus, au-delà de ça, on va avoir plein d’outillages qui va permettre des choses comme la préparation des données, alors une préparation des données limitée, parce que Scikit-Learn c’est un objet généraliste, ça n’a pas de fonctionnalités qui sont spécifiques à un type de données, et puis de la sélection de modèles, donc de l’évaluation de modèles, Donc, en fait, on essaie de faire un petit peu tout ce qui permet la mécanique mathématique, ça paraît pédant, ça n’a pas besoin de l’être, de l’apprentissage statistique. 

 

Marc sanselme 00:04:56 – 00:05:01 : Alors, comment est né le projet ? 

 

Gael Varoquaux00:05:01 – 00:07:07 : Le projet a eu deux naissances. Il y a eu une première naissance, c’était David Cornapo qui faisait sa thèse au Japon, je crois à l’université de Kyoto. Et il travaillait sur du son et il a eu besoin d’algorithmes, de mélanges de gaussiennes pour du son. Et il a voulu coder ça en Pythagore. Il a fait ce qu’on appelle un Google Summer of Code, donc un été payé par Google pour contribuer à du logiciel libre. Puis David faisait une thèse, il avait autre chose à faire. d’autres personnes qui ont un peu contribué, il y a eu plus que les mixtures de Gaussienne, mais le projet est vraiment un peu mort. Deux ans plus tard, moi je connaissais David par ailleurs, je connaissais bien l’écosystème Python, je commence un nouveau travail dans lequel j’ai 20 apprentissages statistiques. Et un mot ne se dit pas possible. On a les algos standards, on en a besoin, ils sont dans les livres, mais ils ne sont pas dans du code de bonne qualité, disponible, intégré, bien documenté, etc. Donc là, on a décidé d’investir dedans et on aurait pu créer un autre projet. Je trouvais que ce n’était pas génial d’un point de vue communauté. Et donc, j’ai contacté David et je lui ai demandé « Est-ce que je peux reprendre le projet ? Je ne vais pas forcément faire ce que tu faisais. ». David a dit oui. David était occupé d’autre chose. David s’est beaucoup investi dans d’autres piles de l’écosystème Python. On a tout cassé. On a recréé le projet à partir de rien. On a eu des financements d’Inria pour embaucher un jeune ingénieur. On a assemblé du monde. On a essayé de trouver des gens un peu partout pour contribuer. L’aventure est née et a fait boule de neige. 

 

Marc sanselme 00:07:08 – 00:07:10 : Ok, et on est en quelle année? 

 

Gael Varoquaux00:07:10 – 00:07:14 : au début ? Ce dont je parle, c’était en 

 

Marc sanselme 00:07:14 – 00:07:20 : 2009. 2009, ok. Parce que ça a pris rapidement. 

 

Gael Varoquaux00:07:20 – 00:07:52 : La sauce a pris hyper rapidement, on a vraiment eu de la chance. Je crois qu’on était au bon moment. Et puis, à l’époque, je voyageais beaucoup. Et j’ai vraiment, moi et pas que moi, d’autres personnes, on a vraiment embarqué du monde. Des gens fantastiques qui se sont associés, certains qui sont restés, qui sont encore là. Olivier Grézel, qui est encore à 100% sur le projet. Puis d’autres personnes qui ont passé 4, 5 ans avec nous et qui ont fait autre chose. 

 

Marc sanselme 00:07:53 – 00:08:13 : Tant qu’on est sur l’organisationnel, l’aspect humain, c’est quoi les règles ? Comment est-ce qu’un projet open source vit sans organisation derrière ? Comment sont régies les modifications de la librairie au fur et à mesure que le temps passe ? 

 

Gael Varoquaux00:08:13 – 00:09:31 : J’ai envie de dire qu’il faut distinguer deux choses. Il faut distinguer les règles explicites, écrites, le texte de loi, entre guillemets, et la sociologie. Et typiquement, la sociologie, on n’en pense pas, on réfléchit pas assez à la sociologie, mais c’est extrêmement important. Et de façon générale, un phénomène sociologique, c’est que quand on arrive quelque part qu’on ne connaît pas, on regarde comment les gens font et on fait la même chose. Il y a des règles qui se sont construites avec le temps, donc des règles assez techniques. On va prendre le code, on va le modifier, on va le pousser sur GitHub où tout le monde va pouvoir le voir, puis après on va faire ce qu’on va appeler une pull request, donc on va demander aux mainteneurs du projet d’intégrer les changements. Les mainteneurs, et ça c’est très codifié, les mainteneurs vont relire Ils vont faire des suggestions de modifications. Les règles du projet disent que quand deux mainteneurs-coeurs ont approuvé, alors ça peut être mergé. En pratique, la sociologie du projet plus des phénomènes d’échelle de temps font que de temps en temps, il y a plus que deux mainteneurs qui font une relecture. Donc la relecture, c’est vraiment le gros du travail. 

 

Marc sanselme 00:09:31 – 00:09:34 : Il y a combien de mainteneurs ? 

 

Gael Varoquaux00:09:34 – 00:10:33 : j’ai envie de dire une vingtaine de mainteneurs actifs. Et la question, après, effectivement, c’est comment est-ce qu’on devient mainteneur ? Il y a des votes. et maintenant d’ailleurs on a grandi et les gens qui votent. donc il y a les mainteneurs. mais il y a aussi d’autres groupes qui sont des groupes officiels. le groupe de la documentation le groupe de la communication c’est pas forcément des gens dont ils sont pas sélectionnés parce que c’est les meilleurs relecteurs de code algorithmique parce que quelqu’un qui est bon en communication ça peut être un autre profil quelqu’un qui est bon en documentation ça peut être un autre profil. Donc maintenant, les votes se font avec tous ces groupes. Donc ce groupe cœur qui n’est pas uniquement des développeurs. En tout cas, tout le monde a tendance à avoir un vernis de développement. Mais la meilleure personne pour communiquer n’est pas forcément la meilleure personne pour écrire du code algorithmique bas niveau. 

 

Marc sanselme 00:10:33 – 00:11:02 : Ok, donc il y a quand même toute une organisation avec des votes, même si ce n’est pas officiellement une association de loi 1901 ou je ne sais quoi, il y a quand même des règles entre vous. Qu’est-ce qui se passe si quelqu’un suggère une modification ? J’ai l’impression que le point d’entrée d’une suggestion, c’est la pull request. On peut discuter avant ? 

 

Gael Varoquaux00:11:02 – 00:11:18 : En fait, de nos jours, on a un projet qui est très visible. On a plein de gens qui ont envie de modifier des choses. Il vaut mieux commencer par initier une discussion pour se dire, est-ce que telle modification serait bienvenue ? 

 

Marc sanselme 00:11:18 – 00:11:20 : C’est un issue GitHub ? 

 

Gael Varoquaux00:11:20 – 00:11:22 : Oui, un issue GitHub, exactement. 

 

Marc sanselme 00:11:22 – 00:11:23 : Donc la discussion commence. 

 

Gael Varoquaux00:11:24 – 00:11:24 : Finalement, on commence par là. 

 

Marc sanselme 00:11:24 – 00:11:27 : C’est là qu’on tranche, est-ce qu’il ne faut pas le faire ? 

 

Gael Varoquaux00:11:27 – 00:11:42 : Ce n’est pas évident parce que de trancher, c’est souvent un compromis entre la complexité que ça va apporter, les bénéfices et la complexité. On le voit que quand le code a été réalisé, on voit vraiment que ce n’est pas assez rarement facile de dessiner. 

 

Marc sanselme 00:11:43 – 00:11:49 : Il y a des choses que vous regrettez après coup d’avoir changé dans un sens ? 

 

Gael Varoquaux00:11:49 – 00:12:13 : Oui, alors moi, plusieurs fois dans ma carrière, j’ai retiré des bouts de Scikit-Learn. C’est toujours assez douloureux. Les gens le prennent mal, pas forcément d’ailleurs les contributeurs d’origine, mais il peut y avoir des utilisateurs qui utilisent quelque chose, on le retire. C’est l’une des raisons pour lesquelles on est assez frileux, c’est qu’on ne veut pas avoir à retirer. C’est plus difficile de retirer que d’ajouter. 

 

Marc sanselme 00:12:14 – 00:12:45 : Donc ça, c’est un autre mécanisme encore par-dessus, c’est ça ? C’est-à-dire qu’au-delà de ce système de relecteurs, de contributeurs, de temps en temps, on prend un peu de recul et on se dit, globalement, on voit qu’il y a une incohérence, il y a un truc qui ne va pas, il y a un truc qui est trop complexe, il y a un truc qui n’est pas à sa place, il y a un truc qui ne devrait pas exister, et on le retire. Et donc là, c’est une communauté plus petite, un nombre d’utilisateurs plus petit, Ça va aussi être… 

 

Gael Varoquaux00:12:45 – 00:13:25 : De toute façon, la gouvernance, elle est claire. C’est les groupes cœur. Et s’il y a un désaccord, ce qui, sociologiquement… Je ne veux pas dire qu’on est toujours d’accord. On n’est toujours pas d’accord, c’est normal. Mais on cherche le consensus. Mais si on n’arrive pas à avoir un consensus, on monte à ce qu’on appelle un comité technique, qui est un groupe plus réduit de 7 personnes qui sont là depuis longtemps. C’est un peu les vieux sages. Ce n’est pas forcément les plus actifs. qui tranche mais culturellement on cherche le consensus ce qui est bien et pas bien. alors moi je suis persuadé que c’est bien. mais par contre ça crée des dynamiques lentes on est pas rapide. 

 

Marc sanselme 00:13:28 – 00:13:54 : C’est intéressant de voir ces modes d’organisation parce que finalement, l’open source, il y en a beaucoup des projets. Dès qu’ils vivent sans une société qui finance le développement et qui orchestre de façon très hiérarchisée les décisions qui sont prises, il n’y en a pas tant que ça. 

 

Gael Varoquaux 00:14:21 – 00:14:52 : Il y en a pas mal quand même C’est peut-être… Ils sont peut-être moins visibles parce qu’on les met moins… Qui dit société dit usine marketing. Oui. Mais pour Scikit-Learn, on a depuis… Six mois, un petit peu plus de six mois, on a créé une société dont la raison d’être principale, en tout cas pour moi, est de créer de l’activité économique autour de sa kit-learn et qui emploie un certain nombre de développeurs-coeurs. 

 

Marc Sanselme 00:14:55 – 00:15:18 : Ok. Alors si, on a déjà un petit peu discuté du process, mais imagine, on a un nouvel algo à implémenter, quelle est sa vie qui l’amène jusqu’à l’intégration dans la bibliothèque, c’est-à-dire qu’on invente un nouvel algo, tout le monde l’adore, qu’est-ce qui se passe ? 

 

Gael Voroquaux 00:15:18 – 00:16:28 : on invente un nouveau algo, tout le monde l’adore. Il y a une étape là. Et elle n’est pas triviale. Il y a un problème de poulet d’œuf. C’est-à-dire que pour que tout le monde adore un algo… Il faut que ce soit sur le site de Learn. Après, c’est presque ça, quoi. Donc, en fait, pour que tout le monde adore un algo, ça ne suffit pas qu’il y ait un joli papier. Il faut qu’il y ait une belle implémentation. Donc, la vie, c’est un peu… On invente un nouvel algo, il a une belle implémentation, il a énormément de succès, tellement de succès qu’on se dit que ce n’est pas possible d’avoir une danse à GitLearn. À l’heure actuelle, ce n’est pas évident. Moi-même et beaucoup dans le groupe, on est persuadés que ce n’est pas forcément de rendre un service à l’utilisateur de passer notre temps à rajouter des algorithmes. Ça crée une espèce de forêt dans laquelle on ne voit rien. et de nos jours on se pose beaucoup de questions de quand est-ce qu’on rajoute un algorithme? la barre est hyper élevée. on se focalise plus souvent sur améliorer des choses qu’en rajouter. ça arrive mais pas hyper souvent. 

 

Marc Sanselme 00:16:29 – 00:17:42 : Par exemple, là, je vais te raconter un peu ma vie, mais j’ai l’impression que ça, KitLearn, je l’ai toujours vu utilisé partout pour tous les algos machine learning, on va dire non deep learning, à l’exception de celui qui est souvent un peu une machine à tout faire, le Extreme Gradient Boosting, XGBoost, où là, on voit un peu des gens utiliser soit l’IGBM, soit la librairie XGBoost, Et je ne sais pas si c’est vrai, si ce n’est pas vrai, mais les gens disent que ces versions-là sont un peu mieux que la version qui est implémentée aussi dans Scikit-Learn. Alors j’aimerais bien avoir ton avis là-dessus. Déjà, est-ce que c’est exactement le même algo ? Si non, quelles sont les différences ? Qu’est-ce qui explique, selon toi, le fait qu’il y ait un peu cet algo qui… vivent en dehors de Scikit-Learn, qui a une vie en dehors de Scikit-Learn, alors que, on va dire, pour tout le reste, vous avez quand même à peu près absorbé, enfin, vous êtes la version, on va dire, standard, la façon standard d’implémenter n’importe quel autre algo, quoi. 

 

Gael Voroquaux 00:17:43 – 00:19:24 : Alors, moi, en ce moment, je suis passionné de sociologie. Donc, si on prend l’exemple, enfin, l’histoire, quoi, des gradient boosting, je pense qu’il faut reprendre un point de vue déjà historique. Donc, non, c’est pas les mêmes algorithmes, c’est-à-dire que c’est amusant. On a créé SackItLearn à une époque où, j’ai envie de dire, les algorithmes, ils étaient bien posés. D’ailleurs, Henry, on aimait faire la différence entre un modèle, un modèle, c’est un truc qui s’écrit mathématiquement, et un algorithme. Un algorithme, c’est un ensemble d’opérations qui va résoudre le modèle. Donc, on dit, attention, non, non, un modèle linéaire c’est un modèle et après tu peux avoir plusieurs solvers pour le même modèle sauf que ce qu’on a vu dans les dix dernières années c’est que le diab est dans les détails et que sur des algos de gradient boosting d’arbres Il va y avoir des petites nuances qui vont faire que ça marche plutôt mieux, plutôt moins bien. Donc nous, on avait un algo de Gradient Boosting d’arbre qui était un peu textbook. Et effectivement, IG Boost est arrivé. Ils ont fait les choses différemment. Ils ont dit en gros, nous, on va faire des choses, on va innover. On va faire des choses qui ne sont pas dans le papier d’origine. Et… On a beaucoup d’expérience et ça va mieux marcher. Donc on avait créé notre boosting et ils avaient le leur. Donc il y a quelques années, pour toutes sortes de raisons, on s’est dit, c’est pas possible, il faut qu’on modernise. Donc on a créé un nouvel objet de Crédit de Boosting qui s’appelle le HIST, Crédit de Boosting Classifier et Récresseur. 

 

Marc Sanselme 00:19:24 – 00:19:25 : Comment tu l’appelles ? 

 

Gael Voroquaux 00:19:25 – 00:19:27 : HIST pour Histogramme. 

 

Marc Sanselme 00:19:27 – 00:19:28 : H-I-S-T, ok. 

 

Gael Voroquaux 00:19:28 – 00:19:30 : Oui, parce que c’est basé sur des histogrammes. 

 

Marc Sanselme 00:19:30 – 00:19:31 : Oui, d’accord. 

 

Gael Voroquaux 00:19:31 – 00:19:36 : Qui s’inspire en fait beaucoup d’ailleurs de l’IGBM plus de XGBoost. 

 

Marc Sanselme 00:19:36 – 00:19:36 : D’accord. 

 

Gael Voroquaux 00:19:38 – 00:21:09 : Il est très bien, il n’est pas assez utilisé. Utilisez-le, il marche très bien. Alors après, tu as dit quelque chose de très intéressant. Tu as dit, les gens disent que Et c’est exactement ça. Les gens disent que l’adoption d’un produit, c’est beaucoup de sociologie, un peu de technique. Donc, les gens disent que l’IgBM et l’IgBoost marchent mieux que ça qu’Hitler. Alors, il y a deux ans, j’ai un doctorant, Léo Greenstein, qui a fait une étude assez claire de ça. Et les résultats sont hyper intéressants. Ce qu’on voit, c’est que c’est une question de… Donc en moyenne, sur beaucoup de jeux de données, on ne peut pas conclure sur un jeu de données. En moyenne, sur beaucoup de jeux de données, etc., c’est une question de budget, de calcul disponible. Si on n’a pas beaucoup de budget de calcul disponible, si on ne veut pas faire des recherches d’hyperparamètres hyper exhaustives… alors le Hist Gradient de Scikit-Learn, c’est le meilleur choix par défaut. Si on a de la puissance de calcul et qu’on est prêt à faire la recherche d’hyperparamètres, alors XGBoost va mieux performer. Pourquoi ? Je ne sais pas. Ça gagnerait à être investigué. Mais ce que je trouve très amusant, c’est l’appareil de XGBoost et l’IGBM. Or, dans mon expérience, si tu n’as pas beaucoup de calculs, la librairie de boosting qui a tendance à le mieux marcher, c’est CatBoost. 

 

Marc Sanselme 00:21:09 – 00:21:13 : CatBoost. Encore une autre. 

 

Gael Voroquaux 00:21:13 – 00:21:21 : Pour redire, les gens font quand même beaucoup leur choix par l’outil que le voisin utilise, etc., 

 

Marc Sanselme 00:21:22 – 00:21:40 : C’est sûr, mais alors du coup, là aujourd’hui, tu sais que CatBoost est meilleur que les trois autres options qu’on a discutées avant. Pourquoi est-ce qu’on ne reprend pas dans SkyKit Learn l’implémentation CatBoost ? 

 

Gael Voroquaux 00:21:40 – 00:22:57 : Je pense qu’on devrait travailler, mais je pense qu’on devrait travailler sur prendre du recul pour comprendre c’est quoi les détails. Parce que sinon, pourquoi est-ce que les gens n’utiliseraient pas 4 boosts ? Et donc, quels sont les éléments importants ? Il y aura un travail qui est presque très de recherche, empirique, à faire. Peut-être qu’on le fera. Là, je mets ma casquette de chercheur. mais on en revient sur le fait que c’est un projet communautaire et on définit les objectifs et la perception de la part de pas mal de monde c’est que ces détails de performance c’est pas forcément les trucs les plus importants. c’est plus important de pouvoir. les travaux qu’on a fait récemment que je trouve fantastiques c’est de mieux permettre de définir des coûts business Et ça a été des hyper paramètres sur des coûts business. Ça c’est probablement plus important que d’améliorer l’accuracie de 0,2%. Donc je pense que d’aller comprendre qu’est-ce qui fait la différence entre les algos de gradient boosting, c’est un problème important. Mais par contre je suis assez persuadé qu’il y a plein d’autres problèmes très importants. 

 

Marc Sanselme 00:22:57 – 00:23:56 : Oui, bien sûr. Alors, je rentre dans un autre sujet, mais le Python, c’est un langage très haut niveau. Si on code des algorithmes en Python, on va avoir des performances qui sont catastrophiques. Donc, ça quitte l’Earn d’une certaine façon. Son objectif, c’est justement de coder dans un langage Plus bas niveau, plus optimal des algorithmes qu’on va ensuite utiliser en Python. C’est quoi ces langages ? Comment est-ce qu’on fait le pont ? Est-ce que tu peux nous dire deux, trois mots sur… Ce qui se passe un peu sous le capot et comment on fait pour transformer un algo performant et l’implémenter dans un langage performant et le faire remonter dans un langage peu performant mais facile à utiliser pour que tout le monde puisse l’utiliser. 

 

Gael Voroquaux 00:23:58 – 00:26:02 : Déjà, dans cette équipe-Learn, on fait beaucoup de Python. Pas que du Python, mais on fait beaucoup de Python. Pour deux raisons. Parce que quand on manipule des tableaux, des grands tableaux, le fait que Python, ce soit un langage où chaque opération, au final, prend du temps, c’est pas grave parce qu’on fait des grosses opérations. Donc le surcoût d’interprétation de Python n’est pas grave. c’est la première chose. donc il y a pas mal d’algos performants qui sont écrits en pur Python en tout cas dans sa KitLearn. bien sûr à un moment ou à un autre il y a un langage compilé mais on ne le manipule pas dans sa KitLearn. Et notre sujet, c’est que c’est pas d’implémenter le truc dans le langage le plus bas niveau ou en faisant tourner la boule nette entre guillemets le plus vite qui va rendre un algo performant. L’algorithmique, c’est avant tout justement trouver un algorithme, une suite d’opérations qui est performante. C’est la base de l’algorithmique. Si je veux chercher des mots dans une grande liste de mots, et bien le mieux c’est que ces mots soient triés comme ça je peux faire une recherche comme dans un dictionnaire j’ouvre le dictionnaire au milieu et puis après je fais une recherche. donc techniquement je peux faire une recherche en log n si le truc est trié. si les mots n’étaient pas triés dans le dictionnaire je devrais lire tout le dictionnaire. voilà donc même si je lis dix fois plus vite ça marchera mieux sur un dictionnaire trié que sur un dictionnaire pas trié. bien sûr. donc on fait toujours d’abord de l’amélioration algorithmique toujours, on essaie de prendre du recul et finalement une fois qu’on a fait tout ça éventuellement on fait ce qu’on appelle du citon. citon c’est un langage qui ressemble à Python mais qui compile. on a choisi de faire ça pour rester au niveau et puis aussi pour faire le moins de gestion mémoire nous-mêmes parce que la gestion mémoire Balfette. ça fait des catastrophes et c’est très dur de bien faire la gestion mémoire. 

 

Marc Sanselme 00:26:02 – 00:26:10 : D’accord, donc vous êtes resté sur du haut niveau. pur en termes d’implémentation, c’est Python et Citon. 

 

Gael Voroquaux 00:26:10 – 00:26:16 : Oui, Citon, mais ce qui est moyen haut niveau. De temps en temps, Citon, c’est quand même assez proche de C et C++. 

 

Marc Sanselme 00:26:17 – 00:26:35 : Ok, d’accord, intéressant. SILENCE UN PEU LONG La carte graphique, est-ce que c’est utile pour ça ? Est-ce que vous envoyez des calculs sur la carte graphique ? Est-ce que c’est possible ? 

 

Gael Voroquaux 00:26:35 – 00:28:20 : C’est une bonne question. L’une des… Et ça se couple avec la question juste avant. L’une des choses sur lesquelles on travaille à l’heure actuelle, c’est d’utiliser des abstractions qui permettent de manipuler des tableaux de nombres, mais qui sont avec diverses implémentations sous-jacentes. Donc ils peuvent être sur la carte graphique. Donc c’est quelque chose qui s’améliore. L’une des difficultés, c’est que… d’optimiser une opération. On a quelques opérations qui se font sur carte graphique. On peut faire une PCA sur carte graphique si les données sont grosses mais pas trop et donc tiennent dans la carte graphique. On gagne un facteur 10, 20. D’accord. Mais pour que ça marche vraiment bien, il faut que la chaîne complète soit le plus possible sur la carte graphique parce que si on passe son temps à amener les données sur la carte graphique et les faire ressortir ça marche pas. donc on a des bribes mais on travaille dessus. après on pourrait aussi faire du bas niveau. il y a deux choses sur les cartes graphiques au long terme C’est pertinent, puis on a du carte graphique, c’est comme ça que ça s’est réalisé, mais c’est vraiment des processeurs vectoriels. Et si tous les ordinateurs ont des bons processeurs vectoriels, ça marchera bien. A l’heure actuelle, c’est en train de changer, mais à l’heure actuelle, la plupart des ordinateurs que les gens ont n’ont pas de bons processeurs vectoriels. Donc, on touche pas grand monde qu’en bénéficie. et en plus c’est une pile technologique qui bouge vraiment beaucoup. 

 

Marc Sanselme 00:28:20 – 00:28:29 : on se dit que ça va se stabiliser Quand on envoie des calculs sur carte graphique aujourd’hui parce que les processeurs sont pas bons, c’est ça ? 

 

Gael Voroquaux 00:28:29 – 00:29:15 : Non, ce que je veux dire c’est que la plupart des laptops n’ont juste pas de carte graphique ou ça, ça marche bien. c’est juste que dans la tech on a tous du Nvidia sauf que Dans le monde, il y a assez peu de monde qui a du Nvidia. C’est en train de changer. Apple, qui est aussi du high-end, est en train de ramener du calcul vectoriel. Et je pense que les modèles de langage vont avant tirer ça en avant. C’est pertinent d’avoir du calcul vectoriel dans un ordinateur grand public parce qu’un ordinateur grand public va faire tourner un modèle de langage. Mais il faut aussi voir qu’on est sur une pile technologique qui est mono-acteur à l’heure actuelle. On espère que ça va évoluer. 

 

Marc Sanselme 00:29:15 – 00:29:38 : Alors les large language model et le deep learning, si on reprend encore plus tôt chronologiquement, qu’est-ce que ça a apporté, changé à Scikit-Learn ? Comment est-ce que vous voyez l’avènement de ces outils ? 

 

Gael Voroquaux 00:29:38 – 00:31:06 : alors ça n’a pas changé grand chose et c’est une bonne chose. dès le début on a dit c’est des outils qui demandent une expertise et un hardware qui est spécial et donc on va laisser d’autres acteurs le faire. alors ça a amené une révolution. je tiens à souligner que c’est pas des trucs magiques. j’ai du deep learning donc ça marche. par contre sur certaines données L’image, la voix, le texte de nos jours, c’est incontournable. Pour le coup, c’est magique. Et donc, on a vu sur ces données se créer des… Des librairies ou des outils au sein d’une librairie qui étaient vraiment très très bien. La vision, on a des outils pour faire de la vision. Le texte, on a des outils pour faire du texte. Et donc c’est génial parce que d’une certaine manière, sans vraiment l’avoir calculé, on se retrouve avec une complémentarité. on se retrouve avec, quand on a des images et du texte, des outils, et pour d’autres données, d’autres outils. Effectivement, maintenant, il faut créer un écosystème qui facilite la vie à l’utilisateur parce qu’on peut avoir plusieurs types de données, donc les mélanger. C’est faisable, c’est même pas trop dur, mais ça manque peut-être de cohérence. Après, c’est dur d’établir de la cohérence sur un écosystème qui est en révolution permanente. 

 

Marc Sanselme 00:31:09 – 00:31:20 : Ok. C’est quoi tes bibliothèques préférées à utiliser avec Scikit-Learn, les outils complémentaires ? 

 

Gael Voroquaux 00:31:20 – 00:32:38 : Je suis biaisé parce que je vais parler d’un truc sur lequel je m’investis beaucoup. On a une bibliothèque qui s’appelle Scrub. Moi, je travaille beaucoup sur des données qui sont des données tabulaires, des choses qui viennent de bases de données. Je travaille beaucoup en santé. Et ce qu’on voit, c’est que toutes les données, il faut les transformer avant de les donner à Sack-Learn. Et en fait, c’est là où on passe le plus de temps. Donc, Scrub, ça facilite ça. c’est relativement neuf, et le but c’est d’être facile à utiliser. Et d’ailleurs, bientôt, on a une pull request dans Scrub, bientôt, il va y avoir la possibilité, quand on a des données tabulaires qui ont des textes relativement longs, d’utiliser les transformers pour les vectoriser, pour les donner à sa kit-learn. Donc on voit un peu l’intégration qui nous plaît. Sauf que bien sûr, la difficulté de cette intégration, c’est que Celle qui te l’en est facile à installer, marche sur n’importe quel hardware, sur n’importe quel microprocesseur, du ARM, Scrum aussi, Transformer, pas forcément. Donc on va voir tout de suite qu’on va avoir un peu de… ça va pas marcher chez tout le monde. Mais bon ça c’est la librairie qui m’enthousiasme. 

 

Marc Sanselme 00:32:39 – 00:34:39 : Ok. Alors j’ai une autre question qui va encore m’amener à raconter un peu ma vie. C’est sur des projets passés, je me suis retrouvé avec 100 000 lignes, puis 1 million, puis 10 millions, et avec un moment donné où face à beaucoup de données, on est obligé soit de les jeter une partie, soit de se dire ok, on va rééquilibrer, etc., et soit de penser à des astuces. Alors à un moment donné, je me mettais à utiliser du Scala pour implémenter en Spark des opérations qui étaient parallélisées parce que sinon c’était pas avec Pandas, c’était pas parallélisé. Bon bref, je vais peut-être… Un jour est arrivé Vertex AI de Google, qui est une boîte d’auto-ML à laquelle on donne l’objectif, les colonnes à utiliser, et qui s’adapte complètement au nombre de lignes qu’on lui donne. Alors ça coûte extrêmement cher ! Mais à partir du moment où le temps se paye, le fait de ne pas avoir à changer de langage pour faire des travaux parallélisés dans un autre langage sur une autre machine qui a beaucoup de processeurs de tas, et de le laisser complètement gérer l’infra a été game changer sur ce projet. Et en tant que data scientist, je ne prêche pas pour ma chapelle quand je dis que Vertex AI m’a changé la vie à ce niveau-là. Donc, ma question, c’est qu’est-ce que tu conseilles de faire quand on a énormément de lignes, qu’on commence à être confronté à de la saturation de… des calculs? comment est-ce que tu adoptes et qu’est-ce que tu penses globalement des outils d’auto-ML a fortiori de ceux qui auto-scale? 

 

Gael Voroquaux 00:34:39 – 00:34:46 : On a deux sujets, le scaling et l’auto-ML. Vertex AI je connais pas. tu télécharges quelque chose et tu l’utilises ? 

 

Marc Sanselme 00:34:46 – 00:34:49 : Non, c’est un outil cloud de la suite Google. 

 

Gael Voroquaux 00:34:50 – 00:34:54 : Moi j’ai un problème avec ça, moi je travaille en santé. je travaille avec des gens qui travaillent en banque d’assurance. 

 

Marc Sanselme 00:34:55 – 00:34:57 : Non, mais je te rejoins. 

 

Gael Voroquaux 00:34:57 – 00:38:19 : Donc, tu me demandes ce que je conseille. Ça dépend. Mais si tu veux garder… Après, moi, j’ai rarement des problèmes aussi gros. J’en ai, mais quand j’en ai, ça peut être au sous-sol du ministère de la Santé, les données de l’assurance maladie de tout le monde, on ne va pas les envoyer sur Google, c’est garanti. Donc… je connais pas d’outils. mais je ne connais pas ça veut pas dire qu’il y en a pas d’outils que je peux mettre au sous-sol du ministère de la santé pour résoudre ce problème. et je pense qu’il faut avoir pour bien répondre à cette question il faut avoir un point de vue économique. donc Scikit-Learn. en fait il n’y a pas beaucoup de sous dans Scikit-Learn. Scikit-Learn c’est un peu le truc que tout le monde utilise. mais le modèle économique de Scikit-Learn il est fragile Et ça marche uniquement parce qu’il y a énormément de monde qui l’utilise, et comme il y a énormément de monde qui l’utilise, il y a plein de monde qui donne un coup de pouce, financier ou autre. Quand tu es sur un truc qui est assez inhabituel, 10 millions de lignes, le modèle économique n’est pas le même. Donc moi, techniquement, quand j’ai 10 millions de lignes, j’utilise du Deep Learning. En plus, ça fait sens. À 10 millions de lignes, le Deep Learning, généralement, il marche mieux que le Gradient Boosting. Donc, c’est ça que j’utilise. Mais je ne suis pas du tout au même niveau d’expertise. Mais alors, pas du tout, du tout, du tout. Après, là j’ai pas encore parlé d’auto-email. L’expertise, le problème c’est qu’on a plusieurs expertises. On a l’expertise informatique, utiliser le bon langage, avoir la bonne machine, distribuer les calculs. Mais on a aussi l’expertise statistique. Soit t’es sur un problème où la prédiction est validée de façon évidente, tu vas prédire, tu vas voir un achat, tu vas voir si tu gagnes. Alors là, dans ce cas-là, c’est peut-être un peu plus évident parce que tu fais ta prédiction, tu vois si ton revenu augmente, ton revenu diminue. Et encore, tu peux te poser des questions parce que si tu te trompes, tu perds plein d’argent. Mais moi, c’est le problème où je travaille, c’est le problème de santé. Je ne peux pas me permettre de me tromper. Donc, il y a une autre expertise qui est très importante, c’est l’expertise statistique et puis la même expertise métier, l’expertise de santé. Donc bon, le problème, c’est qu’il y a plein d’expertises, donc ça serait bien qu’on arrive à retirer l’expertise informatique, mais en tout cas, on ne va pas, je pense, sur les problèmes à gros enjeux, supprimer l’expertise. Ça serait bien de supprimer l’expertise informatique. Et peut-être que c’est là où l’auto-ML arrive. Est-ce que l’auto-ML peut arriver à supprimer l’expertise informatique ? Je pense que c’est un projet très intéressant. Il y a Autoscore 2 en auto-ML open source. Je ne l’ai pas utilisé, mais j’en pense du très grand bien. Est-ce qu’on va voir des frontiers comme ça apparaître dans Scikit-Learn ou même dans Scrub? parce que c’est plus facile de faire du bon AutoML quand on a une idée du domaine. Je ne vais pas faire l’AutoML de la même manière si c’est des images ou si c’est des tables. Donc peut-être qu’on va voir ça dans des librairies open source de l’écosystème. 

 

Marc Sanselme 00:38:20 – 00:38:29 : Ok, intéressant. Est-ce que tu as une anecdote à nous partager ? 

 

Gael Voroquaux 00:38:29 – 00:40:39 : donc on est en 2018 on lance le consortium Scikit-Learn. le but du consortium Scikit-Learn c’est d’arriver à trouver des sous pour payer les. à l’époque ça devait être 3 développeurs qu’on avait qui bossaient dessus. on arrive à trouver des mécènes. on était hyper exigeant. on voulait des gens qui nous filent des sous et qui ne modifient pas notre roadmap. on était prêt à les écouter mais on prenait pas d’ordre. Le but, c’est d’éviter de se focaliser sur les problèmes des banques et pas les problèmes de tous les data scientists ou Dieu sait quoi. On n’était pas à vendre. On trouve des gens fantastiques, AXA, Dataiku, BNP Paribas, je ne me souviens plus, on avait quand même pas mal. On lance le truc. Ce que ses partenaires gagnaient, c’était de la com. Et puis, ils étaient contents de faire vivre un projet qu’ils utilisaient. On lance le truc et il se trouve que, hasard de calendrier, l’ouverture du labo Google France est le lendemain du lancement. Alors nous, on voulait faire de la com, donc on avait ciblé des journalistes, etc. Le lendemain, je suis invité à l’ouverture du labo de Google. et donc là c’est le même truc c’est le même beans. en gros ils montrent que ce qu’ils font c’est génial etc. et donc il y a Jeff Dean qui est le directeur de la recherche à Google qui essaie de montrer que ce qu’ils font c’est génial et qui monte un graphe intitulé quelque chose comme les librairies d’open source et où tu avais les stars GitHub en fonction du temps. Et il voulait montrer que TensorFlow, c’était celle avec le plus de stars. Il n’y avait pas sa KitLearn sur son graphe. C’est simple que ça. En temps normal, ça aurait passé. Parce que les journalistes, ils connaissaient pas. Sauf que les journalistes, ils avaient été à notre événement la veille. C’était génial. Voilà. Donc, ça illustre, c’est marrant parce que ça illustre la sociologie dont on parlait avant. Le fait que de maîtriser l’espace informationnel, que de maîtriser l’image qu’on projette, c’est crucial. 

 

Marc Sanselme 00:40:39 – 00:40:41 : Ils ont fait une remarque, du coup ? 

 

Gael Voroquaux 00:40:41 – 00:40:41 : Non. 

 

Marc Sanselme 00:40:41 – 00:40:42 : Non. 

 

Gael Voroquaux 00:40:42 – 00:40:48 : Mais ils l’ont mentionné dans… Pas forcément, mais… En tout cas, il y a des gens qui l’ont vu, quoi. 

 

Marc Sanselme 00:40:48 – 00:40:49 : Ouais, ok. 

 

Gael Voroquaux 00:40:49 – 00:40:55 : Mais voilà, c’est un sujet qui est un sujet hyper important. 

 

Marc Sanselme 00:40:55 – 00:41:00 : Ok. Est-ce que t’as une opinion, maintenant, à nous partager ? 

 

Gael Voroquaux 00:41:00 – 00:42:09 : Ouais. C’est marrant. Un des trucs que j’ai appris dans ça, qu’ils te leurent, c’est bizarre, mais c’est la démocratie. Parce que Je me lance dans le projet, il y a des gens qui bossent avec moi, et moi je pense que j’ai beaucoup d’expérience en open source, j’ai fait d’autres trucs avant Cycle-Learn, des trucs qui ont été connus, des trucs qui ont foiré, et les gens sont pas d’accord avec moi. Sauf que moi, j’ai l’expérience, moi je suis fort, donc c’est moi qui ai raison. Sauf qu’à un moment… on se rend compte que si on fait ça et bien on va se retrouver seul parce que les gens ils consacrent du temps et si on leur dit toujours que c’est nous qu’on a raison et pas eux et bien ils vont se barrer. et puis aussi en réfléchissant on se dit zut j’ai quand même des gens faut un petit peu réaliser que ces gens ils sont super forts vu ce qu’ils ont fait. donc si dans un groupe de 10 personnes j’ai 9 personnes super forts qui sont pas d’accord avec moi, c’est peut-être moi qui ai tort. Et c’est vraiment l’un des trucs que j’ai vraiment appris dans Scikit-Learn. J’ai appris la dynamique de groupe, j’ai appris l’humilité à écouter les gens, j’ai appris, j’ai envie de dire, vraiment la démocratie. 

 

Marc Sanselme 00:42:10 – 00:42:16 : ok et alors c’est quoi la suite pour ça? qui te l’air maintenant ? 

 

Gael Voroquaux 00:42:16 – 00:44:43 : c’est compliqué parce que pour revenir toujours sur la sociologie on est plus dans la vague de hype. je sais pas si tu vois la vague de hype de Gardner. nous on est dans le creux. D’une certaine manière, c’est bien, parce que ça veut dire qu’on est mûr, qu’on est utilisé, etc. Mais on n’est pas forcément visible, et surtout, on n’est pas cool. Tout le monde l’utilise, mais c’est comme garer ton vélo devant une boîte de nuit. Ça marche pas à comparer au type qui a garé sa Ferrari, quoi. Donc… Sous-titrage ST’ 501 ont besoin d’avoir une sérénité pour passer en production, pour accompagner leur équipe. Donc on est dans la sérénité, on est dans la facilité, le management de projet de data science, faciliter l’audit de projet de data science, faciliter l’onboarding de nouveaux contributeurs dans une boîte. Pourquoi est-ce qu’on choisit ce genre de business model ? Ce n’est pas en compétition avec Scikit-Learn. On n’est pas en train de dire on va vous vendre un Scikit-Learn++. Quand on fait ça, on est notre propre compétiteur. Notre but de la boîte, c’est juste de faire que Scikit-Learn ait plus de succès. Et donc, on a la suite. Donc ça, c’est super, c’est probable. Ça fait six mois qu’on existe, on s’éclate, on va bientôt faire des annonces. On a levé des fonds, on a levé des fonds avec beaucoup de gens de la communauté qui avaient réussi, qui nous ont fait des investissements, c’est public maintenant, c’est génial. Il y a un danger. Je reviens à la démocratie. C’est qu’It Learn a existé historiquement parce que c’était un projet où les gens pouvaient arriver avec leur point de vue qui était différent du nôtre et on arrivait à l’écouter. Ça devient de plus en plus dur avec le temps. Il faut qu’on garde ça. Là, on a de plus en plus de développeurs qui sont payés par Probable. Il faut qu’on garde une capacité à écouter l’extérieur. C’est de plus en plus dur, mais il faut qu’on le fasse parce que non seulement ça apporte des contributions de l’extérieur, donc ça apporte du temps de personnes, mais en plus, ça évite la monoculture. C’est des gens qui nous challengent et qui nous disent où on se trompe. Et c’est ça qu’a fait Scikit-Learn. C’est éviter la monoculture. Donc c’est vraiment ça qu’on va essayer de faire. 

 

Marc Sanselme 00:44:44 – 00:44:55 : ok bon courage. alors est-ce que pour terminer tu as quelqu’un qui te vient en tête que tu aimerais entendre au micro de Data Driven 101 ? 

 

Gael Voroquaux 00:44:55 – 00:45:49 : Si tu es prêt à parler en anglais, tu peux faire venir Meredith Whitaker. Meredith Whitaker, c’est la présidente de Signal, l’application de messagerie. Elle est souvent à Paris cette année. Elle est souvent à Paris, mais elle ne parle pas trop français. et sinon tu peux faire venir Sacha Aluccioli. sauf que Sacha Aluccioli donc elle parle très bien français. mais la vie de Montréal elle passe de temps en temps. elle est là et on vient d’écrire un papier qui est paru en ligne il y a quelques jours. qui parle j’ai envie de dire encore de la sociologie. qui parle de quels sont les mécanismes à l’oeuvre dans qu’est-ce qui fait qu’on trouve qu’un très grand modèle de quelque chose c’est génial. pourquoi c’est pas si universel que ça et quelles sont les conséquences sur la société, l’environnement, l’économie? 

 

Marc Sanselme 00:45:50 – 00:45:55 : Ok, et bien écoute merci pour ces suggestions et merci pour l’épisode Gaël. 

 

Gael Voroquaux 00:45:55 – 00:45:56 : Merci beaucoup Marc. 

 

Marc Sanselme 00:45:57 – 00:46:02 : Vous venez d’entendre Gaël Varroco, directeur de recherche à l’INRIA et cofondateur de Scikit-Learn et Probable.