Skip to content
BotServBotServ
DockerGPUNVIDIAROCmAMD

Usar GPU en Docker

Integra GPUs NVIDIA y AMD en contenedores Docker. Container Toolkit, runtime, Compose y solución de problemas.

S

schutzgeist

3 min read
Usar GPU en Docker

Usar GPU en Docker

Qué cubre este artículo sobre GPU en Docker

  • Por qué las GPUs en Docker son importantes.
  • Instalar NVIDIA Container Toolkit.
  • ROCm y GPUs AMD.
  • Configuración de Docker Run y Compose.
  • Solucionar problemas de detección de GPU.

Introducción: Usar GPU en Docker

Muchas aplicaciones de IA y computación requieren una GPU. Docker aísla las aplicaciones, pero gracias a las tecnologías modernas de contenedores es posible pasar GPUs a través de contenedores. NVIDIA ofrece NVIDIA Container Toolkit para esto, mientras que AMD apuesta por ROCm. Cuando integras correctamente GPUs en Docker, puedes ejecutar aplicaciones en contenedor con aceleración gráfica completa.

Este artículo explica cómo poner GPUs NVIDIA y AMD disponibles en Docker.

Conceptos clave

  • NVIDIA Container Toolkit: Controladores y runtime para Docker.
  • ROCm: Plataforma de código abierto de AMD para computación en GPU.
  • runtime: Runtime del contenedor que expone la GPU.
  • driver: Controlador en el host.
  • CUDA: Plataforma de computación de NVIDIA.
  • HIP: Equivalente de AMD a CUDA.
  • /dev/nvidia0: Archivo de dispositivo NVIDIA.
  • /dev/dri: Archivos de dispositivo AMD/Intel.
  • capabilities: Capacidades del dispositivo GPU.

Preparar NVIDIA

  1. Instala el controlador NVIDIA.
  2. Instala NVIDIA Container Toolkit:
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | \
  sudo tee /etc/apt/sources.list.d/nvidia-docker.list
sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker

Probar NVIDIA

docker run --rm --gpus all nvidia/cuda:12-base nvidia-smi

Docker Run con GPU

docker run --rm --gpus all \
  -v ollama:/root/.ollama \
  -p 11434:11434 \
  ollama/ollama

Docker Compose para NVIDIA

services:
  ollama:
    image: ollama/ollama
    ports:
      - "11434:11434"
    volumes:
      - ollama:/root/.ollama
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: 1
              capabilities: [gpu]

volumes:
  ollama:

Preparar AMD/ROCm

  1. Instala el controlador AMDGPU.
  2. Instala los paquetes ROCm.
  3. Inicia contenedores con /dev/dri y /dev/kfd.

Probar AMD

docker run --rm --device /dev/kfd --device /dev/dri \
  ollama/ollama:rocm ollama --version

Docker Compose para AMD

services:
  ollama:
    image: ollama/ollama:rocm
    devices:
      - /dev/kfd
      - /dev/dri
    volumes:
      - ollama:/root/.ollama
    ports:
      - "11434:11434"

volumes:
  ollama:

Qué GPUs se soportan

NVIDIA

  • Maxwell y más nuevas.
  • Volta, Turing, Ampere, Ada Lovelace.
  • Soporte completo de CUDA.

AMD

  • RDNA y RDNA2 con ROCm.
  • Algunos modelos Radeon más antiguos.
  • No todas las tarjetas consumer tienen soporte oficial.

Intel

  • Arc y algunas GPUs integradas.
  • El soporte crece, pero aún es menos común.

Verificar GPU dentro del contenedor

docker exec ollama nvidia-smi

O en AMD:

docker exec ollama rocminfo

Solución de problemas

  • nvidia-smi no encontrado: Toolkit no instalado.
  • Docker no detecta GPU: Runtime no configurado.
  • Controlador muy antiguo: Actualiza el controlador NVIDIA.
  • Error en ROCm: Verifica la versión correcta de ROCm.
  • Sin /dev/dri: Revisa el controlador o permisos.
  • OOM: Ten en cuenta el límite de VRAM del contenedor.

Consejos

  • Mantén el controlador y el toolkit actualizados.
  • Usa imágenes base con la versión correcta de CUDA/ROCm.
  • Verifica nvidia-smi en el host primero.
  • Para Intel busca imágenes específicas.
  • Adapta la sintaxis de Compose según tu versión de Docker.

Enlaces e información adicional

FAQ: GPU en Docker

¿Necesito controladores especiales dentro del contenedor? No, se utiliza el controlador del host. El toolkit se encarga de exponerlo.

¿Funciona GPU en Docker en Windows? Solo con WSL2 y GPUs NVIDIA, no de forma nativa.

¿Cómo verifico la GPU dentro del contenedor? Con nvidia-smi o rocminfo.

¿Por qué Docker no detecta la GPU? Generalmente falta NVIDIA Container Toolkit o la configuración de runtime de Docker.

¿Puedo asignar múltiples GPUs? Sí, con --gpus '"device=0,1"' o count: all.

Fuentes y lecturas adicionales

Resumen: Usar GPU en Docker

Las GPUs se pueden exponer cómodamente en contenedores Docker mediante NVIDIA Container Toolkit o ROCm. NVIDIA ofrece el soporte más maduro, mientras que AMD con ROCm también funciona bien en tarjetas compatibles. Lo importante es tener controladores del host actualizados, configurar correctamente el runtime y usar los ajustes adecuados en Compose. Cuando logres que nvidia-smi o rocminfo funcione dentro del contenedor, podrás ejecutar aplicaciones aceleradas por GPU como Ollama en Docker.

Volver al blog
Share:

Entradas relacionadas