NVidia GPU-ondersteuning toevoegen aan Docker Model Runner

Schakel GPU-acceleratie in voor Docker Model Runner met ondersteuning voor NVIDIA CUDA

Docker Model Runner is het officiële hulpmiddel van Docker om AI-modellen lokaal uit te voeren, maar NVidia GPU-acceleratie inschakelen in Docker Model Runner vereist specifieke configuratie.

In tegenstelling tot standaard docker run-opdrachten, ondersteunt docker model run geen --gpus of -e-vlaggen, dus GPU-ondersteuning moet worden geconfigureerd op de Docker-daemon-niveau en tijdens de installatie van de runner.

Als je op zoek bent naar een alternatieve oplossing voor het hosten van LLM’s met eenvoudigere GPU-configuratie, overweeg dan Ollama, die ingebouwde GPU-ondersteuning en eenvoudigere installatie biedt. Docker Model Runner biedt echter betere integratie met de Docker-ecosysteem en OCI-artefactdistributie.

Docker Model Runner met NVIDIA GPU-ondersteuning Deze mooie afbeelding is gegenereerd door AI model Flux 1 dev.

Voorwaarden

Voordat je GPU-ondersteuning configureert, zorg er dan voor dat je hebt:

Controleer of je GPU beschikbaar is:

nvidia-smi

Test Docker GPU-toegang:

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

Voor meer Docker-opdrachten en configuratieopties, zie onze Docker Cheatsheet.

Stap 1: Configureer Docker-daemon voor NVIDIA-runtime

Docker Model Runner vereist dat de NVIDIA-runtime als de standaardruntime wordt ingesteld in de Docker-daemonconfiguratie.

Zoek de locatie van NVIDIA Container Runtime

Eerst, bepaal waar nvidia-container-runtime is geïnstalleerd:

which nvidia-container-runtime

Dit geeft meestal /usr/bin/nvidia-container-runtime weer. Noteer deze locatie voor de volgende stap.

Configureer Docker-daemon

Maak of pas /etc/docker/daemon.json aan om NVIDIA als de standaardruntime in te stellen:

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

Belangrijk: Als which nvidia-container-runtime een andere locatie teruggeeft, pas dan de "path"-waarde in de JSON-configuratie daarop aan.

Herstart de Docker-service

Pas de configuratie aan door Docker opnieuw te starten:

sudo systemctl restart docker

Controleer de configuratie

Bevestig dat de NVIDIA-runtime is geconfigureerd:

docker info | grep -i runtime

Je moet Default Runtime: nvidia zien in de uitvoer.

Stap 2: Installeer Docker Model Runner met GPU-ondersteuning

Docker Model Runner moet worden geïnstalleerd of opnieuw geïnstalleerd met expliciete GPU-ondersteuning. Het runner-container zelf moet de CUDA-geenablede versie zijn.

Stop huidige runner (indien actief)

Als Docker Model Runner al is geïnstalleerd, stop het dan eerst:

docker model stop-runner

Installeer/Herinstalleer met CUDA-ondersteuning

Installeer of herinstalleer Docker Model Runner met CUDA GPU-ondersteuning:

docker model reinstall-runner --gpu cuda

Deze opdracht:

  • Haalt de CUDA-geenablede versie (docker/model-runner:latest-cuda) op in plaats van de CPU-only-versie
  • Stelt de runner-container in om de NVIDIA-runtime te gebruiken
  • Schakelt GPU-acceleratie in voor alle modellen

Opmerking: Als je Docker Model Runner al hebt geïnstalleerd zonder GPU-ondersteuning, moet je het opnieuw installeren met de --gpu cuda-vlag. Alleen het configureren van de Docker-daemon is niet voldoende — de runner-container zelf moet de CUDA-geenablede versie zijn.

Beschikbare GPU-backends

Docker Model Runner ondersteunt meerdere GPU-backends:

  • cuda - NVIDIA CUDA (meest gebruikt voor NVIDIA GPUs)
  • rocm - AMD ROCm (voor AMD GPUs)
  • musa - Moore Threads MUSA
  • cann - Huawei CANN
  • auto - Automatische detectie (standaard, werkt mogelijk niet correct)
  • none - Alleen CPU

Voor NVIDIA GPUs, gebruik altijd --gpu cuda expliciet.

Stap 3: Controleer GPU-toegang

Na de installatie, controleer of Docker Model Runner toegang heeft tot je GPU.

Controleer GPU-toegang vanuit de runner-container

Test GPU-toegang vanuit de Docker Model Runner-container:

docker exec docker-model-runner nvidia-smi

Dit moet je GPU-informatie tonen, wat bevestigt dat de container GPU-toegang heeft.

Controleer runner-status

Controleer of Docker Model Runner actief is:

docker model status

Je moet zien dat de runner actief is met llama.cpp-ondersteuning.

Stap 4: Test model met GPU

Voer een model uit en controleer of het de GPU gebruikt.

Voer een model uit

Start een modelinference:

docker model run ai/qwen3:14B-Q6_K "wie ben jij?"

Controleer GPU-gebruik in logbestanden

Controleer de Docker Model Runner-logbestanden op GPU-bevestiging:

docker model logs | grep -i cuda

Je moet berichten zien die aangeven dat de GPU wordt gebruikt:

  • using device CUDA0 (NVIDIA GeForce RTX 4080) - GPU-apparaat gedetecteerd
  • offloaded 41/41 layers to GPU - Modellagen geladen op GPU
  • CUDA0 model buffer size = 10946.13 MiB - GPU-geheugenallocatie
  • CUDA0 KV buffer size = 640.00 MiB - Sleutel-waarde cache op GPU
  • CUDA0 compute buffer size = 306.75 MiB - Rekenbuffer op GPU

Monitor GPU-gebruik

In een andere terminal, monitor het GPU-gebruik in real-time:

nvidia-smi -l 1

Je moet zien dat het GPU-geheugengebruik en de uitvoering stijgen wanneer het model draait.

Voor meer geavanceerde GPU-monitoringopties en tools, zie onze gids over GPU-monitoringtoepassingen in Linux / Ubuntu.

Probleemoplossing

Model gebruikt nog steeds CPU

Als het model nog steeds op de CPU draait:

  1. Controleer Docker-daemonconfiguratie:

    docker info | grep -i runtime
    

    Moet Default Runtime: nvidia tonen

  2. Controleer runtime van runner-container:

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

    Moet "Runtime": "nvidia" tonen

  3. Herinstalleer runner met GPU-ondersteuning:

    docker model reinstall-runner --gpu cuda
    
  4. Controleer logbestanden op fouten:

    docker model logs | tail -50
    

GPU niet gedetecteerd

Als de GPU niet wordt gedetecteerd:

  1. Controleer of NVIDIA Container Toolkit is geïnstalleerd:

    dpkg -l | grep nvidia-container-toolkit
    
  2. Test GPU-toegang met standaard Docker:

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

    Voor het oplossen van Dockerproblemen, zie onze Docker Cheatsheet.

  3. Controleer NVIDIA-drivers:

    nvidia-smi
    

Prestatieproblemen

Als de GPU-prestaties slecht zijn:

  1. Controleer GPU-gebruik:

    nvidia-smi
    

    Kijk naar het percentage GPU-gebruik

  2. Controleer of modellagen op GPU zijn:

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

    Alle lagen moeten worden overgedragen naar GPU

  3. Controleer op geheugenproblemen:

    nvidia-smi
    

    Zorg ervoor dat het GPU-geheugen niet is opgebruikt

Beste praktijken

  1. Specificeer altijd het GPU-backend expliciet: Gebruik --gpu cuda in plaats van --gpu auto voor NVIDIA GPUs om de juiste configuratie te garanderen.

  2. Controleer configuratie na wijzigingen: Controleer altijd docker info | grep -i runtime na wijzigingen in de Docker-daemoninstellingen.

  3. Monitor GPU-gebruik: Gebruik nvidia-smi om GPU-geheugen en uitvoering te monitoren tijdens modelinference. Voor geavanceerde monitoringtools, zie onze gids over GPU-monitoringtoepassingen in Linux / Ubuntu.

  4. Controleer logbestanden regelmatig: Bekijk docker model logs om te controleren of modellen GPU-acceleratie gebruiken.

  5. Gebruik geschikte modelgrootte: Zorg ervoor dat je GPU voldoende geheugen heeft voor het model. Gebruik gequantiseerde modellen (Q4, Q5, Q6, Q8) voor betere GPU-geheugenefficiëntie. Voor hulp bij het kiezen van de juiste GPU voor je AI-belastingen, zie onze gids over Vergelijken van NVidia GPU-specs geschiktheid voor AI.