Hinzufügen von NVIDIA-GPU-Unterstützung zum Docker-Modell-Runner

Aktivieren Sie die GPU-Beschleunigung für Docker Model Runner mit NVIDIA CUDA-Unterstützung

Docker Model Runner ist Docker’s offizielles Tool zum lokalen Ausführen von KI-Modellen, aber die Aktivierung der NVidia-GPU-Beschleunigung in Docker Model Runner erfordert eine spezifische Konfiguration.

Im Gegensatz zu Standard-docker run-Befehlen unterstützt docker model run keine --gpus- oder -e-Flags, sodass die GPU-Unterstützung auf Ebene des Docker-Daemons und während der Runner-Installation konfiguriert werden muss.

Wenn Sie nach einer alternativen LLM-Hosting-Lösung mit einfacherer GPU-Konfiguration suchen, sollten Sie Ollama in Betracht ziehen, das eine integrierte GPU-Unterstützung und einfachere Einrichtung bietet. Docker Model Runner bietet jedoch eine bessere Integration in das Docker-Ökosystem und die OCI-Artifact-Verteilung.

Docker Model Runner mit NVIDIA-GPU-Unterstützung Dieses schöne Bild wurde von AI-Modell Flux 1 dev generiert.

Voraussetzungen

Bevor Sie die GPU-Unterstützung konfigurieren, stellen Sie sicher, dass Sie Folgendes haben:

Überprüfen Sie, ob Ihre GPU zugänglich ist:

nvidia-smi

Testen Sie den Docker-GPU-Zugriff:

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

Für weitere Docker-Befehle und Konfigurationsoptionen sehen Sie unseren Docker Cheatsheet.

Schritt 1: Konfigurieren des Docker-Daemons für den NVIDIA-Runtime

Docker Model Runner erfordert, dass der NVIDIA-Runtime als Standard-Runtime in der Docker-Daemon-Konfiguration festgelegt wird.

NVIDIA-Container-Runtime-Pfad finden

Zuerst ermitteln Sie, wo nvidia-container-runtime installiert ist:

which nvidia-container-runtime

Dies gibt typischerweise /usr/bin/nvidia-container-runtime aus. Notieren Sie sich diesen Pfad für den nächsten Schritt.

Konfigurieren des Docker-Daemons

Erstellen oder aktualisieren Sie /etc/docker/daemon.json, um NVIDIA als Standard-Runtime festzulegen:

sudo tee /etc/docker/daemon.json > /dev/null << 'EOF'
{
  "default-runtime": "nvidia",
  "runtimes": {
    "nvidia": {
      "path": "/usr/bin/nvidia-container-runtime",
      "runtimeArgs": []
    }
  }
}
EOF

Wichtig: Wenn which nvidia-container-runtime einen anderen Pfad zurückgegeben hat, aktualisieren Sie den Wert "path" in der JSON-Konfiguration entsprechend.

Docker-Dienst neu starten

Wenden Sie die Konfiguration an, indem Sie Docker neu starten:

sudo systemctl restart docker

Konfiguration überprüfen

Bestätigen Sie, dass der NVIDIA-Runtime konfiguriert ist:

docker info | grep -i runtime

Sie sollten Default Runtime: nvidia in der Ausgabe sehen.

Schritt 2: Installieren von Docker Model Runner mit GPU-Unterstützung

Docker Model Runner muss mit expliziter GPU-Unterstützung installiert oder neu installiert werden. Der Runner-Container selbst muss die CUDA-fähige Version sein.

Aktuellen Runner stoppen (falls ausgeführt)

Wenn Docker Model Runner bereits installiert ist, stoppen Sie ihn zuerst:

docker model stop-runner

Installieren/Neu installieren mit CUDA-Unterstützung

Installieren oder installieren Sie Docker Model Runner mit CUDA-GPU-Unterstützung neu:

docker model reinstall-runner --gpu cuda

Dieser Befehl:

  • Lädt die CUDA-fähige Version (docker/model-runner:latest-cuda) anstelle der CPU-Only-Version herunter
  • Konfiguriert den Runner-Container für die Verwendung des NVIDIA-Runtimes
  • Aktiviert die GPU-Beschleunigung für alle Modelle

Hinweis: Wenn Sie Docker Model Runner bereits ohne GPU-Unterstützung installiert haben, müssen Sie es mit dem Flag --gpu cuda neu installieren. Die Konfiguration des Docker-Daemons allein reicht nicht aus – der Runner-Container selbst muss die CUDA-fähige Version sein.

Verfügbare GPU-Backends

Docker Model Runner unterstützt mehrere GPU-Backends:

  • cuda - NVIDIA CUDA (am häufigsten für NVIDIA-GPUs)
  • rocm - AMD ROCm (für AMD-GPUs)
  • musa - Moore Threads MUSA
  • cann - Huawei CANN
  • auto - Automatische Erkennung (Standard, kann möglicherweise nicht korrekt funktionieren)
  • none - CPU-Only

Für NVIDIA-GPUs verwenden Sie immer explizit --gpu cuda.

Schritt 3: GPU-Zugriff überprüfen

Nach der Installation überprüfen Sie, ob Docker Model Runner auf Ihre GPU zugreifen kann.

Runner-Container-GPU-Zugriff testen

Testen Sie den GPU-Zugriff innerhalb des Docker Model Runner-Containers:

docker exec docker-model-runner nvidia-smi

Dies sollte Ihre GPU-Informationen anzeigen und bestätigen, dass der Container GPU-Zugriff hat.

Runner-Status überprüfen

Überprüfen Sie, ob Docker Model Runner aktiv ist:

docker model status

Sie sollten sehen, dass der Runner aktiv ist und llama.cpp unterstützt.

Schritt 4: Modell mit GPU testen

Führen Sie ein Modell aus und überprüfen Sie, ob es die GPU verwendet.

Modell ausführen

Starten Sie eine Modellinferenz:

docker model run ai/qwen3:14B-Q6_K "who are you?"

GPU-Nutzung in den Protokollen überprüfen

Überprüfen Sie die Docker Model Runner-Protokolle auf GPU-Bestätigung:

docker model logs | grep -i cuda

Sie sollten Nachrichten sehen, die die GPU-Nutzung anzeigen:

  • using device CUDA0 (NVIDIA GeForce RTX 4080) - GPU-Gerät erkannt
  • offloaded 41/41 layers to GPU - Modellschichten auf GPU geladen
  • CUDA0 model buffer size = 10946.13 MiB - GPU-Speicherzuweisung
  • CUDA0 KV buffer size = 640.00 MiB - Key-Value-Cache auf GPU
  • CUDA0 compute buffer size = 306.75 MiB - Compute-Puffer auf GPU

GPU-Nutzung überwachen

In einem anderen Terminal überwachen Sie die GPU-Nutzung in Echtzeit:

nvidia-smi -l 1

Sie sollten sehen, dass die GPU-Speichernutzung und -auslastung zunehmen, wenn das Modell ausgeführt wird.

Für weitere erweiterte GPU-Überwachungsoptionen und -Tools sehen Sie unseren Leitfaden zu GPU-Überwachungsanwendungen in Linux / Ubuntu.

Problembehebung

Modell verwendet weiterhin CPU

Wenn das Modell weiterhin auf der CPU läuft:

  1. Docker-Daemon-Konfiguration überprüfen:

    docker info | grep -i runtime
    

    Sollte Default Runtime: nvidia anzeigen

  2. Runner-Container-Runtime überprüfen:

    docker inspect docker-model-runner | grep -A 2 '"Runtime"'
    

    Sollte "Runtime": "nvidia" anzeigen

  3. Runner mit GPU-Unterstützung neu installieren:

    docker model reinstall-runner --gpu cuda
    
  4. Protokolle auf Fehler überprüfen:

    docker model logs | tail -50
    

GPU wird nicht erkannt

Wenn die GPU nicht erkannt wird:

  1. Überprüfen Sie, ob das NVIDIA Container Toolkit installiert ist:

    dpkg -l | grep nvidia-container-toolkit
    
  2. Testen Sie den GPU-Zugriff mit Standard-Docker:

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

    Für die Problembehandlung von Docker-Problemen beziehen Sie sich auf unseren Docker Cheatsheet.

  3. Überprüfen Sie die NVIDIA-Treiber:

    nvidia-smi
    

Leistungsprobleme

Wenn die GPU-Leistung schlecht ist:

  1. Überprüfen Sie die GPU-Auslastung:

    nvidia-smi
    

    Achten Sie auf einen hohen Prozentsatz der GPU-Auslastung

  2. Überprüfen Sie, ob die Modellschichten auf der GPU liegen:

    docker model logs | grep "offloaded.*layers to GPU"
    

    Alle Schichten sollten auf die GPU ausgelagert werden

  3. Überprüfen Sie auf Speicherprobleme:

    nvidia-smi
    

    Stellen Sie sicher, dass der GPU-Speicher nicht erschöpft ist

Best Practices

  1. GPU-Backend immer explizit angeben: Verwenden Sie --gpu cuda anstelle von --gpu auto für NVIDIA-GPUs, um eine korrekte Konfiguration sicherzustellen.

  2. Konfiguration nach Änderungen überprüfen: Überprüfen Sie immer docker info | grep -i runtime nach der Änderung der Docker-Daemon-Einstellungen.

  3. GPU-Nutzung überwachen: Verwenden Sie nvidia-smi, um die GPU-Speicher- und -Nutzung während der Modellinferenz zu überwachen. Für erweiterte Überwachungstools sehen Sie unseren Leitfaden zu GPU-Überwachungsanwendungen in Linux / Ubuntu.

  4. Protokolle regelmäßig überprüfen: Überprüfen Sie docker model logs, um sicherzustellen, dass die Modelle GPU-Beschleunigung verwenden.

  5. Geignete Modellgrößen verwenden: Stellen Sie sicher, dass Ihre GPU über ausreichend Speicher für das Modell verfügt. Verwenden Sie quantisierte Modelle (Q4, Q5, Q6, Q8) für eine bessere GPU-Speichereffizienz. Für Hilfe bei der Auswahl der richtigen GPU für Ihre KI-Arbeitslasten sehen Sie unseren Leitfaden zu Vergleich der NVidia-GPU-Spezifikationen für KI.