← Todas las recetasReceta · 12 de septiembre de 2025

Monta tu API de IA estilo OpenAI con vLLM (para toda la casa)

Sirve un modelo compatible con vLLM mediante una API con formato OpenAI para tus apps locales, con red privada, versión fijada y autenticación explícita.

Portada de la receta: Monta tu API de IA estilo OpenAI con vLLM (para toda la casa)
Dificultadmedia
Tiempo30 min
IngredientesvLLM · Docker · Qwen2.5

Cuando el chat de terminal se te queda corto, toca servir inferencia: una API HTTP en tu red local que puedan consumir tus apps. vLLM ofrece un servidor con formato compatible con la API de OpenAI, pero no es un sustituto universal: comprueba qué arquitecturas y formatos soporta la versión que vayas a instalar.

Ingredientes

  • Linux con una GPU NVIDIA compatible con CUDA
  • Docker y NVIDIA Container Toolkit instalados
  • Pesos en un formato y arquitectura compatibles con la versión de vLLM
  • Un endpoint que solo sea accesible desde tu red privada

Pasos

  1. Elige y fija una versión. No uses latest para una medición reproducible: guarda la etiqueta de la imagen y la revisión del modelo.

  2. Guarda la clave en un fichero con permisos restringidos. No la pongas en la línea de comandos: ahí la ve cualquiera con ps o docker inspect (P-011).

    echo "VLLM_API_KEY=$(openssl rand -hex 24)" > ~/.vllm.env && chmod 600 ~/.vllm.env
  3. Lanza vLLM con Docker:

    docker run -d --name llm-api --gpus all --ipc=host \
      --env-file ~/.vllm.env \
      -v ~/.cache/huggingface:/root/.cache/huggingface \
      -p 127.0.0.1:8000:8000 \
      vllm/vllm-openai:<VERSION> \
      --model Qwen/Qwen2.5-7B-Instruct \
      --max-model-len 16384 \
      --port 8000

    Sustituye <VERSION> por una versión concreta. vLLM lee la clave de la variable VLLM_API_KEY. El puerto queda ligado a localhost para no exponerlo por accidente.

  4. Prueba que responde:

    source ~/.vllm.env
    curl http://localhost:8000/v1/chat/completions \
      -H "Authorization: Bearer $VLLM_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{
        "model": "Qwen/Qwen2.5-7B-Instruct",
        "messages": [{"role": "user", "content": "¿Por qué la IA local es mejor?"}]
      }'
  5. Apunta tus apps a tu servidor: en cualquier app que use OpenAI, cambia:

    • Base URL: http://TU-IP:8000/v1
    • API key: una clave propia, guardada en un gestor de secretos
  6. Si necesitas acceso remoto, usa una VPN como Tailscale o un reverse proxy con HTTPS, autenticación y firewall. No abras el puerto de inferencia al internet público. Lo explicamos en publicar sin abrir puertos.

Resultado esperado

Una API con formato compatible con OpenAI: /v1/chat/completions, /v1/models y streaming si la versión y el cliente lo soportan. La latencia, el coste total y la calidad dependen de tu hardware y de la configuración.

Trucos

  • --max-model-len: el contexto. Cada token de contexto come VRAM en la KV cache. No pongas 128K si no lo usas.
  • Usa una cuantización documentada por el modelo y soportada por tu versión de vLLM; AWQ y GPTQ no son intercambiables automáticamente.
  • Monitoriza con nvidia-smi mientras sirves: la KV cache crece con las conversaciones largas.
  • Para repartir un modelo entre varias máquinas, valida primero la red y la versión del runtime. Lo contamos en clúster de dos máquinas y cómo dejarlo funcionando.