Dodanie obsługi GPU firmy NVIDIA do Docker Model Runner

Włącz przyspieszenie GPU dla Docker Model Runner z obsługą NVIDIA CUDA

Docker Model Runner to narzędzie oficjalne Dockera do uruchamiania modeli AI lokalnie, ale włączanie przyspieszenia GPU od firmy NVidia w Docker Model Runner wymaga konkretnej konfiguracji.

Oprócz standardowych poleceń docker run, polecenie docker model run nie obsługuje flag --gpus ani -e, więc wsparcie dla GPU musi być skonfigurowane na poziomie demona Docker i podczas instalacji runnera.

Jeśli szukasz alternatywnego rozwiązania do hostowania LLM z łatwiejszą konfiguracją GPU, rozważ Ollama, które ma wbudowane wsparcie dla GPU i prostsze ustawienie. Jednak Docker Model Runner oferuje lepszą integrację z ekosystemem Docker i dystrybucją artefaktów OCI.

Docker Model Runner z wsparciem dla GPU od firmy NVIDIA To piękne zdjęcie zostało wygenerowane przez model AI Flux 1 dev.

Wymagania wstępne

Przed skonfigurowaniem wsparcia dla GPU upewnij się, że masz:

Sprawdź, czy GPU jest dostępne:

nvidia-smi

Testuj dostęp do GPU w Dockerze:

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

Aby uzyskać więcej poleceń Docker i opcji konfiguracji, zobacz nasz Docker Cheatsheet.

Krok 1: Skonfiguruj demona Docker dla środowiska uruchomieniowego NVIDIA

Docker Model Runner wymaga, aby środowisko uruchomieniowe NVIDIA było ustawione jako domyślne w konfiguracji demona Docker.

Znajdź ścieżkę do środowiska uruchomieniowego NVIDIA Container Runtime

Najpierw znajdź, gdzie został zainstalowany nvidia-container-runtime:

which nvidia-container-runtime

Zwykle zwraca /usr/bin/nvidia-container-runtime. Zanotuj tę ścieżkę dla następnego kroku.

Skonfiguruj demona Docker

Utwórz lub zaktualizuj /etc/docker/daemon.json, aby ustawić NVIDIA jako domyślne środowisko uruchomieniowe:

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

Ważne: Jeśli which nvidia-container-runtime zwrócił inną ścieżkę, zaktualizuj wartość "path" w konfiguracji JSON odpowiednio.

Uruchom ponownie usługę Docker

Zastosuj konfigurację, uruchamiając ponownie usługę Docker:

sudo systemctl restart docker

Potwierdź konfigurację

Potwierdź, że środowisko uruchomieniowe NVIDIA zostało skonfigurowane:

docker info | grep -i runtime

W wyniku powinien zostać wyświetlony Default Runtime: nvidia.

Krok 2: Zainstaluj Docker Model Runner z wsparciem dla GPU

Docker Model Runner musi zostać zainstalowany lub ponownie zainstalowany z jawnym wsparciem dla GPU. Sam kontener runnera musi być wersją z włączonym CUDA.

Zatrzymaj bieżącego runnera (jeśli działa)

Jeśli Docker Model Runner jest już zainstalowany, zatrzymaj go najpierw:

docker model stop-runner

Zainstaluj/ponownie zainstaluj z wsparciem CUDA

Zainstaluj lub ponownie zainstaluj Docker Model Runner z wsparciem dla GPU CUDA:

docker model reinstall-runner --gpu cuda

To polecenie:

  • Pobiera wersję z włączonym CUDA (docker/model-runner:latest-cuda) zamiast wersji tylko dla CPU
  • Konfiguruje kontener runnera do użycia środowiska uruchomieniowego NVIDIA
  • Włącza przyspieszenie GPU dla wszystkich modeli

Uwaga: Jeśli już zainstalowałeś Docker Model Runner bez wsparcia dla GPU, musisz go ponownie zainstalować z flagą --gpu cuda. Proste skonfigurowanie demona Docker nie wystarczy — sam kontener runnera musi być wersją z włączonym CUDA.

Dostępne backendy GPU

Docker Model Runner obsługuje wiele backendów GPU:

  • cuda - NVIDIA CUDA (najczęstszy dla GPU od firmy NVIDIA)
  • rocm - AMD ROCm (dla GPU od firmy AMD)
  • musa - Moore Threads MUSA
  • cann - Huawei CANN
  • auto - automatyczne wykrywanie (domyślne, może nie działać poprawnie)
  • none - tylko CPU

Dla GPU od firmy NVIDIA zawsze używaj jawnej flagi --gpu cuda.

Krok 3: Potwierdź dostęp do GPU

Po zainstalowaniu, potwierdź, że Docker Model Runner może uzyskać dostęp do GPU.

Sprawdź dostęp do GPU w kontenerze runnera

Testuj dostęp do GPU z wnętrza kontenera Docker Model Runner:

docker exec docker-model-runner nvidia-smi

To powinno wyświetlić informacje o GPU, potwierdzając, że kontener ma dostęp do GPU.

Sprawdź status runnera

Potwierdź, że Docker Model Runner działa:

docker model status

Powinieneś zobaczyć, że runner jest aktywny z obsługą llama.cpp.

Krok 4: Testuj model z użyciem GPU

Uruchom model i potwierdź, że korzysta z GPU.

Uruchom model

Uruchom wnioskowanie modelu:

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

Potwierdź użycie GPU w logach

Sprawdź logi Docker Model Runner na potwierdzenie użycia GPU:

docker model logs | grep -i cuda

Powinieneś zobaczyć komunikaty wskazujące na użycie GPU:

  • using device CUDA0 (NVIDIA GeForce RTX 4080) - wykryto urządzenie GPU
  • offloaded 41/41 layers to GPU - warstwy modelu zostały załadowane na GPU
  • CUDA0 model buffer size = 10946.13 MiB - alokacja pamięci GPU
  • CUDA0 KV buffer size = 640.00 MiB - pamięć cache na GPU
  • CUDA0 compute buffer size = 306.75 MiB - bufor obliczeniowy na GPU

Monitoruj użycie GPU

W innym terminalu monitoruj użycie GPU w czasie rzeczywistym:

nvidia-smi -l 1

Powinieneś zobaczyć wzrost użycia pamięci i wykorzystania GPU, gdy model będzie działał.

Dla zaawansowanych opcji monitorowania GPU i narzędzi, zobacz nasz przewodnik po aplikacjach do monitorowania GPU w systemach Linux / Ubuntu.

Rozwiązywanie problemów

Model nadal korzysta z CPU

Jeśli model nadal działa na CPU:

  1. Potwierdź konfigurację demona Docker:

    docker info | grep -i runtime
    

    Powinno to pokazać Default Runtime: nvidia

  2. Sprawdź środowisko uruchomieniowe kontenera runnera:

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

    Powinno to pokazać "Runtime": "nvidia"

  3. Ponownie zainstaluj runnera z wsparciem dla GPU:

    docker model reinstall-runner --gpu cuda
    
  4. Sprawdź logi na błędy:

    docker model logs | tail -50
    

GPU nie zostało wykryte

Jeśli GPU nie zostało wykryte:

  1. Potwierdź, że zainstalowano NVIDIA Container Toolkit:

    dpkg -l | grep nvidia-container-toolkit
    
  2. Testuj dostęp do GPU za pomocą standardowego Docker:

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

    Dla rozwiązywania problemów z Dockerem, odnies się do naszego Docker Cheatsheet.

  3. Sprawdź sterowniki NVIDIA:

    nvidia-smi
    

Problemy z wydajnością

Jeśli wydajność GPU jest niska:

  1. Sprawdź wykorzystanie GPU:

    nvidia-smi
    

    Szukaj wysokiego procentu wykorzystania GPU

  2. Potwierdź, że warstwy modelu są na GPU:

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

    Wszystkie warstwy powinny zostać załadowane na GPU

  3. Sprawdź problemy z pamięcią:

    nvidia-smi
    

    Upewnij się, że pamięć GPU nie jest wyczerpana

Najlepsze praktyki

  1. Zawsze jawnie określ backend GPU: Dla GPU od firmy NVIDIA używaj --gpu cuda zamiast --gpu auto, aby zapewnić poprawną konfigurację.

  2. Potwierdzaj konfigurację po zmianach: Zawsze sprawdzaj docker info | grep -i runtime po zmianach w konfiguracji demona Docker.

  3. Monitoruj użycie GPU: Używaj nvidia-smi, aby monitorować użycie pamięci i wykorzystanie GPU podczas wnioskowania modelu. Dla zaawansowanych narzędzi monitorowania, zobacz nasz przewodnik po aplikacjach do monitorowania GPU w systemach Linux / Ubuntu.

  4. Sprawdzaj logi regularnie: Przeglądaj docker model logs, aby upewnić się, że modele korzystają z przyspieszenia GPU.

  5. Używaj odpowiednich rozmiarów modeli: Upewnij się, że GPU ma wystarczającą ilość pamięci dla modelu. Używaj modeli z kwantyzacją (Q4, Q5, Q6, Q8) dla lepszej efektywności pamięci GPU. Dla pomocy w wyborze odpowiedniego GPU dla obciążeń AI, zobacz nasz przewodnik po porównaniu specyfikacji GPU od firmy NVIDIA odpowiednich dla AI.

Przydatne linki