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)
PYCaracterí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
| Audience | Convenience | Control | Performance | |
|---|---|---|---|---|
| llama.cppesta | Developers, integrators | Low (bring your own UX) | Maximum | Excellent on any hardware |
| Ollama | Developers + semi-technical | High | Medium | Good (llama.cpp backend) |
| LM Studio | End users | Very high (GUI) | Low-medium | Good (llama.cpp / MLX) |
| vLLM | Production ops | Medium-low | High for GPU | Best 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
LLaMA-Factory — Fine-Tune 100+ LLMs with a Unified Interface
LLaMA-Factory provides a web UI and CLI to fine-tune large language models including LLaMA, Mistral, Qwen, and more using LoRA, QLoRA, and full-parameter methods without writing training scripts.
LLaMA-Factory — Unified LLM Fine-Tuning Framework
LLaMA-Factory offers a web UI and CLI for fine-tuning over 100 large language models using methods like LoRA, QLoRA, and full-parameter training, with built-in evaluation and export.
Llama Index — Data Framework for LLM Applications
Leading data framework for connecting LLMs to external data. LlamaIndex handles ingestion, indexing, retrieval, and query engines for building production RAG applications.
Llama Stack — Meta Official LLM App Framework
Official Meta framework for building LLM applications with Llama models. Inference, safety, RAG, agents, evals, and tool use. Standardized APIs. 8.3K+ stars.
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.