GGML est une bibliothèque de tenseurs à usage général écrite en C, conçue pour des applications d'apprentissage automatique avec un accent sur l'exécution efficace sur du matériel grand public. Elle a été créée par Georgi Gerganov et est co-développée avec llama.cpp, une bibliothèque logicielle open source qui effectue l'inférence sur divers grands modèles de langage tels que Llama de Meta. GGML fournit les opérations de tenseurs sous-jacentes et les backends matériels qui permettent à llama.cpp d'exécuter des modèles sur des CPU, des GPU et d'autres accélérateurs, rendant l'inférence IA locale accessible à un large public.
La bibliothèque met l'accent sur une gestion stricte de la mémoire et le multi-threading, ce qui lui permet d'atteindre des performances élevées même sur des systèmes sans carte graphique dédiée. GGML est devenu un composant fondamental de l'écosystème IA local, llama.cpp étant considéré comme la norme de facto pour les outils d'inférence locale, y compris des applications populaires comme Ollama et LM Studio.
Contexte
Georgi Gerganov a commencé à travailler sur la bibliothèque GGML fin septembre 2022, en s'inspirant des travaux de Fabrice Bellard sur LibNC. Avant GGML, Gerganov a développé whisper.cpp, une bibliothèque similaire qui implémentait le modèle de reconnaissance vocale Whisper d'OpenAI. Ce projet antérieur a posé les bases des principes de conception et de l'approche technique appliqués plus tard à GGML et llama.cpp.
Développement
llama.cpp a commencé son développement en mars 2023 comme une implémentation pure en C/C++ du code d'inférence de Llama sans dépendances externes. Le projet visait à améliorer les performances sur les ordinateurs sans GPU ou autre matériel dédié, et il a rapidement gagné en popularité auprès des utilisateurs disposant de capacités matérielles limitées. Initialement conçu pour les CPU, llama.cpp a ensuite ajouté le support des GPU et des NPU. En mai 2026, le projet compte plus de 109 000 étoiles sur GitHub.
Les étapes clés incluent l'introduction de FlashAttention le 30 avril 2024, qui a considérablement amélioré l'efficacité du calcul de l'attention. Le 10 avril 2025, libmtmd a été introduit, ravivant le support des modèles multimodaux. Le 17 décembre 2025, l'accélération complète sur les appareils Android et ChromeOS a été activée via une nouvelle liaison GUI, permettant le développement d'applications natives au-delà de l'approche précédente de compilation croisée et de CLI.
Architecture
llama.cpp prend en charge plusieurs cibles matérielles, notamment x86, ARM, Metal, BLAS, BLIS, zDNN, ZenDNN, SYCL, MUSA, CUDA, HIP, CANN, OpenCL, RPC et Vulkan (version 1.2 ou supérieure). Ces backends forment la bibliothèque de tenseurs GGML, utilisée par le frontend llama.cpp spécifique au modèle. La bibliothèque exploite les extensions CPU pour l'optimisation : AVX, AVX2, AVX-512, AVX-VNNI et AMX pour x86-64 ; Neon, i8MM, SVE, SVE2, SME et SME2 pour AArch64 ; et VXE2 pour S390x. Le silicium Apple est une cible importante pour le projet.
GGML prend en charge des fonctionnalités destinées à l'inférence en périphérie, notamment la quantification de modèles à l'avance, la quantification du cache KV à la volée, le décodage spéculatif et le déchargement partiel des couches de modèles vers la RAM système, permettant aux appareils de charger des modèles qui dépassent la capacité VRAM du GPU. Pour la communication frontend, llama.cpp propose des points de terminaison compatibles OpenAI comme v1/chat/completions et un formatage de sortie basé sur la grammaire en JSON.
Format de fichier GGUF
Le format GGUF (GGML Universal File) est un format binaire qui stocke à la fois les tenseurs et les métadonnées dans un seul fichier, conçu pour un enregistrement et un chargement rapides des données de modèle. Introduit en août 2023 par le projet llama.cpp, GGUF a été créé pour maintenir la compatibilité ascendante à mesure que le support de modèles d'architectures supplémentaires était ajouté. Il a remplacé des formats antérieurs tels que GGML et est généralement produit en convertissant des modèles provenant d'autres bibliothèques d'apprentissage automatique comme PyTorch.
Conception
GGUF se concentre sur la quantification, réduisant la précision des poids du modèle pour diminuer l'utilisation de la mémoire et augmenter la vitesse, au prix d'une certaine précision. Il prend en charge les types entiers quantifiés de 2 à 8 bits, les formats à virgule flottante courants tels que float32, float16 et bfloat16, et la quantification à 1,58 bit. Le format inclut des informations essentielles pour exécuter des modèles de langage de type GPT, telles que le vocabulaire du tokenizer, la longueur du contexte, les informations sur les tenseurs et d'autres attributs.
Modèles
llama.cpp prend en charge une large gamme de grands modèles de langage, notamment Llama, Mistral, Gemma, DeepSeek, gpt-oss, Phi et Qwen. Cette large compatibilité a fait de GGML et llama.cpp des outils essentiels pour les développeurs et les chercheurs travaillant avec des grands modèles de langage sur du matériel local.