Motivación
Ejecutar modelos de lenguaje grandes en local ofrece ventajas claras: privacidad total de los datos, sin límites de rate, sin costes por token y control completo sobre la infraestructura. Con hardware adecuado, montar un servidor de inferencia local es un proyecto de fin de semana.
Ollama: la vía rápida
Ollama es la forma más sencilla de empezar con inferencia local. Instalación en un solo comando:
curl -fsSL https://ollama.com/install.sh | sh
Descargar y ejecutar un modelo:
ollama pull qwen3:8b ollama run qwen3:8b
Ollama expone una API REST en localhost:11434 compatible con OpenAI:
curl http://localhost:11434/v1/chat/completions \ -H "Content-Type: application/json" \ -d '{"model":"qwen3:8b","messages":[{"role":"user","content":"Hola"}]}'
Ventajas de Ollama
Gestión automática de modelos (descarga, caché, limpieza)
Soporte para GGUF multicapa (split entre GPU y RAM)
API REST compatible con OpenAI
Templates de chat preconfigurados por modelo
Limitaciones
No soporta inferencia por lotes (batching)
Latencia mayor que vLLM en cargas concurrentes
Menos control sobre parámetros de sampling avanzados
vLLM: alto rendimiento
vLLM es un motor de inferencia diseñado para máximo throughput. Soporta batching continuo, atención PagedAttention y cuantización FP8 nativa.
pip install vllm vllm serve Qwen/Qwen3.6-35B-A3B --dtype float16 --max-model-len 32768
Ventajas de vLLM
PagedAttention: gestión eficiente de KV cache
Batching continuo: agrupa peticiones automáticamente
Soporte nativo para FP8 sin pérdida significativa de calidad
API compatible con OpenAI
Prefix caching: reutiliza computación entre peticiones similares
Configuración de GPUs NVIDIA
Para inferencia con GPUs NVIDIA necesitas:
Drivers NVIDIA ≥ 535
CUDA toolkit ≥ 12.1
Variables de entorno:
CUDA_VISIBLE_DEVICES=0,1
Verifica que las GPUs son detectadas:
nvidia-smi python3 -c "import torch; print(torch.cuda.device_count())"
Mi configuración
Normalmente mantengo dos servidores de inferencia simultáneos:
Ollama: 14 modelos para tareas generales, chat y embeddings
vLLM: Qwen3.6-35B-A3B en FP8 para tareas de alta demanda
Ambos sirven a través de una capa de proxy que enruta según el tipo de petición. La combinación permite flexibilidad para desarrollo y rendimiento para producción.