- Un ensemble d’algorithmes de quantification qui résout à la racine le problème de surcharge mémoire des vecteurs de haute dimension, applicable à la fois à la compression du cache clé-valeur des LLM et à la recherche vectorielle
- Une architecture de compression en deux étapes : PolarQuant compresse d’abord les données avec une haute qualité, puis l’algorithme QJL élimine l’erreur résiduelle avec seulement 1 bit
- Sans entraînement ni fine-tuning, il est possible de quantifier le cache clé-valeur jusqu’à 3 bits sans perte de précision du modèle, avec jusqu’à 8x d’amélioration des performances sur GPU H100
- En recherche vectorielle aussi, la méthode atteint un taux de rappel optimal sans grands codebooks ni réglages spécifiques à chaque jeu de données, dépassant les techniques de pointe existantes
- Une contribution algorithmique fondamentale, dotée d’une efficacité démontrable proche des bornes théoriques inférieures, appelée à jouer un rôle clé pour des modèles comme Gemini et les grandes infrastructures de recherche sémantique
Contexte des vecteurs et de la quantification
- Les vecteurs sont le mécanisme fondamental par lequel les modèles d’IA comprennent et traitent l’information ; les vecteurs de haute dimension représentent des informations complexes comme les caractéristiques d’images, le sens des mots ou les propriétés d’un jeu de données
- Les vecteurs de haute dimension consomment énormément de mémoire, ce qui crée un goulot d’étranglement au niveau du cache clé-valeur (une fiche de référence numérique rapide qui stocke les informations fréquemment utilisées sous forme d’étiquettes simples pour un accès immédiat)
- La quantification vectorielle est une technique classique de compression de données qui réduit la taille des vecteurs de haute dimension, améliorant la vitesse de recherche vectorielle et atténuant les goulets d’étranglement du cache clé-valeur
- La quantification vectorielle traditionnelle souffre toutefois d’une surcharge mémoire intrinsèque : pour chaque petit bloc de données, il faut calculer et stocker des constantes de quantification en précision complète, ce qui ajoute 1 à 2 bits par valeur et annule partiellement l’intérêt de la quantification
Principe de fonctionnement de TurboQuant
- TurboQuant est une méthode de compression qui obtient une forte réduction de la taille des modèles sans perte de précision, et prend en charge à la fois la compression du cache clé-valeur et la recherche vectorielle
- Elle se compose de deux étapes clés :
Étape 1 : compression haute qualité (méthode PolarQuant)
- Les vecteurs de données sont soumis à une rotation aléatoire pour simplifier leur structure géométrique, puis un quantificateur standard de haute qualité est appliqué séparément à chaque partie du vecteur
- Cette étape utilise la majorité des bits pour capturer les concepts principaux et l’intensité du vecteur d’origine
Étape 2 : suppression de l’erreur cachée
- À la fine erreur restante après l’étape 1, on applique l’algorithme QJL avec seulement 1 bit de capacité de compression résiduelle
- QJL agit comme un vérificateur mathématique d’erreur et élimine le biais afin de produire des scores d’attention plus précis
QJL : une technique 1 bit à surcharge nulle
- Elle exploite la transformation de Johnson-Lindenstrauss pour réduire des données de haute dimension tout en préservant les distances et relations essentielles entre points
- Chaque valeur du vecteur résultant est ramenée à un unique bit de signe (+1 ou -1), ce qui ramène la surcharge mémoire à zéro
- Pour maintenir la précision, un estimateur spécial équilibre stratégiquement les requêtes en haute précision et les données simplifiées en basse précision
- Cela permet au modèle de calculer précisément les scores d’attention qui déterminent quelles parties de l’entrée sont importantes et lesquelles peuvent être ignorées
PolarQuant : un nouvel « angle » sur la compression
- Une approche qui résout le problème de surcharge mémoire d’une manière totalement différente
- Au lieu de coordonnées standard (X, Y, Z), le vecteur est converti en coordonnées polaires — un peu comme remplacer « 3 blocs vers l’est et 4 blocs vers le nord » par « 5 blocs à un angle de 37 degrés »
- Le résultat de la transformation se compose de deux types d’information : le rayon, qui représente l’intensité des données essentielles, et les angles, qui représentent la direction et le sens des données
- Comme les motifs angulaires sont connus et fortement concentrés, les données peuvent être projetées sur une grille « circulaire » fixe, aux frontières déjà connues, au lieu d’une grille « carrée » aux frontières sans cesse changeantes, ce qui supprime l’étape coûteuse de normalisation des données
- Dans un vecteur de dimension d, des paires de coordonnées sont regroupées puis projetées dans un système polaire ; les rayons sont ensuite rassemblés par paires et la transformation polaire récursive est répétée jusqu’à être distillée en un rayon unique et un ensemble d’angles descriptifs
Expériences et résultats
Performances sur les benchmarks à long contexte
- Évaluation sur des benchmarks de long contexte standard comme LongBench, Needle In A Haystack, ZeroSCROLLS, RULER et L-Eval, avec des LLM open source (Gemma, Mistral)
- TurboQuant obtient des scores optimaux à la fois en distorsion du produit scalaire (dot product distortion) et en recall, tout en minimisant simultanément l’empreinte mémoire du cache clé-valeur
- Sur le modèle Llama-3.1-8B-Instruct, la méthode montre des performances robustes face à la baseline KIVI sur diverses tâches comme les questions-réponses, la génération de code et le résumé
Tâche Needle-in-Haystack
- Dans ce test qui consiste à retrouver une information spécifique au sein d’un grand volume de texte, TurboQuant obtient des résultats downstream parfaits sur l’ensemble des benchmarks
- La taille mémoire clé-valeur est réduite d’au moins 6x
- PolarQuant aussi se situe sur cette tâche à un niveau presque sans perte
Performances d’exécution
- Le cache clé-valeur peut être quantifié à 3 bits sans entraînement ni fine-tuning, sans compromis sur la précision du modèle
- Le runtime est plus rapide que celui du LLM d’origine ; l’implémentation est extrêmement efficace et la surcharge à l’exécution est négligeable
- TurboQuant 4 bits atteint jusqu’à 8x d’amélioration des performances sur le calcul des logits d’attention par rapport à des clés non quantifiées en 32 bits sur GPU H100, mesuré face à une baseline optimisée en JAX
Performances en recherche vectorielle
- Évaluation comparative avec des techniques de pointe comme PQ et RabbiQ pour la recherche de vecteurs de haute dimension
- Utilisation du taux de rappel 1@k, qui mesure à quelle fréquence l’algorithme capture effectivement le meilleur produit scalaire réel parmi les k meilleures approximations
- Face à des baselines qui s’appuient sur de grands codebooks coûteux et des réglages spécifiques à chaque dataset, TurboQuant enregistre des taux de rappel systématiquement supérieurs
- Sur le dataset GloVe (d=200), la méthode atteint les meilleurs taux de rappel 1@k face à diverses baselines de quantification récentes
- Avec une approche data-oblivious, elle fournit un taux de distorsion quasi optimal, préservant, avec l’efficacité d’un système à 3 bits, la précision de modèles bien plus lourds
Perspectives
- TurboQuant, QJL et PolarQuant ne sont pas seulement des solutions d’ingénierie pratiques : ce sont aussi des contributions algorithmiques fondamentales soutenues par de solides preuves théoriques
- Leur efficacité est démontrable, avec un fonctionnement proche des bornes théoriques inférieures, ce qui les rend robustes et fiables pour des systèmes critiques de grande échelle
- Au-delà de la résolution du goulot d’étranglement du cache clé-valeur pour des modèles comme Gemini, l’impact d’une quantification vectorielle en ligne efficace peut s’étendre bien plus largement
- À mesure que la recherche moderne évolue d’une logique centrée sur les mots-clés vers une compréhension de l’intention et du sens, la recherche vectorielle devient indispensable pour retrouver, dans des bases de données de plusieurs milliards de vecteurs, les éléments les plus proches sémantiquement
- TurboQuant permet de construire et d’interroger de grands index vectoriels avec une mémoire minimale, un temps de prétraitement quasi nul et une précision de pointe, rendant la recherche sémantique à l’échelle de Google plus rapide et plus efficace
4 commentaires
"La rotation, c'est la puissance de l'infini. Croyez-y."
Je vous salue.
Je me suis connecté à cause de ce commentaire.
Commentaires sur Hacker News
Les recherches sur la compression du cache KV constituent vraiment une avancée intéressante
Cela dit, il est regrettable que les travaux associés omettent de citer le mécanisme mathématique central
La technique consistant à appliquer une rotation géométrique pour traiter la géométrie en haute dimension, puis à effectuer une quantification extrême, a été proposée pour la première fois dans l’article NeurIPS 2021 de notre équipe, « DRIVE »
Grâce à cette approche fondée sur la rotation et à un mécanisme de correction du biais, nous avons obtenu une estimation optimale de la moyenne de variance
J’ai également présenté ce contenu lors d’un séminaire invité chez Google, et compte tenu des similarités théoriques entre TurboQuant et PolarQuant, j’espère qu’une future version intégrera une citation de ces travaux antérieurs
Autrement dit, s’agit-il d’une méthode qui compresse davantage en stockant une matrice diagonale et une nouvelle base ?
J’aimerais qu’on m’explique la relation entre cette recherche et MHLA
Ce genre d’idée est redécouvert tous les quelques années ; par exemple, il existait déjà une approche similaire dans un article de 2017
Mais il est aussi possible que les chercheurs aient eu indépendamment une idée similaire alors que leurs travaux étaient déjà bien avancés
Les bonnes idées finissent naturellement par émerger chez ceux qui comprennent profondément le problème
Je ne comprends pas l’explication selon laquelle « TurboQuant fait subir aux données une rotation aléatoire pour simplifier leur géométrie »
Rien ne garantit qu’une rotation produise toujours une forme plus simple, non ?
Et la partie disant qu’« une transformation de Johnson–Lindenstrauss réduit les données de grande dimension et représente chaque vecteur par des bits de signe » ne me convainc pas non plus : j’ai du mal à croire qu’on puisse préserver l’information relationnelle avec une seule valeur booléenne
On observe des activations aberrantes sur certaines dimensions, et les propriétés de l’optimiseur Adam ont tendance à renforcer ce phénomène
On peut se référer à SmoothQuant et à Privileged Basis à ce sujet
Cela réduit l’apprentissage de règles inutiles et stabilise l’optimisation
Autrement dit, cela évite que le modèle apprenne des règles anecdotiques du type « si le chiffre d’une certaine position dans une certaine dimension vaut 5, alors c’est un chat »
En multipliant par une matrice de rotation, les données se répartissent plus uniformément, ce qui permet une quantification plus efficace
On optimise ensuite les frontières et les valeurs de reconstruction avec l’algorithme de Lloyd–Max, puis le biais résiduel est corrigé avec 1 bit
Cela permet de conserver une haute précision avec peu de bits
Par exemple, si l’on convertit des valeurs en virgule flottante dans une autre unité (bel → décibel), on obtient des valeurs plus homogènes, donc plus faciles à compresser
C’est-à-dire un processus qui rapproche du centre les données trop éloignées
Et comme chaque dimension est codée séparément, le vecteur entier n’est pas réduit à un booléen unique
Ce billet de blog est de mauvaise qualité
Les axes d’un graphique sont mal étiquetés, et une visualisation vidéo ne transmet absolument pas le concept de Polar Quantization
Un autre graphique commence son axe à 48, ce qui exagère les écarts réels
Globalement, la fiabilité des visuels et la qualité de la communication laissent à désirer
Quelqu’un est déjà en train de l’implémenter dans llama.cpp
Voir ce commit associé
On espère que le théorème de Johnson–Lindenstrauss reste valable, ce qui justifierait théoriquement la quantification indépendante de chaque coordonnée
Je manque de connaissances dans le domaine, mais la structure paraît claire
Il y a de fortes chances que cela soit fusionné dans la branche principale sous 4 à 6 semaines
Il existe une animation qui explique TurboQuant de manière intuitive
Voici un résumé que j’ai rédigé à un niveau licence
L’essentiel est de quantifier le cache KV en minimisant la perte d’information
Comme la plupart des vecteurs se concentrent près de l’équateur d’une sphère de grande dimension, une rotation permet d’uniformiser la distribution et d’améliorer la préservation de l’entropie
PolarQuant tentait d’y parvenir via une transformation en coordonnées polaires, mais TurboQuant simplifie cela et ajoute la correction de biais QJL
Au final, PolarQuant + QJL + des corrections pratiques permettent d’obtenir une compression très efficace
Le billet de blog contient beaucoup d’erreurs et prête à confusion
Le codebook de coordonnées hyperpolaires de PolarQuant subsiste encore en partie dans TurboQuant
Ce texte est l’une des pires explications d’un composant d’IA que j’aie vues
Il manque presque tout le contexte technique
Le théorème de Johnson–Lindenstrauss est mentionné, mais le lien concret n’est pas expliqué
Par exemple, expliquer « 3 blocs vers l’est, 4 blocs vers le nord » par « avancer de 5 blocs à un angle de 37 degrés » donne l’impression d’une analogie de niveau collège
Une implémentation indépendante en PyTorch a déjà été publiée
turboquant-pytorch
Le blog a été publié récemment, mais l’article avait été soumis sur arXiv il y a presque un an
Je me demande si cela a déjà été appliqué à des modèles comme Gemini, et si, dans ce cas, cela pourrait aussi réduire le coût de la RAM pour un usage personnel
Il est frappant de voir à quelle vitesse les récentes recherches sur la compression débouchent sur des applications réelles
De la même manière que, dans les formats d’image, AVIF et JPEG XL ont découlé de recherches sur les codecs vidéo, il est très probable que les techniques de quantification pour l’IA soient bientôt appliquées à des environnements d’inférence réels
Certains concepts, comme l’espace colorimétrique XYB, sont communs, et on peut s’attendre à ce qu’un travail d’ingénierie sur mesure similaire soit aussi nécessaire pour les LLM