Introduction
Dans le monde des modèles de langage, la gestion des fichiers peut rapidement devenir un casse-tête. Avec des formats comme safetensors sur Hugging Face, où une multitude de fichiers JSON sont dispersés, ou les modèles ollama, qui sont des OCI avec des couches JSON, des modèles Go, etc., GGUF se distingue par sa simplicité : un seul fichier. Mais que trouve-t-on réellement dans un fichier GGUF, et que manque-t-il pour qu'il soit totalement complet ?
Contenu d'un GGUF
Le format GGUF est utilisé par llama.cpp pour les modèles de langage. Il englobe tout dans un fichier unique, rendant la gestion des modèles plus ergonomique. Voici les principaux éléments contenus dans un GGUF :
Modèles de Chat
Les modèles conversationnels sont formés sur des séquences qui suivent un format spécifique, ressemblant à une conversation. Par exemple, le format de Gemma4 utilise : <|turn>user Salut !<turn|>, tandis que celui de LFM2 est : <s> <|im_start|>user Salut !<|im_end|>. Ces formats peuvent devenir plus complexes avec l'ajout de fonctionnalités comme les blocs de raisonnement, les descriptions d'outils, les appels d'outils et leurs réponses.
Ces formats sont gérés par un modèle de chat, un script dans le langage de templating jinja2. Le modèle de chat par défaut est stocké sous la clé tokenizer.chat_template dans les métadonnées GGUF. Un modèle peut avoir plusieurs modèles de chat, par exemple un avec support d'appel d'outils et un sans.
Performances des Implémentations Jinja2
Pour gérer ces modèles de chat, une implémentation du langage jinja2 est nécessaire. Hugging Face Transformers utilise la bibliothèque classique jinja2 en Python. D'autres, comme llama.cpp, utilisent leur propre implémentation jinja. NobodyWho utilise minijinja, une réimplémentation en Rust par le créateur original de jinja.
Il existe des différences significatives de performances entre ces implémentations. Minijinja, par exemple, est connu pour être plus rapide et plus efficace, ce qui est crucial pour les applications en temps réel.
Ce qui manque dans GGUF
Bien que GGUF simplifie beaucoup de choses, il y a des aspects qui pourraient encore être améliorés :
Gestion des Métadonnées
Actuellement, le format GGUF ne gère pas de manière optimale les métadonnées supplémentaires qui pourraient enrichir le contexte d'utilisation des modèles, comme les préférences de l'utilisateur ou les logs d'interaction.
Support Multimédia
Le format GGUF n'intègre pas directement le support pour les messages multimédia tels que les images, l'audio ou la vidéo. Avec l'évolution vers des modèles plus intégrés, cela pourrait être un ajout précieux.
Conclusion
Le format GGUF est une avancée significative dans la gestion des modèles de langage, simplifiant la vie des développeurs et des chercheurs. Cependant, pour être vraiment complet, il pourrait intégrer un meilleur support des métadonnées et des fonctionnalités multimédia.
Discutons de ton projet en 15 minutes.