ContainerGPU Yapılandırma

GPU Yapılandırma

GPU inference, CPU’ya kıyasla çok daha düşük latency ve daha yüksek throughput sağlar. Birden fazla kamera veya yoğun denetim senaryolarında GPU zorunludur.

Gereksinimler

BileşenSürüm
NVIDIA Sürücüsü520 veya üstü
CUDA11.8 veya üstü
Docker Engine24.0+
NVIDIA Container ToolkitEn güncel

NVIDIA Container Toolkit Kurulumu

Ubuntu:

# NVIDIA paket deposunu ekleyin
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
 
# Paketi yükleyin
sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit
 
# Docker yapılandırmasını güncelleyin
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker

Doğrulama:

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

GPU bilgileri göründüyse kurulum tamamdır.

Container’da GPU Etkinleştirme

Container ekleme veya düzenleme ekranında:

  1. GPU alanını Etkin olarak işaretleyin
  2. GPU ID0 (varsayılan, ilk GPU) veya belirli bir GPU
  3. GPU Bellek Limiti — isteğe bağlı (birden fazla container paylaşıyorsa sınırlama önerilir)

VisioAI container başlatırken --gpus all veya --gpus device=0 flag’ini ekler.

Image etiketine dikkat edin: GPU container için :gpu veya :cuda etiketi kullanın. :cpu etiketli image GPU talebi görmezden gelir.

Otomatik GPU Algılama

Docker image tag’inden GPU tipi otomatik algılanır:

  • :gpu veya :cuda → CUDA (--gpus all)
  • :rocm → ROCm (AMD GPU)
  • :cpu → CPU (GPU yok)

Çoklu GPU

Birden fazla GPU varsa her inference container farklı bir GPU’ya atanabilir:

YOLO Container 1 → GPU 0 (kamera 1-2 için)
YOLO Container 2 → GPU 1 (kamera 3-4 için)

Bu yapılandırma container ekleme ekranında GPU ID alanından yapılır.

GPU Bellek Yönetimi

Birden fazla container aynı GPU’yu paylaşıyorsa bellek bölümlenmesi önemlidir.

Container başlatma ortam değişkeni ile CUDA bellek sınırı:

CUDA_VISIBLE_DEVICES=0
PYTORCH_CUDA_ALLOC_CONF=max_split_size_mb:512

Bu değişkenleri container yapılandırmasındaki “Environment Variables” alanına ekleyin.

NVIDIA Jetson

NVIDIA Jetson cihazlarında container image’ı arm64 uyumlu olmalıdır. Edese Jetson için ayrı :jetson veya :l4t etiketli image sağlar.

# Jetson için image
edese/yolo-server:jetson-r36

Jetson’da NVIDIA Container Toolkit yerine JetPack içindeki Docker runtime kullanılır.

⚠️

Jetson cihazlarda DRAM paylaşımlıdır (CPU + GPU aynı belleği kullanır). Bellek limitlerini Jetson modelinin kapasitesine göre ayarlayın.