Skip to content
BotServBotServ
DockerGPUPassthroughNvidiaROCmOllama

GPU-Passthrough in Docker

Nvidia und AMD GPUs an Docker-Container durchreichen. Ollama, PyTorch und ROCm im Container nutzen.

S

schutzgeist

2 min read
GPU-Passthrough in Docker

GPU-Passthrough in Docker

Was dieser Artikel über GPU-Passthrough in Docker behandelt

  • Wie GPUs an Docker-Container durchgereicht werden.
  • Unterschied zwischen Nvidia und AMD.
  • Konfiguration für Ollama, PyTorch und andere KI-Tools.
  • ROCm, CUDA und Container-Runtime.
  • Typische Fehler und Lösungen.

Einleitung: GPU-Passthrough in Docker

KI-Anwendungen wie Ollama, vLLM oder PyTorch profitieren massiv von einer GPU. Docker bietet Möglichkeiten, die GPU eines Hosts direkt an Container durchzureichen, sodass mehrere GPU-Workloads voneinander isoliert laufen. Nvidia und AMD haben unterschiedliche Voraussetzungen, aber beide funktionieren mit Docker, wenn die passenden Treiber und Runtimes installiert sind.

Dieser Artikel zeigt, wie man Nvidia- und AMD-GPUs in Docker-Container verfügbar macht und typische Stolpersteine vermeidet.

Wichtige Begriffe

  • GPU-Passthrough: Durchreichen einer physischen GPU in einen Container.
  • CUDA: Nvidias Plattform für paralleles Rechnen.
  • ROCm: AMDs Open-Source-Plattform für GPU-Computing.
  • Container Runtime: Laufzeitumgebung, die den Container ausführt.
  • Nvidia Container Toolkit: Erweiterung, die Nvidia-GPUs in Docker ermöglicht.
  • Device Mapping: Vergeben von Gerätedateien an einen Container.
  • Privileged: Container mit vollem Hostzugriff.
  • Compute-Only: GPU wird nur für Berechnungen genutzt.

Nvidia GPU in Docker

Voraussetzungen

  • Offizielle Nvidia-Treiber installiert.
  • Docker und Docker Compose installiert.
  • Nvidia Container Toolkit.

Nvidia Container Toolkit installieren

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 mit 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:

Oder im docker run Befehl:

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

GPU-Nutzung prüfen

docker exec -it ollama nvidia-smi

AMD GPU in Docker

Voraussetzungen

  • AMD GPU mit ROCm-Support.
  • ROCm-Treiber installiert.
  • Passende Linux-Distribution, meist Ubuntu.

Ollama mit 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:

GPU-Nutzung prüfen

docker exec -it ollama rocm-smi

Bestimmte GPU auswählen

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

In Compose:

environment:
  - NVIDIA_VISIBLE_DEVICES=0,1

Performance-Probleme

  • Falsche Runtime: Container nutzt nicht nvidia.
  • Treiberfehler: Nvidia-Treiber und Toolkit passen nicht zusammen.
  • ROCm-Version: Nicht jede AMD-GPU wird offiziell unterstützt.
  • Speicherlimit: Container hat keinen Zugriff auf ausreichend VRAM.
  • CPU-Fallback: Ollama fällt auf CPU zurück, wenn GPU nicht erkannt wird.
  • Mesa-Konflikte: Grafiktreiber können mit Compute-Treibern kollidieren.

Sicherheit

  • --gpus all gibt alle GPUs frei.
  • Einzelne GPUs gezielt zuweisen.
  • Privileged nur verwenden, wenn unbedingt nötig.
  • Container-Images auf vertrauenswürdige Quellen beschränken.

FAQ: GPU-Passthrough

Brauche ich für Ollama eine GPU? Nein, aber für grosse Modelle oder flüssige Antworten sehr empfohlen.

Funktioniert jede Nvidia-GPU? Fast alle aktuellen Nvidia-GPUs mit CUDA-Unterstützung.

Kann ich meine AMD-GPU nutzen? Ja, wenn sie ROCm unterstützt oder mit Umgebungsvariablen wie HSA_OVERRIDE_GFX_VERSION läuft.

Muss ich den Host-Treiber im Container installieren? Nein, der Host-Treiber wird über das Container Toolkit durchgereicht.

Wie prüfe ich, ob die GPU im Container erkannt wird? Mit nvidia-smi oder rocm-smi innerhalb des Containers.

Quellen und weiterführende Literatur

Zusammenfassung: GPU-Passthrough in Docker

GPU-Passthrough in Docker ermöglicht es, Ollama und andere KI-Tools auf dedizierter Hardware laufen zu lassen, ohne das Betriebssystem des Hosts zu beeinträchtigen. Nvidia erfordert das Container Toolkit, AMD braucht ROCm und die richtigen Gerätedateien. Wichtig sind korrekte Runtimes, passende Treiberversionen und gezielte Zuweisung von GPUs. Wer nvidia-smi oder rocm-smi im Container erfolgreich aufruft, kann sicher sein, dass die GPU ordnungsgemäss durchgereicht wird.

Zurück zum KI Blog
Share:

Ähnliche Beiträge