Wednesday, 12 August 2026 | Updating Daily AI insight, written for builders

Docker vLLM: Ejecute un servidor de inferencia acelerado por GPU en minutos

  • Extraer vllm/vllm-openai:latest y ejecútelo con --runtime nvidia --gpus all --ipc=host para obtener un servidor compatible con OpenAI acelerado por GPU.
  • Monte ~/.cache/huggingface en el contenedor para que los pesos del modelo sobrevivan a los reinicios del contenedor.
  • El servidor expone una API compatible con OpenAI en el puerto 8000; pruébela con curl http://localhost:8000/v1/models.
  • Las tres banderas de ajuste más importantes son --tensor-parallel-size, --max-model-len, y --gpu-memory-utilization.

vLLM publica una imagen oficial de Docker, vllm/vllm-openai, que incluye un servidor de inferencia compatible con OpenAI listo para usar. La ruta más rápida: instale la Herramienta de contenedores de NVIDIA en el host y luego ejecute la imagen con --gpus all y un identificador de modelo de Hugging Face. Una vez descargado el modelo, el servidor estará activo en el puerto 8000 y aceptará las mismas solicitudes que la API de OpenAI.

Requisitos previos

  • Docker Engine 20.10 o posterior — Docker Desktop en Windows y macOS funciona mediante el backend WSL2.
  • GPU de NVIDIA con un controlador que admita CUDA 12.x. Ejecute nvidia-smi para confirmarlo; la «versión de CUDA» mostrada es la máxima que admite su controlador.
  • Herramienta de contenedores de NVIDIA — el puente que permite a Docker detectar la GPU. Consulte la siguiente sección.
  • Suficiente VRAM para su modelo objetivo. Utilice la Calculadora de VRAM herramienta de cálculo de memoria de vLLM

Instalación de la Herramienta de contenedores de NVIDIA

Omita esta sección si docker run --gpus all nvidia/cuda:12.0-base nvidia-smi ya funciona en su equipo.

Linux (Ubuntu/Debian):

curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | 
  sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg

curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | 
  sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | 
  sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list

sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker

RHEL/CentOS: Reemplace la URL del repositorio deb por su equivalente rpm en la documentación de NVIDIA y use dnf en lugar de apt-get.

Windows (WSL2): Instale el controlador NVIDIA para Windows en el sistema anfitrión; no es necesario instalar por separado el kit de herramientas para contenedores dentro de WSL2. Docker Desktop gestiona automáticamente la transmisión directa (passthrough).

macOS: Las GPUs de NVIDIA no son compatibles con macOS. vLLM no se ejecuta en Apple Silicon mediante Docker con aceleración GPU. Para inferencia local en hardware Apple, considere una compilación exclusiva para CPU o un entorno de ejecución alternativo.

Comando mínimo de ejecución

docker run --runtime nvidia --gpus all 
  --ipc=host 
  -v ~/.cache/huggingface:/root/.cache/huggingface 
  -p 8000:8000 
  vllm/vllm-openai:latest 
  --model meta-llama/Meta-Llama-3-8B-Instruct
MarcarPor qué es importante
--runtime nvidiaRedirige las llamadas a la GPU mediante el entorno de ejecución de contenedores NVIDIA.
--gpus allExpone todas las GPUs del sistema anfitrión. Use "device=0,1" para especificar GPUs concretas.
--ipc=hostComparte el espacio de nombres IPC del anfitrión. Es obligatorio para la memoria compartida de PyTorch; omitirlo provoca un error de bus o un fallo por memoria compartida.
-v ~/.cache/huggingface:…Monta la caché de Hugging Face del anfitrión para que los pesos del modelo persistan tras reinicios del contenedor.
-p 8000:8000Expone el servidor compatible con OpenAI en el anfitrión.
--modelCualquier identificador de modelo de Hugging Face o una ruta local montada dentro del contenedor.

Para descargar un modelo restringido (Llama 3, Mistral, etc.), también pase -e HUGGING_FACE_HUB_TOKEN=hf_yourtoken. Guarde el token en un archivo .env y páselo mediante --env-file .env en lugar de incluirlo directamente en el historial de su shell.

Montaje de la caché de Hugging Face

vLLM descarga los pesos del modelo en /root/.cache/huggingface dentro del contenedor. Sin un montaje de volumen, cada ejecución de docker run vuelve a descargar íntegramente el modelo —habitualmente entre 5 y 80 GB—. La línea de montaje es:

-v ~/.cache/huggingface:/root/.cache/huggingface

Si sus modelos se encuentran en una ubicación distinta de la predeterminada, establezca -e HF_HOME=/su/ruta y monte esa ruta en su lugar. Para entornos sin conexión a Internet (air-gapped), descargue primero el modelo con huggingface-cli download y luego pase --model /ruta/en/el/contenedor junto con un volumen montado que contenga el directorio de pesos del modelo.

Parámetros clave del servidor vLLM

Estas banderas se pasan después del nombre de la imagen; son argumentos del proceso del servidor vLLM, no de Docker.

MarcarPredeterminadoCuándo modificarlo
--tensor-parallel-size N1Establézcalo al número de GPU para servir con múltiples GPU. El número de cabezas de atención del modelo debe ser divisible por N. Úselo junto con --gpus "device=0,1,..." enumerando exactamente N dispositivos.
--gpu-memory-utilization 0.X0.90Redúzcalo a 0,75–0,80 si experimenta errores de memoria insuficiente (OOM) o comparte la GPU con otros procesos.
--max-model-len NConfiguración del modeloLimita el tamaño de la caché KV. Resulta útil cuando el contexto predeterminado de un modelo (por ejemplo, 128 k) agotaría la VRAM. Pruebe como primer paso --max-model-len 8192 como primera reducción.
--dtype autoautomáticoSobrescriba este valor con bfloat16 o float16 si la detección automática selecciona una precisión inesperada.
--quantization awq / gptqnoneHabilite esta opción para variantes de modelos previamente cuantizados. Reduce aproximadamente a la mitad el uso de VRAM, aunque con cierto costo en calidad.
--port8000Modifíquelo si el puerto 8000 ya está ocupado en el host.

¿No está seguro de si su GPU dispone de suficiente VRAM para un modelo determinado? La Guía de requisitos de VRAM lista modelos comunes Calculadora de VRAM le permite ingresar la cuantización y el tamaño de lote. Para tomar decisiones sobre la adquisición de hardware, consulte la guía de recomendaciones de GPU.

Exposición y prueba del punto final compatible con OpenAI

Una vez que el contenedor muestre INFO: Application startup complete, la API estará disponible.

# Listar modelos cargados
curl http://localhost:8000/v1/models

# Completado de texto
curl http://localhost:8000/v1/completions 
  -H "Content-Type: application/json" 
  -d '{"model": "meta-llama/Meta-Llama-3-8B-Instruct", "prompt": "La capital de Francia es", "max_tokens": 20}'

# Completado de chat
curl http://localhost:8000/v1/chat/completions 
  -H "Content-Type: application/json" 
  -d '{"model": "meta-llama/Meta-Llama-3-8B-Instruct", "messages": [{"role": "user", "content": "Hola"}]}'

Cualquier cliente compatible con OpenAI — el SDK de Python, LangChain, LlamaIndex — funciona configurando openai base_url="http://localhost:8000/v1" y proporcionando cualquier cadena no vacía como api_key. api_key.

Ejemplo de Docker Compose

Para despliegues persistentes, un archivo Compose resulta más fácil de administrar que un comando largo de docker run docker run:

services:
  vllm:
    image: vllm/vllm-openai:latest
    runtime: nvidia
    environment:
      - HUGGING_FACE_HUB_TOKEN=${HF_TOKEN}
    volumes:
      - ~/.cache/huggingface:/root/.cache/huggingface
    ports:
      - "8000:8000"
    ipc: host
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: all
              capabilities: [gpu]
    command: >
      --model meta-llama/Meta-Llama-3-8B-Instruct
      --gpu-memory-utilization 0.90
      --max-model-len 8192

Comience con docker compose up -d. El bloque deploy.resources equivale en Compose v3 a la opción --gpus all.

Errores comunes y soluciones

ErrorCausaCorregir
error de bus o /dev/shm demasiado pequeñoEl tamaño predeterminado de Docker para /dev/shm es de 64 MB, lo cual es insuficiente para PyTorch.Agregue --ipc=host --ipc=host --shm-size=8g si no puede compartir el espacio de nombres IPC del host.
Error de CUDA: ninguna imagen de kernel disponibleLa versión de CUDA compilada en la imagen vLLM supera la versión compatible con su controlador.Ejecutar nvidia-smi Ejecute nvidia-smi).
torch.cuda.OutOfMemoryErrorLos pesos del modelo más la caché KV superan la VRAM disponible.Pruebe --max-model-len 4096 primero. Luego reduzca --gpu-memory-utilization a 0,80. Si sigue apareciendo el error OOM, utilice una variante cuantizada o una GPU más grande.
permiso denegado en el directorio de cachéEl contenedor se ejecuta como root; el directorio del host pertenece a otro usuario.Ejecutar chmod -R a+rw ~/.cache/huggingface en el host o use un volumen nombrado de Docker en lugar de un montaje vinculado (bind mount).
El contenedor inicia pero curl devuelve «connection refused»El modelo aún se está cargando o -p 8000:8000 falta.Espere la línea de registro Application startup complete . Verifique que la asignación de puertos esté presente en su comando de ejecución.

Preguntas frecuentes

¿Qué etiqueta de imagen Docker de vLLM debo usar?

vllm/vllm-openai:latest se actualiza con la versión más reciente y es adecuada para experimentación. Para entornos de producción, fije la imagen a una etiqueta de versión específica (por ejemplo, v0.6.0) para garantizar la reproducibilidad de las compilaciones. Cada etiqueta de versión publicada en Docker Hub indica la versión de CUDA contra la que se compiló, la cual debe ser menor o igual a la versión compatible con su controlador.

¿Puedo ejecutar vLLM en Docker sin GPU?

La imagen estándar requiere una GPU NVIDIA. Es posible realizar inferencia únicamente en CPU compilando vLLM desde el código fuente con VLLM_TARGET_DEVICE=cpu, aunque el rendimiento será varios órdenes de magnitud más lento y no resulta práctico para servicios. Para inferencia local exclusivamente en CPU, alternativas más adecuadas son llama.cpp u Ollama; consulte la Guía de Ollama para compararlas.

¿Cómo ejecuto un modelo restringido que requiere un token de Hugging Face?

Pase el token como variable de entorno: -e HUGGING_FACE_HUB_TOKEN=hf_yourtoken. Guárdelo en un archivo .env y haga referencia a él mediante --env-file .env para evitar que se registre en el historial de la shell. El servidor lo utiliza durante la descarga inicial del modelo; no es necesario una vez que los pesos se hayan almacenado localmente en caché.

¿Qué hace el parámetro –tensor-parallel-size y cuándo lo necesito?

La paralelización por tensores divide las matrices de pesos del modelo entre varias GPUs, permitiendo ejecutar modelos demasiado grandes para una sola tarjeta. Establézcalo al número de GPUs que desea utilizar (2 o 4 son valores comunes). Dicho número debe coincidir con la cantidad de GPUs especificada en --gpus, y el número de cabezas de atención del modelo debe ser divisible por ese valor.

¿Es rentable ejecutar vLLM en Docker comparado con una API gestionada?

Depende completamente del volumen de solicitudes. El alojamiento propio implica altos costos fijos (instancia GPU o hardware), pero un costo marginal casi nulo por solicitud. Las APIs gestionadas no tienen costos fijos, pero cobran por token. Utilice la calculadora de autohospedaje frente a API para determinar su punto de equilibrio antes de comprometerse con la infraestructura.

¿Cómo sirvo varios modelos simultáneamente?

Ejecute un contenedor por modelo, cada uno asignado a un puerto distinto del host (por ejemplo, 8000, 8001). Actualmente vLLM no admite servir múltiples modelos desde un único proceso. Coloque un proxy inverso como nginx o Caddy delante de los contenedores para enrutar las solicitudes según el nombre del modelo al puerto correspondiente.

Escrito por Mustafa Ihsan

Mustafa Ihsan es el fundador y editor de Convly.ai. Creó y mantiene la base de datos en vivo de modelos de IA del sitio, su índice de relación precio-rendimiento y sus calculadoras gratuitas para los requisitos de VRAM, los costos de las API y la economía del autohospedaje. Escribe sobre precios de modelos, resultados de pruebas comparativas y el hardware necesario para ejecutar modelos de IA localmente, y prefiere sistemáticamente los datos medidos a las afirmaciones de los fabricantes.

Scroll to Top
Featured on There's An AI For That