Retrouvez un résumé de l'actualité Generative AI en français sélectionnée par Adrien Maret.
✍️ L’édito
Je suis un early adopter de Copilot de l’époque ou c’était encore assez sommaire avec simplement les 10 meilleures suggestions de code et je dois dire que j’ai pris beaucoup de plaisir à utiliser l’outil au fur et à mesure de ses améliorations.
Ces 2 dernières années, le rythme des innovations en GenAI s’est répercuté sur Copilot et l’outil est devenu indispensable au quotidient, tel une extension de mon cerveau de développeur.
Entre collègues, on parle maintenant de “Copilot pause”, ce petit instant de quelques centaines de millisecondes que l’on attend après avoir tapé quelque chose pour que Copilot nous suggère la suite.
Une bonne partie de mon temps de programmation est enfaite dédié à écrire le bon début de ligne pour que Copilot complète la suite.
Bref, je suis un fan inconditionnel et je ne pensais pas qu’une autre solution pourrait être à la hauteur de celle faite par un géant de la tech comme Github (et avec Microsoft derrière!)
Pourtant j’ai découvert Supermaven et je dois dire que je suis subjugué par la qualité de l’outil. J’en parle plus en détails dans cette newsletter mais ça vaut vraiment le coup d’essayer:
250 ms de latence vs 800 pour Copilot (de quoi réduire le temps de la “Copilot pause” !)
un modèle custom et pas cher qui permet une auto-complétion à chaque frappe alors que Copilot calcul un score avant d’appeler le modèle
Il y a un essai gratuit mais je vous conseille de tester en condition réelles et de payer les 10$ pour avoir le modèle de dernière génération.
Un article y est dédié plus loin mais pour les impatients vous pouvez regarder directement sur https://supermaven.com/download.
⚙️ Prompt Engineering
💡Chaine de pensée, le couteau suisse du Prompt Engineer
Je me suis rendu compte que la technique que j’utilisais le plus en Prompt Engineering était tout simplement la Chaine de pensée (Chain of Thought ou CoT).
Que ce soit dans un même prompt ou dans une chaine de prompt, c’est la première chose que je cherche à utiliser quand je veux améliorer les performances d’un prompt.
Il y a déjà beaucoup de ressources sur le sujet sur internet mais honnêtement je trouve que les exemples ne permettent pas de se projeter sur des cas d’usages concrets.
Je comptais écrire un article sur le fonctionnement de l’inférence et finalement cela va très bien avec la Chaine de pensée car il faut comprendre l’inférence pour appréhender la portée de la CoT ;-)
🔍 Retrieval-Augmented-Generation
Les détails d'une méthode qui allie un RAG à des comportements d'Agent.
Leur benchmark est une optimisation de flux financiers et logistique à réaliser en interrogeant de la donnée dans une base relationnelle.
Concrètement, un plan des données nécessaires et de leurs relations est établie en amont puis les différentes requêtes sont exécutées.
Si des données sont manquantes, un nouveau plan peut être établie.
Ils affichent des résultats jusqu'à 2 fois meilleurs (60%) qu'un RAG simple sur le benchmark qu'ils ont créé.
Donner la représentation interne de la base de connaissance au modèle pour lui permettre de créer ses propres requêtes est une piste intéressante que j'avais déjà envisagé (mais repoussé faute de structuration correcte dans notre base de connaissances à l'époque)
💡 Can Long-Context Language Models Subsume Retrieval, RAG, SQL, and More?
Une étude sur les capacités des modèles ayant de grandes fenêtres de contexte à réaliser des tâches de type RAG.
Il apparaît que les modèles sont autant capable qu'un RAG lorsque l'on met tous les documents dans leur fenêtre de contexte.
A première vue, on pourrait se dire que les RAG sont obsolètes mais:
- le nombre de tokens consommé est de 10 à 100x plus élevé
- même 2 millions de tokens peuvent s'avérer insuffisant pour une grande base de connaissances
En général, les modèles se débrouillent aussi mieux lorsque l'on limite le nombre d'informations présentes dans leur prompt et sur des cas d'usages de raisonnement comme en SQL, cela peut améliorer les performances.
🧠 Large-Language-Models
💡 Hacky repo to see what the Copilot extension sends to the server
Un travail impressionnant de reverse engineering sur le fonctionnement de l'extension Github Copilot.
Dans la partie sur le prompt engineering, on apprend notamment qu'un "token budget" est alloué à chaque prompt et que des chunks de documents potentiellement pertinents pour la génération sont ajoutés au prompt en fonction de différents scores.
La partie appel au modèle contient toutes les règles pour déclencher le modèle au meilleur moment. (par exemple juste après avoir écrit un caractère espace).
Surtout, il y a un contextual filter score qui est calculé à partir d'un simple modèle de régression local afin de déterminer si cela vaut la peine d'appeler le modèle distant.
Finalement pour la télémétrie, le point principal est un check fait par l'extension à différents intervalles (jusqu'à plusieurs minutes) pour vérifier si le code suggéré est toujours dans le code.
Bref, un très gros travail a été fait et est disponible sur le repo copilot-explorer.
Depuis cela a certainement évolué (par exemple l'utilisation de GPT-4 au lieu de Codex) car ce travail a plus d'un an maintenant.
💡 Introducing Supermaven, the first code completion tool with a 300,000-token context window
Supermaven est un concurrent de Copilot pour la génération de code dans l'IDE des développeurs.
C'est le créateur de Tabnine, qui propose ce genre de solutions depuis 2018 (!), qui a développé Supermaven.
Leur parti pris c'est d'entrainer des modèles plus petits et plus spécialisés que GPT-4 pour pouvoir les utiliser virtuellement à chaque lettre écrite.
Ils ont donc développé leur propre solution en utilisant un modèle entrainé par leur soins:
- fenêtre de contexte de 300 000 tokens
- utilisation de la majorité du code d'un repo pour la suggestion
- latence faible (250ms annoncées vs ~800 pour Copilot)
Pour moi, des insights donné, le plus intéressant est leur utilisation des séquences d'éditions plutôt que des fichiers. C'est à dire qu'ils considèrent l'enchainement des éditions faites par l'utilisateur (renommer des variables, écrire 2 lignes, supprimer 1 ligne, etc)
Je l'ai essayé et même en version gratuite c'est bluffant car les complétions sont instantanés et d'une qualité comparable à Copilot.
💡 Introducing Claude 3.5 Sonnet
La dernière version de Claude serait le premier modèle à battre un modèle d'OpenAI.
Sur un benchmark de raisonnement par exemple, Claude 3.5 Sonnet fait 59% vs 53% pour GPT-4o.
Le million de token est à 3$ vs 5$ pour GPT-4o et ma fenêtre de contexte est de 200K tokens vs 128 pour GPT-4o.
Le modèle possède également des capacités d'analyse image.
Bref, un sérieux concurrent pour OpenAI !
Une technique intéressante de prompt injection qui passe tous les niveaux du CTF de Lakera (une entreprise spécialisée dans la sécurité des LLMs)
Ils donnent des instructions en pseudo code qui permettent de faire leak le code secret
🎨 Image
💡 Florence 2, an Open Source Vision fondation model
Florence 2 est un modèle de reconnaissance d'image développé par Microsoft et disponible en open source.
Il est disponible en plusieurs versions et reste assez petit avec moins d'un milliard de paramètres.
Il performe mieux que les modèles actuels comme Flamingo bien qu'il soit 400x plus petit que celui-ci !
A priori c'est la qualité de la donnée d'entraînement qui permet ces performances avec 126 millions d'images et 5.4 milliards d'annotations utilisées.
Même le papier de recherche est Open Source, c'est bizarre de voir Microsoft faire ce qu'est sensé faire OpenAI 🙄
📰 Autres
💡 GPUs Public Preview: Run AI workloads on H100, A100, L40S, and more
Koyeb est un cloud serverless assez moderne avec un scalling automatique en fonction de pleins de paramètres (RPS, active connections, latence, etc)
Ils proposent maintenant des GPU avec une facturation à la seconde !
C'est super pour l'inférence avec des modèles Open Source. Que ce soit des petits modèles sur un GPU à 0.5$/h ou un LlaMa 3 sur un H100 à 3.30$/h.
Generative AI France est une newsletter technique francophone. Retrouvez nous sur https://gen-ai.fr