Conclusiones clave
- Gratuito y de código abierto con licencia MIT, mantenido por ggml-org en GitHub
- Escrito en C/C++, construido sobre la biblioteca de tensores ggml
- Definió el formato de archivo de modelo GGUF (.gguf) usado en todo el ecosistema de IA local
- Backends de hardware: CUDA, Metal, Vulkan, ROCm/HIP, SYCL y CPU (AVX/AVX2/AVX512)
- Soporte de cuantización desde 8 bits hasta aproximadamente 1,5 bits por peso
- Incluye llama-server, un servidor HTTP compatible con OpenAI integrado con interfaz web
- Ollama usa llama.cpp como motor de inferencia en la mayoría de las plataformas, añadiendo un registro de modelos y una CLI
- Sin instalador gráfico — se usa por línea de comandos, la interfaz web integrada o bindings de lenguaje
📍 En una frase
llama.cpp es un motor de inferencia en C/C++ gratuito y con licencia MIT creado por Georgi Gerganov que ejecuta LLMs localmente en CPU o GPU, definió el formato de modelo GGUF, y sirve como backend de inferencia sobre el que se apoyan varias herramientas de IA local, incluida Ollama en la mayoría de las plataformas.
💬 En términos simples
En lugar de una app de un clic, llama.cpp es el propio código del motor que carga un archivo de modelo y genera texto — Ollama y otras muchas apps de IA local ejecutan llama.cpp por debajo y añaden encima una interfaz más amigable.
📌Nota: Este artículo se basa en el repositorio oficial de GitHub de llama.cpp y su documentación pública, no en pruebas de rendimiento independientes. No se incluyen cifras concretas de tokens por segundo porque no se midieron de forma independiente para este artículo y varían mucho según el hardware, el modelo y el formato de cuantización.
¿Qué es llama.cpp?
llama.cpp es un motor de inferencia gratuito y con licencia MIT, escrito en C/C++, que ejecuta modelos de lenguaje grandes localmente con dependencias externas mínimas. Fue creado por Georgi Gerganov en 2023 como un port en C/C++ desde cero del código de inferencia LLaMA de Meta, diseñado para funcionar en hardware de consumo habitual — incluidas máquinas solo con CPU — en lugar de requerir una GPU de centro de datos. El proyecto lo mantiene hoy la organización ggml-org en GitHub, con contribuciones de una gran comunidad de código abierto, y ha crecido hasta admitir modelos de visión y lenguaje además de LLMs de solo texto.
- Creado por Georgi Gerganov, mantenido hoy por la organización ggml-org
- Escrito en C/C++, construido sobre ggml, una biblioteca de tensores mantenida por el mismo equipo
- Con licencia MIT: el código fuente está disponible públicamente para su uso, modificación y redistribución bajo los términos de la licencia
- Funciona tanto en hardware solo con CPU como en GPU, a diferencia de motores que exigen sí o sí una GPU compatible con CUDA
- Definió el formato GGUF, un formato de archivo único que almacena juntos los pesos del modelo, los datos de cuantización y los metadatos
- Uno de los proyectos de inferencia de LLM de código abierto más referenciados, con muy por encima de 100.000 estrellas en GitHub
¿Qué aceleración por hardware admite llama.cpp?
llama.cpp admite una amplia variedad de backends de aceleración por hardware, una de las razones por las que funciona desde un portátil solo con CPU hasta una estación de trabajo con múltiples GPU.
CUDA
- Detalles:
- Para GPU de NVIDIA. Descarga capas del modelo a la memoria de la GPU para una inferencia más rápida que solo con CPU, con soporte para configuraciones multi-GPU.
Metal
- Detalles:
- Para Mac con Apple Silicon (M1 y posteriores). Usa la API Metal de Apple para ejecutar la inferencia en los núcleos de GPU de los chips serie M.
Vulkan
- Detalles:
- Una API de GPU multifabricante compatible con Windows y Linux, utilizable en GPU de varios fabricantes sin un SDK específico de proveedor.
ROCm / HIP
- Detalles:
- Para GPU de AMD, a través de la pila de cómputo ROCm de AMD, como alternativa a una aceleración limitada a CUDA.
SYCL
- Detalles:
- Para GPU de Intel, incluidos los gráficos integrados de algunas CPU Intel, mediante la implementación oneAPI SYCL de Intel.
CPU (AVX / AVX2 / AVX512)
- Detalles:
- Ejecución optimizada solo en CPU usando instrucciones vectorizadas en procesadores x86 modernos — la vía de respaldo que permite ejecutar llama.cpp sin ninguna GPU.
El proyecto también documenta backends adicionales y experimentales (incluidos BLAS, CANN y WebGPU) en su documentación de compilación en GitHub; esta sección se centra en los backends entre los que realmente elige la mayoría de los usuarios de LLM locales.
¿Qué es GGUF y qué formato de cuantización deberías usar?
GGUF es el formato de archivo de modelo que llama.cpp definió para almacenar los pesos de un modelo cuantizado junto con los metadatos necesarios para ejecutarlo (tokenizador, arquitectura, longitud de contexto), sustituyendo al anterior formato GGML del proyecto. La cuantización reduce el uso de memoria de un modelo almacenando sus pesos con menor precisión numérica que el formato de entrenamiento original, a cambio de algo de calidad de salida por menor uso de VRAM/RAM y una inferencia más rápida.
Q8_0
- Detalles:
- Cuantización de 8 bits, el más cercano al modelo original sin cuantizar entre los formatos comunes de llama.cpp, con el mayor tamaño de archivo del grupo.
Q5_K_M
- Detalles:
- Un formato "K-quant" de 5 bits que asigna la precisión de forma desigual entre las capas del modelo, priorizando la calidad sobre el menor tamaño de archivo posible.
Q4_K_M
- Detalles:
- Un formato K-quant de 4 bits usado habitualmente como punto de equilibrio entre tamaño de archivo y calidad de salida — una recomendación por defecto frecuente cuando la VRAM es limitada.
Menos de 4 bits (Q3, Q2 y formatos ~1,5 bits)
- Detalles:
- Formatos para hacer caber modelos más grandes en memoria muy limitada. La pérdida de calidad se nota más a medida que baja el ancho de bits, por lo que suelen ser un último recurso más que una opción por defecto.
El formato adecuado depende de tu hardware y del modelo concreto — este artículo no incluye porcentajes de pérdida de calidad medidos de forma independiente para formatos específicos, ya que varían según la arquitectura del modelo y la tarea. Descargar un modelo en más de un formato de cuantización y comparar las salidas con tus propios prompts es la forma más fiable de juzgar ese compromiso para tu caso de uso.
¿Qué ofrece llama-server?
llama-server es el binario de servidor HTTP que se incluye con llama.cpp. Un único binario expone la API nativa propia de llama.cpp, una API compatible con OpenAI, una capa de compatibilidad con la API de Ollama, y una interfaz de chat integrada basada en navegador, todo respaldado por el mismo modelo cargado y la misma caché.
- Puntos de acceso compatibles con OpenAI bajo /v1, de forma que herramientas ya creadas para la API de OpenAI a menudo solo necesitan cambiar la URL base para apuntar a una instancia local de llama-server
- Una interfaz web integrada servida directamente por el binario, utilizable sin instalar un frontend aparte
- Una capa de compatibilidad con la API de Ollama, que permite que algunas herramientas cliente orientadas a Ollama se conecten en su lugar a llama-server
- Puntos de introspección como /props y /slots para inspeccionar el estado del servidor y de las solicitudes
- Soporte para varios "slots" de solicitudes simultáneas sobre un mismo modelo cargado, en lugar de una solicitud a la vez
¿Cómo se compila y ejecuta llama.cpp?
llama.cpp normalmente se compila desde el código fuente con CMake, aunque el proyecto también publica binarios precompilados para varias plataformas en su página de releases de GitHub si prefieres no compilarlo tú mismo.
- 1Instala una cadena de herramientas de C++ y CMake para tu sistema operativo si aún no los tienes.
- 2Clona el repositorio:
git clone https://github.com/ggml-org/llama.cpp. - 3Configura la compilación para tu backend de hardware — por ejemplo, habilitando soporte para CUDA, Metal o Vulkan como opción de CMake, o dejándolo solo en CPU.
- 4Compila el proyecto con CMake:
cmake -B buildseguido decmake --build build --config Release. - 5Descarga un modelo en formato GGUF, por ejemplo desde Hugging Face, eligiendo un formato de cuantización que se ajuste a tu VRAM o RAM disponible.
- 6Ejecuta el modelo desde la línea de comandos con el binario
llama-clipara chatear directamente en la terminal, o iniciallama-serverpara exponer una API HTTP compatible con OpenAI y una interfaz web. - 7Si usas llama-server, conéctate desde un navegador a su dirección local, o apunta cualquier cliente compatible con la API de OpenAI a su endpoint
/v1.
¿Tengo que compilar llama.cpp desde el código fuente?
No — el proyecto también publica binarios precompilados en su página de releases de GitHub para varias plataformas, aunque compilar desde el código fuente te permite habilitar exactamente el backend de hardware (CUDA, Metal, Vulkan y similares) para tu máquina.
¿Dónde consigo modelos GGUF para ejecutar?
Muchos modelos en formato GGUF se publican en Hugging Face y otros sitios de modelos, normalmente en varios formatos de cuantización por modelo, para que puedas elegir uno que se ajuste a tu memoria disponible.
¿Cómo se relaciona llama.cpp con Ollama?
Ollama es una de las formas más usadas de ejecutar LLMs locales sin tocar un sistema de compilación, y numerosos artículos técnicos de la comunidad y de terceros afirman que usa llama.cpp como motor de inferencia subyacente en la mayoría de las plataformas. Ollama en sí no documenta esta dependencia con detalle, así que conviene tratarlo como la arquitectura comúnmente descrita más que como una especificación oficial, aunque es coherente con el propio código abierto de Ollama.
- llama.cpp es el motor de inferencia de bajo nivel; Ollama es una capa de empaquetado que añade un registro de modelos, descargas en un solo comando, una CLI más sencilla y su propio sistema de configuración Modelfile
- Elegir llama.cpp directamente da control sobre las opciones exactas de compilación, el formato de cuantización y la configuración del servidor que la interfaz simplificada de Ollama no expone
- Elegir Ollama cambia ese control por un camino más rápido hacia un modelo en funcionamiento, a costa de algo de flexibilidad sobre cómo se configura el motor subyacente
- Ambos pueden ofrecer una API compatible con OpenAI — llama.cpp mediante llama-server, Ollama mediante su propia capa de API
¿A quién le conviene usar llama.cpp directamente?
llama.cpp encaja con quienes quieren control directo sobre cómo se ejecuta un modelo, en lugar del camino más rápido hacia una ventana de chat funcionando.
llama.cpp vs. Ollama vs. LM Studio vs. vLLM
Estas cuatro herramientas se sitúan en puntos distintos del espectro entre control y comodidad, y dos de ellas (Ollama y, en Apple Silicon, parte del ecosistema en torno a LM Studio) están a su vez construidas sobre motores de inferencia en lugar de ser alternativas creadas desde cero.
llama.cpp
- Interfaz y configuración:
- CLI, interfaz web integrada y API compatible con OpenAI a través de llama-server. Compilación desde el código fuente con CMake o uso de un binario de release precompilado; tú eliges el formato de cuantización.
- Ideal para:
- Máximo control, despliegue embebido/edge y pipelines a medida construidos directamente sobre el motor.
Ollama
- Interfaz y configuración:
- CLI y API REST, descrita habitualmente como funcionando sobre llama.cpp como backend en la mayoría de las plataformas. Un comando lo instala; un comando descarga y ejecuta un modelo.
- Ideal para:
- El camino más rápido a un modelo local en funcionamiento sin paso de compilación, para quien no necesita configuración a nivel de motor.
LM Studio
- Interfaz y configuración:
- App de escritorio gráfica para Mac, Windows y Linux. Descargar, instalar y luego explorar y descargar un modelo desde dentro de la app.
- Ideal para:
- Usuarios no técnicos que quieren una app de chat de un clic en lugar de una línea de comandos.
vLLM
- Interfaz y configuración:
- Servidor en Python con API compatible con OpenAI, instalado con pip en un entorno Python/CUDA. Usa su propio motor de servicio PagedAttention en lugar de GGUF o llama.cpp.
- Ideal para:
- Servicio en GPU de alto rendimiento y multiusuario en producción, no chat local de un solo usuario.
Este artículo no ha comparado de forma independiente la velocidad ni la calidad de salida de estas cuatro herramientas mediante benchmarks, y no afirma que una sea técnicamente superior — la comparación anterior solo cubre hechos documentados de arquitectura, configuración y modelo de acceso. Para cifras de rendimiento por hardware, consulta la comparativa dedicada de llama.cpp vs. Ollama vs. vLLM y la guía de servidores de inferencia empresariales, que trata vLLM con más profundidad.
¿Qué no cubre este artículo?
Este es un artículo explicativo elaborado a partir de la documentación pública y el repositorio de llama.cpp, no un informe de benchmarks prácticos.
- No hay cifras de tokens por segundo ni de latencia medidas de forma independiente — el rendimiento depende en gran medida de tu hardware concreto, tu modelo, el formato de cuantización y las opciones de compilación
- No hay porcentajes de pérdida de calidad verificados de forma independiente para formatos de cuantización específicos — varían según la arquitectura del modelo y la tarea
- No hay una auditoría de seguridad línea por línea del código de llama.cpp — es de código abierto y con licencia MIT, así que el propio código está disponible para revisión
- No se cubren todos los backends u opciones de compilación que admite llama.cpp — este artículo se centra en los backends y formatos entre los que elige la mayoría de los usuarios de LLM locales
- No se cubren acuerdos de soporte comercial, ya que llama.cpp es un proyecto de código abierto comunitario, no un producto de un proveedor con contrato de soporte
Errores comunes al probar llama.cpp
La mayor parte de la fricción con llama.cpp viene de tratarlo como una app para el consumidor en lugar de un motor que hay que construir uno mismo.
Preguntas frecuentes
¿Qué es llama.cpp?
llama.cpp es un motor de inferencia en C/C++ gratuito y con licencia MIT creado por Georgi Gerganov, que ejecuta modelos de lenguaje grandes localmente en CPU o GPU. Lo mantiene la organización ggml-org en GitHub.
¿Es gratis llama.cpp?
Sí. llama.cpp es software gratuito y de código abierto publicado bajo la licencia MIT, sin suscripción ni cuenta necesarias.
¿Qué es GGUF?
GGUF es el formato de archivo de modelo que llama.cpp definió para almacenar los pesos cuantizados de un modelo junto con los metadatos necesarios para ejecutarlo, como el tokenizador y los detalles de arquitectura. Se usa en gran parte del ecosistema de IA local, no solo en llama.cpp.
¿Usa Ollama llama.cpp?
Numerosos artículos técnicos de la comunidad y de terceros afirman que Ollama usa llama.cpp como motor de inferencia en la mayoría de las plataformas, añadiendo por encima su propio registro de modelos, CLI y sistema Modelfile. El propio Ollama no documenta esta dependencia con detalle.
¿Qué hardware admite llama.cpp?
llama.cpp admite ejecución solo en CPU (con optimizaciones AVX/AVX2/AVX512) además de aceleración por GPU mediante CUDA (NVIDIA), Metal (Apple Silicon), Vulkan, ROCm/HIP (AMD) y SYCL (Intel).
¿Qué formatos de cuantización admite llama.cpp?
llama.cpp admite cuantización desde formatos de 8 bits como Q8_0 hasta formatos de aproximadamente 1,5 bits, con formatos intermedios muy usados como Q5_K_M y Q4_K_M que equilibran tamaño de archivo y calidad de salida.
¿Necesito saber C++ para usar llama.cpp?
No — ejecutar modelos a través de los binarios llama-cli o llama-server no requiere escribir código. Compilar el proyecto desde el código fuente requiere una cadena de herramientas C++ y CMake, pero no escribir C++ tú mismo, salvo que quieras modificar el motor.
¿Tiene llama.cpp una interfaz gráfica de usuario?
llama-server incluye una interfaz web integrada basada en navegador, pero no hay un instalador gráfico independiente ni una app de escritorio comparable a LM Studio. Varias apps de terceros, incluidos frontends compatibles con Ollama y con la API de OpenAI, pueden conectarse a llama-server en su lugar.
¿Es llama.cpp mejor que Ollama?
"Mejor" depende de lo que necesites: llama.cpp da un control más directo sobre las opciones de compilación, la cuantización y la configuración del servidor, mientras que Ollama ofrece un camino más rápido y sencillo hacia un modelo en funcionamiento. Este artículo no afirma que uno sea técnicamente superior; consulta la tabla comparativa anterior y la comparativa de benchmarks dedicada para más detalles.
¿Puede llama.cpp funcionar sin GPU?
Sí. llama.cpp está diseñado para funcionar en hardware solo con CPU usando instrucciones vectorizadas (AVX/AVX2/AVX512), además de admitir aceleración por GPU cuando está disponible.
