Pipeline Parallelism
İşlem hattı paralelliğinin derin öğrenme modellerini GPU'lar arasında nasıl bölümlendirdiğini keşfet. Bellek yetersizliği hatalarını önlemeyi ve dağıtık eğitimi optimize etmeyi öğren.
Pipeline Paralelliği, büyük bir sinir ağını (NN) derinlik boyunca bölerek GPU'lar gibi birden fazla bilgi işlem cihazına ayırmak için tasarlanmış gelişmiş bir dağıtık eğitim tekniğidir. Modern bir mimarinin model ağırlıkları ve optimizer durumları tek bir hızlandırıcının bellek sınırlarını aştığında mühendisler, ağın ardışık katmanlarını "aşamalara" böler. Örneğin, ilk 10 katman GPU 0 üzerinde bulunurken sonraki 10 katman GPU 1 üzerinde bulunabilir. İleri geçiş sırasında veriler bir cihazdan diğerine akar. Araştırmacılar, bu cihazları birbirine bağlayarak donanımın sınırladığı bellek yetersizliği hatalarıyla karşılaşmadan büyük derin öğrenme (DL) algoritmalarını eğitebilir.
Pipeline Paralelliği Nasıl Çalışır?#
Katmanları cihazlar arasında bölmenin naif bir uygulaması, "pipeline baloncukları" olarak bilinen ciddi verimsizliklere yol açar. Katmanlar sırayla işlendiğinden GPU 0 ilk katmanları işlerken GPU 1 tamamen boşta kalır. Donanım kullanımını en üst düzeye çıkarmak için modern pipeline zamanlayıcıları, global batch boyutunu daha küçük "mikro batch'lere" böler.
Tüm batch'in tamamlanmasını beklemek yerine GPU 0, ilk mikro batch'i GPU 1'e aktarır aktarmaz ikinci mikro batch'i işlemeye başlar. Microsoft DeepSpeed ve PyTorch Distributed Pipelining API gibi araçlar genellikle 1F1B (Bir İleri, Bir Geri) zamanlama stratejisini kullanır. Bu yöntem, farklı mikro batch'ler için ileri ve geri geçiş hesaplamalarını eş zamanlı olarak sırayla gerçekleştirerek pipeline baloncuklarını ve bellek tüketimini önemli ölçüde azaltır. 2024 ve 2025'teki son gelişmeler, işlem kümelerindeki boşta kalma süresini neredeyse ortadan kaldıran, optimizer farkındalığına sahip bir ağırlık tahmin stratejisi olan Sıfır Baloncuklu Pipeline Paralelliği yaklaşımını bile ortaya çıkardı.
İlgili Paralellik Tekniklerini Ayırt Etme#
Pipeline paralelliği, dağıtık bilgi işlem stratejilerinden oluşan daha geniş bir ekosistemin parçasıdır. Farkları anlamak, AI modellerini etkili bir şekilde ölçeklendirmek için kritik öneme sahiptir:
- Model Paralelliği: Bu, bir modeli cihazlar arasında bölmeye yönelik genel terimdir. Pipeline paralelliği, mimariyi derinlik boyunca sırayla bölümlendiren, model paralelliğinin son derece özel bir biçimidir.
- Tensor Paralelliği: Pipeline paralelliğinin derinlik boyunca yaptığı bölmelerin aksine tensor paralelliği, tek tek matris işlemlerini GPU'lar arasında yatay olarak parçalara ayırır. Verimi en üst düzeye çıkarmak için bu iki teknik sıklıkla birlikte kullanılır.
- Veri Paralelliği: Veri paralelliği, modelin tamamını her GPU'da çoğaltır ve eğitim verilerini bunlar arasında dağıtır. Tek bir cihazın VRAM'ine doğal olarak sığan Ultralytics YOLO26 modeli gibi kompakt, yüksek düzeyde optimize edilmiş nesne algılama ve görüntü segmentasyonu mimarileri için PyTorch'un DistributedDataParallel (DDP) aracılığıyla veri paralelliği, eğitimi hızlandırmak için tercih edilen yöntemdir.
Yapay Zekâ ve Makine Öğreniminde Gerçek Dünya Uygulamaları#
Modern, son teknoloji AI sistemleri oluşturmak için karmaşık altyapıyı ölçeklendirmek çok önemlidir:
- Temel Modelleri Eğitme: Meta'nın Llama 3'ü gibi devasa Büyük Dil Modellerini (LLMs) ve temel modelleri geliştirmek; tensor, veri ve pipeline paralelliğinin birleştirilmesini gerektirir. NVIDIA Megatron-LM gibi çerçeveler, bu stratejilerden yararlanarak AWS SageMaker gibi bulut platformlarında binlerce GPU üzerinde devasa Uzmanlar Karışımı (MoE) mimarilerini eğitir.
- Yüksek Çözünürlüklü Tıbbi Tanı: Sağlık hizmetlerinde AI ve bilimsel modellemede, 3B hacimsel taramalar genellikle tek bir hızlandırıcı için fazla büyük aktivasyonlar üretir. Ağ katmanlarının düğümler arasında pipeline üzerinden işlenmesi, araştırma hastanelerinin görüntü çözünürlüğünden ödün vermeden büyük MRI veri kümeleri üzerinde derin ağları eğitmesine olanak tanır.
Kod Örneği: Katman Bölümlendirme Kavramı#
Geçmişte katmanları cihazlar arasında dağıtmak, karmaşık ve özel amaçlı kod gerektiriyordu. Günümüzde temel mantık, belirli katmanları farklı cihaz tanımlayıcılarına eşler. Aşağıda, PyTorch içinde ağ aşamalarının cihazlar arasında nasıl bölündüğünün kavramsal bir gösterimi yer alıyor ve pipeline paralel işlemlerinin temelini oluşturuyor:
import torch.nn as nn
class SimplePipelineModel(nn.Module):
def __init__(self):
super().__init__()
# Stage 1 is assigned to the first GPU
self.stage1 = nn.Sequential(nn.Linear(1024, 1024), nn.ReLU()).to("cuda:0")
# Stage 2 is assigned to the second GPU
self.stage2 = nn.Sequential(nn.Linear(1024, 1024), nn.ReLU()).to("cuda:1")
def forward(self, x):
# The forward pass seamlessly crosses device boundaries
x_out = self.stage1(x.to("cuda:0"))
return self.stage2(x_out.to("cuda:1"))Temel modeller oluşturmak karmaşık bir orkestrasyon gerektirse de hızlı ve ölçeklenebilir bilgisayarlı görü (CV) projelerini devreye almak genellikle daha basittir. Kolaylaştırılmış model dağıtımı ve otomatik çoklu GPU kullanımı için geliştiriciler, iş yüklerini otomatik olarak ölçeklendiren Ultralytics Platform'una güvenir. Sağlam model eğitimi ipuçlarından yararlanan platform, altyapı yönetiminin karmaşıklığını ortadan kaldırarak mühendislerin tamamen gerçek zamanlı çıkarım gerçekleştirebilen doğru AI çözümleri oluşturmaya odaklanmasını sağlar.









