Ollama vs vLLM: Arquitectura y Filosofía Diseño
Tabla de contenidos
Ollama vs vLLM: Arquitectura y Filosofía de Diseño
Parte 1 de una serie de 4 partes. La Parte 2 cubre benchmarks y Kubernetes.
Ollama optimiza para ergonomía del desarrollador. vLLM optimiza para rendimiento a escala. Esa distinción impulsa cada diferencia, y elegir mal te cuesta en latencia, rendimiento u horas de ingeniería. Lo aprendí ejecutando inferencia en tres clusters. Ollama para un chatbot interno, vLLM para una API de producción.
Esta serie te da lo que necesitas para decidir: comparo ambas herramientas, comparto datos de benchmark reales y ofrezco un marco de decisión aplicable hoy.
Veredicto rápido
- Elige Ollama para prototipado, desarrollo local, despliegue en Kubernetes, o cuando la gestión simple de modelos sea tu prioridad.
- Elige vLLM para APIs de producción que exijan máximo rendimiento, endpoints compatibles con OpenAI, o la ventaja de rendimiento demostrada.
Comparación general
| Dimensión | Ollama | vLLM | Ganador |
|---|---|---|---|
| Mejor para | Desarrollo local, prototipos, equipos pequeños | Servicio de producción, APIs de alto rendimiento | , |
| Licencia | MIT | Apache 2.0 | Empate |
| Primer lanzamiento | 2023 | 2023 | Empate |
| GitHub Stars | ~95k | ~35k | Ollama |
| Lenguaje | Go (runtime), C++ (motor LLM) | Python, C++ (kernels) | , |
| Soporte GPU | NVIDIA, Apple Silicon, AMD (parcial) | NVIDIA (principal), AMD (ROCm) | Ollama |
| Multi-Modelo | Sí (cargado bajo demanda) | Sí (simultáneo con multi-GPU) | Empate |
| Compatibilidad API | Custom + OpenAI (parcial) | Compatible con OpenAI (completo) | vLLM |
| Tamaño comunidad | Muy grande, enfocada en hobbystas | Creciendo, enfocada en empresas | Ollama |
| Listo para empresa | Moderado | Alto | vLLM |
| Complejidad configuración | Muy baja | Media | Ollama |
| Rendimiento | Bueno para usuario único | Excelente para concurrente | vLLM |
| Documentación | Buena | Excelente | vLLM |
Arquitectura y filosofía de diseño
Ollama está construido bajo el principio de ergonomía para desarrolladores primero. Envuelve motores de inferencia como llama.cpp en una CLI limpia y una API REST, distribuido como un binario único de Go. Ejecuta ollama run llama3.1 y en minutos estás conversando con un modelo. Ollama maneja descargas de modelos, selección de cuantización y configuración del entorno automáticamente. Bajo el capó, llama.cpp ejecuta modelos GGUF eficientemente en hardware de consumo y Apple Silicon. Toda la herramienta se distribuye sin dependencias de Python, haciendo la instalación trivial en cualquier plataforma.
vLLM está construido bajo el principio de optimización de rendimiento primero. Esta biblioteca de Python y motor de servicio usa PagedAttention, una técnica de gestión de memoria que reduce drásticamente el desperdicio de VRAM durante la inferencia. vLLM trata la GPU como un procesador por lotes, ingiere solicitudes, las agrupa en lotes y aplica continuous batching para mantener las unidades de cómputo saturadas. PagedAttention gestiona la memoria caché KV en bloques no contiguos, eliminando la fragmentación.
La diferencia fundamental: Ollama optimiza para empezar rápido, mientras que vLLM optimiza para servir con eficiencia a escala. Ninguna es categóricamente mejor, sirven fases diferentes del mismo viaje. Probablemente empezarás con Ollama y migrarás a vLLM a medida que tus cargas de trabajo crezcan.
En la Parte 2, analizo los datos de benchmark que muestran cómo estas decisiones de diseño se traducen en diferencias reales de rendimiento, latencia y VRAM. La Parte 3 presenta un marco de decisión y ruta de migración, mientras que la Parte 4 cierra con el costo total de propiedad y el veredicto final.
Preguntas frecuentes
¿Qué es PagedAttention? PagedAttention es una técnica de gestión de memoria usada por vLLM que maneja la caché KV en bloques no contiguos, similar al paginado de memoria virtual. Elimina la fragmentación de memoria y permite una utilización de VRAM mucho mayor durante inferencia concurrente.
¿Puede Ollama usar PagedAttention? No. Ollama usa la gestión de memoria de llama.cpp, que es más simple pero menos eficiente bajo carga concurrente. PagedAttention es específico de vLLM y una de sus principales ventajas de rendimiento.
¿Qué es GGUF? GGUF es un formato de modelo desarrollado por el proyecto llama.cpp. Agrupa pesos, tokenizador y metadatos en un solo archivo con soporte de cuantización integrado. Ollama usa exclusivamente modelos GGUF, lo que permite su gestión sencilla de modelos con un solo comando.
¿Soporta Ollama endpoints compatibles con OpenAI? Parcialmente. Ollama expone un endpoint /v1/chat/completions para completaciones básicas y streaming, pero la llamada a funciones y el uso de herramientas son limitados comparados con la compatibilidad total de vLLM.
¿Qué herramienta es mejor para Apple Silicon? Ollama. Al estar construido sobre llama.cpp con aceleración Metal nativa, funciona eficientemente en Macs con Apple Silicon. El soporte de GPU de vLLM está principalmente enfocado en NVIDIA.