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şen | Sürüm |
|---|---|
| NVIDIA Sürücüsü | 520 veya üstü |
| CUDA | 11.8 veya üstü |
| Docker Engine | 24.0+ |
| NVIDIA Container Toolkit | En 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 dockerDoğrulama:
docker run --rm --gpus all nvidia/cuda:11.8-base nvidia-smiGPU bilgileri göründüyse kurulum tamamdır.
Container’da GPU Etkinleştirme
Container ekleme veya düzenleme ekranında:
- GPU alanını
Etkinolarak işaretleyin - GPU ID —
0(varsayılan, ilk GPU) veya belirli bir GPU - 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:
:gpuveya: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:512Bu 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-r36Jetson’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.