Netflix, Lyft et 360 Learning : Machine Learning et LLM

Marie Douriez, data scientist chez Lyft puis chez Netflix, et maintenant machine learning engineer chez 360 Learning , est l’invitée de l’épisode 55 de Data Driven 101. 

Au cœur de l’innovation en IA, elle nous plonge dans l’évolution de l’apprentissage machine à travers son expérience chez des géants de la technologie et maintenant chez 360 Learning, une plateforme pionnière dans l’éducation collaborative pour entreprises.

 Elle nous présente comment l’intelligence artificielle façonne les méthodes d’apprentissage moderne, nous parle de l’utilité croissante de l’IA générative pour personnaliser le contenu éducatif, et partage les défis techniques et les progrès réalisés dans la création automatique de cours et de contenus interactifs.

 

Marc 00:00:00 – 00:00:18 : Aujourd’hui, je reçois Marie Douriez. Marie a travaillé en tant que Data Scientist chez Lyft puis chez Netflix dans la baie de San Francisco avant de rejoindre 360 Learning à Paris en tant que Machine Learning Engineer. 360 Learning est une plateforme de formation pour les entreprises basée sur l’apprentissage collaboratif. Bonjour Marie. 

 

Marie 00:00:18 – 00:00:20 : Bonjour Marc, merci de me recevoir. 

 

Marc 00:00:20 – 00:00:26 : Avec grand plaisir. Alors, est-ce que tu peux nous parler de 360 Learning un peu plus en détail ? 

 

Marie 00:00:26 – 00:00:46 : Tout à fait. Alors 360 Learning, c’est une plateforme de formation à destination des entreprises. Donc ça va permettre aux équipes formation des entreprises, mais aussi aux experts métiers, de créer des formations personnalisées pour les employés. Et donc ça va permettre l’intégration de nouveaux collaborateurs, la formation des techniques de vente ou de leadership, des formations obligatoires. 

 

Marc 00:00:47 – 00:00:58 : Ok. De l’onboarding à la formation, à des développements de compétences. Tout à fait. Alors, quel genre de data vous manipulez du coup et comment vous êtes organisé pour la manipuler ? 

 

Marie 00:00:58 – 00:02:16 : Alors, effectivement, on a en fait deux équipes un petit peu. Il va y avoir une équipe data à proprement parler, dont je ne fais pas partie, et qui va là ingérer un petit peu différentes données et les rendre visibles pour différentes équipes au sein de l’entreprise. Par exemple, les équipes de vente pour visualiser un petit peu les funnels d’acquisition et des prospects, les équipes marketing pour voir les différents canaux. les équipes des opérations, des données Salesforce et aussi les équipes produits et un petit peu visualiser et comprendre nos métries clés, le nombre d’apprenants, le nombre de cours créés, le nombre d’auteurs. Donc ça, ça va être un de leurs premiers objectifs. En deuxième objectif, ils vont aussi rendre ces données visibles par nos utilisateurs, par nos clients même. Par exemple sur la plateforme ou alors permettre aux clients d’aller chercher eux-mêmes leurs données de formation pour comprendre quelles sont les formations suivies, quels apprenants les ont suivies et d’autres données de ce type. Donc il va y avoir plein de sources de données à la fois d’utilisation de la plateforme mais aussi externe d’acquisition et de revenus. Ensuite, la deuxième équipe dont je fais partie, ça va être l’équipe intelligence artificielle, IA, qui va être une équipe beaucoup plus orientée produit et dont l’objectif va être vraiment de construire des fonctionnalités à destination de nos utilisateurs sur la plateforme et qui utilisent l’intelligence artificielle. 

 

Marc 00:02:16 – 00:02:19 : Quel est le besoin en intelligence artificielle ? 

 

Marie 00:02:19 – 00:03:03 : Alors, il y en a plusieurs. Historiquement, le besoin d’intelligence artificielle, ça a commencé par une fonctionnalité un peu classique, en fait, de recommandation de contenu pour les apprenants. Donc, si tu as déjà suivi des formations sur ta plateforme, on va te recommander d’autres cours en fonction de ce que tu as suivi et de ce que tes collègues ont aussi suivi. Donc ça, ça a été la première fonctionnalité qu’on a créée et qu’utilisait de l’intelligence artificielle un modèle de recommandation de contenu. Oui. Et ensuite, on s’est un petit peu plus concentré sur un autre type d’utilisateur de notre plateforme. Ce sont les auteurs qui vont créer des contenus sur notre plateforme pour ensuite pouvoir les diffuser à leurs employés. Et c’est là qu’on a intégré l’IA générative qui se prête beaucoup plus à ce genre de cas d’usage. 

 

Marc 00:03:04 – 00:03:21 : D’accord. Donc, la partie recommandations qui se base plus sur les cours qui ont déjà été vus, un peu comme la recommandation Netflix et compagnie. En plus, un cliché. Oui, d’accord. Et donc, le deuxième volet, plus aide à la rédaction. 

 

Marie 00:03:21 – 00:03:23 : Tout à fait, voilà. 

 

Marc 00:03:23 – 00:03:32 : Alors, comment est-ce que vous avez découpé ce problème d’aide à la rédaction en sous-problèmes ? Techniquement, si on rentre un peu dans le détail, quels sont les sous-problèmes résolus ? 

 

Marie 00:03:32 – 00:05:34 : Donc, en gros, sur 360 Learning, les équipes formations, les experts métiers peuvent créer des cours, des formations grâce à un outil auteur. Un cours, ça va être une succession de slides, de textes, images, vidéos et aussi des petits quiz pour rendre le cours un petit peu interactif. Donc nous, notre fonctionnalité d’IA générative, qu’est-ce qu’elle va faire ? Elle va te permettre de créer un cours complet à partir soit d’un document, donc un PDF ou un PowerPoint, de l’information que tu souhaites diffuser au reste de l’entreprise, soit à partir plus simplement d’un titre ou des objectifs du cours. Et donc là, on va te créer ce cours complet avec l’introduction au cours, les différentes sous-parties, des images qui illustrent, des questions, les points clés du cours et tout ça à peu près en moins d’une minute. la fonctionnalité globale. Alors, comment on s’y est pris ? On n’a pas tout fait d’un coup, on n’a pas eu la vision tout de suite d’un coup. La première fonctionnalité la plus simple qu’on a commencé à construire à l’été 2022, donc même avant ChatGPT, en fait, c’était la génération de questions. Donc on s’est rendu compte en parlant à nos auteurs que créer des questions pour un peu tester les connaissances des apprenants et rendre le cours interactif, c’est assez fastidieux à faire, mais pourtant c’est assez essentiel. Et donc ce qu’on a fait, c’est tout simplement on va prendre le contenu de ton cours et on va te proposer à partir de ce contenu une dizaine de questions avec bonnes et mauvaises réponses que tu peux ensuite sélectionner pour intégrer à ton cours. Donc ça, c’était vraiment la première partie assez simple pour commencer à aider les auteurs à la création de contenu. Ensuite, on a créé deux fonctionnalités. Là, on va vraiment te générer le cours en entier. La première, à partir du document. Tu as un document que tu souhaites résumer, synthétiser en un cours, mais tu n’as pas forcément le temps, tu n’as pas forcément l’expertise pour créer ce cours-là. Là, on va te simplifier, on va te le résumer et t’en faire un cours. Et enfin, la troisième partie, c’était donc de créer un cours à partir seulement d’un titre et des objectifs pour ce cours. Donc, tu sais que tu veux créer un cours sur le machine learning avec tels objectifs et nous, on va pouvoir te le créer en entier. 

 

Marc 00:05:34 – 00:05:37 : Mais la connaissance, elle part d’un document fourni par le client ? 

 

Marie 00:05:37 – 00:06:54 : Alors, il y a les deux. Si tu pars du document, donc si tu crées le cours à partir du document, effectivement, là, on va essayer de rester fidèle aux documents que tu nous donnes et on ne va pas aller chercher ailleurs. On va demander à ChatGPT de rester vraiment fidèle aux documents d’entrée. Et c’est là, tu poses une question intéressante, c’est qu’ensuite, quand on crée le cours à partir d’un titre, on a voulu essayer de rendre, en fait, cette création, cette génération un peu plus personnalisée aux entreprises, aux auteurs et pas juste avoir du ChatGPT classique que tu pourrais obtenir, en fait, via leur interface sur OpenAI. Oui. C’est là qu’on intègre une technique qu’on appelle communément RAG. Ça va être une génération augmentée grâce à de la récupération de données. Ce qu’on va faire, c’est qu’on va utiliser les données des cours qui sont déjà créés par nos entreprises. Quand tu vas rentrer un titre sur le machine learning, sur les techniques de vente, on va aller chercher dans le répertoire des cours que tu as déjà créés s’il y a des cours qui s’y rapportent déjà. Et ensuite, quand on a trouvé ces contenus-là, quand on va demander à ChatGPT de générer, on va inclure dans le contexte à ChatGPT ces données-là. Et donc, on espère que ça va rendre le cours beaucoup plus pertinent, qu’il va savoir reconnaître des mots assez techniques propres à une entreprise, des logiciels, même différentes équipes, différentes structures pour que le cours soit beaucoup plus pertinent pour chaque client, pour chaque auteur. 

 

Marc 00:06:55 – 00:06:59 : D’accord, donc à partir de d’autres cours, aller chercher de l’information qui aide à écrire ? 

 

Marie 00:06:59 – 00:07:04 : Voilà, les nouveaux cours. Donc on tire parti des données déjà existantes sur la plateforme. 

 

Marc 00:07:05 – 00:07:14 : Ok, alors tu nous as donné un peu de détails techniques déjà, mais si on reprend dans l’ordre, donc la génération de questions, là ici, de quoi on parle ? 

 

Marie 00:07:14 – 00:07:41 : Là, c’est finalement assez simple pour le moment. Donc, c’est un appel à ChatGPT. Donc, en fait, on va concaténer le contenu de ton cours, demander à ChatGPT de te générer des questions. Et donc, on fait ça, en fait, sur un microservice un petit peu en Python qui va communiquer d’un côté avec Azure OpenAI, donc l’API OpenAI et ChatGPT, et de l’autre côté, renvoyer la réponse à la plateforme, au backend, pour pouvoir afficher sur la plateforme les questions à générer. 

 

Marc 00:07:41 – 00:07:47 : Ok. Ça marche bien, moyennement ? Il a fallu beaucoup bidouiller le prompt ? 

 

Marie 00:07:47 – 00:08:57 : C’est pas si mal. En fait, si tu veux, pour donner un petit peu d’historique, à la base, on avait commencé à faire cette fonctionnalité avant ChatGPT. Donc là, j’avais vraiment pris des modèles open source sur Hugging Face que j’avais un petit peu combinés pour pouvoir avoir des questions, la bonne réponse. Donc, j’avais pas réentraîné mes propres modèles, mais quand même, il y avait un petit peu de travail pour jouer avec différents paramètres. D’accord. Et donc, quand ChatGPT est sorti, là, je me suis posé quelques questions parce que je me suis dit, en fait, en imprompte, il peut me faire différents types de questions très facilement. Il peut me sortir la bonne réponse, mais aussi les mauvaises réponses. Il peut me faire ça presque dans toutes les langues avec une qualité variable, mais tout de même qui est quand même pas mal, mieux que ce que je pourrais faire. Et donc, de ce point de vue-là, c’est assez simple. Alors après, effectivement, comme tu le mentionnes, il y a toujours des petits détails, c’est-à-dire que tu vas lui demander tant de questions de tel type. Et une fois sur dix, il va te répondre autre chose. Ça va être mal formaté. Donc là, il faut un petit peu mettre en place certaines règles dans ton parsing, dans ton code pour s’assurer que ça marche bien. Pour s’assurer de ça. Mais globalement, c’est quand même… Ou parfois, par exemple, il va pas t’annoter correctement les bonnes réponses. Donc il va t’en donner deux bonnes, mais il va oublier que la troisième est aussi une bonne réponse. Donc ça, on essaie de jouer un petit peu sur le prompt. 

 

Marc 00:08:57 – 00:08:59 : Parce que les questions, c’est des questions à choix multiples ? 

 

Marie 00:08:59 – 00:09:02 : Voilà. Choix multiples ou alors vrai-faux. Il y a différents… 

 

Marc 00:09:02 – 00:09:04 : C’est lui qui propose les choix multiples aussi ? 

 

Marie 00:09:04 – 00:09:18 : C’est ça. Je lui demande de me dire 5 questions à choix multiple avec 4 options et au moins une à deux bonnes réponses. Mais parfois, il se trompe un petit peu. La troisième réponse devrait être bonne et en fait, il ne la marque pas comme bonne. 

 

Marc 00:09:18 – 00:09:21 : C’est le client qui doit vérifier ? 

 

Marie 00:09:21 – 00:09:35 : Un petit peu. On laisse la main aux clients pour éditer les questions, pour changer la formulation et les réponses. On essaie, dans la mesure du possible, de faire en sorte que les réponses soient bien annotées, mais ça ne marche pas toujours à 100%, malheureusement. 

 

Marc 00:09:35 – 00:09:44 : Oui, ça reste infiniment plus simple de corriger des questions qu’on suggère que de se creuser, trouver des questions, des réponses. Surtout, trouver des fausses réponses dans les QCM, c’est difficile. 

 

Marie 00:09:44 – 00:09:52 : C’est ça, c’est le plus difficile, apparemment. C’est ce qu’on avait cru comprendre. Voilà. Donc, on espère qu’on a eu des bons retours des utilisateurs. Donc, on espère que c’est plutôt utile. OK. 

 

Marc 00:09:52 – 00:10:00 : Alors, tiens, je suis quand même curieux. Comment on résout le problème avant ChatGPT ? 

 

Marie 00:10:00 – 00:10:42 : Alors là, moi, ce que j’avais pris, c’était… Donc, ça marchait surtout en anglais et c’était un T5 modèle. C’était un type de modèle qui avait été sorti par Google et qui, en fait, avait été fine-tuné sur un dataset qu’on appelle Squad et qui, en fait, des questions et des réponses d’articles Wikipédia. Et donc, en fait, il avait entraîné à « generate questions ». Et donc, à partir de, je ne sais plus, 300, 400 tokens, il pouvait te générer une suite de questions. Donc ça, c’est le premier modèle. Et ensuite, j’utilisais un modèle de « question answering ». Donc aussi un T5 ou d’autres types de modèles. Là, il y avait d’autres options. Et donc là, je lui donnais les questions que j’avais générées, le texte, et je lui demandais de répondre à la question. Voilà, donc je combinais un peu ça. Mais je n’avais pas les mauvaises réponses. Je n’avais pas encore fait ça, oui. 

 

Marc 00:10:43 – 00:10:54 : Oui, donc avant, on avait un modèle qui était fait pour générer des questions. Et là, on a un modèle généraliste qui est fait pour répondre à des instructions. Et c’est des instructions qui disent, il faut générer des questions, des réponses, etc. 

 

Marie 00:10:54 – 00:11:09 : C’est vrai que c’est beaucoup plus flexible. Et puis, comme je disais, il n’y a pas ce problème de langue parce qu’en fait, mon modèle marchait bien en anglais, mais il aurait fallu que j’ai l’équivalent en français, en allemand, en espagnol, d’autres sources de données. Alors que là, le chat GPT, c’est quand même très versatile. 

 

Marc 00:11:09 – 00:11:10 : OK. 

 

Marie 00:11:10 – 00:11:10 : Voilà. 

 

Marc 00:11:11 – 00:11:15 : Alors, quand on veut faire un cours à partir d’un document, comment on se prend cette fois-ci ? 

 

Marie 00:11:15 – 00:12:02 : Donc là, c’est un peu plus compliqué parce qu’au total, je pense qu’on va avoir entre 10 et 15 appels à ChatGPT. Donc, le défi principal, en fait, ça va être d’ingérer du texte qui va être 30 000, 40 000 mots. Et donc, ça ne va pas tenir dans un seul appel à ChatGPT, quoique ça augmente maintenant, mais ça ne résout pas tout non plus. Et donc, l’idée, ça va être de découper le cours en différents paragraphes. de résumer ces parties de cours, ensuite de demander à HHJPT, à partir de ces résumés, de créer un plan de cours. Et ensuite, pour chaque partie du cours, d’aller retrouver quelle section du document s’y rapporte et de générer ces différentes parties du cours. Et on intègre aussi la génération de questions qu’on avait créée précédemment. Donc ça, on réutilise une brique existante. Mais sinon, l’objectif, c’est de rester fidèle au cours initial et de restructurer le document. 

 

Marc 00:12:02 – 00:12:09 : D’accord. C’est difficile de faire un plan, non ? Où elles sont les grandes difficultés ? J’anticipe un peu sur ce que j’imagine. 

 

Marie 00:12:09 – 00:13:28 : Alors, il y a différentes difficultés. La première, alors le plan, en fait, tu peux lui demander simplement « fais-moi un plan en trois, quatre parties ». Bon, il ne respecte pas toujours tes instructions, encore une fois. Parfois, ça va être un peu plus de parties, un peu moins. Ce qui n’est pas toujours évident et ce qu’on a essayé de régler, c’est de suivre le plan initial du document. Parfois, en fait, il y a des documents qui sont très bien formantés, qui ont déjà des grands 1, des grands 2. Avec notre premier algorithme de parsing, en fait, on ne récupérait pas cette structure. Et donc, les utilisateurs étaient étonnés d’avoir un cours qui ne suivait pas la structure initiale, alors que le document initial était déjà très bien structuré. Donc ça, on a un petit peu amélioré. le parsing du PDF, donc c’est un peu mieux. Et on utilise aussi GPT-4, qui va être un petit peu meilleur à suivre les instructions. Et on a vu que c’était mieux pour vraiment respecter la structure initiale. Donc ça, c’était un premier défi. Et le second défi ensuite, c’est qu’on va générer chaque partie et aller rechercher les sections dans le document initial qui s’y rapportent pour être sûr que ce soit bien pertinent. et aussi qu’ils ne se répètent pas trop parce qu’en fait on générait au départ chaque partie de manière un petit peu indépendante et parallèle mais parfois rien n’empêchait qu’il y ait du contexte un peu similaire dans les différentes parties. donc là on essaie de générer tout d’une traite mais ça pose des problèmes où parfois plus c’est long plus chaque GPT s’y perd aussi dans les instructions. voilà ils ne respectent pas toutes les consignes mais c’est ce qu’on essaie de faire. 

 

Marc 00:13:28 – 00:13:34 : Oui, d’accord. Mais là, l’objectif, c’est de respecter le plan initial. 

 

Marie 00:13:34 – 00:13:44 : Voilà. Il n’y a pas toujours un plan précis. Mais oui, l’idée, c’est de vraiment rester fidèle au cours initial, de ne pas aller chercher ailleurs, de rester 100% proche du document. 

 

Marc 00:13:44 – 00:14:09 : Ce qui permet ensuite de se concentrer sur les sous-parties, comme des sous-problèmes, de les résumer indépendamment. Voilà, c’est ça. Ok, super clair. Et alors, la troisième partie, celle dans laquelle on voudrait inventer un cours en s’appuyant entre autres sur d’autres cours. Tu nous as parlé de RAG, Retrieval Augmented Generation. Comment est-ce que ça s’orchestre avec le reste ? 

 

Marie 00:14:09 – 00:15:56 : Donc là, en fait, on a réutilisé une autre brique existante dans la plateforme qui est tout simplement la barre de recherche. C’est-à-dire en tant qu’apprenant, si tu veux chercher des cours sur le marketing, tu peux taper marketing et ça va t’afficher des cours. Donc nous, on utilise Elasticsearch. Et donc en fait, moi, ce que j’ai fait, c’est simplement de reprendre cette composante. Et donc à partir du titre que tu rentres pour générer le cours, je vais utiliser certains mots, voire tous les mots de ce titre, de ces objectifs, et je vais faire une requête toute simple à Elasticsearch. Donc en fait, dans cette partie de récupération des données, le retrieval du RAG, il y a différentes manières de faire ça. Tu peux avoir une recherche par mot-clé, une recherche lexicale, c’est-à-dire que tu vas vraiment chercher des documents qui ont le mot précis dans le document. Et donc là, c’est ce que je fais avec Elasticsearch, je suis sur une pure recherche lexicale. Et ensuite, tu pourrais varier ça, diversifier en utilisant ce qu’on appelle de la recherche sémantique, où au lieu d’aller chercher exactement le mot précis, tu vas chercher en fait des mots qui ont un sens assez similaire. Alors pour le moment, nous, on ne fait pas cette partie recherche sémantique. On pourrait, parce que Elasticsearch commence à proposer ces options de recherche sémantique et avoir en fait une version hybride à la fois lexicale et sémantique. Mais on a trouvé que ça marchait assez bien déjà en première approche avec juste une recherche lexicale. Donc voilà, ça c’est cette partie récupération. Et une fois qu’on a ces documents, ensuite… Il faut dire à ChaGPT, voilà du contexte qui peut t’aider. Alors, c’est là où c’est un peu subtil. C’est que dans le document, on était certain que ça allait aider. C’était du contenu pertinent. Parfois, les documents que je vais chercher sur Elasticsearch, je ne suis pas certaine. Par exemple, parfois, si tu fais un cours Product Management, s’il me trouve des documents qui ont lien avec juste Management, ça ne va pas être 100% pertinent. Donc, je dis à ChaGPT, voilà du contexte. Ce n’est pas forcément exactement pertinent, mais essaie d’utiliser au mieux pour me générer la suite du cours. Voilà. 

 

Marc 00:15:57 – 00:16:05 : Et ça t’intéresse ou ça ne t’intéresse pas que JetGPT utilise son prior, ce qu’il a déjà comme connaissance, pour générer une partie du cours ? 

 

Marie 00:16:05 – 00:16:52 : Alors ça m’intéresse parce qu’il n’y a pas toujours du contenu pertinent sur les plateformes. Donc dans un tiers des cas, on va dire qu’on génère des cours où on n’a pas récupéré de contenu sur la plateforme. Et pour certains sujets, maîtriser Excel, maîtriser du management… des techniques de vente. en fait ChatGPT est quand même assez bon. on a tous déjà testé des petites requêtes et il répond des choses assez pertinentes. donc on lui fait plutôt confiance sur ces sujets assez communs qu’on pourrait un peu trouver sur un article Wikipédia qui n’a pas besoin d’être mis à jour tous les jours. donc là on lui fait confiance. là où ça va être vraiment utile cette histoire de récupération c’est sur des sujets beaucoup plus précis et techniques propres à des entreprises. mais on est ok avec la base de données initiale de ChatGPT on essaie juste de l’augmenter dans la mesure du possible. 

 

Marc 00:16:52 – 00:17:01 : Et comment? est-ce que vous qualifiez les trois sous-parties, les trois algos d’IA ? Comment on vérifie la qualité ? 

 

Marie 00:17:01 – 00:18:23 : Là, tu touches à un point sensible. Ce n’est pas évident. En fait, on a eu une approche jusqu’à présent assez manuelle. C’est-à-dire, par exemple, quand on a commencé à générer des questions, je prenais un échantillon de cours qui avait déjà été créé sur la plateforme. Je générais des questions. Et là, je demandais à des gens de l’équipe, assez simplement sur un front-end que je construisais en Python, de dire est-ce que cette question, elle est bien ou elle n’est pas bien ? Et je regardais un petit peu le pourcentage de questions qui était acceptable. Pour la génération de cours, c’est encore plus compliqué parce qu’un cours, c’est assez grand, c’est plusieurs parties, c’est des questions, c’est des points clés. Donc là, on va essayer d’adresser différents points. Est-ce que le plan du cours te paraît bien ? Donc pareil, une approche manuelle. Donc on est beaucoup sur une approche manuelle jusqu’à présent. On essaye d’investir un peu plus sur une évaluation plus automatisée de la qualité des cours. Qu’est-ce qui fait que c’est un bon plan de cours ? Comment on évalue que ChatGPT ne se répète pas entre les différentes parties ? Comment on évalue la qualité d’une question ? Comment on évalue le fait que les bonnes réponses sont bien précisées dans les options ? Voilà, donc c’est un petit peu en cours pour le moment, mais ce n’est pas évident. Donc, beaucoup de manuels et on essaie de rajouter… Et ça nous permettrait d’itérer beaucoup plus facilement. Parce que là, c’est vrai que le moindre changement aux prontes a des conséquences qu’on a beaucoup de mal à évaluer et à estimer. Et donc, ça nous freine un petit peu aussi dans notre itération et dans l’amélioration des prontes. Donc, affaire à suivre. 

 

Marc 00:18:25 – 00:18:26 : C’est toujours un gros enjeu. 

 

Marie 00:18:26 – 00:18:27 : Voilà, c’est pas évident. 

 

Marc 00:18:28 – 00:18:34 : Alors, quels sont les grands verrous, les grands obstacles rencontrés sur votre route ? 

 

Marie 00:18:34 – 00:20:12 : Alors, je pense qu’il y en a plusieurs. Si on se place sur mon point de vue, moi, purement AI engineer et prompt engineer, c’est s’assurer que chaque GPT suive les instructions, attraper un petit peu les cas extrêmes où il ne va pas suivre et s’assurer qu’on ait des gardes fous un petit peu autour de ça. Ensuite, je pense que ce qui est assez difficile finalement, comme toute fonctionnalité produit, c’est vraiment l’intégration de ces fonctionnalités à tout le produit, UX, UI, comment on va identifier les besoins utilisateurs. et ensuite comment on intègre une solution d’IA générative parce qu’en fait, ce n’est pas une fonctionnalité classique, mécanique. Il y a des temps de latence, il y a de l’incertitude par rapport à ce qui va être généré. Parfois même, ça ne marche pas. Donc, comment on montre un système d’horreur ? Et ensuite, comment on laisse l’utilisateur mettre du contenu qui a été généré ? Comme tu as dit au début, les questions, l’utilisateur peut les modifier, le cours, l’utilisateur peut le modifier et on veut qu’il reste vraiment maître du contenu qu’il va pouvoir diffuser au sein de l’entreprise. Expliquer aussi juste comment ça marche, de quoi on a besoin quand tu rentres le titre et les objectifs et ce qu’on s’attend à un format particulier ? Donc, voilà. Donc, arriver à faire en sorte que ce soit intuitif et pas trop intrusif et pas trop lent pour les utilisateurs, ça, c’est un défi qui n’est pas négligeable. Il y a un gros, gros travail de la part des équipes produits, donc de ma product manager et de ma product designer. Et je pense, le dernier verrou, on vient d’en parler vraiment, c’est l’évaluation de la qualité du contenu que tu génères. Comment tu sais que c’est suffisant pour de la formation professionnelle ? Comment tu sais que ça n’hallucine pas ? Comment tu sais que ça ne va pas faire perdre du temps, en fait, à tes utilisateurs ? Et ensuite… Moi, comment je fais pour itérer et améliorer mes promptes de manière un petit peu guidée. 

 

Marc 00:20:12 – 00:20:18 : Ok. Alors, tu as travaillé chez Netflix avant. Est-ce que tu peux nous parler de ton rôle là-bas ? 

 

Marie 00:20:18 – 00:21:13 : Tout à fait. J’ai été Data Scientist chez Netflix pendant à peu près deux ans. J’ai travaillé dans une équipe qui s’appelle Globalization. C’est une équipe qui va utiliser des techniques de machine learning et de statistiques pour optimiser la traduction et l’internationalisation des contenus. Plus concrètement, pour chaque film et pour chaque série, tu vas avoir des sous-titres et des doublages. Mais ça a un certain coût de réaliser les doublages en particulier. Et donc, on va vouloir un petit peu sélectionner un peu stratégiquement dans quel angle et pour quel contenu, pour quel film, pour quelle série, on va vouloir créer des doublages. Et donc, là, ça va se baser un petit peu sur des techniques à la fois de machine learning. On va essayer de prédire la popularité d’un show avant sa sortie. On sait à peu près le coût de créer un doublage dans chaque langue. Si tu fais le ratio des deux, en fait, tu peux un petit peu dire oui, je recommande aux équipes de créer ce doublage ou non. Donc, en fait, ça va être de l’optimisation sous contrainte pour optimiser notre budget de doublage. 

 

Marc 00:21:13 – 00:21:18 : D’accord. À partir de quel input vous faites des prédictions ? 

 

Marie 00:21:18 – 00:21:51 : Donc, ce n’est pas moi directement qui faisais ces prédictions. Il y avait une autre équipe plus contenue qui était en charge de faire ça. Et en fait, la prédiction de popularité, elle a plein d’utilisations au sein de l’entreprise. Mais tout simplement, à partir des données historiques, on sait que telle saison de telle série a eu telle popularité dans tel pays. On connaît un petit peu les caractéristiques de ces saisons, quel genre, quelle catégorie, est-ce que c’est plutôt du drame, de la comédie, de l’horreur ? On sait un petit peu la langue, on sait le budget qui a été alloué à la création de ce contenu. Voilà, on a pas mal de données comme ça. 

 

Marc 00:21:51 – 00:21:52 : Les distributions ? 

 

Marie 00:21:52 – 00:22:37 : distribution oui voilà aussi des acteurs. parfois quand on se rapproche un petit peu plus de la sortie au delà des tags on a un petit peu plus un résumé. donc on va avoir des données un peu plus précises sur le contenu. parfois même on a des données avant la sortie sur IMDB ou ce genre de choses d’intérêt pour une série. mais là c’est quand on devient vraiment très proche de la sortie. donc voilà on essaie d’aller chercher ce qui n’est pas toujours évident parce que 4 à 6 mois avant en fait on n’a pas toujours énormément d’informations sur une série et c’est le temps qu’il faut pour doubler 4 à 6 mois. Voilà, c’est ça. En fait, les doublages, vraiment, ils doivent se décider maximum quatre mois à l’avance. Donc, il y a souvent pas mal d’incertitudes. Alors, c’est plus simple, par exemple, pour une saison 2 ou une saison 3 d’une série parce qu’on a une idée, on peut se baser. Mais pour un film un peu nouveau ou une série nouvelle, ce n’est pas toujours évident. 

 

Marc 00:22:38 – 00:22:44 : Et on ne décale pas les sous-titres par rapport à la sortie ? On ne fait pas des sorties de sous-titres différées ? 

 

Marie 00:22:44 – 00:23:12 : Ça, c’est une bonne question. Si ça arrive, je pense. Parfois, ça peut arriver que pour une série, on n’ait pas prédit sa popularité. Et donc, on se rend compte qu’on rétropédale un petit peu. Et on dit, il faut faire les sous-titres dans cette langue. Et donc, ils sortent après. Donc, on a perdu cet effet initial. Mais on pense quand même que créer… les doublages et les sous-titres après vont quand même apporter un bénéfice en termes de visionnage. Mais ça arrive. Si possible, au moins possible, parce qu’en fait, il y a un temps un peu incompressible de création. 

 

Marc 00:23:13 – 00:23:16 : Ok. Alors, tu peux nous parler de tes projets ? 

 

Marie 00:23:16 – 00:24:47 : Donc, effectivement, moi, j’étais principalement sur ce projet de recommandation. C’est-à-dire, je sais quels films, on sait dans la base, on sait quels films, quelles séries vont sortir dans les six prochains mois. Et moi, en fait, j’avais un algorithme qui rafraîchissait un petit peu tous les jours et qui recommandait aux différentes équipes. Voilà, j’ai telle série, j’ai 10 ou 15 langues. Oui, non, est-ce que je te recommande de créer le doublage dans cette langue ? Et un petit peu pourquoi ? Un petit peu si on est au-dessus de notre seuil ou en dessous de notre seuil ? Donc ça, c’était l’objet principal de mon travail. Au sein de mon équipe, il y avait d’autres projets aussi très intéressants sur lesquels j’ai un peu collaboré. Mais en fait, comment tu peux évaluer le taux d’accroissement d’un doublage par rapport à un sous-titre ? C’est-à-dire que si tu crées juste le sous-titre, il y a quand même des gens qui vont regarder ce film, cette série. Et quel est vraiment l’effet incrémental de créer ce doublage ? Ce n’est pas évident d’estimer ça. Donc il y a pas mal de techniques d’inférence causale pour regarder sur nos données historiques et essayer d’en déduire un petit peu ça. qui varient beaucoup en fonction des langues, des types même de séries. Est-ce que c’est un film d’horreur ou une comédie ? Par exemple, les gens vont beaucoup plus regarder des comédies avec des doublages ou ce genre de choses. Donc voilà, un peu d’inférence causale. Et un autre projet très intéressant, sur lequel je n’étais pas impliquée directement, mais que j’ai pas mal suivi, C’était plutôt étudier la qualité d’un sous-titre ou d’un doublage. Qu’est-ce qui fait qu’un doublage est de bonne qualité ou de mauvaise qualité ? Comment tu l’évalues ? Comment tu l’identifies ? Comment tu peux ensuite le corriger ? Et quel est l’impact de la qualité sur le visionnage ensuite et sur l’expérience utilisateur des membres ? 

 

Marc 00:24:47 – 00:25:01 : Ok, très clair. Avant ça, tu étais chez Lyft. Lyft, pour ceux qui ne connaissent pas, c’est un concurrent de Uber très répandu aux Etats-Unis, qui n’est pas présent sur le marché français. Qu’est-ce que tu faisais là-bas ? Quel a été ton rôle ? 

 

Marie 00:25:01 – 00:26:59 : Pareil, Data Scientist, et j’ai bossé dans deux équipes. La première équipe, c’était plutôt en termes de croissance et un petit peu, par exemple, l’acquisition de nouveaux chauffeurs et de nouveaux passagers. Si tu penses à l’acquisition de chauffeurs, par exemple, en fait, on va faire pas mal de publicités sur différents canaux, Facebook, Google et d’autres. Et en fait, ça a un certain coût. Et donc, on peut essayer d’optimiser ce budget. On sait combien on a dépensé une certaine semaine sur tel canal, combien de chauffeurs on a réussi à acquérir. Et ensuite, pareil, tu as un petit peu de prédiction et un algorithme d’optimisation qui te dit dépense tant dans tel canal et dépense tant dans tel autre canal pour vraiment maximiser ton coût par acquisition, ton coût incrémental. Donc, il y a eu cette partie vraiment plus croissance, business. Et ensuite, je suis partie sur une équipe beaucoup plus produite, donc tout à fait différente. Et là, on travaillait avec les données GPS des chauffeurs. C’est-à-dire qu’en fait, le chauffeur, quand il conduit, il nous envoie sa donnée GPS. Mais on a besoin de le localiser trè s précisément. Or, ces données sont assez bruitées. C’est-à-dire que toi, quand tu vas ouvrir ton application, pas Lyft, mais Uber, tu vas voir que les voitures, elles sont globalement sur la route. Elles ne sont pas au milieu des maisons. Et donc, il y a tout un travail de débrutage de ces données pour ensuite à la fois afficher sur les applications des utilisateurs, des passagers, mais aussi en interne pour la prédiction de temps de trajet. Si tu sais exactement où est ton ou ta chauffeur, ensuite, tu peux plus précisément prédire le temps de trajet. Et ça a des impacts énormes, surtout en centre-ville où les données sont particulièrement brutées et il y a du trafic. En fonction de si tu as tourné ou non dans la rue suivante, en fait, ton temps de trajet va varier de 5 à 10 minutes. Et comme tu le sais, c’est une expérience assez pénible quand d’un coup, ton temps de trajet augmente parce qu’on s’est trompé. Donc en fait, c’est hyper important et c’était particulièrement intéressant parce que c’est des algorithmes, un peu de traitement du signal type filtre de calmant et très intéressant en temps réel avec beaucoup de données. Donc une chouette expérience et assez propre pour le coup à Lyft et ce genre d’applications. 

 

Marc 00:26:59 – 00:27:07 : Oui, filtre de calmant. Est-ce que tu peux rentrer un peu dans le détail ? Est-ce qu’on peut vulgariser le calmeur de filtre ? 

 

Marie 00:27:07 – 00:27:34 : L’idée, ça va être de retracer la trajectoire exacte d’un agent de ta voiture, par exemple de ton chauffeur, sachant que ce que tu observes, ce sont seulement des données bruitées. Donc, tu vas voir qu’ils vont te donner de l’information, mais qui ne sera pas précise, ça va sauter. Et donc, en faisant des hypothèses sur le mouvement de ta voiture et le bruit, tu vas dire que c’est un bruit un peu gaussien. des observations que tu as, tu peux en déduire une trajectoire précise de ta voiture. 

 

Marc 00:27:34 – 00:27:48 : Oui, on reprend la trajectoire précédemment filtrée, donc qui est relativement rectiligne, plus ou moins uniforme en termes de vitesse. On fait une prédiction sur où est-ce qu’on est censé être au temps d’après. 

 

Marie 00:27:48 – 00:28:13 : Et ensuite, tu corriges à partir de ton observation. C’est ça, c’est un peu en deux étapes. OK. Et là, la complexité, c’est que tu veux que ce soit sur la route. Donc, ce n’est pas juste n’importe où corriger. Il faut en fait arriver à mapper ces données sur ton réseau. En fait, c’est une sorte de graphe énorme de route, d’intersection, pour savoir où c’est. Donc, en fait, c’est des filtres de calmant un peu contraints par rapport à ton réseau de route. 

 

Marc 00:28:13 – 00:28:20 : D’accord. La donnée GPS, vous utilisez la donnée publique avec une imprécision de l’ordre de 20 mètres ? 

 

Marie 00:28:20 – 00:28:24 : Voilà, on reçoit vraiment ce que le téléphone du chauffeur ou de la chauffeur nous envoie. 

 

Marc 00:28:25 – 00:28:31 : Il n’y a pas d’amélioration avec des antennes terrestres, ce genre de choses ? Sur les données de base ? 

 

Marie 00:28:31 – 00:28:54 : On reste sur les données de base. Après, ce qu’on reçoit, c’est d’autres données telles que la pression, la température, parfois l’orientation du gyromètre. En fait, ton téléphone collecte pas mal de données… Et donc ça, on peut les utiliser. parce qu’en fait, la pression, c’est assez précis en termes d’élévation, de hauteur. Et donc, par exemple, c’est bête, mais si tu es sur le tunnel ou surélevé par rapport à une autre route, ça, ça peut nous aider. 

 

Marc 00:28:54 – 00:28:58 : Ah oui, à ce point. Ce genre de précision avec la pression. 

 

Marie 00:28:58 – 00:29:12 : Et ensuite, le gyromètre, si tu tournes ou si tu ne tournes pas, ça te donne une idée un peu de ton orientation. Alors, c’est là que ça devient difficile parce qu’intégrer des capteurs supplémentaires, ça veut dire aussi des algorithmes qui sont capables de prendre ça en compte. Donc, il y a de l’info. Mais arriver à extraire cette information, ce n’est pas toujours évident. 

 

Marc 00:29:12 – 00:29:14 : Oui, il faut que ça amène plus de bruit que de choses. 

 

Marie 00:29:14 – 00:29:41 : Voilà, c’est ça. Et puis, il faut des algorithmes suffisamment flexibles. Et ensuite, à quel point tu mets un poids sur ces différentes informations ? Est-ce que tu préfères faire confiance à ton bruit GPS ou est-ce que tu préfères faire plus confiance à tel bruit, sachant qu’ils sont tous un petit peu imprécis ? Donc, évaluer le degré d’imprécision de chacun, ce n’était pas évident. et tout ça en temps réel. finalement donc tu peux pas prendre plus d’une seconde ou moins je sais plus quels étaient nos temps mais tu peux pas faire des calculs monstrueux. 

 

Marc 00:29:41 – 00:29:44 : voilà Et l’accéléromètre, c’est une donnée utile ? 

 

Marie 00:29:44 – 00:29:50 : Aussi, oui. C’était utile parce qu’on a une… Oui, effectivement, j’avais oublié. Tu as une donnée sur la vitesse et l’accélération de ta voiture. 

 

Marc 00:29:50 – 00:29:55 : D’accord. Oui, donc c’est un filtre de Kalman qui prend quand même beaucoup d’inputs différents. 

 

Marie 00:29:55 – 00:30:04 : C’est ce sur quoi je travaillais au moment où je suis partie. C’est de le rendre un petit peu flexible pour intégrer ces données. Je ne sais pas où ils en sont maintenant, mais… 

 

Marc 00:30:05 – 00:30:11 : Ok. Alors, toute expérience confondue, est-ce que tu as des erreurs à nous partager qui pourraient nous faire gagner du temps ? 

 

Marie 00:30:11 – 00:30:47 : Je pense que l’erreur de débutant, c’est vraiment de vouloir construire un modèle un petit peu trop complexe. Si c’est du machine learning classique, d’avoir trop de features et de vouloir absolument tout intégrer et de faire un modèle très compliqué et très difficile à interpréter. Et même avec l’IA génératif, parfois, un seul prompt va suffire ou alors juste changer ton prompt va suffire plutôt qu’essayer de même mettre en place du rack tout de suite ou du fine tuning. Donc voilà, essayer de partir sur une version un peu simple, avoir des retours de tes utilisateurs et à partir de là, itérer. Je pense que c’est le conseil que je peux donner à tout le monde et que j’essaie de me remémorer aussi régulièrement. 

 

Marc 00:30:47 – 00:30:49 : Ok, qu’est-ce que tu préfères dans ce métier ? 

 

Marie 00:30:49 – 00:31:25 : Moi, ce que j’aime bien, c’est un petit peu le côté rigueur mathématique. On a abordé pas mal de concepts mathématiques ensemble. Et en même temps, ce côté un peu créatif, d’essayer de comprendre comment tu peux jouer avec les différentes briques que tu as. Là, avec Chagipiti, il y a plein d’options. Il y a des histoires de rag, de récupération, de promptes, d’évaluation. Donc, il faut être un peu créatif, tout en étant rigoureux. Et finalement, c’est… Moi, ce que j’aime beaucoup observer, c’est l’impact sur les utilisateurs. Quand là, chez 360 Learning, des auteurs nous disent qu’ils utilisent nos outils, nos fonctionnalités, pour moi, je trouve ça extrêmement valorisant. 

 

Marc 00:31:25 – 00:31:29 : Et quels sont les plus grands points de douleur, les plus grands pains ? 

 

Marie 00:31:29 – 00:31:51 : Je pense que si on doit se rapporter à mon quotidien en ce moment, c’est plus le côté prompt engineering, donc un petit peu construire ses instructions HLGPT. Voilà, il est un peu capricieux. et donc arriver à être un peu efficace et à obtenir ce qu’on veut, c’est ma douleur actuelle. Mais bon, ça va, c’est toutes proportions gardées, ça reste correct. Et voilà, oui. 

 

Marc 00:31:51 – 00:31:55 : OK, alors qu’est-ce que c’est la suite chez 360 Learning ? 

 

Marie 00:31:55 – 00:32:50 : Donc là, on a un petit peu construit ces fonctionnalités de création de cours. On continue un petit peu à itérer pour voir si on ne peut pas créer carrément des quiz entiers. Donc là, on a des questions un peu ponctuelles, mais carrément automatiser la création de quiz en entier pour ensuite évaluer les connaissances des utilisateurs, des apprenants après le cours. Et puis, on voudrait essayer aussi de se retourner plus vers une expérience apprenant. L’intérêt des IA génératifs, c’est leur côté conversationnel. Est-ce qu’on peut imaginer un petit peu des interfaces de tchat, quelque chose comme ça, qui te mettent en situation ? Imagine que tu as eu un cours sur la technique de vente. Là, je te mets en face d’un prospect qui te pose des questions et je teste ta capacité à répondre à ces questions. Donc là, avec ChatGPT, on peut faire ça de manière automatique et rapide. assez performantes. Donc ça, c’est une option. Et une autre option, ce serait peut-être aussi de rendre les cours encore plus interactifs avec de la génération d’images, de vidéos, de sons. Voilà, donc différentes options qui sont ouvertes à nous. 

 

Marc 00:32:51 – 00:33:00 : Ok, programme alléchant. Est-ce que tu as un invité ou une invitée que tu souhaiterais recommander pour un prochain épisode de Data Driven 101 ? 

 

Marie 00:33:00 – 00:33:25 : Bonne question, je pense qu’il y a pas mal de gens très compétents autour de nous. Ce serait intéressant de parler à Nicolas Paglio qui travaille au sein de l’INSEE sur la rédaction de sondages et qui a une utilisation des données très intéressantes. pour, en fonction des réponses qu’il reçoit, les traiter et ensuite avoir une estimation précise de réponse à certaines questions. Ce serait intéressant d’avoir son point de vue. 

 

Marc 00:33:26 – 00:33:27 : Effectivement. Merci Marie. 

 

Marie 00:33:27 – 00:33:31 : Merci Marc. 

 

Marc 00:33:31 – 00:33:44 : Vous venez d’entendre Marie Dourier, Machine Learning Engineer sur Data Driven 101. Dans le prochain épisode, je recevrai Marc Debocor, CEO de Finovox, pour nous parler d’IA et de lutte contre la fraude documentaire. À très vite.