İçeriğe geç

Ürün belgeleriGPU sunucular

GPU'nuzu Docker konteynerlerinde kullanın: NVIDIA, AMD ve Intel

Docker konteynerlerine GPU erişimi verin: NVIDIA Container Toolkit'i kurun, AMD aygıtları /dev/kfd ve /dev/dri'yi aktarın, Docker Compose'da GPU ayırın.

  • Orta
  • 20 dk okuma
  • Güncellendi
Bu sayfada
  1. Başlamadan önce
  2. NVIDIA: NVIDIA Container Toolkit'i kurun
  3. Docker Compose'da NVIDIA GPU'ları
  4. AMD: ROCm aygıtlarını aktarın
  5. Intel: render aygıtlarını aktarın
  6. Sorun giderme
  7. Sonraki adımlar

Docker konteynerleri ana makinenin aygıtlarından yalıtılmıştır; bu yüzden bir GPU bilinçli olarak aktarılmalıdır. Nasıl yapılacağı GPU üreticisine bağlıdır: NVIDIA NVIDIA Container Toolkit'i kullanır, AMD ve Intel GPU'ları aygıt dosyaları olarak aktarılır. Bu rehber ikisini de kurar ve Compose söz dizimini gösterir.

Başlamadan önce

NVIDIA: NVIDIA Container Toolkit'i kurun

NVIDIA deposunu imza anahtarıyla ekleyin, ardından araç setini kurun:

Bash
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit

NVIDIA'nın kılavuzu dört araç seti paketinin tam sürümünü sabitler; nvidia-container-toolkit paketini sürüm vermeden kurmak güncel sürümü bağımlılıklarıyla birlikte kurar.

NVIDIA çalışma zamanını Docker'a kaydedin ve Docker'ı yeniden başlatın:

Bash
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker

NVIDIA'nın örnek iş yüküyle doğrulayın:

Bash
sudo docker run --rm --runtime=nvidia --gpus all ubuntu nvidia-smi

Konteyner ana makinedekiyle aynı nvidia-smi tablosunu yazar.

Docker Compose'da NVIDIA GPU'ları

GPU'yu hizmet tanımında ayırın:

YAML
services:
  app:
    image: ollama/ollama
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: 1
              capabilities: [gpu]

Hizmete tüm GPU'ları vermek için count: all kullanın.

AMD: ROCm aygıtlarını aktarın

AMD GPU'ları iki aygıt yolu ister: /dev/kfd (hesaplama arayüzü) ve /dev/dri (GPU başına bir düğüm). AMD'nin örneği:

Bash
docker run -it --rm --device /dev/kfd --device /dev/dri --security-opt seccomp=unconfined rocm/rocm-terminal bash

Konteynerin içinde rocminfo GPU'yu listeler. --security-opt seccomp=unconfined isteğe bağlıdır; AMD bunu numactl kullanan HPC iş yükleri için önerir.

Compose'da:

YAML
services:
  app:
    image: rocm/rocm-terminal
    devices:
      - /dev/kfd
      - /dev/dri

Intel: render aygıtlarını aktarın

Intel GPU'larına /dev/dri üzerinden ulaşılır. Onu aktarın ve GPU'nuz için Intel'in hesaplama veya medya çalışma zamanını içeren bir imaj kullanın:

Bash
docker run --rm --device /dev/dri ubuntu ls -l /dev/dri

Sorun giderme

could not select device driver "" with capabilities: [[gpu]]. Docker NVIDIA çalışma zamanını tanımıyor. sudo nvidia-ctk runtime configure --runtime=docker çalıştırın ve Docker'ı yeniden başlatın.

nvidia-container-cli: initialization error. Ana makinedeki NVIDIA sürücüsü çalışmıyor. Önce ana makinede nvidia-smi çıktısını kontrol edin.

AMD: /dev/kfd üzerinde Permission denied. Konteynerdeki işlemi çalıştıran kullanıcının aygıtlara erişimi yok. Konteynerin içinde root olarak çalıştırın veya ana makinenin video ve render grup kimliklerini --group-add ile ekleyin.

Konteynerdeki uygulama CPU kullanıyor. İmaj GPU desteği içermiyor olabilir ya da GPU seçenekleri olmadan başlatıldı. GPU etiketi veya varyantı için imajın belgelerine bakın.

Sonraki adımlar

Sık sorulan sorular

Ana makinede CUDA araç seti gerekir mi?

Hayır. Ana makineye NVIDIA sürücüsü ve NVIDIA Container Toolkit gerekir; CUDA kitaplıkları konteyner imajlarının içinde gelir.

Birden fazla konteyner tek bir GPU'yu paylaşabilir mi?

Evet. Birkaç konteyner aynı GPU'yu aynı anda kullanabilir; belleğini paylaşırlar, bu yüzden modellerinin birlikte sığdığından emin olun.

Konteyner neden GPU bulunamadığını söylüyor?

Genellikle GPU istenmemiştir: NVIDIA için --gpus all, AMD ve Intel için --device seçeneklerini ya da Compose'da GPU ayırmayı ekleyin.

Bu Podman ile çalışır mı?

NVIDIA Container Toolkit, Podman'ı Container Device Interface (CDI) üzerinden de belgeler. Bu rehberdeki komutlar Docker Engine içindir.

Şifre Oluştur

Lütfen onaylayın