Ollama vs vLLM: Benchmarks y Kubernetes Ready

2026.01.16
Technology
694 Words
Ollama vs vLLM: Benchmarks y Kubernetes Ready

Ollama vs vLLM: Benchmarks y Preparación para Kubernetes

Parte 2 de 4. La Parte 1 cubrió arquitectura y diseño. La Parte 3 cubre el marco de decisión.

Rendimiento y escalabilidad

Ejecuté benchmarks en NVIDIA A100 80GB PCIe con Llama 3 8B Instruct en ambas herramientas.

Entorno: NVIDIA A100 80GB | Ubuntu 22.04 | CUDA 12.4 | Ollama 0.3.0 | vLLM 0.5.1. Para más configuraciones de hardware, consulta mis benchmarks de inferencia LLM.

Prueba de rendimiento (tokens/segundo)

MétricaOllamavLLMDelta
Solicitud única (batch=1)85 t/s92 t/s+8% vLLM
4 solicitudes concurrentes110 t/s agregado340 t/s agregado+209% vLLM
16 solicitudes concurrentes125 t/s agregado1,180 t/s agregado+844% vLLM
32 solicitudes concurrentes130 t/s agregado2,050 t/s agregado+1,477% vLLM

Prueba de latencia (tiempo al primer token, TTFT)

MétricaOllamavLLMDelta
Solicitud única45 ms38 ms-16% vLLM
4 solicitudes concurrentes180 ms42 ms-77% vLLM
16 solicitudes concurrentes720 ms48 ms-93% vLLM

Uso de recursos (16 solicitudes concurrentes)

MétricaOllamavLLMDelta
GPU VRAM (GB)~18 GB~14 GB-22% vLLM
Utilización GPU65%98%+51% vLLM
CPU (cores)2.13.8+81% vLLM

Para un usuario único, las diferencias apenas se notan. Al escalar, PagedAttention y continuous batching de vLLM superan a Ollama. vLLM también consume menos VRAM por su gestión de memoria caché KV.

Facilidad de uso y experiencia del desarrollador

Ollama es más simple. Su CLI es intuitiva:

Terminal window
ollama pull llama3.1
ollama run llama3.1

La API REST es minimalista:

Terminal window
curl http://localhost:11434/api/generate -d '{
"model": "llama3.1",
"prompt": "Why is the sky blue?"
}'

La gestión de modelos opera en piloto automático: descarga, actualiza y ofrece Modelfiles.

vLLM requiere más configuración. El comando mínimo es directo:

Terminal window
python -m vllm.entrypoints.openai.api_server \
--model meta-llama/Meta-Llama-3-8B-Instruct \
--tensor-parallel-size 1 \
--gpu-memory-utilization 0.9

Ajustarlo para producción requiere entender tamaños de lote, longitudes máximas, cuantización de caché KV y políticas de programación.

Soporte de modelos y cuantización

Ollama usa GGUF con cuantizaciones: Q4_0, Q4_K_M, Q5_K_M, Q8_0 y FP16. Su biblioteca aloja cientos de modelos.

vLLM requiere formato HuggingFace Transformers (safetensors) y soporta AWQ, GPTQ y FP8, no GGUF. No puedes usar la biblioteca de Ollama, necesitas descargar de HuggingFace.

Para modelos de vanguardia, vLLM agrega soporte más rápido por su integración con Transformers. Para modelos cuantizados por la comunidad, el ecosistema GGUF de Ollama es el estándar.

Compatibilidad API e integraciones

Ollama expone una API REST con compatibilidad parcial con OpenAI. El endpoint /v1/chat/completions existe, pero carece de paridad completa, streaming funciona, funciones y herramientas son limitadas.

vLLM expone API totalmente compatible con OpenAI, streaming, funciones, herramientas y embeddings. Si migras, vLLM es la opción más directa.

Preparación para Kubernetes

Ambas herramientas se ejecutan bien en Kubernetes, aunque sus modelos operativos difieren.

Ollama en Kubernetes es directo: Deployment, Service, PVC para caché. Cubro la configuración en Despliega Ollama en Kubernetes. El escalamiento es principalmente vertical ya que Ollama no distribuye inferencia entre GPUs. Cada réplica opera independientemente.

vLLM en Kubernetes soporta paralelismo tensor y de pipeline, un modelo abarca múltiples GPUs o nodos. Consulta mi guía sobre desplegar vLLM en producción. Incluye Helm charts oficiales e integración con KubeRay.

AspectoOllamavLLM
Multi-GPU modelo únicoNoSí (paralelo tensor/pipeline)
Escalamiento horizontalRéplicas con persistencia de sesiónRéplicas + balanceo de carga
Caché de modelosPVC localPVC local o sistema de archivos compartido
Helm chart oficialComunidadOficial
Amigable para HPAModeradoAlto (workers sin estado)

La Parte 3 presenta el marco de decisión y ruta de migración. La Parte 4 cubre costos, comunidad y veredicto.

Preguntas frecuentes

¿Por qué vLLM rinde mejor bajo concurrencia? vLLM usa continuous batching, agrupa solicitudes en lotes en la GPU. Combinado con PagedAttention, satura la GPU mejor que Ollama.

¿Puedo usar los modelos de Ollama con vLLM? No directamente. Ollama usa GGUF, mientras que vLLM requiere HuggingFace safetensors. Necesitas descargar el modelo desde HuggingFace.

¿Funciona vLLM en Kubernetes sin GPU? No. vLLM requiere GPUs NVIDIA. Para inferencia solo CPU, Ollama vía llama.cpp es la opción adecuada.

¿Soporta Ollama paralelismo tensor? No. Ollama no distribuye inferencia entre GPUs. Para modelos mayores de 70B, necesitas vLLM con paralelismo tensor.

¿Qué cuantización debo usar en producción? Para Ollama, Q4_K_M ofrece el mejor equilibrio entre calidad y velocidad para modelos 7B-13B. Para vLLM, AWQ-4bit es excelente, y FP8 en H100 ideal para despliegues grandes.

# Ollama # Vllm # inferencia-llm # ia-auto-gestionada # Gpu # benchmark # Kubernetes