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
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
- Çalışan bir sürücüsü olan GPU sunucu: ana makinede
nvidia-smi(NVIDIA) veyarocminfo(AMD) yanıt verir; bkz. NVIDIA sürücülerini ve CUDA'yı kurma veya AMD ROCm kurulumu. - Docker'ın deposundan Docker Engine: Ubuntu'ya Docker kurma.
NVIDIA: NVIDIA Container Toolkit'i kurun
NVIDIA deposunu imza anahtarıyla ekleyin, ardından araç setini kurun:
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-toolkitNVIDIA'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:
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart dockerNVIDIA'nın örnek iş yüküyle doğrulayın:
sudo docker run --rm --runtime=nvidia --gpus all ubuntu nvidia-smiKonteyner ana makinedekiyle aynı nvidia-smi tablosunu yazar.
Docker Compose'da NVIDIA GPU'ları
GPU'yu hizmet tanımında ayırın:
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:
docker run -it --rm --device /dev/kfd --device /dev/dri --security-opt seccomp=unconfined rocm/rocm-terminal bashKonteynerin 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:
services:
app:
image: rocm/rocm-terminal
devices:
- /dev/kfd
- /dev/driIntel: 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:
docker run --rm --device /dev/dri ubuntu ls -l /dev/driSorun 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
- GPU'nuzda yerel modellerle sohbet edin: Ollama ile Open WebUI.
- Bir şey çalışmıyor: GPU sorunlarını giderme.
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.