0Pricing
Learn AI with Python · Ders

DataParallel ile Çoklu GPU Eğitimi

nn.DataParallel, GPU belleği dengeleme, bant genişliği darboğazları, DDP'nin ne zaman daha iyi olduğu.

DataParallel ile Çoklu GPU Eğitimi, CoddyKit'te ücretsiz bir Learn AI with Python dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Learn AI with Python öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Learn AI with Python kursu toplamda 4 dersten oluşur.

Neden Birden Çok GPU

Modern modeller ve yığınlar, tek bir GPU'nun belleğini ve hesaplama kapasitesini aşar. Birden çok GPU kullanmak, daha büyük modelleri eğitmenizi veya daha büyük yığınları daha kısa gerçek sürede işlemenizi sağlar. PyTorch bunu yapmanın birkaç yolunu sunar; en basit yol DataParallel'dır.

Veri Paralelliği

Veri paralelliği, modeli her GPU'da çoğaltır ve her giriş yığınını GPU'lar arasında böler. Her GPU kendisine ayrılan parça üzerinde hesaplama yapar, ardından tüm kopyaların eşzamanlı kalması için gradyanlar birleştirilir.

nn.DataParallel

nn.DataParallel, modeli tek satırda sarar. Kullanılacak GPU kimliklerini iletirsiniz; PyTorch da girdileri dağıtma ve çıktıları toplama işlemlerini otomatik olarak yönetir.

import torch
import torch.nn as nn

model = MyModel().cuda()
model = nn.DataParallel(model, device_ids=[0, 1])

Otomatik Yığın Bölme

İleri geçiş sırasında DataParallel, yığını boyut 0 boyunca listelenen GPU'lar arasında böler. İki GPU'daki 64'lük bir yığın, 32'şer öğeden oluşan iki alt yığına dönüşür. Her GPU aynı modeli kendi alt yığını üzerinde paralel olarak çalıştırır.

# batch of 64 with device_ids=[0, 1]
# GPU 0 processes samples 0..31
# GPU 1 processes samples 32..63

Gradyan Ortalaması

Geriye yayılım sırasında GPU başına hesaplanan gradyanlar birincil cihaza toplanır ve ortalaması alınır (etkin olarak toplanıp ölçeklenir); böylece model güncellemesi tüm yığını yansıtır. Ardından kopyalar bir sonraki adım için yeniden eşzamanlanır.

Normal Bir Eğitim Döngüsü

En iyi yanı şudur: eğitim döngünüz neredeyse hiç değişmez. Verileri birincil GPU'ya taşıyıp sarılmış modeli her zamanki gibi çağırırsınız; dağıtımı arka planda DataParallel gerçekleştirir.

for x, y in loader:
    x, y = x.cuda(), y.cuda()
    optimizer.zero_grad()
    out = model(x)            # auto-split across GPUs
    loss = criterion(out, y)
    loss.backward()           # gradients averaged
    optimizer.step()

GPU 0 Dengesizliği

DataParallel'ın iyi bilinen bir kusuru vardır: birincil GPU (genellikle GPU 0) tüm çıktıları toplar ve kaybı hesaplar; bu nedenle ek bellek ve hesaplama yükü taşır. GPU sayısı arttığında GPU 0 darboğaz hâline gelir ve diğerlerinden önce belleği tükenebilir.

Tek Süreç, Çok Sayıda İş Parçacığı

DataParallel, tek bir Python sürecinde çalışır ve GPU'ları yönetmek için iş parçacıkları kullanır. Python global yorumlayıcı kilidi ile dağıtma/toplama ek yükü, özellikle 2 ila 4 GPU'nun ötesinde ölçekleme verimliliğini sınırlar.

DDP Neden Tercih Edilir

Bu nedenlerle ciddi çoklu GPU çalışmaları için DistributedDataParallel (DDP) önerilir. DDP, GPU başına bir süreç çalıştırır, gradyanları verimli bir toplu azaltma işlemiyle eşzamanlar ve GPU 0 darboğazını ortadan kaldırarak neredeyse doğrusal ölçekleme sağlar.

DataParallel Ne Zaman Hâlâ Uygun

DataParallel, tek bir makinede 2 GPU ile yapılan hızlı denemeler için kabul edilebilir; bu durumda tek satırlık basitliği verimsizliğinden daha ağır basar. Birden çok düğümlü eğitim veya çok sayıda GPU için bunun yerine DDP'yi tercih ediniz.

Yaygın Tuzak: Kaydetme

Sarılmış bir modelin durum sözlüğünde module. ön eki bulunur. Temiz bir denetim noktası kaydetmek için model.module.state_dict() kullanınız; böylece daha sonra sarılmamış bir modele doğru şekilde yüklenebilir.

torch.save(model.module.state_dict(), "model.pt")

Hızlı Kontrol

DataParallel bilginizi sınayınız.

Özet

DataParallel ile çoklu GPU eğitimini öğrendiniz:

  • nn.DataParallel(model, device_ids=[0, 1]), modeli çoğaltır ve yığınları böler
  • Her adımda gradyanların GPU'lar arasındaki ortalaması alınır
  • GPU 0 dengesizliği ve tek süreçli tasarım ölçeklemeyi sınırlar
  • Çok sayıda GPU veya birden çok düğümlü eğitim için DDP'yi tercih ediniz

Sıkça Sorulan Sorular

“DataParallel ile Çoklu GPU Eğitimi” dersi ücretsiz mi?

Evet — “DataParallel ile Çoklu GPU Eğitimi” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Learn AI with Python kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Learn AI with Python kursu toplamda 4 dersten oluşur.

“DataParallel ile Çoklu GPU Eğitimi” dersinde ne öğreneceğim?

nn.DataParallel, GPU belleği dengeleme, bant genişliği darboğazları, DDP'nin ne zaman daha iyi olduğu. Learn AI with Python ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Learn AI with Python öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Learn AI with Python, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.

“DataParallel ile Çoklu GPU Eğitimi” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Learn AI with Python dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Learn AI with Python dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. DataParallel ile Çoklu GPU Eğitimi
  2. DistributedDataParallel (DDP)
  3. AMP ile Karışık Hassasiyet Eğitimi
  4. Hugging Face Accelerate ile Verimli Eğitim
← Learn AI with Python Sayfasına Dön