Data Ecleyreurs #1: Les clés du démarrage réussi d'un POC d'IA Générative (avec Blent.ai)

  • il y a 5 mois
Transcript
00:00 Notre activité se concentre autour de trois piliers.
00:02 Le premier pilier qui nous prend beaucoup de temps mais qu'on adore,
00:05 c'est la mise en place de Data School et de dispositifs de formation dans les entreprises.
00:10 Le principal problème, il est simple, c'est qu'aujourd'hui on a des profils qui sont difficiles à recruter,
00:14 notamment sur le Data Engineering et le MLOps,
00:17 puisqu'on n'a pas forcément beaucoup de personnes qui sont opérationnelles dessus.
00:21 Puisque les entreprises ont des difficultés à recruter,
00:23 on leur permet avec la mobilité de l'entreprise,
00:25 de faire des recherches, de faire des recherches,
00:27 de faire des recherches, de faire des recherches,
00:30 de faire des recherches, de faire des recherches,
00:32 de faire des recherches, de faire des recherches.
00:34 Et là il y a Générative, mais c'est encore un petit peu,
00:36 c'est pas un sujet totalement mature pour les entreprises,
00:38 donc quasiment un petit peu pas à pas.
00:41 On a également une approche hybride coaching/aide au développement.
00:45 On a beaucoup de personnes qui viennent nous voir en nous disant
00:47 "On aimerait développer nos cas d'usage LLM,
00:49 mais en même temps on veut pas du conseil,
00:51 mais en même temps on veut pas une formation.
00:52 Est-ce que vous auriez pas entre les deux ?"
00:54 Et bah du coup, on propose une petite approche hybride coaching/aide au développement
00:59 où en fait on va un peu aller à la manière qu'on peut avoir dans les écoles
01:02 comme Zone01 typiquement.
01:04 En fait, on vient avec un petit support de formation,
01:06 mais surtout on aide les personnes à développer leurs propres projets.
01:09 Donc ils vont s'approprier les connaissances et les compétences directement,
01:12 donc ça c'est vraiment une grosse plus-value pour les entreprises.
01:15 Et historiquement, une plateforme de formation grand public,
01:18 si jamais vous êtes intéressé, vous pouvez aller voir Blaine.ac.
01:21 On forme surtout sur des sujets d'upskilling,
01:24 donc Data Science, Data Engineering, MLops, Cloud DevOps,
01:28 et bientôt il y a Génératif, on le fait déjà,
01:30 mais c'est encore évidemment, vous vous rendez bien compte, assez récent.
01:33 Mais si ça vous intéresse, là aussi, n'hésitez pas à faire un petit tour sur notre site web.
01:37 J'ai fini pour la partie promo.
01:39 On va enfin passer vraiment dans le vide de sujet.
01:42 Donc là vous êtes en avril 2024,
01:45 vous vous dites "ça fait un peu moins d'un an et demi que ce qu'on fait,
01:48 on parle beaucoup de DIA Générative, notamment de LLM,
01:51 j'ai envie de me lancer, qu'est-ce que je fais ?"
01:53 Alors avant de vraiment se lancer tête baissée dans les API,
01:56 il faut bien comprendre pourquoi est-ce qu'on en est là aujourd'hui.
01:59 ChargeDTP, ce qui est intéressant, c'est,
02:01 le point intéressant de ChargeDTP,
02:03 c'est qu'il va permettre de faire prendre conscience à tout le monde
02:06 qu'aujourd'hui en fait on a une performance
02:09 qui est tellement impressionnante, mine de rien,
02:11 qu'aujourd'hui on peut traiter énormément de sujets.
02:13 Mais ce qu'il faut bien comprendre, c'est que ChargeDTP,
02:15 il a innové dans la manière de faire percevoir au monde,
02:19 au grand public, l'intérêt de LLM et la puissance.
02:21 Mais en réalité, ChargeDTP, OpenAI, ce n'est pas les premiers à l'avoir fait.
02:25 Et tout premier, si on voulait vraiment remonter à toute la chaîne,
02:28 ce sera en 2013, la première révolution technologique,
02:31 c'est le word embedding,
02:33 c'est-à-dire de représenter les mots par des vecteurs.
02:35 L'intérêt de représenter les mots par des vecteurs,
02:38 c'est qu'on va capter le contexte du mot sous forme de vecteur.
02:41 Et en captant le contexte du mot sous forme de vecteur,
02:44 on va avoir des similarités,
02:46 donc deux mots qui sont proches non pas d'un point de vue orthographique,
02:49 mais d'un point de vue sémantique,
02:51 ils vont être proches dans un espace de vecteur.
02:53 Et ça, c'est une vraie révolution,
02:55 parce que jusqu'à maintenant, avant 2013,
02:57 faire du NLP, donc faire le traitement du texte,
02:59 c'était le mot "bonjour 0", "chaise 1", "table 2",
03:02 c'était vraiment un mot égal un indice.
03:04 Pas vraiment très très efficace pour représenter.
03:07 On avait également du one hot encoding,
03:09 par exemple, on avait un mot, c'était "1 0 0 0",
03:12 le deuxième mot, "0 1 0 0", bref.
03:14 On avait des méthodes un petit peu compliquées.
03:16 Et ça, le Word2Vec, Word Embedding,
03:18 ça a permis vraiment de simplifier la partie encodage,
03:21 donc d'avoir, quelle que soit la taille du vocabulaire,
03:23 on avait toujours le même nombre de composantes pour chaque vecteur.
03:26 C'est là qu'on peut avoir des corpus très très élevés,
03:29 et avoir au final toujours la même taille de vecteur.
03:33 Et au final, ce qu'on a commencé à faire,
03:35 c'est créer des architectures comme les "Heads",
03:37 les "LSTM", qui existaient déjà depuis longtemps,
03:40 mais là, on a vraiment pu les mettre en pratique
03:42 avec le Word Embedding.
03:44 Et là, ce qui est intéressant, c'est qu'on a eu les premières,
03:46 les modèles, et juste avant 2016,
03:48 les modèles les plus aboutis,
03:49 c'est ce qu'on appelait les "Séquences to Sequence".
03:51 D'ailleurs, c'est ce qu'utilisait Google pour la traduction.
03:53 C'était des LSTM, mais à double séquence,
03:55 donc un peu plus évolué.
03:57 Mais ce qui s'est passé, c'est que jusque là, maintenant,
03:59 c'était des tâches très spécifiques.
04:00 Traduction, par exemple, classification,
04:02 on n'allait pas plus loin, certainement pas génération.
04:04 Et c'est avec les "Transformers" par Google.
04:07 Donc il faut quand même rendre à César ce qu'est César.
04:09 On critique beaucoup Google aujourd'hui,
04:10 mais c'est quand même Google le pionnier,
04:12 avec le Word2Vec et les "Transformers".
04:14 Donc ça, c'est vraiment important.
04:15 C'est eux qui ont inventé le concept de "Transformers",
04:17 qui aujourd'hui, c'est la base des LLM.
04:19 Les LLM sont des "Transformers".
04:21 Un peu robustes, bien sûr, mais ce sont des "Transformers".
04:23 Donc ça, ça a permis d'ouvrir un peu une boîte de pandore.
04:26 Technologiquement, ça a été incroyable.
04:27 Mais forcément, le grand public, bon,
04:29 "Transformers", à part le film,
04:30 ça n'a pas vraiment parlé à grand monde.
04:32 Mais il y a eu d'autres modèles,
04:33 et à chaque fois, de plus en plus gros,
04:35 en termes de nombre de paramètres.
04:36 On a eu BERT, on a eu T5, on a eu GPT-1,
04:38 on a eu GPT-3, on a eu Bloom, etc.
04:40 Et en fait, déjà, le GPT-3, c'était pas mal,
04:43 mais pour l'avoir testé,
04:44 je ne sais pas si vous vous en souvenez,
04:45 en 2020, pour ceux qui avaient peut-être un peu testé,
04:47 c'est de la complétion de texte.
04:48 Donc on mettait les premiers mots au début,
04:50 ça complétait, mais c'était clairement pas au niveau du GPT-3.5.
04:53 Et là, juste avant, donc, le GPT, on a eu PALM,
04:56 qui était arrivé un petit peu avant,
04:58 et boum, on a eu CHDPT.
04:59 Là, franchement, c'était un coup de maître,
05:01 parce que là, le coup de maître d'OpenAI,
05:03 ce n'est pas forcément techniquement,
05:04 mais c'est aussi un peu, on va dire,
05:05 en termes de communication.
05:06 C'est que non seulement ils ont un modèle extrêmement conséquent,
05:09 mais en plus, ils ont fait un coup de com énorme,
05:11 donc ça a pris au grand public.
05:12 Et là, maintenant, aujourd'hui,
05:13 ce n'est plus une course, on va dire,
05:14 technologique en termes d'architecture,
05:16 c'est une course en termes de
05:17 qui aura la plus grosse architecture,
05:19 qui pourra faire la meilleure référence.
05:21 Et donc là, on va forcer,
05:22 on va faire des tests,
05:23 qui pourraient faire la meilleure référence.
05:25 Et donc là, forcément, je vous en passe,
05:27 Phi 3, Bard, GPT 4, GPT 5,
05:30 qui devraient arriver dans les prochains mois.
05:32 Aujourd'hui, c'est vraiment une course à la taille,
05:35 en termes de réseau de,
05:36 en termes de réseau de drone.
05:38 C'est un petit peu ce qui se passe aujourd'hui.
05:40 Mais par contre,
05:41 c'est là où il y en a,
05:42 ils tirent leur épingle du jeu,
05:43 c'est que OpenAI,
05:44 visièrement, on aurait pu se dire
05:45 qu'ils vont avoir un peu les yeux plus gros que le ventre,
05:47 et ils s'en sortent bien.
05:48 Et malheureusement, on a pu voir
05:49 qu'il y a certains acteurs
05:50 qui ont un peu plus de mal en ce moment.
05:52 Donc là, seul l'avenir nous dira
05:53 qui a pu tirer son épingle du jeu.
05:56 En tout cas, aujourd'hui,
05:57 on a un petit peu changé de paradigme.
05:59 Aujourd'hui, c'est LLM.
06:00 On pourra parler de,
06:01 pourquoi dire quand même qu'aujourd'hui,
06:02 le NLP et les méthodes un peu plus classiques,
06:04 comme de NER, c'est toujours d'actualité.
06:06 Mais on a le sentiment qu'aujourd'hui,
06:07 l'LLM, ça mange un petit peu tout ce qu'il y a autour,
06:10 notamment le traitement du texte.
06:12 Donc ça, effectivement, c'est quand même important.
06:14 On pourra en parler après,
06:15 de faire attention à cet effet un peu,
06:17 l'effet loop,
06:18 où en fait, on peut vite oublier,
06:20 des fois, un LLM, c'est vraiment overkill,
06:22 notamment le VRA et les rags,
06:23 que des fois, il n'a pas forcément besoin.
06:25 Mais aujourd'hui, du coup,
06:26 ce qui est intéressant avec les LLM,
06:27 surtout, c'est qu'ils vont être capables
06:29 de comprendre nos intentions et nos requêtes.
06:31 Ça, c'était la grosse difficulté.
06:33 C'est-à-dire que classifier un document,
06:34 on savait le faire.
06:35 Trouver du texte important dans un contenu dense,
06:38 on savait le faire.
06:39 Par contre, classifier,
06:40 identifier les intentions d'un texte écrit en langage naturel,
06:43 donc nous, par exemple, ça, c'était compliqué.
06:46 Parce que toutes les langues,
06:47 déjà, il y a plusieurs langues,
06:48 évidemment, il y a énormément de langues,
06:50 et en plus, chaque langue a ses subtilités,
06:52 chaque personne a une manière de communiquer.
06:54 En plus, nous, en France,
06:55 on aime bien utiliser les doubles négations, l'ironie,
06:57 donc ça rajoute en plus des complexités.
06:59 Et donc, tout ça fait que,
07:00 avant les LLM, c'est très compliqué.
07:02 Les LLM, ils ont cassé cette barrière de compréhension
07:04 et aussi de génération de texte.
07:06 Donc, c'est pour ça qu'en fait,
07:07 aujourd'hui, on a autant de,
07:09 on peut dire, d'activités autour des LLM,
07:12 parce qu'aujourd'hui, on a l'impression
07:13 que c'est plus réservé à des personnes techniques,
07:15 comme nous, entre guillemets.
07:16 C'est-à-dire que tout le monde, aujourd'hui,
07:17 peut communiquer avec un LLM,
07:19 il peut, en fait, l'utiliser comme un assistant.
07:22 En tout cas, aux yeux du grand public, c'est ça.
07:24 Et c'est pour ça qu'on a autant de cas d'usage.
07:26 Et les premiers cas d'usage
07:27 qu'on a pensé identifier, très rapidement,
07:29 d'ailleurs, une des preuves à quel point
07:31 ça a été quand même assez mis en place,
07:33 c'est que si vous regardez bien,
07:34 il y a beaucoup d'entreprises aujourd'hui
07:35 dans les bois du CAC 40
07:36 qui ont développé en moins d'un an
07:38 un projet d'IA génératif.
07:39 Ce qui est incroyable,
07:40 parce que les bois du CAC 40,
07:41 il leur faut 5 à 10 ans, des fois,
07:43 pour développer un projet sur quelque chose de nouveau.
07:45 Là, en un an, vous avez des grands groupes
07:47 qui ont industrialisé, un grand mot,
07:49 mais en tout cas, qui ont développé à grande échelle
07:51 des projets d'IA génératif.
07:53 Par contre, c'est beaucoup de financement, bien sûr.
07:55 Ça, c'est la contrepartie.
07:57 Et les principales activités,
07:59 c'est les assistants pour la documentation interne.
08:01 Ça, ça aide énormément.
08:03 Ça fait gagner beaucoup, beaucoup de temps.
08:05 Je pense que c'est le principal cas d'usage
08:07 qu'il faut identifier.
08:08 L'autre point, c'est extraire des informations.
08:10 Ça, c'est très important aussi,
08:12 parce qu'on a des informations qui sont très complexes.
08:14 Quand je prends des documents qui font 200, 300 pages,
08:16 des contrats très compliqués,
08:18 là, ça nous permet d'extraire et de résumer l'information.
08:20 Autre point, intégration entre les applications.
08:22 Donc là, Copilot, pas GitHub,
08:24 mais Microsoft Copilot, c'est un exemple.
08:26 Là, cette fois-ci, on va améliorer la productivité
08:28 en intégrant des applications entre elles,
08:30 avec, évidemment, toujours un côté humain.
08:32 Et l'aide au développement.
08:34 Alors bon, moi, au début, j'étais réfractaire,
08:36 pour être honnête, avec GitHub Copilot.
08:38 Aujourd'hui, je l'aime bien, notamment pour la doc.
08:40 C'est pas mal.
08:41 Bon, après, des fois, je ne lui fais pas 100 % confiance.
08:43 Mais on va dire que dans 90 % des cas,
08:45 il me donne la bonne documentation,
08:48 notamment quand je lui demande un petit peu une manière de faire.
08:50 Franchement, des fois, c'est très efficace.
08:52 Donc ça, c'est vraiment un cas d'usage
08:54 qui est pas mal utilisé aussi d'assistant de code.
08:58 GitHub Copilot, pour l'instant, c'est un peu,
09:00 on va dire, celui qui domine le marché.
09:02 Peut-être que dans le futur, il y aura un autre.
09:04 Il faut quand même avouer que Microsoft
09:06 avec OpenAI ont pris une longueur d'avance.
09:09 Alors du coup, vous vous dites, bon, bah maintenant,
09:11 OK, j'ai bien compris mes cas d'usage.
09:13 Je vais développer mon LLM.
09:15 Alors déjà, ça veut dire quoi, développer son LLM ?
09:17 Donc ça, c'est quelque chose qui est très important.
09:19 C'est que, vous vous en doutez, un LLM, c'est tellement conséquent
09:21 que vous n'allez jamais le créer par vous-même.
09:23 On n'est plus comme dans le cas du machine learning
09:25 où on allait entraîner son propre modèle.
09:27 Un LLM avec 7 milliards de paramètres,
09:29 ça va vous coûter des dizaines de millions.
09:31 Donc c'est clairement pas possible pour entraîner.
09:33 Donc, vous allez vous dire, là, une fois que j'ai défini
09:35 mon cas d'usage métier, je choisis mon modèle de base.
09:37 Et ce modèle de base, là, il y a déjà plein de questions
09:39 qui se posent. Est-ce que le modèle, il existe ou pas ?
09:41 Bon, normalement, oui.
09:43 À moins que si vous êtes une grosse, grosse boîte
09:45 avec des dizaines de millions à dépenser.
09:47 Est-ce que le modèle, je veux un propriétaire
09:49 ou open source ou open weight ?
09:51 Est-ce que je veux qu'il soit managé dans un cloud à ma place
09:53 ou est-ce que je veux qu'il soit géré dans ma propre infra ?
09:55 Ça, c'est un vrai sujet.
09:57 On va voir juste après comment est-ce qu'on peut définir tout ça.
09:59 Et enfin, vient une partie.
10:01 Et là, vous allez voir que quand on a l'habitude
10:03 de faire du machine learning, c'est un peu...
10:05 On n'a pas du tout les mêmes pratiques.
10:07 On va optimiser, améliorer
10:09 et adapter nos modèles.
10:11 Premièrement, le prompt engineering.
10:13 Alors, souvent, le prompt engineering, on a l'impression
10:15 que c'est un peu le truc, oui, formation de base
10:17 et on s'en fiche un peu. Non, c'est extrêmement important,
10:19 le prompt engineering. C'est vrai qu'on peut se dire,
10:21 oui, formation, prompt, mais en fait, c'est très, très important.
10:23 Justement, le prompt, ça permet
10:25 de bien guider le modèle.
10:27 Et justement, même si on peut dire
10:29 que c'est quelque chose un peu buzzword,
10:31 il ne faut vraiment pas négliger le prompt.
10:33 Nous, on a fait des exemples, par exemple,
10:35 en travaillant avec la DGAC. Rien qu'en modifiant
10:37 le prompt, on a des résultats complètement différents.
10:39 Donc ça, c'est très important de bien
10:41 définir son prompt.
10:43 Alors, fine tuning versus enrichissement contextuel,
10:45 ça, on en parlera, parce que c'est un peu le gros débat.
10:47 Est-ce que je fine tune ou est-ce que je fais du rag ?
10:49 Je pense que vous avez sûrement entendu parler.
10:51 On va justement rentrer en détail après.
10:53 Et très important, humanize the loop.
10:55 Ça, c'est quelque chose qu'on n'avait pas avant.
10:57 Parce qu'avant,
10:59 la plupart du temps, les modèles ML, c'était
11:01 de l'automatisation, c'était des choses un peu
11:03 plutôt pour des besoins précis.
11:05 Là, on fait un LLM
11:07 parce qu'on a besoin de comprendre un langage humain
11:09 écrit en langage naturel.
11:11 Donc forcément, on a une interaction humaine.
11:13 Donc on ne peut plus se dire que le LLM, il va travailler tout seul dans son coin.
11:15 Il faut une interaction humaine.
11:17 Humanize the loop, ça peut prendre différentes formes.
11:19 Ça peut être, par exemple, pour dire
11:21 si c'est une bonne ou une mauvaise réponse.
11:23 C'est pour demander une validation, par exemple,
11:25 si on veut donner des accès ou pas à un outil.
11:27 Ça peut être, par exemple, ne pas générer n'importe quoi.
11:29 Parce que mine de rien,
11:31 aujourd'hui, on a l'impression que les LLM sont tout gentils.
11:33 Mais vous avez, par exemple, le Freedom GPT,
11:35 un LLM qui vous insulte, par exemple.
11:37 Ça vous donne une bonne impression de pourquoi il ne faudrait pas déployer ça
11:39 à grande échelle.
11:41 Ou qui vous dit comment cacher un corps, par exemple.
11:43 Donc ça, on peut se dire que c'est le genre de modèle qu'on n'a surtout pas envie
11:45 de mettre en Customer Facing.
11:47 Parce que là, vous êtes responsable,
11:49 tout comme les forums ou les réseaux sociaux
11:51 qui épargnent la donnée.
11:53 Vous ne pouvez pas tuer quelqu'un, vous êtes en tant qu'entreprise responsable.
11:55 Donc c'est pour ça qu'il faut vraiment faire attention.
11:57 Et une partie déployer intégrée,
11:59 alors là, c'est encore tout les joyeuses tées de la prod.
12:01 J'en parlerai un petit peu à la fin,
12:03 mais déjà, on va surtout se concentrer
12:05 sur cette partie-là.
12:07 Et première chose, comme dans tout bon projet
12:09 qui se respecte, les prérequis.
12:11 C'est quoi les prérequis ?
12:13 C'est les critères que vous allez voir. Alors, tous ces critères,
12:15 je ne vais pas les détailler parce qu'en fait,
12:17 en fonction de qui vous êtes, quelle entreprise vous êtes,
12:19 votre secteur, certains vont être prioritaires.
12:21 Par exemple, il y a un prérequis qui me semble évident,
12:23 c'est la sensibilité des données.
12:25 Déjà, si vous avez des données
12:27 très sensibles et qu'on oublie
12:29 tout ce qui est chat GPT,
12:31 vous vous autorisez le cloud, mais en tout cas pas américain,
12:33 ça cut pas mal de possibilités.
12:35 Déjà, tout ce qui est chat GPT,
12:37 Core, Anthropic, c'est compliqué.
12:39 Donc, il faut un modèle open source.
12:41 Après, est-ce qu'il peut être managé ou pas ? Ça, c'est une seconde question.
12:43 Est-ce que vous vous autorisez à un cloud français,
12:45 comme OVH, comme Scaleway, par exemple,
12:47 ou vraiment purement dans votre data center ?
12:49 Là, il faut des cartes graphiques.
12:51 Ça coûte un peu cher, c'est 10 000 euros l'unité,
12:53 et puis il faut les installer, donc c'est un autre sujet.
12:55 Mais c'est intéressant parce que ces critères-là,
12:57 ces prérequis vont nous déterminer justement
12:59 pour toute la suite du projet, qu'est-ce qu'on va faire.
13:01 Par exemple, si on a
13:03 100 000 utilisateurs, il faut une infra qui suit,
13:05 avec un temps de réponse assez court.
13:07 Ça veut dire qu'il faut vraiment des serveurs
13:09 en parallélisées, des GPIs qui soient capables de répondre
13:11 à la demande. Donc ça, ça va avoir des impacts
13:13 sur les coûts, également sur les compétences
13:15 en développement, parce que ça aussi,
13:17 il faut bien penser que c'est quand même du dev,
13:19 même si on a des outils
13:21 open AI qui sont un peu plus simplifiés.
13:23 Il faut quand même des développeurs et des data scientists
13:25 qui traînent sur le sujet. Donc ça, c'est vraiment important.
13:27 Et nombre de documents, ça j'en parlerai après,
13:29 mais justement, c'est un peu, on se dit
13:31 oui, quand on ne fait pas de fine tuning, on n'entraîne pas
13:33 un modèle, donc ça ne coûte pas grand-chose.
13:35 Oui, sauf que si vous avez, je ne sais pas,
13:37 50 000 documents à vectoriser,
13:39 ce qui vectorise les documents, c'est un modèle.
13:41 Si c'est un réseau de neurones, ça coûte de la ressource.
13:43 Donc il ne faut pas sous-estimer, quand on est un grand groupe,
13:45 ça coûte extrêmement cher
13:47 de vectoriser des documents.
13:49 En plus, il faut les actualiser.
13:51 Ça, c'est quelque chose à ne pas négliger.
13:53 La disponibilité, ça, c'est
13:55 tous les projets du monde, c'est un sujet.
13:57 Moi, j'aime bien en général ce petit chart.
14:01 Ça vous dit, vous voulez faire du fine tuning ?
14:03 En fonction de qui vous êtes, on va voir
14:05 quelle cartographie on vous conseille.
14:07 Et on peut voir que du coup,
14:09 ça, c'est ce que j'aime bien, c'est ce qui a fait
14:11 très intéressant. Là, on a vraiment
14:13 une comparaison en termes de prix, en termes de...
14:15 Alors, les RTX 3090,
14:17 c'est ce que j'utilise, c'est pas mal.
14:19 Si vous êtes entre les deux, si vous n'avez pas autant d'argent
14:21 que Microsoft, je vous conseille
14:23 les RTX 3090, ce ne sont pas mal.
14:25 C'est l'entre-deux. Parce que les A5000,
14:27 on est déjà sur un prix élevé.
14:29 Puis les V100, je n'en parle même pas, c'est un autre sujet.
14:31 Mais bon, si vous voulez quand même
14:33 entraîner et fine tuner sans dépenser
14:35 tout votre argent, j'ai les RTX 3090,
14:37 c'est pas mal. Ça, on pourra en parler
14:39 à la fin, si vous voulez.
14:41 [Q] Est-ce que les RTX 3090 sont chers ?
14:43 C'est très cher.
14:45 Les A100 et A100,
14:47 sur AWS notamment et Azure, c'est quand même très cher.
14:49 Après, il y a des alternatives
14:51 comme Vast AI, on pourra en parler,
14:53 qui sont de la colocation
14:55 de GPU. Ça, c'est intéressant.
14:57 Mais effectivement, c'est un vrai sujet qui se pose
14:59 quand même. Là, ce n'est pas n'importe quel
15:01 serveur dans le cloud, ce n'est pas du serverless.
15:03 Là, c'est vraiment
15:05 des GPU à part entière.
15:07 Ça coûte 3-4 dollars de l'heure facile, et ça peut monter.
15:09 [Q] Est-ce que vous avez des modèles
15:11 open source ?
15:13 Alors, maintenant vient la question fatidique, je prends quoi comme modèle ?
15:15 Là, vous avez vraiment
15:17 énormément de possibilités, parce qu'on
15:19 pense aux modèles un petit peu
15:21 batch, DPT, etc. Mais en fait, des modèles
15:23 open source, vous en avez plein. Votre avis,
15:25 vous en connaissez un, bien français en plus,
15:27 Mistral.
15:29 Bah oui, Mistral, les gars,
15:31 ils sont géniaux. Avec 40 personnes, ils te font
15:33 un GPT 3.5, c'est incroyable.
15:35 Mistral, c'est un outil
15:37 LLM qui est génial.
15:39 Mais en fait, Mistral, c'est une base. Vous avez plein
15:41 de variantes de Mistral qui sont spécialisées, par exemple,
15:43 pour la classification, pour le résumé,
15:45 pour le modèle conversationnel, pour les assistants aux codes.
15:47 Et en fait, Mistral, c'en est un.
15:49 Vous en avez plein. Vous avez
15:51 plein d'équivalences. Vous avez ceux de Lama,
15:53 vous avez ceux, par exemple,
15:55 de Databricks, qui ont sorti
15:57 leur LLM il n'y a pas longtemps. Vous en avez plein.
15:59 Donc en fait, vous avez même trop de
16:01 modèles. Et en fait, qu'est-ce qui va vous aider ?
16:03 C'est quelle capacité ?
16:05 Si vous voulez du multilingue ou pas.
16:07 Alors, sachez que plus vous demandez des capacités,
16:09 en même temps, plus votre modèle
16:11 est conséquent, plus ça impacte le coût,
16:13 les temps de réponse, etc.
16:15 Donc c'est toujours un parti pris. C'est qu'est-ce que je veux
16:17 versus qu'est-ce que je peux faire en termes de ressources, en termes d'infras.
16:19 Vous avez des modèles
16:21 basés sur l'instruction. Bon, ben là, c'est ceux qu'on connaît
16:23 comme chat.tt. Mais attention,
16:25 parce qu'en fait, historiquement, les modèles génératifs
16:27 étaient plutôt des modèles de complétion
16:29 et non pas d'instruction.
16:31 C'est-à-dire qu'il fallait rentrer les premiers tokens,
16:33 parce que c'est ça, l'LM, ça prédit
16:35 le mot n, sachant n-1,
16:37 n-2, etc. Donc, à la base,
16:39 les modèles génératifs, c'était
16:41 de la complétion. Aujourd'hui, c'est plutôt de l'instruction.
16:43 Donc ça va de soi, mais c'est quand même
16:45 important. Vous avez des modèles qui sont
16:47 capables de détecter quand on demande
16:49 à exécuter des requêtes, avec des API,
16:51 des fonctions Python, par exemple, que fait aussi
16:53 Autodpt. Et alors, fenêtre
16:55 de contexte allongé, ça, si vous travaillez
16:57 avec des rags ou avec beaucoup
16:59 de prompts qui sont assez conséquents,
17:01 vous avez intérêt à avoir un modèle qui est
17:03 capable de prendre des contextes assez
17:05 importantes. Parce que, par exemple,
17:07 gpt3.5, vous êtes limité à 16 000 tokens,
17:09 sachant que, dans un mot, vous pouvez même avoir
17:11 plusieurs tokens. Ça peut être vite limitant.
17:13 Donc ça, c'est un point important.
17:15 Et du coup, une fois que vous avez "utilisation
17:17 capacité", où est-ce que je déploie ?
17:19 Ah là, du coup, si c'est un modèle SaaS,
17:21 c'est assez facile, mais du coup, ça veut dire
17:23 que toutes vos données partent ailleurs, ça, évidemment.
17:25 Ça, vous avez du "managed",
17:27 AWS Bedrock, par exemple, vous avez
17:29 également chez GCP. Et moi, ce que je vous conseille,
17:31 en tout cas, aujourd'hui, le seul, un peu
17:33 européen, c'est Scaleway LLM Inference.
17:35 Aujourd'hui, c'est en bêta. J'ai pu discuter
17:37 avec un de leurs représentants, et c'est pas mal du tout.
17:39 C'est vraiment sympa, parce que là, on peut déployer
17:41 en one click du Mistral, du Lama.
17:43 Donc c'est vraiment utile.
17:45 Il y a Grok, aussi, pour ceux qui connaissent,
17:47 avec un "Q", pas avec un "K".
17:49 Parce que l'autre, c'est pas... c'est un LLM.
17:51 La Grok, c'est... ils ont inventé
17:53 des LPUs, pour, justement,
17:55 améliorer énormément
17:57 l'inférence. On est à 500 tokens par seconde.
17:59 Moi, quand je teste, je suis plutôt à
18:01 250-300. Et vous imaginez
18:03 300 tokens par seconde, ça veut dire qu'en 2 secondes,
18:05 vous avez une réponse à pas VN. C'est énorme.
18:07 C'est vraiment intéressant.
18:09 Et vous avez le...
18:11 le pire du pire, le Self-Hosted.
18:13 Alors, ça marche bien sur des LPUs,
18:15 mais par contre, il faut du
18:17 VLLM, ou du BentoML.
18:19 Il faut des personnes qui soient capables
18:21 de monitorer et mesurer ce qui se passe.
18:23 Ça, c'est pesable, mais c'est des compétences
18:25 qui sont plus dans l'équipe. Si vous n'êtes pas une grosse équipe,
18:27 c'est un peu le principe du cloud.
18:29 C'est-à-dire que vous portez la charge,
18:31 ça peut ne pas être intéressant. Et donc,
18:33 les contraintes, moi j'en vois 3 principales. Il y en a plus,
18:35 mais puissance de calcul,
18:37 et ce que vous en avez, budget.
18:39 Faut oublier quand même, c'est l'ère de la guerre.
18:41 Et protection des données.
18:43 Ce dernier point, il peut souvent coincer.
18:45 Donc, ce dernier point, c'est ce qui peut, des fois, limiter
18:47 les entreprises, d'où les approches ouvraines.
18:49 C'est super important, quand même,
18:51 de pouvoir faire du LLM, donc de ne pas être...
18:53 de ne pas se sentir dépassé technologiquement,
18:55 mais en même temps, de ne pas sacrifier son intégrité,
18:57 de ne pas sacrifier ses données au profit d'un autre.
18:59 C'est vraiment ça, le sujet avec les LLM,
19:01 aujourd'hui.
19:03 Donc là, moi, ce que je vous conseille, c'est LLM Extractum.
19:05 Vous êtes dans leur site.
19:07 Vous avez plein, plein, plein de LLM. C'est un peu un leaderboard.
19:09 Vous filtrez. Par exemple, moi,
19:11 je veux un modèle qui ne fait pas plus de 7 milliards
19:13 de paramètres, parce que je n'ai pas 70 GB
19:15 de RAM GPU. Je veux un modèle
19:17 qui soit spécialisé sur l'an français.
19:19 Je veux un modèle qui soit quantisé, donc optimisé
19:21 en termes de poids. Et en fait, vous avez à chaque fois
19:23 des listings. Comme ça, ça vous permet
19:25 de choisir le meilleur. Moi, je vous conseille
19:27 LLM Extractum. C'est vraiment pas mal.
19:29 Et...
19:31 Comment ? Alors, c'est comme...
19:33 En fait, ça se base sur des repos Hugging Face, mais du coup,
19:35 ça centralise. Donc c'est beaucoup plus efficace que Hugging Face.
19:37 Hugging Face, c'est un...
19:39 Vous pouvez le voir comme un dépôt de modèles. Là où... Ouais...
19:41 C'est ça. C'est un GitHub de modèles.
19:43 Et là, Extractum, eux, ils font vraiment...
19:45 C'est un gros travail de cherry-picking
19:47 et de centralisation
19:49 d'infos.
19:51 Alors,
19:53 là, on vient à le sujet. L'important, c'est
19:55 maintenant que j'ai mon modèle, je ne vais pas juste...
19:57 Je vais le spécialiser. Parce que
19:59 tout l'intérêt, évidemment, ce n'est pas juste d'avoir un GPT
20:01 Like. C'est quand même bien. Mais
20:03 c'est d'avoir un LLM qui est
20:05 spécialisé sur notre cas d'usage, sur nos propres données,
20:07 ou en tout cas, pour notre propre besoin.
20:09 Donc là, on va avoir une étape où on va adapter,
20:11 on va spécialiser le modèle. Et donc là,
20:13 en général, vous avez deux choix qui se soffrent à vous.
20:15 Le premier choix, qu'on fait d'ailleurs depuis
20:17 très longtemps, un peu avec les principes
20:19 de transfert learning, c'est le fine-tuning.
20:21 C'est-à-dire qu'on va ajuster les paramètres
20:23 d'un modèle. Donc sur les 7 milliards,
20:25 on va peut-être en ajuster à des quelques dizaines
20:27 de millions, ce qui est déjà pas mal, ça prend du temps.
20:29 Mais en fait, on va spécialiser un LLM
20:31 qui est déjà entraîné. Par exemple, je prends un Mistral
20:33 8x7 milliards,
20:35 un modèle d'expert.
20:37 Je vais lui envoyer plein de prompts avec
20:39 la réponse attendue. Et en fait,
20:41 en faisant ça, je vais injecter
20:43 une connaissance directement dans le LLM.
20:45 Ce qui est vraiment tout l'intérêt, c'est que sur les
20:47 7 milliards de paramètres x8,
20:49 l'intérêt, c'est de conserver la connaissance
20:51 que j'ai apportée et de pouvoir la restituer
20:53 par la suite. Donc ça me donne un LLM
20:55 qui est dit fine-tuné. Par exemple, si moi, mon
20:57 domaine, c'est un domaine, je prends par exemple
20:59 l'aviation, ultra-codé, ultra-normé,
21:01 donc c'est que des vocabulaires, PPR, PN, etc.
21:03 Ça, normalement, pour le commande et
21:05 mortel, c'est incompréhensible.
21:07 Je mets toutes ces informations-là,
21:09 et le modèle sera capable de comprendre, et en plus de,
21:11 par exemple, classifier les textes,
21:13 de détecter des types de services d'aéroport,
21:15 par exemple, de communiquer,
21:17 limite avec un vocabulaire très très spécialisé.
21:19 Ce que vous ne pourrez pas faire un LLM
21:21 de base, parce qu'il n'aurait pas vu autant de données
21:23 si en plus, elles ne sont pas
21:25 publiques. Et à la fin, on a
21:27 le LLM qui est fine-tuné, donc qui peut être adapté.
21:29 L'avantage de ça, c'est que le LLM, après,
21:31 on l'utilise comme un LLM pré-entraîné
21:33 un peu sans spécialisation.
21:35 Donc il n'y a rien à rajouter autour.
21:37 Par contre, cette étape-là,
21:39 ça va coûter un petit peu, parce que
21:41 le fine-tuning, c'est vraiment lourd.
21:43 Nous, on a essayé, par exemple, un petit fine-tuning
21:45 avec juste une centaine
21:47 de promptes, ça nous prenait 40
21:49 gigas en mémoire pour un petit
21:51 modèle qui ne faisait que 7 milliards.
21:53 7 milliards, c'est bien, mais ce n'est pas les modèles
21:55 les plus performants. Les bons modèles performants, c'est
21:57 du Lama à 70 milliards, etc.
21:59 Ça prend au moins 200 gigas
22:01 de mémoire. 200 gigas, je vous laisse imaginer,
22:03 on est à 15 dollars de l'heure
22:05 d'inférence, enfin d'entraînement.
22:07 Donc là, c'est un coût.
22:09 Et vu que ça, ça refroidit pas mal de monde,
22:11 il y a une technique.
22:13 On a essayé
22:15 pour la formation.
22:17 On leur montre à quel point c'est bien, mais si on n'a pas
22:19 les moyens de faire ça, on a le
22:21 rag. Parce qu'en fait, souvent, on s'est
22:23 rendu compte que le besoin des entreprises,
22:25 c'est souvent les problématiques de contextualisation.
22:27 Plus que vraiment,
22:29 ils s'en fichent d'avoir un modèle, par exemple,
22:31 qui est capable de parler un petit
22:33 langage différent. Ils veulent juste, par exemple, extraire
22:35 des infos. Sauf que le problème, c'est
22:37 qu'ils ont tellement de documents qu'ils ne savent pas où regarder.
22:39 Et une technique, alors ce qu'on appelle le rag,
22:41 c'est un peu un abus de langage. On dit le rag
22:43 au sens large. En fait, rag, c'est une technique
22:45 qui fait partie de toutes les
22:47 méthodologies pour enrichir
22:49 contextuellement l'information.
22:51 Vous avez rag, alors après, vous avez
22:53 plein. Vous avez multi-rag, graph-rag,
22:55 vous avez également d'autres méthodes que le
22:57 rag. Vous avez des retrievers différents.
22:59 Vous pouvez vous amuser. Mais alors ça,
23:01 ça a été proposé par Microsoft. Et eux,
23:03 leur idée, c'est de se dire, mais pourquoi est-ce qu'on va
23:05 forcément finit une LLM, pourquoi est-ce qu'on va
23:07 injecter l'information dans
23:09 l'LLM, pourquoi est-ce que cette information-là,
23:11 vu que c'est qu'une comparaison de mots, entre guillemets,
23:13 ou de contexte, pourquoi est-ce que cette comparaison
23:15 ne la fait pas en dehors, et le LLM, c'est plutôt
23:17 de nous fournir une réponse qui est un peu
23:19 compréhensible en langage naturel.
23:21 Et l'objectif du rag, c'est de se dire qu'en fait,
23:23 au même titre qu'on a encodé les mots en
23:25 vecteur, on va prendre des bouts de documents,
23:27 des chunks, et on va les encoder en vecteur.
23:29 Et du coup, quand je vais poser une question,
23:31 par exemple, à une LLM,
23:33 "combien de chiffres d'affaires on a fait en 2018 ?"
23:35 ou "combien il y a de clients en 2017 ?"
23:37 "Il y a eu combien de clients ?"
23:39 Normalement, il faut aller regarder dans la base, dans le document,
23:41 il faut regarder les reports et tout. Là, l'intérêt, c'est qu'en fait,
23:43 tous les documents de l'entreprise,
23:45 on les aura vectorisés.
23:47 Donc, le LLM, l'objectif, c'est qu'il va extraire
23:49 à la partie question, et en fait, on va pouvoir faire un lien
23:51 sur chiffres d'affaires, par exemple,
23:53 2018, et on va voir tous les documents.
23:55 Donc là, on va scanner avec une base vectorielle,
23:57 donc c'est vraiment, pour ceux qui connaissent un peu,
23:59 c'est des calculs de vecteurs. On va voir les vecteurs
24:01 les plus proches, et forcément,
24:03 pour ce vecteur, on a les métadonnées,
24:05 c'est tel document, à tel endroit,
24:07 telle date, il a été modifié, etc.
24:09 On le ressort, et après, évidemment,
24:11 l'objectif du LLM, c'est de le ressortir dans un langage
24:13 un peu compréhensible,
24:15 pour qu'une personne puisse le détecter.
24:17 Mais en fait, si vous regardez bien, le LLM, ici,
24:19 il sert juste un peu à extraire la requête,
24:21 et à sortir une réponse
24:23 plutôt jolie. Si on n'a même pas besoin,
24:25 si on est juste dans un cadre purement technique,
24:27 en fait, on n'a pas besoin de LLM ici.
24:29 Un RAG, ça suffit. C'est juste qu'un RAG,
24:31 l'avantage, c'est qu'il nous sort l'info
24:33 brute, le vecteur, et la référence.
24:35 Le but, c'est que le LLM,
24:37 c'est un petit peu d'adoucir la réponse
24:39 pour des personnes qui ne sont pas techniques, parce que
24:41 si je vous donne juste un vecteur
24:43 et avec une métadonnée,
24:45 bon, c'est un dictionnaire, mais pour des personnes
24:47 pas du tout de ce monde-là, ce n'est pas vraiment compréhensible.
24:49 L'intérêt du LLM, c'est aussi
24:51 de formater cette réponse, c'est aussi une des raisons
24:53 pour lesquelles on l'utilise. C'est aussi pour
24:55 formater la réponse compréhensible.
24:57 Donc les RAG, effectivement, c'est un peu
24:59 le sujet, et en général, c'est le premier sujet
25:01 qu'on implémente en entreprise.
25:03 Vous avez concrètement deux étapes.
25:05 Une étape où on fait de l'ingestion de documents.
25:07 Alors l'ingestion de documents, ça passe
25:09 par trois étapes. Le loading, splitting,
25:11 on charge les docs, on les découpe
25:13 en vecteurs.
25:15 On a l'embedding, on convertit chaque
25:17 portion de documents en vecteurs.
25:19 Vous avez des modèles spécialisés.
25:21 Très bon en français, comme dans toutes les langues.
25:23 Ensuite, vous avez le stockage en bases vectorielles.
25:25 C'est pour ça que depuis un an, deux ans,
25:27 on parle beaucoup de bases vectorielles.
25:29 Pinecone, par exemple, PG Vector,
25:31 il y a deux ans, on s'en fichait un peu.
25:33 Aujourd'hui, les vecteurs, ils prennent tout leur sens avec le RAG.
25:35 S'il y avait pas eu de RAG,
25:37 peut-être que les bases vectorielles ne seraient pas
25:39 aussi à la mode, mais aujourd'hui, on en a besoin.
25:41 Parce que vous imaginez, stocker
25:43 100 000 vecteurs en local, déjà que votre modèle
25:45 prend la place, vous avez en plus
25:47 ces 100 000 vecteurs qui vous prennent la place en RAM,
25:49 c'est pas possible. Il faut une base de données spécialisée
25:51 pour la recherche et la comparaison
25:53 de vecteurs.
25:55 Comme on a des bases de données un peu transactionnelles,
25:57 ce genre de choses. Au final, on a maintenant
25:59 en plus de toutes les bases de SQL,
26:01 du vectoriel qui se rajoute.
26:03 C'est pas impossible qu'après, on en ait d'autres.
26:05 Ensuite, on a une partie inférence.
26:07 Je l'ai mise en deux versions parce que vous avez
26:09 deux streams. Les deux sont pas forcément
26:11 corrélés ou en même temps. Vous avez d'une part,
26:13 on ingère tous les documents, et d'autre part,
26:15 on fait du retrieval, c'est-à-dire
26:17 on va chercher l'information, et la génération,
26:19 on l'affiche de manière
26:21 compréhensible en langage naturel.
26:23 Ce qui se passe, c'est que si vous faites ça,
26:25 je vais vous montrer un petit
26:27 exemple après, si vous faites ça,
26:29 vous faites l'ingestion de documents à une daté,
26:31 sauf que le problème, c'est que vos documents,
26:33 ils ont été faits à une daté. Si entre temps, vous modifiez
26:35 les documents, votre LLM, il devient
26:37 obsolète. Ce qui fait que potentiellement,
26:39 ce processus-là, il faut l'automatiser.
26:41 Donc il faut des outils qui vous
26:43 permettent d'automatiquement récupérer les documents
26:45 qui ont été modifiés. Vous allez pas le faire
26:47 comme un débourras, c'est-à-dire prendre tous les documents,
26:49 parce que là, ça va être compliqué. Il faut intelligemment
26:51 détecter les documents qui ont été modifiés
26:53 depuis la dernière fois, pour récupérer
26:55 ces nouvelles versions, et les
26:57 mettre à jour. C'est quand même un sujet
26:59 mine de rien. Heureusement, vous avez des outils comme
27:01 Langchain, qui vous permettent de le faire plus facilement.
27:03 Mais, avec ce qu'on a vu,
27:05 déjà, vous vous dites, bon, le fine-tuning,
27:07 c'est pas pour moi. Clairement,
27:09 donner dynamique avec Lorax, c'est possible.
27:11 On peut l'automatiser. Le fine-tuning,
27:13 il suffit qu'il soit automatisé quand même.
27:15 Ça coûte de l'argent, ça coûte du temps.
27:17 Information en temps réel.
27:19 Avec Lorax, on peut rapidement... C'est juste
27:21 un intervalle. Je fais toutes les heures.
27:23 Pas besoin de toutes les minutes, mais toutes les heures,
27:25 tous les jours. Si, par exemple, chez Blend,
27:27 on fait pas toutes les heures, on fait que tous les jours.
27:29 On produit pas 50 documents par jour.
27:31 Par contre, si vous voulez changer le comportement
27:33 du modèle, là, Lorax, ça ne
27:35 sera pas utile. Lorax, il vous apporte
27:37 un contexte supplémentaire. Par contre, si vous voulez
27:39 changer la manière dont le modèle vous répond,
27:41 là, Lorax, il vous donne pas
27:43 l'info, il vous donne juste un contexte.
27:45 Là, il faut changer le comportement du modèle.
27:47 Là, peut-être que le fine-tuning sera adapté.
27:49 Pareil, si vous voulez adapter la capacité de raisonnement,
27:51 le fine-tuning, ça sera un peu une condition
27:53 nécessaire. Et enfin,
27:55 dernier point important, Rabbit à mettre en place.
27:57 Oui, Lorax, c'est rapide. Vous n'avez pas besoin d'entraîner
27:59 de modèles, ça se fait assez bien.
28:01 Le fine-tuning, bon, là, il faut quand même
28:03 tout préparer, donc c'est un petit peu plus long à mettre en place.
28:05 Et pour vous illustrer,
28:07 nous, chez Blend, on a créé un rag
28:09 qui se met à jour en temps réel.
28:11 C'est pas forcément en temps réel,
28:13 mais c'est en tout cas toutes les heures.
28:15 Et avec une isolation des ressources utilisateurs.
28:17 Parce que le problème qu'on a rencontré, nous,
28:19 c'est que du coup, on chargeait
28:21 tous les documents. Donc on a un process automatisé
28:23 qui charge tous les documents, qui met dans une base vectorielle.
28:25 Moi, j'ai un document
28:27 super confidentiel,
28:29 sauf qu'il est dans la même base.
28:31 Mon collaborateur, qui n'est pas censé y avoir accès,
28:33 il a accès à des données confidentielles et sensibles.
28:35 Donc, en fait, ce qu'on fait, c'est qu'on fait une isolation
28:37 par utilisateur. En fait, c'est la même base,
28:39 sauf qu'on fait des filtres supplémentaires
28:41 pour savoir qui sont les personnes qui ont le droit
28:43 de lecture ou pas sur tel ou tel document.
28:45 Et ça, c'est super important parce que
28:47 j'ai déjà vu le cas où, en fait, on a un rag,
28:49 on se dit "bah c'est génial, on met tout dans le rag".
28:51 Et en fait, le problème, c'est qu'on a des documents qui sont
28:53 vraiment confidentiels, donc C2, C3, qui ne sont pas censés
28:55 être affichés à d'autres
28:57 utilisateurs. Et
28:59 d'ailleurs, on se fait poser la question
29:01 "est-ce qu'on dit que la personne a le droit d'accès
29:03 ou pas ?". Il vaut mieux dire qu'on ne sait pas,
29:05 il vaut mieux inciter
29:07 le modèle à dire qu'il ne sait pas plutôt que de dire
29:09 qu'il n'a pas accès. Parce que si vous dites par exemple
29:11 "est-ce qu'il y a un fichier qui indique
29:13 que le chiffre d'affaires a de temps ?", désolé, je n'ai
29:15 pas le droit de vous donner la réponse. En fait, c'est la réponse.
29:17 C'est-à-dire qu'il a trouvé le fichier, mais il vous dit
29:19 qu'il n'a pas le droit de le dire. Donc en fait, intérieurement,
29:21 il a dit que vous avez fait un chiffre d'affaires.
29:23 Donc ça, c'est super important. Il vaut mieux dire
29:25 que vous ne savez pas, enfin, il vaut mieux que le modèle dise
29:27 qu'il ne sait pas, plutôt que de vous dire qu'il n'a pas accès,
29:29 que l'utilisateur n'a pas accès, parce qu'en disant ça,
29:31 en fait, il en dit beaucoup trop.
29:33 Donc là, c'est des petites subtilités.
29:35 Et on a également des sortes de données
29:37 qui peuvent être en post-grès. Donc par exemple, typiquement,
29:39 des requêtes SQL. Sur le Data Warehouse,
29:41 ça, c'est vraiment pas mal, parce que bon, il y a des LNM
29:43 qui le font déjà bien. Mais du coup, si on peut avoir
29:45 et du RAG et des requêtes SQL
29:47 faites automatiquement,
29:49 c'est quand même plus sympa. Notamment,
29:51 parce qu'en général, pour des équipes qui sont moins tech,
29:53 aller chercher des données dans le
29:55 Data Warehouse, c'est un peu compliqué.
29:57 Donc c'est pour ça que faire des requêtes SQL
29:59 uniquement en lecture, bien sûr,
30:01 c'est plus pratique que
30:03 de le faire nous-mêmes.
30:05 Et du coup, on a toute cette chaîne
30:07 qui est faite automatiquement.
30:09 Donc l'avantage, c'est qu'on a du contexte,
30:11 on a des réponses qui sont sourcées, et on a une personnalisation
30:13 pour chaque utilisateur.
30:15 Bon par contre, ça nécessite un peu de ressources de calcul.
30:17 Nous, on a, alors on va être honnête,
30:19 nous, on n'a pas trop de données confidentielles, c'est du JDPT.
30:21 C'est du Pinecone.
30:23 Et tout est sur AWS Appreneur
30:25 pour les jobs en A50, donc du
30:27 serverless container.
30:29 Parce que, bon, les documents, on n'en a pas tant que ça,
30:31 donc s'il faut les vectoriser, ça ne prend pas beaucoup de temps.
30:33 Mais l'avantage, c'est que ce format-là, on peut le répliquer
30:35 dans un cas purement
30:37 on-premise. Si demain, je suis en local,
30:39 bon ben là, ça sera du Managed
30:41 Scaleway ou par exemple du
30:43 GPU. Là, ça sera du, alors
30:45 PG Vector, c'est génial. Moi, je, franchement,
30:47 beaucoup de gens critiquent Postgre parce que c'est en chat,
30:49 mais c'est génial. Si vous faites la recherche de vecteurs,
30:51 restez sur du Postgre, ça marche
30:53 très très bien. Vous n'avez pas besoin d'avoir du
30:55 Pinecone, justement. Puis les autres solutions,
30:57 Weaviate, etc.,
30:59 je pense qu'elles ne sont pas encore totalement
31:01 matures. Moi, je vous conseille Postgre
31:03 pour les vecteurs.
31:05 Et justement, les outils. Alors les outils,
31:07 ça peut faire peur, mais honnêtement, LangChain, je ne sais pas si
31:09 vous avez déjà un peu testé LangChain,
31:11 ça se fait assez bien. Franchement, LangChain, c'est
31:13 très intuitif. Vous avez même LangGraph
31:15 pour faire des trucs un petit peu plus
31:17 évolués avec des loops.
31:19 Mais LangChain, c'est pas mal. Et HuggingFace,
31:21 c'est un peu le pari
31:23 il y a 5-6 ans, mais ils ont vraiment cartonné.
31:25 C'est la référence. Dès que
31:27 vous voulez récupérer un modèle, c'est du HuggingFace.
31:29 C'est vraiment très bien. Sachant que c'est pas
31:31 compliqué à coder HuggingFace.
31:33 Quand on regarde bien, c'est très facile de récupérer des modèles.
31:35 En plus, vous avez des outils
31:37 comme LamaIndex qui sont
31:39 spécialisés pour les rags. Notamment
31:41 si vous ne voulez vraiment faire que du rag, et que vous vous dites
31:43 "LangChain, c'est un peu une petite
31:45 usine à gaz", LamaIndex, on l'a testé,
31:47 c'est très rapide à faire un rag dessus. Et en plus,
31:49 c'est sa spécialité. Donc ça,
31:51 c'est pas mal. Donc ça déjà, vous avez
31:53 pas mal d'outils qui existent, qui sont très utiles.
31:55 Là, je mets, c'est des outils de déploiement.
31:57 Là déjà, quand vous allez à ce niveau-là,
31:59 vous êtes dans le côté un peu obscur,
32:01 parce que franchement, faire du déploiement, ça peut être compliqué.
32:03 Mais si jamais vous vous dites "je veux
32:05 déployer moi-même", vous avez deux solutions.
32:07 VLLM et BentoML.
32:09 VLLM, j'ai testé sur mon
32:11 RTX 4070
32:13 sur mon PC. Je pouvais faire
32:15 100 requêtes en parallèle, et 100 prompts
32:17 en parallèle, et ça tenait très bien.
32:19 Les prompts, ils s'affichaient en
32:21 on va dire en 10 secondes,
32:23 les 100 prompts, en parallèle.
32:25 10 secondes, ça paraît long, mais pour un utilisateur,
32:27 si on a du streaming, ça paraît pas si long que ça.
32:29 Le temps de lecture, il est beaucoup plus faible
32:31 que le temps d'écriture
32:33 du LLM. Donc au final,
32:35 VLLM, c'est vraiment top.
32:37 Ça utilise un mécanisme qu'on appelle
32:39 "Page Attention". Donc ça prend
32:41 plus d'espace, et ça permet d'optimiser
32:43 justement les réponses. Et BentoML,
32:45 BentoML, pareil, alors eux, ils font
32:47 historiquement beaucoup de
32:49 un framework ML, et notamment MLOps.
32:51 Et forcément, ils se sont dit, bon bah,
32:53 c'est un peu le sujet, on va aller sur du
32:55 LLM. Donc moi, je vous conseille ces deux frameworks
32:57 si vous voulez déployer vous-même,
32:59 on-premise. Sinon, je vous conseille
33:01 du Managed, comme Scaleway, AWS, parce que
33:03 sinon, c'est un peu compliqué.
33:05 Ou OpenAI, si vous n'avez pas de soucis
33:07 avec les données.
33:09 C'est pas le
33:11 mal absolu, OpenAI, on peut en avoir besoin,
33:13 mais il faut avoir des alternatives, c'est ça qui est
33:15 important. Toujours des alternatives,
33:17 et nous,
33:19 par exemple, on utilise
33:21 ChageDpt quand c'est possible,
33:23 mais si demain, on a des clients qui ne veulent pas utiliser
33:25 ChageDpt, on a quelques exemples de gros clients qui
33:27 ne veulent pas, on ne passe pas par ChageDpt,
33:29 on fait du Mistral. Nous, en général, on prend du Mistral,
33:31 c'est pas trop mal, ça marche très bien.
33:33 Lama, c'est un peu compliqué, parce que Lama,
33:35 c'est pas vraiment open source, ça se va galer un peu,
33:37 mais il y a quand même une licence.
33:39 C'est pas du MIT,
33:41 on peut faire ce qu'on veut, donc il faut quand même faire attention
33:43 avec Lama, mais Mistral, je dirais que c'est
33:45 l'une des meilleures alternatives aujourd'hui qui
33:47 existe.
33:49 Oui, c'est Facebook, Lama.
33:51 C'est Méta, oui.
33:53 Alors, en fait, la licence,
33:55 c'est pas la même que celle qu'on a d'habitude pour
33:57 l'open source, c'est leur propre licence.
33:59 Donc il faut regarder vraiment au niveau de la licence, ce que ça permet.
34:01 On peut le faire d'un point de vue commercial, mais il faut regarder
34:03 en détail ce que ça permet de faire. Contrairement
34:05 à du Mistral, où là, pour le coup, c'est l'équivalent
34:07 MIT, donc c'est totalement permissif.
34:09 Ça, c'est un petit point qui peut être important,
34:11 c'est les petites lignes.
34:13 Et dernier point,
34:15 justement, maintenant que vous avez développé
34:17 tout ça, alors l'avantage, c'est qu'en termes de code,
34:19 on reste sur une stack classique du Python.
34:21 On reste sur des choses assez
34:23 qu'on maîtrise. Vous avez envie de déployer.
34:25 Si vous déployez,
34:27 ça va bien se passer, vous avez passé
34:29 les tables de déploiement, et demain, vous
34:31 les industrialisez, vous commencez à
34:33 automatiser. On en parle, par exemple,
34:35 quand il faut mettre à jour automatiquement
34:37 les documents. Là, vous allez vous dire, on va
34:39 uniformiser les processus de développement
34:41 des pipelines. Ça, c'est ce qu'on fait avec
34:43 le MLOps déjà depuis plusieurs années.
34:45 Le but, c'est d'avoir un peu les mêmes
34:47 "boilerplate", les mêmes patterns
34:49 qui se répètent, pour éviter de recoder
34:51 la même chose. Et quand on fait
34:53 du MLOps, on a un peu de stream,
34:55 on a la partie expérimentale, où on va
34:57 toujours entraîner des modèles, on va itérer
34:59 pour améliorer en continu. On a la partie
35:01 de déploiement, où là,
35:03 cette fois-ci, on va déployer des bonnes versions qui sont
35:05 testées, robustes, etc.
35:07 Et en fait, l'idée, c'est que si on prend
35:09 du MLOps appliqué au LLM, on obtient
35:11 des LLMOps.
35:13 Mais le problème, c'est que le LLMOps, c'est pas
35:15 exactement copié-collé.
35:17 Si jamais vous voulez faire du LLM
35:19 en version automatisée, donc industrialiser
35:21 des LLM, là, il faut faire attention.
35:23 Parce que du coup, effectivement,
35:25 ça peut être une bonne approche, ça peut être
35:27 louable de se dire, on va essayer d'industrialiser.
35:29 La grosse difficulté
35:31 qu'on va rencontrer, déjà, c'est
35:33 la infrastructure et la scalabilité.
35:35 Les ressources sont quand même importantes.
35:37 Là, vous avez besoin d'avoir une
35:39 infra qui tient la route. Si vous n'êtes pas dans du
35:41 cloud, il faut vraiment avoir des équipes dédiées
35:43 en interne qui sont capables de suivre.
35:45 C'est toujours la même histoire, GPU vs. machine
35:47 virtuelle. Si vous ne faites que du RAG,
35:49 vous pouvez vous en sortir avec des machines virtuelles.
35:51 Pourquoi ? Parce que vous avez FIS,
35:53 le Facebook, qui vous permet
35:55 de faire de l'encodage et de la vectorisation
35:57 sur CPU. Vous avez GPU et
35:59 CPU. Donc ça marche avec des machines
36:01 virtuelles. Par contre, si jamais vous voulez
36:03 faire un élément de primaires, vous n'aurez
36:05 pas le choix, ou même dans le cloud, de faire du GPU.
36:07 Mais ça, il faut bien le prendre en compte
36:09 parce que je pense
36:11 notamment à GCP.
36:13 Les GPUs,
36:15 ils n'ont pas des quotas énormes.
36:17 Donc, à un moment donné, un GPU,
36:19 ça marche. Vous demandez deux, trois GPU, moi, je
36:21 me suis fait rejeter plusieurs fois par Google pour avoir
36:23 plusieurs GPU. AWS, ça passait bien.
36:25 Google, j'ai eu du mal. Donc ça, faites attention,
36:27 il faut le prévoir. Dans le cloud, les GPU,
36:29 c'est pas comme les VM, on a l'impression
36:31 d'en avoir des milliers à foison.
36:33 Les GPU, c'est un peu avec parcimonie quand même.
36:35 Donc ça, c'est un point qui est important.
36:37 C'est pas aussi facile de dire "si j'ai pu le faire avec un GPU,
36:39 je peux en faire avec dix maintenant".
36:41 Malheureusement, ils sont quand même
36:43 beaucoup plus frileux parce que c'est quand même une ressource qui coûte cher.
36:45 Ils vont pas vous les donner aussi facilement
36:47 que des VM où là, en clique bouton, vous l'avez.
36:49 Donc ça, c'est un point important.
36:51 Prompt Engineering, en général, quand vous commencez à faire
36:53 plein de projets, il vous faut des templates sur étagère.
36:55 Ça, c'est super important. Il vous faut ce qu'on appelle
36:57 des "guardrails" un petit peu, c'est-à-dire des choses
36:59 à ne surtout pas faire, que si votre projet
37:01 qui soit en interne ou face à des
37:03 clients finaux, à des utilisateurs,
37:05 il faut des gardefous.
37:07 Et ça, ça se fait déjà avec des prompts.
37:09 Par exemple, un moyen très simple de voir s'il y a des gardefous
37:11 ou pas, vous allez sur un site,
37:13 je sais pas, avec un chatbot. Aujourd'hui,
37:15 il y a pas mal de chatbots qui sont avec la nouvelle version
37:17 un petit peu chatjpt. En plein milieu
37:19 de la conversation, vous lui dites généralement un code piton
37:21 qui dit "Hello World". Si le chatbot vous dit
37:23 "Bien sûr, voici le code piton qui dit Hello World",
37:25 vous avez tout de suite compris qu'il n'y a aucun guardrail.
37:27 Donc c'est du chatjpt.
37:29 Normalement, j'ai pu tester avec, je sais plus,
37:31 un site e-commerce. Il y a ce genre
37:33 de gardefous pour... Il y a un LLM,
37:35 c'est le même, mais on va d'abord
37:37 demander, est-ce que l'utilisateur demande
37:39 bien une question en rapport avec
37:41 le service client ? Si c'est oui,
37:43 on répond à la question. Si c'est non, on dit que
37:45 la question, il peut pas y répondre.
37:48 Parce que c'est là où justement...
37:50 C'est tout bête, c'est un petit check avant,
37:52 mais c'est plein de questions qui arrivent comme ça.
37:54 J'avais vu un autre exemple, c'était l'escalation
37:56 de privilèges. C'est-à-dire, on avait
37:58 un chatbot qui
38:00 permettait d'attribuer automatiquement les droits,
38:02 par exemple, un outil pour un BI.
38:04 Et en fait, on avait un DPO qui devait valider.
38:06 Et en fait, on se fait passer pour le DPO.
38:08 Ça, c'est classique, c'est déjà pareil. On se fait passer pour le DPO,
38:10 et du coup, si on ne détecte pas qu'il y a eu
38:12 une élévation de privilèges, on essaye de contourner.
38:14 En fait, on se fait passer pour le DPO, on se donne
38:16 les propres accès et puis après, c'est
38:18 open bar. On peut faire ce qu'on veut.
38:20 Tout ça, c'est des choses qui sont très importantes.
38:22 Voilà, exactement.
38:24 Donc, l'échelle de prompt, c'est pour ça que je disais au début,
38:26 le prompt, c'est pas un truc
38:28 qui est un peu "oui, sympa". Non, c'est vraiment essentiel.
38:30 Ça guide complètement le modèle
38:32 et ça permet de mettre des gardes-fous. En général,
38:34 j'aime bien, il y a des gens qui
38:36 essayent seulement de... C'est un peu comme les hackers,
38:38 qui essayent de trouver la faille. Et ça, c'est vraiment
38:40 intéressant. Alors d'ailleurs, on peut faire des... Nous, c'est ce qu'on fait
38:42 un peu en formation. On essaye de faire plusieurs niveaux
38:44 avec à chaque fois des gardes-fous.
38:46 Et le but, c'est de dire à la personne, "essaye de
38:48 contourner". Et plus le niveau avance,
38:50 plus le contourner est difficile parce que plus on a mis
38:52 de gardes-fous. Donc ça, c'est des choses
38:54 qui sont intéressantes.
38:56 Alors, une horreur, ça, pour ceux qui ont l'habitude,
38:58 la gestion des artifacts. Ça, c'est un
39:00 truc... C'était un peu le...
39:02 Ce qu'on n'avait pas trop avec... Avant
39:04 le ML, maintenant avec le ML, on a la gestion des artifacts.
39:06 Faut sauvegarder les poids du modèle,
39:08 faut le fichier de configuration du modèle,
39:10 faut... Là, c'est la même chose. Mais en plus, on a le modèle
39:12 d'abending, on a le modèle en lui-même,
39:14 on a les "save time source", on a le
39:16 "synchronizer", le "splitter". Encore plus d'artifacts.
39:18 Donc ça, il faut le prévoir.
39:20 MLflow, malheureusement, il ne pourra pas gérer tous les artifacts.
39:22 Donc il faut peut-être encore un autre "artifact store".
39:24 Ça peut aller très loin après.
39:26 Servicetière. Pareil,
39:28 si vous avez une base de données vectorielle
39:30 qui n'est pas, par exemple...
39:32 Est-ce qu'elle peut suivre la cadence ? Est-ce qu'elle va être
39:34 scalable ? Est-ce qu'elle est adaptée ?
39:36 Si vous avez un système de stockage,
39:38 trouver le bon. Si c'est bon du cloud,
39:40 distribuer, pourquoi pas. Mais si c'est un stockage, par exemple,
39:42 disque réseau ou sur
39:44 du cube, par exemple, il faut trouver...
39:46 Il faut que ça fonctionne, que ça suive.
39:48 Intégration d'application, pareil.
39:50 Et enfin, point très important à la fin,
39:52 le monitoring et feedback humain.
39:54 Par exemple, la réexécution des requêtes.
39:56 Ça, c'est un truc qui arrive souvent, c'est les loops.
39:58 Vous le voyez avec ChDPT, la réponse ne convient pas,
40:00 vous demandez à la régénérer. Ça, il faut,
40:02 dès le début, intégrer cette fonctionnalité.
40:04 C'est très important. Et les feedbacks sur la réponse.
40:06 Parce qu'on l'a dit au tout début,
40:08 "Human in the loop", donc l'humain, c'est quand même
40:10 celui qui est un peu le...
40:12 C'est la personne visée par la réponse, c'est lui qui va lire la réponse.
40:14 Si vous lui donnez pas
40:16 moyen de dire si c'est bon ou pas bon,
40:18 vous savez pas. Parce qu'au final,
40:20 ce qui est compliqué avec les LLM, c'est que les métriques,
40:22 oui, on peut savoir si le modèle
40:24 est bon pour faire des maths, si il est bon pour faire
40:26 de la logique, du raisonnement.
40:28 Mais à la fin, ça sert à l'utilisateur.
40:30 Si vous avez pas de feedback, c'est pas un
40:32 dataset et un score qui va vous dire si c'est bon ou pas.
40:34 Il y a que la personne finale qui va vous dire si c'est bon ou pas.
40:36 Donc il faut pas oublier
40:38 donner la possibilité aux personnes de
40:40 donner un feedback.
40:42 Ça c'est vraiment très important d'ailleurs, on a une partie
40:44 qui s'appelle le RLHF,
40:46 le Reinforcement Learning Human Feedback.
40:48 C'est justement, on apporte la réponse
40:50 humaine pour
40:52 savoir si c'est bon ou pas.
40:54 En général, ce que font des équipes, c'est que si
40:56 ça part d'une demande d'attention, si vous
40:58 savez pas le meilleur modèle, vous faites l'AB
41:00 testing de modèle, AB,
41:02 réponse A, réponse B, vous vous demandez lequel est le mieux,
41:04 et on itère, et à la fin, il y a un des modèles naturellement qui sera
41:06 meilleur que l'autre aux yeux des utilisateurs finaux.
41:08 Parce qu'à la fin, celui qui a
41:10 raison, c'est quand même la personne qui reçoit le texte
41:12 et qui lit le texte. C'est elle qui va dire est-ce que c'est
41:14 correct ou pas.
41:16 C'est quand même ce pourquoi on fait du LLM.
41:18 Sinon, si on avait pas besoin de texte,
41:20 l'LLM n'aurait pas. C'est toujours ça, faut pas
41:22 l'oublier. On avait un peu tendance,
41:24 et bon y compris, à oublier, que dire bon
41:26 c'est pas qu'on s'en fiche un peu, mais
41:28 c'est pas la personne visée. Là d'un coup
41:30 on se dit, maintenant c'est comme pour les développeurs
41:32 front et back, c'est la
41:34 personne, c'est l'humain qui est quand même visé par cette application
41:36 qui va réceptionner
41:38 un petit peu la réponse. Faut pas oublier que
41:40 dans la loop, elle est très importante.
41:42 [SILENCE]
41:44 [SILENCE]

Recommandée