GGML es una biblioteca de tensores de propósito general escrita en C, diseñada para aplicaciones de aprendizaje automático con un enfoque en la ejecución eficiente en hardware de consumo. Fue creada por Georgi Gerganov y se desarrolla conjuntamente con llama.cpp, una biblioteca de software de código abierto que realiza inferencia en varios modelos de lenguaje grandes, como Llama de Meta. GGML proporciona las operaciones de tensores subyacentes y los backends de hardware que permiten a llama.cpp ejecutar modelos en CPU, GPU y otros aceleradores, haciendo accesible la inferencia de IA local a una amplia audiencia.
La biblioteca enfatiza la gestión estricta de memoria y el multihilo, lo que le permite alcanzar un alto rendimiento incluso en sistemas sin tarjetas gráficas dedicadas. GGML se ha convertido en un componente fundamental en el ecosistema de IA local, considerándose llama.cpp el estándar de facto para herramientas de inferencia local, incluyendo aplicaciones populares como Ollama y LM Studio.
Antecedentes
Georgi Gerganov comenzó a trabajar en la biblioteca GGML a finales de septiembre de 2022, inspirándose en el trabajo de Fabrice Bellard sobre LibNC. Antes de GGML, Gerganov desarrolló whisper.cpp, una biblioteca similar que implementaba el modelo de voz a texto Whisper de OpenAI. Este proyecto anterior sentó las bases para los principios de diseño y el enfoque técnico que luego se aplicaron a GGML y llama.cpp.
Desarrollo
llama.cpp comenzó su desarrollo en marzo de 2023 como una implementación pura en C/C++ del código de inferencia de Llama sin dependencias externas. El proyecto tenía como objetivo mejorar el rendimiento en computadoras sin GPU u otro hardware dedicado, y rápidamente ganó tracción entre usuarios con capacidades de hardware limitadas. Inicialmente diseñado para CPU, llama.cpp añadió posteriormente soporte para GPU y NPU. A mayo de 2026, el proyecto cuenta con más de 109,000 estrellas en GitHub.
Los hitos clave incluyen la introducción de FlashAttention el 30 de abril de 2024, que mejoró significativamente la eficiencia del cálculo de atención. El 10 de abril de 2025, se introdujo libmtmd, revitalizando el soporte para modelos multimodales. El 17 de diciembre de 2025, se habilitó la aceleración completa en dispositivos Android y ChromeOS mediante un nuevo enlace de GUI, permitiendo el desarrollo de aplicaciones nativas más allá del enfoque anterior de compilación cruzada y CLI.
Arquitectura
llama.cpp admite múltiples objetivos de hardware, incluyendo x86, ARM, Metal, BLAS, BLIS, zDNN, ZenDNN, SYCL, MUSA, CUDA, HIP, CANN, OpenCL, RPC y Vulkan (versión 1.2 o superior). Estos backends forman la biblioteca de tensores GGML, que es utilizada por el frontend de llama.cpp específico del modelo. La biblioteca aprovecha las extensiones de CPU para optimización: AVX, AVX2, AVX-512, AVX-VNNI y AMX para x86-64; Neon, i8MM, SVE, SVE2, SME y SME2 para AArch64; y VXE2 para S390x. Apple silicon es un objetivo importante para el proyecto.
GGML admite características orientadas a la inferencia en el borde, incluyendo cuantización de modelos por adelantado, cuantización de caché KV en tiempo real, decodificación especulativa y descarga parcial de capas de modelos a RAM del sistema, permitiendo que los dispositivos carguen modelos que exceden la capacidad de VRAM de la GPU. Para la comunicación con el frontend, llama.cpp ofrece endpoints compatibles con OpenAI como v1/chat/completions y formato de salida basado en gramática como JSON.
Formato de Archivo GGUF
El formato GGUF (GGML Universal File) es un formato binario que almacena tanto tensores como metadatos en un solo archivo, diseñado para guardar y cargar rápidamente datos de modelos. Introducido en agosto de 2023 por el proyecto llama.cpp, GGUF fue creado para mantener la compatibilidad hacia atrás a medida que se añadía soporte para arquitecturas de modelos adicionales. Reemplazó a formatos anteriores como GGML y se produce típicamente convirtiendo modelos de otras bibliotecas de aprendizaje automático como PyTorch.
Diseño
GGUF se centra en la cuantización, reduciendo la precisión de los pesos del modelo para disminuir el uso de memoria y aumentar la velocidad, a costa de cierta precisión. Admite tipos enteros cuantizados de 2 a 8 bits, formatos de punto flotante comunes como float32, float16 y bfloat16, y cuantización de 1.58 bits. El formato incluye información esencial para ejecutar modelos de lenguaje tipo GPT, como vocabulario del tokenizador, longitud de contexto, información de tensores y otros atributos.
Modelos
llama.cpp admite una amplia gama de modelos de lenguaje grandes, incluyendo Llama, Mistral, Gemma, DeepSeek, gpt-oss, Phi y Qwen. Esta amplia compatibilidad ha hecho de GGML y llama.cpp herramientas esenciales para desarrolladores e investigadores que trabajan con modelos de lenguaje grandes en hardware local.