Distributed Training
Dağıtık eğitim, model eğitimini veri paralelliği, parçalı paralellik, tensör paralelliği veya işlem hattı paralelliğiyle birçok GPU ya da makineye böler. DDP, FSDP ve ölçeklendirme ele alınır.
Dağıtık eğitim, tek bir modeli eğitme işini genellikle bir makinede ya da bulut veya şirket içi bir kümede bulunan birden fazla GPU ya da TPU arasında paylaştırır. Böylece eğitim daha kısa sürer veya tek bir aygıtın belleğine sığmayacak kadar büyük bir model eğitilebilir. Aygıtlar, NVIDIA NCCL gibi iletişim kitaplıklarını kullanarak gradyanları, aktivasyonları veya parametre parçalarını hızlı bağlantılar üzerinden birbirine aktarır. Modern temel modeller ve büyük dil modelleri bu şekilde eğitilir; ayrıca çok GPU'lu iş istasyonlarında günlük nesne algılama eğitimini de hızlandırır.
Dağıtık Eğitim Nasıl Çalışır?#
Veri paralelliği en yaygın stratejidir. Her GPU modelin tam bir kopyasını belleğinde tutar, her eğitim verisi yığınının kendi bölümünü işler ve gradyanların ortalamasını alan bir all-reduce işlemine katılır; böylece her kopya aynı gradyan inişi güncellemesini uygular. PyTorch'un Dağıtık Veri Paralelliği (DDP), bu iletişimi geri yayılım geçişiyle eş zamanlı yürütür. Genel yığın boyutu, GPU başına yığın boyutunun GPU sayısıyla çarpımına eşittir; bu nedenle öğrenme oranının genellikle buna göre ölçeklenmesi gerekir. Goyal ve diğerleri, doğrusal ölçekleme kuralı ve ısınma aşaması kullanarak 8.192 görüntülük bir yığınla ImageNet üzerinde ResNet-50'yi 256 GPU'da bir saatte eğitti; 8'den 256 GPU'ya ölçeklemede verimlilik yaklaşık %90'dı.
Parçalı veri paralelliği, bu kopyaların bellek maliyetini düşürür. ZeRO ve PyTorch'un Tamamen Parçalı Veri Paralelliği (FSDP), parametreleri, gradyanları ve optimize edici durumlarını GPU'lar arasında böler; her katmanın tüm ağırlıklarını yalnızca o katman hesaplanırken bir araya getirir. Böylece GPU sayısı arttıkça her GPU'nun ihtiyaç duyduğu bellek azalır.
Model paralelliği, sinir ağının kendisini parçalara ayırır. Tensör paralelliği, tek tek matris çarpımlarını GPU'lara böler; iş hattı paralelliği, ardışık katmanları farklı GPU'lara atar ve mikro yığınları bu katmanlardan geçirir; bağlam paralelliği, uzun dizileri böler; uzman paralelliği ise uzman karışımı modelinin uzmanlarını farklı GPU'lara yerleştirir. Megatron-LM gibi çerçeveler, yüz milyarlarca parametreli modelleri eğitmek için bu yöntemleri veri paralelliğiyle birleştirir.
Uygulamada Çok GPU'lu Eğitim#
Temel ek yük iletişimdir: tümünü indirgeme trafiği model boyutuyla artar; bu nedenle bir düğüm içinde NVLink ile bağlanan GPU'lar, daha yavaş ağlarla bağlanan düğümlerden daha iyi ölçeklenir. Katmanlar eşzamanlı yığın normalleştirmeye dönüştürülmedikçe yığın normalleştirme istatistikleri GPU başına hesaplanır; her GPU'ya düşen yığın dilimi küçük olduğunda bu önemlidir. Ultralytics YOLO26, DDP aracılığıyla çoklu GPU eğitimi yapar: birkaç cihaz kimliği geçirmek, torch.distributed.run ile GPU başına bir işlem başlatır; CUDA üzerinde NCCL arka ucunu kullanır ve batch değerini GPU'lar arasında eşit biçimde böler.
from ultralytics import YOLO
# Önceden eğitilmiş bir YOLO26 modeli yükle
model = YOLO("yolo26n.pt")
# DDP ile 0 ve 1 numaralı GPU'larda eğit; batch=32, her GPU'ya adım başına 16 görüntü verir
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, batch=32, device=[0, 1])Gerçek Dünya Uygulamaları#
- Büyük Dil Modelleri: Meta, Llama 3 405B'yi 16 bine kadar H100 GPU'da eğitti; yazarlarının 4B paralellik adını verdiği yöntemde tensör, iş hattı, bağlam ve veri paralelliğini birleştirdi.
- Otonom Araçlar: Algı ekipleri, araç filolarından alınan geniş kamera, lidar ve radar kaydı arşivleri üzerinde algılama ve segmentasyon modelleri eğitir; bu işlem ancak büyük GPU kümelerinde uygulanabilir.
- Tıbbi Görüntü Analizi: Yüksek çözünürlüklü 3B BT ve MR hacimleri tek bir GPU'nun belleğini zorlar; yığınları veya model parçalarını GPU'lara dağıtmak, daha büyük hacimlerin ve modellerin eğitilmesini sağlar.
Dağıtık Eğitim ve İlgili Kavramlar#
- Birleşik Öğrenme: Birleşik öğrenme de çok sayıda aygıt üzerinde eğitim yapar; ancak gizlilik için veriler telefonlarda, hastanelerde veya diğer istemcilerde kalır ve merkezi sunucuya yalnızca model güncellemeleri gönderilir. Dağıtık eğitim ise hızı en üst düzeye çıkarmak için verileri tek bir kümede toplar.
- Bölünmüş Öğrenme: Bölünmüş öğrenme, ham verilerin istemciden ayrılmaması için modeli istemci ve sunucu arasında böler; gizlilik karşılığında ek iletişim maliyeti getirir.
- Gradyan Biriktirme: Gradyan biriktirme, tek bir GPU'da zaman maliyeti karşılığında büyük bir yığının matematiğini eşleştirmek için birkaç küçük yığının gradyanlarını tek bir güncellemeden önce toplar. Veri paralelliğinde ise bu yığınlar birkaç GPU'da eş zamanlı hesaplanır.










