Local LLM
llama.cpp — The C++ Engine Under Ollama, LM Studio, and Most Local LLMs logo

llama.cpp — el motor C++ detrás de Ollama, LM Studio y la mayoría de LLM locales

llama.cpp es la implementación C++ con licencia MIT de Georgi Gerganov para la inferencia de la familia Llama — el motor sobre el que se construyen la mayoría de herramientas de LLM locales. Admite CPU, CUDA, ROCm, Metal, Vulkan y cuantización agresiva para cualquier hardware.

Why llama.cpp

Cuando Georgi Gerganov publicó llama.cpp en marzo de 2023, ejecutar Llama en un MacBook pasó de ser un proyecto de investigación a un cambio de 20 líneas. Las prioridades de implementación — cero dependencias, cuantización agresiva (2-8 bits) y máxima portabilidad — terminaron definiendo la categoría LLM local. Ollama, LM Studio y LocalAI envuelven todos llama.cpp. Si instalas software LLM local en 2026, probablemente estés ejecutando llama.cpp lo sepas o no.

Usar llama.cpp directamente te da máximo control y mínima superficie. Sin gestor de runtime, sin servidor HTTP por defecto (aunque viene uno), sin dependencia de Python. El compromiso: cada comodidad (gestión de modelos, UI de chat, compatibilidad con OpenAI) es trabajo que haces tú o delegas a una herramienta de más alto nivel.

Recurre a llama.cpp directamente cuando: necesitas control absoluto sobre cuantización/flags, despliegas en hardware inusual (Raspberry Pi, CPUs antiguas, móviles), o construyes un producto sobre la API C de llama.cpp. Si no, deja que Ollama o LM Studio lo envuelvan por ti.

Quick Start — Build, Download, Run

-hf descarga cuantizaciones GGUF directamente desde Hugging Face (sin conversión manual). llama-server expone un endpoint /v1/chat/completions compatible con OpenAI más una UI web mínima en / para uso interactivo. Sufijos de cuantización: Q4_K_M es un valor por defecto seguro; Q5_K_M para mayor calidad; Q8_0 casi sin pérdida pero más grande.

# 1. Clone and build (Metal on macOS, CUDA on NVIDIA, CPU everywhere)
git clone https://github.com/ggml-org/llama.cpp
cd llama.cpp

# macOS Metal
cmake -B build -DGGML_METAL=ON
# NVIDIA CUDA
# cmake -B build -DGGML_CUDA=ON
# AMD ROCm
# cmake -B build -DGGML_HIP=ON
# CPU-only
# cmake -B build
cmake --build build --config Release -j

# 2. Grab a GGUF model from Hugging Face
# (e.g., Qwen 2.5 7B Instruct Q4_K_M)
./build/bin/llama-cli -hf Qwen/Qwen2.5-7B-Instruct-GGUF:Q4_K_M \
  -p "Three facts about llama.cpp:" -n 200

# 3. OpenAI-compatible server
./build/bin/llama-server -hf Qwen/Qwen2.5-7B-Instruct-GGUF:Q4_K_M \
  --host 0.0.0.0 --port 8080 -c 8192

# 4. Call it like OpenAI
python - <<'PY'
from openai import OpenAI
c = OpenAI(base_url="http://localhost:8080/v1", api_key="llama-cpp")
print(c.chat.completions.create(
    model="qwen",
    messages=[{"role":"user","content":"One-sentence llama.cpp fact."}],
).choices[0].message.content)
PY

Características clave

Cero dependencia de Python

C++ puro. Sin virtualenv, sin conflictos de pip, sin matriz de versiones CUDA-Python. Distribución en binario único.

Soporte multi-backend

CPU (AVX2/AVX512), CUDA (NVIDIA), ROCm (AMD), Metal (Apple), Vulkan (genérico), SYCL (Intel), MUSA (Moore Threads). Compila una vez para tu hardware, funciona en el resto con fallback a CPU.

Cuantización agresiva

Q2/Q3/Q4/Q5/Q6/Q8 más K-quants e I-quants. Reduce modelos 70B a ~40 GB para despliegue single-GPU o 64 GB de RAM. Las curvas calidad/tamaño están bien documentadas.

Formato GGUF

Formato de modelo autodescriptivo con metadatos (arquitectura, prompt template, tokenizer). Sustituye al antiguo GGML. Soportado en todo el ecosistema LLM local.

Binario llama-server

Servidor HTTP compatible con OpenAI incluido en el repo. Soporta chat completions, completions, embeddings, streaming, cancelación, gestión de slots y una UI web básica.

Embeddings + speech + visión

Viene con llama-embedding, llama-cli, llama-bench y soporte multimodal experimental (LLaVA, MiniCPM-V). Una base de código, muchos modos.

Comparación

 AudienceConvenienceControlPerformance
llama.cppestaDevelopers, integratorsLow (bring your own UX)MaximumExcellent on any hardware
OllamaDevelopers + semi-technicalHighMediumGood (llama.cpp backend)
LM StudioEnd usersVery high (GUI)Low-mediumGood (llama.cpp / MLX)
vLLMProduction opsMedium-lowHigh for GPUBest on GPU

Casos de uso

01. Hardware embebido o inusual

Raspberry Pi, portátiles antiguos, móvil, ordenadores single-board. llama.cpp funciona donde los motores basados en Python + CUDA no pueden.

02. Construir productos sobre la API C

Si embebes inferencia LLM en una app de escritorio, un juego o una CLI, la API C de llama.cpp es el camino más limpio. También expone bindings de Python (llama-cpp-python) y Rust.

03. Control preciso de la cuantización

Cuando quieres experimentar con K-quants específicos o archivos imatrix personalizados, trabajar directamente con llama.cpp da un control que las herramientas de más alto nivel ocultan.

Precios y licencia

llama.cpp: open source con licencia MIT. Gratis.

Coste de hardware: se ajusta al tamaño del modelo y la cuantización que elijas. Un 7B en Q4 funciona en 6 GB de RAM; un 70B en Q4 necesita ~40 GB de RAM o VRAM.

Coste operativo: tú asumes el despliegue. Para «que simplemente funcione», Ollama es más fácil. Para «necesito exactamente esta configuración», llama.cpp da control total.

Activos relacionados en TokRepo

Preguntas frecuentes

¿llama.cpp vs Ollama — cuál necesito?+

Si lo preguntas, Ollama. Ollama envuelve llama.cpp con gestión de modelos, el pulido de la API de OpenAI e instaladores multiplataforma. Ve a llama.cpp en crudo cuando necesites un control que Ollama no expone — flags de cuantización personalizados, hardware inusual o embeber inferencia dentro de otro producto.

¿llama.cpp es solo para modelos Llama?+

A pesar del nombre, no. Ejecuta Llama, Qwen, Mistral, Gemma, DeepSeek, Phi, Command-R, Yi y decenas más — cualquier arquitectura soportada en el formato GGUF. La comunidad añade nuevas arquitecturas con regularidad.

¿Cómo se compara el rendimiento con motores solo GPU?+

En GPU, vLLM/TensorRT-LLM ganan en rendimiento bruto a escala. Para rendimiento single-stream en una sola máquina, llama.cpp con CUDA es competitivo. En Apple Silicon, llama.cpp Metal está cerca de MLX para la mayoría de modelos; MLX se adelanta en algunas arquitecturas.

¿Y llama-cpp-python?+

Bindings de Python a la biblioteca C. Útil cuando embebes inferencia en apps Python sin levantar un servidor HTTP. Se mantiene por separado; va días o semanas por detrás del repo principal.

¿llama.cpp puede hacer fine-tuning?+

El fine-tuning estilo LoRA vía el binario finetune de llama.cpp existe pero es limitado frente a herramientas basadas en PyTorch. Para fine-tuning serio usa Axolotl, Unsloth o MLX-LM; llama.cpp está enfocado en inferencia.

¿El formato GGUF va a desaparecer?+

No en el futuro previsible. Activo y ampliamente soportado. El antiguo GGML está deprecado — usa GGUF para cualquier nueva conversión de modelo.

Comparar alternativas