vLLM — servidor de inferencia GPU de alto rendimiento (escala de producción)
vLLM es el motor de inferencia open source para servir LLM a escala. PagedAttention, batching continuo y caché de prefijos lo convierten en la opción de mayor rendimiento para servir múltiples usuarios en producción sobre GPU.
Why vLLM
vLLM salió de UC Berkeley en 2023 con una intuición precisa: las implementaciones estándar de atención desperdician memoria GPU en tiempo de servicio porque reservan buffers del tamaño completo de la secuencia por petición. PagedAttention divide la KV cache en páginas que el motor puede compartir y reclamar dinámicamente, aumentando drásticamente el tamaño de batch efectivo en la misma GPU. En 2026 PagedAttention es estándar en la mayoría de motores de inferencia de alto rendimiento, pero vLLM sigue siendo la implementación más madura y más desplegada.
La otra característica crítica es el batching continuo — las nuevas peticiones se incorporan a un batch activo en lugar de esperar a que termine la petición actual más lenta. Efecto práctico: la latencia se mantiene baja bajo carga mientras el rendimiento escala casi linealmente con la capacidad de la GPU. Para productos SaaS que sirven a muchos usuarios, esto solo puede reducir tu factura de GPU a la mitad frente a un batching ingenuo.
Quién debe usar vLLM: equipos que sirven más de 10 usuarios concurrentes en hardware GPU. Por debajo de ese umbral, Ollama o llama.cpp server te llevan allí con menos complejidad. Por encima, vLLM (o sus derivados como SGLang, TensorRT-LLM) es la opción por defecto. El despliegue es muy Python-céntrico con dependencias CUDA — reserva tiempo real de ops.
Quick Start — Serve a Model with OpenAI API
Define --tensor-parallel-size N para repartir el modelo entre N GPU en un mismo nodo. --pipeline-parallel-size para multi-nodo. Usa --quantization awq/gptq para pesos pre-cuantizados, o --kv-cache-dtype fp8 en GPU Hopper+ para duplicar la KV cache efectiva. Monitoriza el endpoint de métricas :8000/metrics para la profundidad de la cola de peticiones y la utilización de GPU.
# pip install vllm (requires CUDA-capable GPU)
# 1. Start the OpenAI-compatible server
vllm serve meta-llama/Llama-3.2-3B-Instruct \
--dtype auto \
--max-model-len 8192 \
--gpu-memory-utilization 0.90
# Server listens on http://0.0.0.0:8000/v1 with OpenAI-shape endpoints:
# POST /v1/chat/completions
# POST /v1/completions
# POST /v1/embeddings
# GET /v1/models
# 2. Use any OpenAI SDK against it
python - <<'PY'
from openai import OpenAI
client = OpenAI(base_url="http://localhost:8000/v1", api_key="vllm")
r = client.chat.completions.create(
model="meta-llama/Llama-3.2-3B-Instruct",
messages=[{"role":"user","content":"What problem does PagedAttention solve?"}],
)
print(r.choices[0].message.content)
PY
# 3. Production deployment: Docker image
docker run --runtime nvidia --gpus all \
-v ~/.cache/huggingface:/root/.cache/huggingface \
-p 8000:8000 --ipc=host \
vllm/vllm-openai:latest \
--model meta-llama/Llama-3.2-3B-Instruct \
--tensor-parallel-size 1 # increase for multi-GPUCaracterísticas clave
PagedAttention
La KV cache dividida en páginas permite al motor compartir memoria entre peticiones — aumenta enormemente el tamaño de batch efectivo. La función estrella que puso a vLLM en el mapa.
Batching continuo
Las nuevas peticiones se unen a batches activos en pleno vuelo; las secuencias terminadas liberan slots de inmediato. Mantiene la utilización de GPU cerca del 100 % bajo tráfico real.
Prefix caching
Reutiliza prefijos de KV cache entre peticiones que comparten el mismo prompt de sistema o los mismos ejemplos few-shot. Gran aceleración para cargas agénticas con prompts repetitivos.
Paralelismo tensor y pipeline
Reparte un mismo modelo entre varias GPU en un nodo (tensor) o entre nodos (pipeline). Imprescindible para modelos 70B+ o para un rendimiento extremo.
Amplio soporte de modelos
Llama 3.x, Qwen 2.5, Mistral, DeepSeek, Gemma, Phi, Command-R, multimodal (LLaVA, Qwen-VL, Llama 3.2 vision). Las nuevas arquitecturas llegan rápido tras su lanzamiento.
API compatible con OpenAI
chat/completions, completions y embeddings cumplen todos la especificación OpenAI. Reemplazo directo; también funciona con LangChain, LiteLLM y el SDK de OpenAI sobrescribiendo base_url.
Comparación
| Throughput | Setup Complexity | Model Size | Best For | |
|---|---|---|---|---|
| vLLMesta | Highest open-source (GPU) | Medium-high | 7B-671B with multi-GPU | Production multi-user GPU serving |
| llama.cpp server | Good (CPU+GPU) | Medium | Up to host memory | Single-machine, any hardware |
| Ollama | Good (llama.cpp) | Very low | Up to host memory | Small teams, desktop |
| TensorRT-LLM | Highest on NVIDIA | High | 7B-671B | Maximum throughput on NVIDIA |
Casos de uso
01. Productos SaaS de alta concurrencia
Chatbots, copilotos o APIs de agentes que sirven a decenas o miles de usuarios concurrentes sobre GPU. El batching de vLLM mantiene la latencia a escala — crítico para experiencias con calidad de producto.
02. Agentes de contexto largo
Agentes que envían prompts grandes (RAG, chats largos, contexto de código). PagedAttention y el prefix caching hacen que servir contextos largos sea económicamente viable a escala.
03. Plataforma interna de infra de AI
Equipos de plataforma exponen un endpoint LLM compartido detrás de LiteLLM o Portkey. vLLM es la opción estándar de motor por debajo — fiable, rápido y ampliamente soportado.
Precios y licencia
vLLM: open source con licencia Apache 2.0. Autoalojamiento gratuito. Respaldado por Neural Magic (Red Hat) y una amplia comunidad de contribuidores.
Coste de hardware: una o varias GPU. 24 GB de VRAM cubren 7-14B en fp16 o 30-34B en 4-bit. 48-80 GB cubren 70B en 4-bit. Configuraciones multi-nodo para los modelos más grandes.
Coste operativo: mayor que Ollama/LM Studio. Entorno Python + CUDA, ajuste cuidadoso de memoria, monitorización de colas de peticiones. Reserva tiempo real de DevOps para operarlo bien.
Activos relacionados en TokRepo
vllm-cli — vLLM Model Serving CLI (Python)
vllm-cli is a CLI for serving models with vLLM; verified 493★ with Python 3.9+ and docs for profiles, shortcuts, and `serve --model` workflows.
vLLM — High-Throughput LLM Serving Engine
vLLM is a high-throughput and memory-efficient LLM inference engine. 74.8K+ GitHub stars. PagedAttention, continuous batching, OpenAI-compatible API, multi-GPU serving. Apache 2.0.
nano-vllm — Lightweight LLM Serving Engine
nano-vllm is a minimal, educational, and performant LLM inference engine that reimplements core vLLM concepts in clean Python for easy understanding and extension.
GPUStack — GPU Cluster Manager for AI Model Deployment
An open-source GPU cluster manager that orchestrates inference engines like vLLM and SGLang for scalable, multi-node AI model serving.
Preguntas frecuentes
¿Necesito vLLM en lugar de Ollama?+
Solo si sirves a más de ~5-10 usuarios concurrentes o necesitas SLO de latencia bajo carga. Para uso de escritorio, LLM de equipos pequeños o máquinas de desarrollo, Ollama es estrictamente más simple. vLLM amortiza a escala.
¿vLLM puede funcionar sin GPU?+
No — vLLM requiere CUDA (o ROCm / GPU Intel con soporte experimental). Para inferencia solo CPU, usa llama.cpp server, Ollama o LocalAI. vLLM está optimizado para gestión de memoria GPU; no tiene sentido en CPU.
¿Cómo se compara vLLM con TensorRT-LLM?+
TensorRT-LLM es el stack de inferencia propietario de NVIDIA — máximo rendimiento en hardware NVIDIA, pero más difícil de operar, atado a NVIDIA y menos portable entre modelos. vLLM es OSS, multi-arquitectura y va alcanzando a TensorRT en rendimiento en la mayoría de modelos. Elige TensorRT cuando necesites cada token/seg adicional en NVIDIA; vLLM en el resto de casos.
¿vLLM soporta tool calls?+
Sí — vía los parámetros de tool-calling de la API OpenAI chat completions, en modelos con pesos capaces de hacer tool calls (Llama 3.1+, Qwen 2.5, Mistral v0.3+). Soporte de gramática de herramientas vía --enable-auto-tool-choice.
¿Despliegue multi-nodo?+
Sí. Usa --pipeline-parallel-size entre nodos y --tensor-parallel-size dentro de cada nodo. Ray gestiona la orquestación. No es trivial de configurar; reserva tiempo y espera tener que ajustar para tu carga.
¿Y SGLang / LMDeploy / TGI?+
Todos son motores de inferencia modernos que compiten con vLLM. SGLang añade salidas estructuradas y decodificación restringida, LMDeploy es fuerte en Nvidia y cuantización, HuggingFace TGI es más simple pero ahora va por detrás en funciones. vLLM sigue siendo el más generalista; evalúa alternativas solo para necesidades específicas.