Daily Shaarli

All links of one day in a single page.

June 23, 2024

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 🙄

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.

PlanRAG: A Plan-then-Retrieval Augmented Generation for Generative Large Language Models as Decision Makers

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.

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.