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 allgibt alle GPUs frei.- Einzelne GPUs gezielt zuweisen.
- Privileged nur verwenden, wenn unbedingt nötig.
- Container-Images auf vertrauenswürdige Quellen beschränken.
Weiterführende Links und Infos
- BotServ.de Ollama Befehle
- BotServ.de Ollama Performance
- BotServ.de Docker Sicherheit
- BotServ.de Ollama Performance
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
- Nvidia Container Toolkit: https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/
- ROCm Docker: https://rocmdocs.amd.com/
- Ollama Docker: https://hub.docker.com/r/ollama/ollama
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.


