Avanzado 11 minBackends

llama.cpp vs vLLM vs Exllama

Respuesta directa

llama.cpp es el motor portátil para usos personales (GGUF, CPU, Mac, GPU de todas las marcas) y el utilizado por Ollama y LM Studio. vLLM está diseñado para atender a muchos usuarios al mismo tiempo en GPU, con batching continuo; Red Hat mide hasta 793 tokens/s frente a 41 para Ollama en una A100. ExLlamaV2 está archivado: su desarrollo continúa en ExLlamaV3.

Detrás de Ollama, LM Studio o Jan hay un motor de inferencia, y ese motor determina los formatos admitidos, el hardware que se puede utilizar y el comportamiento bajo carga. Esta guía compara llama.cpp, vLLM, ExLlama y SGLang según criterios verificables en sus repositorios, corrige ideas erróneas y ofrece una regla para elegir. No publica ninguna medición propia de la tasa de generación: solo incluye mediciones de terceros debidamente atribuidas.

Por Mohamed Meguedmi·Actualización 2026-09-29·Probado en Windows, macOS y Linux

#Un motor de inferencia: lo que realmente cambia entre ellos

Un motor de inferencia convierte tokens de entrada en tokens de salida. Las aplicaciones que instalas (Ollama, LM Studio, Jan) incluyen uno; los servidores de producción (vLLM, SGLang) son motores de inferencia. Tres diferencias repercuten en tu uso: los formatos de modelos aceptados, el hardware que se puede utilizar y la forma de gestionar varias solicitudes al mismo tiempo.

Los motores en una tabla (repositorios oficiales, septiembre de 2026)
MotorLicenciaFormatos y hardware anunciadosUso típico
llama.cppMITGGUF ; CPU, Apple Silicon, NVIDIA (CUDA), AMD (HIP), Vulkan, SYCL y otrosEquipo personal, portátil, servidor ligero
vLLMApache 2.0Modelos de Hugging Face; FP8, INT4, GPTQ, AWQ, GGUF (experimental); GPU NVIDIA, AMD, Intel, y CPU x86/ARMServir a muchos usuarios, producción
SGLangApache 2.0Modelos Hugging Face; FP4, FP8, INT4, AWQ, GPTQServidor de alto rendimiento, prefijos compartidos
ExLlamaV3MITEXL3; GPU NVIDIA de consumoLatencia en una GPU propia, con TabbyAPI
MLX LMMITApple Silicon únicamenteMac: generación y fine-tuning
i
Ollama y LM Studio no son motores competidores de estos
El repositorio de Ollama incluye llama.cpp en «Supported backends», y la página de inicio de LM Studio indica un motor basado en MLX y llama.cpp. Comparar «Ollama vs llama.cpp» equivale a comparar una aplicación con su motor: la guía dedicada a Ollama frente a llama.cpp aborda este caso.

#El formato del modelo determina qué motor se puede utilizar

El kit de IA Local

Tu ChatGPT privado y gratuito en tu máquina en 1 hora — LM Studio, Ollama, Open WebUI, tus documentos, sin nube.

  • Espacio en línea de por vida
  • PDF + archivos
  • Reembolsado 30 j

Antes de comparar velocidades, comprueba el formato en el que está publicado el modelo que quieres. Un archivo GGUF se carga en llama.cpp y, por tanto, en Ollama, LM Studio y Jan. Los pesos de Hugging Face en FP16, FP8 o cuantizados en AWQ o GPTQ se cargan en vLLM o SGLang. Un modelo convertido para MLX se carga con MLX LM en Mac, y un modelo EXL3, con ExLlamaV3. Cambiar de motor suele implicar volver a descargar el modelo en otro formato.

Formato y motor compatible
FormatoMotor más adecuadoOtro motor posible
GGUFllama.cpp (y por tanto Ollama, LM Studio, Jan)vLLM, en modo experimental
Pesos de Hugging Face (FP16, FP8)vLLM, SGLangMLX LM después de la conversión, en Mac
AWQ, GPTQvLLM, SGLangSegún el motor, verificar
EXL3ExLlamaV3Ninguno
MLXMLX LMLM Studio y Jan, que anuncian MLX

#llama.cpp: el estándar portátil

llama.cpp es una implementación en C/C++ sin dependencias, cuyo objetivo declarado es la inferencia con un mínimo de configuración en una amplia variedad de hardware. Apple Silicon recibe atención prioritaria (NEON, Accelerate, Metal), las CPU x86 son compatibles con AVX, AVX2, AVX512 y AMX, y también se admiten GPU NVIDIA (CUDA), AMD (HIP), Vulkan y SYCL. Ofrece cuantizaciones de 1,5 a 8 bits e inferencia híbrida con CPU y GPU, que permite ejecutar un modelo más grande que la VRAM disponible.

Una idea errónea que hay que corregir: llama.cpp no se limita a una petición a la vez. Su servidor anuncia generación paralela para varios usuarios y procesamiento continuo por lotes, activado por defecto, con espacios (slots) configurados mediante el parámetro --parallel. Por tanto, atiende adecuadamente a un equipo pequeño; lo que no busca igualar son las funciones de producción a gran escala de vLLM.

Fortalezas
Portabilidad (Mac, Linux, Windows, Android), formatos GGUF omnipresentes, ejecución híbrida en CPU y GPU, dependencia reducida.
Límites
No hay funciones de despliegue distribuido comparables a las de vLLM; es necesario conocer los ajustes (contexto, slots, capas en GPU).
Ecosistema
Base de Ollama y LM Studio, también citada por Jan.

Para compilar con CUDA, Metal o Vulkan, consulta las guías de compilación; la guía completa sobre llama.cpp detalla su uso.

#vLLM: el servidor para muchos usuarios

vLLM es una biblioteca de inferencia y servicio nacida en el Sky Computing Lab de la Universidad de California en Berkeley. Se basa en PagedAttention, que gestiona por páginas la memoria de las claves y los valores de la atención, y en el batching continuo, complementados con el prerrelleno por fragmentos y la caché de prefijos. Anuncia formatos FP8, INT4, GPTQ, AWQ y GGUF, una API compatible con OpenAI y compatibilidad con GPU NVIDIA, AMD e Intel, así como con CPU x86, ARM y PowerPC.

Dos ideas erróneas que corregir. En primer lugar, vLLM ya no está reservado a NVIDIA y también admite CPU: su repositorio indica compatibilidad con varias GPU y CPU. En segundo lugar, ya admite GGUF: su documentación describe este soporte como muy experimental y poco optimizado, utilizable sobre todo para reducir la huella de memoria. Para un uso diario de GGUF, llama.cpp sigue siendo la vía habitual.

Fortalezas
Rendimiento bajo carga, memoria de caché gestionada por páginas, API compatible con OpenAI, paralelismo (tensorial, de pipeline, de expertos), numerosos formatos.
Límites
Más complicado de instalar y configurar que llama.cpp; pensado para servidores con GPU; GGUF no es su especialidad.
Ecosistema
Elección por defecto cuando varias personas o aplicaciones consultan el mismo modelo al mismo tiempo.

La guía sobre vLLM explica qué es el motor; la del despliegue en producción detalla las configuraciones y la supervisión.

#ExLlama: V2 archivado, V3 en desarrollo

El repositorio de ExLlamaV2 incluye una nota que indica que el proyecto está archivado por el momento y que el desarrollo continúa en ExLlamaV3. Muchas comparativas, incluida la versión anterior de esta página, todavía presentan V2 como la opción más avanzada. El repositorio de ExLlamaV3 anuncia el formato de cuantización EXL3, la inferencia paralela por tensores y por expertos, la descarga de trabajo a la CPU para los modelos de expertos, el batching continuo, la decodificación especulativa y una API compatible con OpenAI a través de TabbyAPI, su servidor recomendado.

ExLlamaV3 está orientado a las GPU de consumo, no a los servidores de producción ni a los Mac. Si tienes una tarjeta NVIDIA y quieres el mejor equilibrio entre calidad y tamaño, la cuantización EXL3 merece una prueba; verifica primero que tu modelo figure en la lista de arquitecturas del repositorio.

#SGLang, MLX LM y los demás

SGLang
Framework de servicio descrito como orientado a una baja latencia y un alto rendimiento de procesamiento, desde una GPU hasta grandes clústeres. Anuncia RadixAttention para la caché de prefijos, el procesamiento continuo por lotes, PagedAttention y la decodificación especulativa. Compite con vLLM en los servidores; la guía dedicada lo explica en detalle.
MLX LM
Paquete Python para generar texto y afinar modelos en Apple Silicon con MLX. No funciona fuera de Mac. La guía MLX frente a llama.cpp compara ambos en Mac.
TensorRT-LLM
Motor de NVIDIA, de muy alto rendimiento en sus tarjetas, pero más complicado de configurar; solo debe considerarse para una flota de tarjetas NVIDIA en producción.

#¿Qué dicen las mediciones publicadas?

Las tasas de generación dependen del hardware, del modelo, de la cuantización, de la longitud de las solicitudes y de la versión del motor, y cambian cada mes. Por eso, esta guía no presenta mediciones propias y te invita a desconfiar de las tablas de tokens por segundo sin un protocolo. No obstante, una fuente externa publica un protocolo completo: Red Hat, en agosto de 2025.

Medición de Red Hat: vLLM frente a Ollama en una A100 (agosto 2025)
ElementoValor publicado por Red Hat
HardwareUna tarjeta NVIDIA A100-PCIE-40GB
ModeloLlama 3.1 8B Instruct (FP16 en Ollama)
VersionesvLLM 0.9.1 ; Ollama 0.9.2
Herramienta de pruebaGuideLLM 0.2.1, de 1 a 256 usuarios simultáneos
Velocidad máxima793 tokens/s para vLLM contra 41 para Ollama
Latencia P99 en el pico80 ms para vLLM contra 673 ms para Ollama

Conviene leerlo con reservas: el artículo está vinculado a los productos Red Hat AI, por lo que procede de un actor comercial del sector; las pruebas se realizaron con Ollama y no directamente con llama.cpp, con los ajustes predeterminados; desde entonces han pasado varias versiones. La conclusión sólida es cualitativa: con muchas solicitudes concurrentes, un motor de servicio con procesamiento agresivo por lotes supera a una aplicación diseñada para un solo usuario. Si lo usas tú solo, la diferencia en la tasa de procesamiento no es lo que te perjudica.

!
Sin tabla de tokens por segundo en esta página
La versión anterior de esta guía proporcionaba tasas de generación y tiempos hasta la primera respuesta para tres motores. Esos datos no estaban vinculados a ninguna fuente y se han retirado. Para comparar en tu máquina, realiza tus propias mediciones con tu modelo y tus consultas.

#Memoria: lo que cada motor reserva

La memoria de un modelo se compone de los pesos, la caché de contexto (KV) y un margen. Los pesos se calculan: un modelo de 8 mil millones de parámetros ocupa aproximadamente 16 GB en FP16 (8 mil millones por 2 bytes) y aproximadamente 5 GB en Q4, cifra de referencia del sitio. La caché de contexto crece con la longitud de la conversación y el número de solicitudes simultáneas.

¿Cómo trata cada motor la memoria de contexto?
MotorComportamiento documentadoConsecuencia práctica
llama.cppContexto ajustado por el usuario; slots paralelos con caché unificadoFijas el tamaño de contexto y el número de slots
vLLMReserva previamente una parte de la memoria GPU para el caché, el 92 % por defectoEn una tarjeta de 24 GB, aproximadamente 22 GB se reservan de forma inmediata
ExLlamaV3Cuantización de caché de 2 a 8 bitsEl caché puede comprimirse para caber en la VRAM

Punto clave: vLLM reserva la memoria desde el inicio, lo que lo hace eficiente para atender solicitudes de inferencia, pero poco adecuado para una tarjeta compartida con otras aplicaciones. Reduce el valor del parámetro gpu_memory_utilization si la tarjeta también se utiliza para otras tareas.

#¿Qué motor para qué uso?

Decisión según la situación
Tu situaciónMotor recomendadoRazón
Uso personal en Mac, PC o portátilllama.cpp, a través de Ollama o LM StudioPortátil y sencillo
Mac Apple Silicon, prioridad a la tasa de procesamientoMLX LM o llama.cppMLX está diseñado para Apple Silicon; comparar usando tus modelos
Un equipo o una aplicación consulta al modelovLLM o SGLangBatching continuo, páginas de caché
Una tarjeta NVIDIA de consumo, calidad máximaExLlamaV3 con TabbyAPICuantización EXL3
Hardware mixto, CPU, AMD, Intelllama.cppGran cobertura de hardware
Modelo solo en GGUFllama.cppvLLM lo maneja solo de forma experimental

Los motores pueden coexistir: Ollama para el chat diario, vLLM lanzado según necesidad para procesar un lote de extracciones. No hay razón para mantener solo uno si los usos son diferentes. Solo prevé el espacio en disco para el mismo modelo almacenado en dos formatos, por ejemplo, un archivo GGUF para el chat y pesos de Hugging Face para el servidor.

Preguntas frecuentes sobre los motores de inferencia
vLLM o llama.cpp: ¿cuál elegir?+
llama.cpp para uso personal o en hardware variado, incluyendo CPU y Mac. vLLM para atender a varios usuarios en GPU, gracias al batching continuo y a la gestión paginada de la memoria. Si estás solo delante de tu máquina, llama.cpp, mediante Ollama o LM Studio, es suficiente casi siempre.
¿Utiliza Ollama llama.cpp?+
El repositorio de Ollama incluye llama.cpp en « Supported backends ». Ollama añade sobre esa base la gestión de modelos, una API y una aplicación. Comparar Ollama y llama.cpp equivale, por tanto, a comparar una aplicación y su motor, cuyos ajustes predeterminados, formatos y funciones difieren; para más detalles, ver la guía dedicada a esta comparación.
¿Puede vLLM ejecutar archivos GGUF?+
Sí, pero su documentación describe esta compatibilidad como muy experimental y poco optimizada, útil sobre todo para reducir el consumo de memoria. Ahora se implementa mediante un plugin separado. Para vLLM, usa preferentemente pesos de Hugging Face en FP16, FP8 o con cuantización AWQ o GPTQ, y reserva GGUF para llama.cpp.
¿Se sigue manteniendo ExLlamaV2?+
No: su repositorio indica que está actualmente archivado y que el desarrollo continúa en ExLlamaV3. ExLlamaV3 ofrece el formato EXL3 y un servidor recomendado, TabbyAPI. Si partes de un tutorial sobre ExLlamaV2 y el formato EXL2, busca su equivalente V3 antes de comenzar.
¿Qué motor es el más rápido?+
Depende del hardware, del modelo y del número de usuarios simultáneos. Con una alta concurrencia, Red Hat mide una clara ventaja de vLLM sobre Ollama. Para una sola solicitud a la vez, las diferencias son menores y dependen del hardware. Mide con tu propio modelo antes de decidir.
¿Se necesita un GPU NVIDIA para vLLM?+
No. El repositorio de vLLM anuncia soporte para GPUs NVIDIA, AMD e Intel, así como para procesadores x86, ARM y PowerPC, con extensiones para otros aceleradores. La cobertura de funciones varía según el hardware: consulta la documentación de instalación de tu plataforma antes de comprometerte.
¿Esta guía te ha ayudado?

¿Un comentario, un error, una precisión? Avísanos, eso mejora la guía para todos.