Monthly Shaarli
December, 2023
Une démo impressionnante sur ce que pourrais être les interfaces de demain.
Depuis une vingtaine d'années, les interfaces hommes machines sont des écrans avec formulaires (grosso modo).
Les IA génératives permettent de rebattre les cartes et d'offrir une interface en langage naturelle enrichie avec des images.
Une méta-étude qui regroupe les différents travaux autour des RAG.
C'est un inventaire assez exhaustif de toutes les techniques de construction et d'amélioration d'un RAG et donc un must-read avant de se lancer en production.
PowerInfer est un nouveau moteur d'inférence qui permet d'utiliser les plus gros modèles sur du matériel de particulier.
Ils ont remarqué qu'il y a une répétition des neurones activés lors des phases d'inférence ("hot neurons") quelque soit le prompt et ils sont donc pré-chargés dans le GPU.
PowerInfer utilise également le CPU dans son moteur d'inférence hybride et atteint des performances à ~30 tokens/seconde sur une NVIDIA RTX 4090, soit seulement 20% moins que sur des GPU datacenter A100.
Avec LlamaCPP, la vitesse d'inférence est multipliée par 11!
Un SaaS d'observabilité des applications GenAI orienté métriques produit.
4 techniques pour améliorer la rétention des applications à base de LLM:
- pré-ecrire le prompt
- multimodalité en entrée (voix, image, documents)
- proposer plusieurs réponses
- rendre l'échange plus humain (memes, blagues, etc)
Un site qui permet de tester ses prompts sur une vingtaines de modèles à la fois.
Il y a bien sur les modèles Open Source mais aussi les modèles fermés comme ceux de OpenAI ainsi que les familles Claude et Gemini.
Un cloud serverless qui fait tourner des fonctions Python.
Ils ont notamment tout un service de GPU à la demande pour faire tourner des tâches de ML comme de la transcription audio, de l'inférence, etc
Utile dans une démarche GenAI + cloud pour mieux maitriser les coûts
Un outil de génération d'image en temps réel.
Ça utilise SDXL Turbo pour générer une image en moins de 1 seconde. L'affichage des images se fait au fur et à mesure de l'écriture de la description.
L'effet est vraiment bluffant!
Une proposition d'amélioration du protocol SSH en le faisant passer dans HTTP/3.
Plusieurs avantages:
- plus rapide
- utilisation d'authentification modernes (OAuth, etc)
- serveur SSH invisible au port scanning
- tous les autres avantages de HTTP/3
L'histoire de Microsoft qui pousse IE très fort depuis sa création
A priori le modèle Phi-2 de Microsoft est assez lent, même sur des GPUs.
Sur CPU c'est plusieurs minutes pour générer ~200 tokens.
Aussi le modèle hallucine pas mal donc succès vraiment mitigé pour Microsoft.
Un article très détaillé sur le fonctionnement des bases de données vectorielles.
Encore une fois, ces "bases de données" servent surtout à faire de la recherche sémantique qui peut être considéré comme un fonctionnalité plutôt qu'un produit à part entière.
Postgres et Elasticsearch proposent de la recherche vectoriel en plus de toutes les autres fonctionnalités d'une application tout en offrant des performances similaires.
Les résultats de Mistral en one-shot code generation sont meilleurs que ceux de GPT4.
J'ai testé moi même sur ses exemples et j'obtiens plus ou moins les mêmes résultats.
Après les capacités d'un LLM ne sont pas évaluable uniquement avec des demandes en one-shot et d'ailleurs GPT4 se démarque par ses capacités de "raisonnement" qui s'exprime plutôt avec des Chain of Thoughts et autres méthodes multi-shot.
Une version Open Source de Github Copilot.
C'est du self-hosted avec les modèles suivants:
- TabbyML/StarCoder-7B
- TabbyML/CodeLlama-13B
- TabbyML/DeepseekCoder-6.7B
Le nouveau modèle de Mistral a été release, c'est un modèle de type "Mixture of Experts" qui contient en réalité 8 modèles spécialisés dans des tâches en particulier.
Ils annoncent des performances meilleures que Llama 70B sur la plupart des benchmark tout en ayant une inférence 6x plus rapide!
Plus d'info sur Mixture of Experts
LLMCompiler est une alternative à la méthode ReAct pour la planification et l'exécution de tâches.
2 composants:
- LLM Planer: découpe les tâches dans un Directed Acyclic Graph (DAG) pour une exécution en parallèle et un respect des dépendances
- Executor: un Agent qui exécute les différentes tâches avec les outils à sa disposition
Le LLM Planer est capable de recréer le DAG avec le résultat de chaque tâche pour une planification dynamique (e.g. embranchement if/else)
Concrètement ils ont mesuré des améliorations dans le processus de raisonnement sur certains benchmark comme HotspotQA mais c'est surtout la latence qui est réduite grâce à la parallélisation des tâches
Un framework pour construire facilement une application type chat avec des LLMs.
Pleins de fonctionnalités:
- suivi threads
- ajout de fichiers
- multi-modalité (images, son)
- frontend custom
Un LLM Open Source spécialisé dans la génération de code.
Le modèle n'a que 7 milliards de paramètres et est capable de surpasser GPT-3.5 dans certains benchmarks.
Une technique qui améliore la résolution de problèmes avec du code.
C'est une variante de Chain of Thought pour la résolution de problèmes et c'est d'ailleurs sur ce genre de benchmark qu'ils ont évalué le modèle et non pas des benchmark de pure génération de code.
La méthode consiste à découper le problème en sous étape et ensuite soit:
- de générer le code Python de la sous étape et d'exécuter le tout à la fin
- d'utiliser un LLM pour pseudo exécuter le code de l'étape
SDXL Turbo est une version améliorée de Stable Diffusion XL qui permet de générer une image en seulement 200ms sur une carte A100 !
Concrètement il n'y a qu'une seule étape de génération au lieu de 20 à 50 aujourd'hui. Ces étapes de générations enlèvent des couches de "bruit" successive.
Le nom de la nouvelle méthode est Adversarial Diffusion Distillation (ADD)
Le modèle et les poids sont Open Source mais sans utilisation commerciale
Si on créé un binaire avec Node.js et qu'il contient du code malveillant alors ça passe tous les heuristiques de détection de malwares
HyDE est une méthode pour améliorer la recherche d'un RAG.
Concrètement on prend la demande d'origine et on va générer plusieurs documents à partir de cette demande.
Ces documents vont avoir des champs sémantiques différents pour espérer retrouver un nombre plus importants de documents.
Par exemple, avec la demande suivante "Est-il possible d'ajouter un module de formation obligatoire à un utilisateur?"
Si on a 3 sources de données avec des profils rédacteurs différents alors on va demander à GPT de générer des réponses imaginaires:
- Github: "écrit une réponse hypothétique à cette demande du point de vue d'un développeur"
- Notion: "écrit une réponse hypothétique à cette demande du point de vue d'un Product Owner"
Un excellent article sur la manière de conduire un refactor sur le long terme.
Une technique pour l'orchestration d'Agent qui obtient de bien meilleurs résultats de ReAct. (0.97 vs 0.76 sur HotPotQA)
Leur technique se base sur la réflexion autour du résultat obtenu par un premier LLM. Cette réflexion permet d'itérer sur la tâche à réaliser en corrigeant les erreurs.
L'étape de réflexion prend en compte la génération et un feedback sur cette génération. Le feedback dépend du type de problème:
- question/réponse: évaluation par un LLM
- génération de code: exécution du code et message d'erreur
- prise de décision: vérification avec l'arbre des "bonnes" décisions
Une mémoire est également analysée pendant la phase de réflexion afin d'éviter le bouclage sur des solutions déjà essayées.
Cela me fait beaucoup pensé à cet article sur les Agent autonomes dans un jeu vidéo https://links.aschen.tech/shaare/a0Krew
Une comparaison des différentes manières de cloner un objet en Javascript.
Sans surprise c'est toujours JSON.parse(JSON.stringify(object)) qui est le plus rapide et surtout le plus portable.
Une interface unifiée qui donne accès à ChatGPT, Bard, Claude, Bing Chat, Mistral et d'autres LLMs en version chat.
Ça permet notamment de comparer la qualité des réponses.
Un article qui résume les techniques autour des embeddings d'images.
CLIP de OpenAI reste la référence Open Source pour créer des embeddings d'images même si le modèle VIT (Vision Transformer) de Google obtient de meilleures résultats en classification, cela reste encore de la recherche et il n'y a pas de moyen simple d'obtenir les embeddings sous-jacent.
https://paperswithcode.com/sota/zero-shot-transfer-image-classification-on-1
La technique des k-means cluster s'applique également aux images afin de détecter des "groupes" (ou cluster) d'images.
Un autre exemple de navigation avec un GPT4V.
Le problème jusqu'ici était que le HTML est une représentation unidimensionnel textuelle d'une interface graphique bidimensionnelle.
Cela couplé au fort niveau de bruit contenu dans le HTML rendait impossible la navigation dans des applications complexes de type SaaS.
L'utilisation de GPT4V avec des tags visuels permet au modèle de comprendre quelles sont ses possibilités d'interaction.
Une excellente étude sur la productivité des développeurs.
- les employés qui se déconnectent à la fin de la journée sont 20% plus productifs
- faire des pauses améliore la productivité
- en moyenne, le temps idéal de concentration par jour est 4h
- au delà de 2h de réunion par jour, les développeurs se sente surchargés
- seulement 1 développeur sur 4 se considère comme productif entre 15 et 18h
Firefox est à 2.2% de part de marché.
En dessous de 2% de trafic sur les sites du gouvernement US, il ne sera plus officiellement supporté.
Un LLM qui ne se base pas sur l'architecture Transformers.
C'est intéressant de voir qu'il y a toujours des expérimentations sur d'autres architectures, à voir si celle-ci se révèle meilleure
A peine quelques semaines après la sortie du modèle AnimateAnyone, les équipes de Alibaba proposent une cabine d'essayage virtuelle.
Une véritable révolution pour le e-commerce !
Phi-2 est un modèle de seulement 2.7 milliards de paramètre à destination des terminaux mobile.
Malgré sa petite taille, il affiche des performances similaires à Llama 70 ou Mistral 7B.
Il est même plus performant que Gemini Nano 2 alors qu'il est plus petit que celui-ci (3.2B vs 2.7B)
Mistral propose maintenant ses propres API d'inférence pour leurs modèles.
Outre les modèles de génération de texte, ils proposent aussi un modèle d'embeddings en 1024 dimensions qui offre des performances similaires à ada-2 de OpenAI sur le benchmark MTEB (56.32 vs 55.26 pour Mistral en retrieval)
Au niveau du prix, c'est la même chose que OpenAI, c-a-d 0.1$ pour 1 million de tokens.
Un bloqueur de popup, cookies et autres éléments qui pourrissent l'expérience web.
Un régale.
Une explication technique du moteur de recherche de code de Github.
Avec 155 To de données et plus de 15 milliards de documents, ils ont développé une solution maison de l'ingestion jusqu'au moteur de recherche.
Le moteur de recherche est basé sur des ngrams (trigramme à priori)
Une vidéo qui résume les nouvelles fonctionnalités de Github Copilot.
On a notamment des Agents qu'il est capable d'invoquer pour poser des questions spécifiques. Ce sont des RAGs.
Par exemple @workspace permet de poser des questions avec les fichiers du projet pour trouver un composant en particulier.
https://code.visualstudio.com/blogs/2023/11/13/vscode-copilot-smarter
Meta sort un LLM basé sur Llama 7B qui est spécialisé dans la classification d'un prompt et d'une réponse afin de détecter du contenu préjudiciable.
C'est une bonne alternative Open Source à des outils comme l'API de modération de OpenAI.
D'ailleurs les performances de Llama Guard sont globalement meilleures que celles de OpenAI
Une explication technique du bug dans le moteur source qui permet d'accélérer pendant les sauts.
Code à l'appuie 😄
Google sort AlphaCode2 qui se base sur son LLM Gemini.
Cette nouvelle version utilise Gemini mais c'est surtout un Agent LLM complexe avec de multiples étapes:
- génération de solutions
- évaluation des solutions
- sélection des meilleures solutions
AlphaCode2 a résolu 43% des 8000 problèmes tirés de CodeForces, ce qui le positionne entre les rangs "Expert" et "Candidate Master" ou tout simplement meilleur que 85% des développeurs du site.
Une étude compare l'impact environnemental des modèles Open Source de GenAI.
Générer une image avec Stable Diffusion consomme autant que charger un smartphone (0.012 kWh)
A priori les modèles spécialisés seraient tout autant efficace sur certaines tâches précises tout en consommant moins d'énergie.
De la recherche vectorielle sur des fichiers audio avec Elasticsearch et librosa
Une méthode pour évaluer les performances des Agents LLM.
Pour chaque tâche, l'Agent doit utiliser un ou plusieurs outils comme un navigateur web, de l'exécution de code, une API custom, etc.
Les tâches sont réparties en 3 niveaux:
- Niveau 1: entre 0 et 1 outil nécessaire, maximum 5 étapes
- Niveau 2: entre 5 et 10 outils, plus de 5 étapes
- Niveau 3: grand nombre d'outils et beaucoup d'étapes
Ils ont évalué GPT-4, AutoGPT et GPT-4 avec plugins et aucun n'arrive à réaliser des tâches de niveau 3
Quand faut-il laisser un commentaire à l'intérieur du code?
- un besoin business incongru (expliquez l'histoire originel)
- cela a demandé des recherches (partagez des liens)
- plusieurs options étaient considérées (justifiez)
- question dans une revue de code
Un dataset de problème de code avec un outil d'évaluation automatique.
Les problèmes sont en plusieurs langages et l'évaluateur permet de tester automatiquement des réponses qui auraient été générés par un LLM par exemple.
Un article sur un modèle d'agent capable de se fine-tuner à l'aide de ses propres itérations sur les tâches à résoudre.
C'est potentiellement intéressant pour générer des dataset d'entrainement sur des tâches à plusieurs étapes.
L'informatique quantique n'est toujours pas pour demain.
Beaucoup d'interrogations sur la faisabilité:
- "1000 qbits physiques pour 1 qbit logique avec correction d'erreur"
- "la correction d'erreur pourrait être fondamentalement impossible"
Un autre problème est la bande passante entre le monde quantique et classique, jusqu'à 1 million de fois plus lent que sur un ordinateur classique
Google sort un nouveau modèle de génération de vidéo.
Le modèle est capable de conserver le style entre chaque image de la séquence pour créer de courtes vidéo.
VideoPoet fonctionne à partir d'un prompt seul ou même une image et d'un prompt.
Toutes les démo sont visibles ici https://sites.research.google/videopoet/
Un exemple pratique d'un RAG hybride avec recherche vectorielle + recherche "classique" avec scoring par mots clés et filtres.
C'est ce qu'on pourrait aussi avoir en utilisant Elasticsearch avec ses fonctions de scoring et sa recherche vectorielle knn.
Les résultats sont bien sur meilleurs que du vectoriel classique.
Une démo d'une inférence en temps réel depuis l'image de la webcam qu'on peut modifier avec un prompt.
Le prompt n'est pas très suivi par le modèle mais le résultat est presque complètement fluide ce qui est impressionnant pour de l'inférence d'image.
Une étude faites avec des évaluateurs humains sur la qualité des réponses de différents LLMs.
Différentes versions de GPT4 sont en 1er, 2e et 4e position. Sinon ce sont Claude 1 et Claude 2 qui arrivent en 3e et 5e positions.
Une méthode de compression des prompts pour réduire leur taille.
La méthode utilise de plus petit LLMs pour compresser un texte en ne conservant que les informations pertinentes pour un LLM.
La différence de performances avec le prompt compressé est minime mais on peut diviser la taille par 20!
Leur deuxième méthode est aussi de la compression de prompt mais dans le cadre d'un RAG. Le contenu du prompt est compressé et surtout ré-organisé lorsqu'il contient des documents afin d'améliorer le score de retrieval.
Ils affichent des performances de 17% supérieures sur NaturalQuestions avec 4x moins de tokens.
Bref, moins de tokens = plus rapide + moins cher, sans baisse de performances significatives voir de meilleures performances.
Des exemples sont disponibles et utilisable en ligne dans Google Collab https://github.com/microsoft/LLMLingua/tree/main/examples
Après Terraform, c'est au tour de Vault, le produit de gestion de secrets de Hashicorps, d'être fork par la communauté.
Le fork est sous la responsabilité de la Linux Foundation et à l'appui financier d'IBM.
C'est une grosse claque pour Hashicorp qui doit peut-être commencer à amèrement regretter son virage closed sources.
Un projet soutenu par Firefox qui sauvegarde les sites que vous visitez puis les utilise dans un RAG local construit avec PrivateGPT.
Cela permet de chercher dans les sites qu'on a pu visiter plutôt que tout internet.
Une excellente analyse de la situation actuelle ou Google et Microsoft se battent d'un côté contre l'Open Source avec principalement Meta de l'autre côté du ring.
Google est enfaite en position d'avance technologique en GenAI depuis des années, c'est à eux qu'on doit l'architecture Transformers à la base de toute la GenAI mais aussi le premier LLM: BERT.
Ils sont juste assez mauvais en terme de communication et leurs succès ne sont pas reconnus du grand publique.
De leur côté, Amazon et Apple sont assez tranquille pour expérimenter petit à petit sans que cela fasse de vagues, notamment sur la cotation boursière.
Google a un monorepo depuis 16 ans avec tous le code source des projets.
1 milliard de fichiers et 35 millions de commit. C'est juste incroyable.
Un LLM basé sur Llama 2 mais avec seulement 1.1 milliards de paramètres.
Tout comme les modèles Gemini Nano, une taille aussi petite permet de faire tourner le modèle sur un smartphone par exemple.
Ils estiment qu'il ne faut que 500 Mo de RAM pour faire fonctionner TinyLlama.
Les performances sur le benchmark CommonSense sont de 51 contre 63 (Llama 7B) et 71 (Llama 70B). GPT-3.5 et GPT-4 obtiennent respectivement 85 et 96.
Le modèle SeamlessStreaming de chez Facebook est disponible en Open Source.
Il permet de faire de la traduction en temps réel d'une langue vers une autre (audio + texte).
Voir la vidéo de démo
Claude 2.1 possède une fenêtre de contexte énorme de 200K tokens.
Bien sur, plus il y a de tokens et plus il est difficile pour le modèle de les prendre tous en compte.
Ici, les chercheurs d'Anthropic ont réussi à passer de 27% à 98% de succès sur des tâches de récupération d'informations passées dans les 200K tokens de contexte.
Ça se résume à une seule phrase de prompt engineering placée à la fin: Here is the most relevant sentence in the context:
(Voir aussi cet article qui évalue les performances des instructions dans un prompt en fonction de leur position)
Un clone de minecraft fait uniquement en CSS et HTML.
Ce sont des checkbox qui gèrent les états.
Un LLM Open Source surpasserait les performances de GPT-4 en terme d'appel de fonctions.
Notamment sur les appels de fonctions imbriqués.
Ce qui est intéressant c'est qu'ils ont aussi benchmark GPT3.5 et Gorilla et toutes les données et jeux de test sont disponibles sur Hugging Face 👉 https://huggingface.co/spaces/Nexusflow/Nexus_Function_Calling_Leaderboard
Rivet est de loin le meilleur outil que j'ai pu voir pour faire du Prompt Engineering
Franchement j'en ai testé pleins et la rien à redire, on peut tout faire simplement:
- assembler des prompts
- parse les sorties textes
- envoyer ce qu'on a parse dans d'autres prompts
- écrire du code Javascript dans un node (c'est typé et en plus l'éditeur c'est vscode)
Le moteur d'exécution des nodes est super bien fait, par exemple il peut mettre en cache les appels à Open AI si une node fait une erreur plus loin alors on peut corriger et rejouer sans attendre.
L'éditeur de nodes est aussi super intuitif, j'ai pu créer un système complexe de prompts en 15 min sans la documentation
Une autre méthode pour améliorer un RAG.
Ici après une première récupération et injection de documents, on va utiliser chaque phrase du LLM pour récupérer de nouveaux documents potentiels à ingérer lors de la génération.
Cela permet d'aller récupérer et injecter d'autres concepts qui ressortent lors des phases de restitution du LLM.
Un modèle d'embeddings de chez Google qui est plus petit que celui de OpenAI donc beaucoup moins cher et utilisable même côté client uniquement (web, mobile)
ça permet de faire de la recherche par similarité mais aussi un classifier.