YouTube vient de publier en open source un projet appele STATIC qui resout un probleme que la plupart des gens ignorent: les LLMs peuvent dire n’importe quoi, mais parfois vous avez besoin qu’ils choisissent uniquement parmi une liste specifique.
Le probleme
Quand un LLM genere du texte, il choisit un token (mot/chiffre) a la fois parmi un vocabulaire de ~32 000 options. C’est ideal pour la conversation, mais terrible quand vous avez besoin qu’il produise quelque chose de precis: un identifiant de produit valide, un code medical, ou une recommandation video parmi un catalogue de millions d’entrees.
Sans contraintes, le modele pourrait produire un identifiant qui n’existe pas. Vous vous retrouvez alors a relancer des requetes ou a nettoyer les resultats apres coup.
La solution: le decodage contraint
L’idee est simple: a chaque etape de generation, avant que le modele choisisse son prochain token, on bloque toutes les options invalides. Le modele ne peut choisir que parmi les tokens qui menent a un resultat valide.
Imaginez la saisie predictive sur votre telephone, mais au lieu de suggerer des mots, elle masque toutes les touches sauf celles qui forment un vrai mot.
Ce que STATIC fait specifiquement
Les approches precedentes du decodage contraint utilisaient des recherches arborescentes sur CPU, ce qui obligeait le GPU (qui effectue le vrai travail d’IA) a faire une pause a chaque etape. Lent.
STATIC pre-compile toutes les sequences valides dans une structure de donnees adaptee au GPU (une matrice creuse) pour que le filtrage se produise instantanement sur le GPU lui-meme, sans attente, sans allers-retours. Le resultat est environ 150 fois plus rapide que les methodes traditionnelles avec des millions de sequences valides.
Quand l’utiliser?
Vous utiliseriez le decodage contraint quand:
- Un moteur de recommandation doit produire uniquement de vrais identifiants de produits/contenus
- Un systeme medical doit generer uniquement des codes de diagnostic ou de procedure valides
- Un systeme de recherche fait correspondre des requetes a des identifiants de documents dans un index
- Tout scenario ou la sortie du LLM doit correspondre exactement a une entree dans un ensemble connu
La limite
Cela ne fonctionne que quand vous executez le modele vous-meme (auto-heberge via PyTorch, JAX, vLLM, etc.). Si vous utilisez des APIs hebergees comme OpenAI, Claude ou Gemini, vous n’avez pas acces a la boucle de generation. Ces APIs proposent des alternatives plus legeres comme les sorties structurees et l’application de schemas JSON, qui fonctionnent bien pour de petits ensembles de contraintes mais ne passent pas a l’echelle de millions d’options.
Pourquoi c’est important
A mesure que les entreprises utilisent les LLMs non seulement pour le chat mais pour des taches structurees comme la recuperation d’information, la classification et la generation de code, le decodage contraint devient un besoin d’infrastructure fondamental. STATIC montre qu’avec la bonne structure de donnees, on peut imposer des contraintes strictes a la vitesse de production sans ralentir l’inference.