Skip to content
BotServBotServ
DockerGPUPassthroughNvidiaROCmOllama

GPU Passthrough en Docker

Pasar GPUs Nvidia y AMD a contenedores Docker. Usa Ollama, PyTorch y ROCm en contenedores.

S

schutzgeist

3 min read
GPU Passthrough en Docker

GPU Passthrough en Docker

Qué cubre este artículo sobre GPU Passthrough en Docker

  • Cómo pasar GPUs a contenedores Docker.
  • Diferencias entre Nvidia y AMD.
  • Configuración para Ollama, PyTorch y otras herramientas de IA.
  • ROCm, CUDA y Container Runtime.
  • Errores comunes y soluciones.

Introducción: GPU Passthrough en Docker

Aplicaciones de IA como Ollama, vLLM o PyTorch se benefician enormemente de una GPU. Docker ofrece formas de pasar la GPU del host directamente a los contenedores, permitiendo que múltiples cargas de trabajo GPU se ejecuten aisladas entre sí. Nvidia y AMD tienen requisitos diferentes, pero ambas funcionan con Docker cuando se instalan los drivers y runtimes correctos.

Este artículo muestra cómo poner GPUs de Nvidia y AMD disponibles en contenedores Docker y evitar obstáculos típicos.

Términos clave

  • GPU Passthrough: Pasar una GPU física a un contenedor.
  • CUDA: Plataforma de Nvidia para computación paralela.
  • ROCm: Plataforma de código abierto de AMD para GPU Computing.
  • Container Runtime: Entorno de ejecución que ejecuta el contenedor.
  • Nvidia Container Toolkit: Extensión que permite GPUs de Nvidia en Docker.
  • Device Mapping: Asignación de archivos de dispositivo a un contenedor.
  • Privileged: Contenedor con acceso completo al host.
  • Compute-Only: GPU se utiliza solo para cálculos.

GPU Nvidia en Docker

Requisitos previos

  • Drivers oficiales de Nvidia instalados.
  • Docker y Docker Compose instalados.
  • Nvidia Container Toolkit.

Instalar Nvidia Container Toolkit

distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/libnvidia-container/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list | \
  sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit
sudo systemctl restart docker

Ollama con GPU

services:
  ollama:
    image: ollama/ollama
    container_name: ollama
    runtime: nvidia
    environment:
      - NVIDIA_VISIBLE_DEVICES=all
    volumes:
      - ollama-data:/root/.ollama
    restart: unless-stopped

volumes:
  ollama-data:

O usando el comando docker run:

docker run -d --name ollama --gpus all -v ollama-data:/root/.ollama ollama/ollama

Verificar uso de GPU

docker exec -it ollama nvidia-smi

GPU AMD en Docker

Requisitos previos

  • GPU AMD con soporte ROCm.
  • Drivers ROCm instalados.
  • Distribución Linux compatible, generalmente Ubuntu.

Ollama con ROCm

services:
  ollama:
    image: ollama/ollama:rocm
    container_name: ollama
    devices:
      - /dev/kfd
      - /dev/dri
    environment:
      - HSA_OVERRIDE_GFX_VERSION=11.0.0
    volumes:
      - ollama-data:/root/.ollama
    restart: unless-stopped

volumes:
  ollama-data:

Verificar uso de GPU

docker exec -it ollama rocm-smi

Seleccionar una GPU específica

docker run --gpus '"device=0,1"' -d ollama/ollama

En Compose:

environment:
  - NVIDIA_VISIBLE_DEVICES=0,1

Problemas de rendimiento

  • Runtime incorrecto: El contenedor no usa nvidia.
  • Errores de driver: Los drivers de Nvidia y el toolkit no coinciden.
  • Versión de ROCm: No todas las GPUs de AMD tienen soporte oficial.
  • Límite de memoria: El contenedor no tiene acceso a suficiente VRAM.
  • Fallback a CPU: Ollama recurre a CPU cuando la GPU no se detecta.
  • Conflictos de Mesa: Los drivers de gráficos pueden chocar con drivers de computación.

Seguridad

  • --gpus all expone todas las GPUs.
  • Asigna GPUs específicas intencionalmente.
  • Usa privileged solo cuando sea absolutamente necesario.
  • Restringe imágenes de contenedor a fuentes confiables.

Enlaces e información adicional

Preguntas frecuentes: GPU Passthrough

¿Necesito una GPU para Ollama? No, pero es muy recomendable para modelos grandes o respuestas fluidas.

¿Funciona con cualquier GPU de Nvidia? Con casi todas las GPUs actuales de Nvidia que tengan soporte CUDA.

¿Puedo usar mi GPU de AMD? Sí, si soporta ROCm o si funciona con variables de entorno como HSA_OVERRIDE_GFX_VERSION.

¿Debo instalar el driver del host en el contenedor? No, el driver del host se pasa a través del Container Toolkit.

¿Cómo verifico si la GPU se detecta en el contenedor? Usa nvidia-smi o rocm-smi dentro del contenedor.

Fuentes y lectura adicional

Resumen: GPU Passthrough en Docker

GPU Passthrough en Docker permite ejecutar Ollama y otras herramientas de IA en hardware dedicado sin afectar el sistema operativo del host. Nvidia requiere el Container Toolkit, AMD necesita ROCm y los archivos de dispositivo correctos. Lo importante es tener runtimes correctas, versiones de drivers compatibles y asignación deliberada de GPUs. Si logras ejecutar nvidia-smi o rocm-smi dentro del contenedor, puedes estar seguro de que la GPU se pasa correctamente.

Volver al blog
Share:

Entradas relacionadas