Pipeline Parallelism
Pipeline paralelliğinin derin öğrenme modellerini GPU'lar arasında nasıl bölüştürdüğünü keşfet. Bellek yetersizliği hatalarını önlemeyi ve dağıtık eğitimi optimize etmeyi öğren.
Pipeline Parallelism is an advanced distributed training technique designed to partition a large neural network (NN) across multiple computing devices, such as GPUs, by separating the model depth-wise. When a modern architecture's model weights and optimizer states exceed the memory limits of a single accelerator, engineers split the network's sequential layers into "stages." For example, the first 10 layers might reside on GPU 0, while the subsequent 10 layers reside on GPU 1. During the forward pass, data flows from one device to the next. By chaining these devices together, researchers can train massive deep learning (DL) algorithms without encountering hardware-limiting out-of-memory errors.
Link to this sectionPipeline Paralelliği Nasıl Çalışır#
Katmanların cihazlar arasında bölünmesine yönelik saf bir uygulama, "pipeline balonları" olarak bilinen ciddi verimsizliklere yol açar. Katmanlar sırayla işlendiği için, GPU 0 ilk katmanları işlerken GPU 1 tamamen boşta bekler. Donanım kullanımını maksimize etmek için, modern pipeline zamanlayıcıları küresel batch size değerini daha küçük "mikro-batch'lere" böler.
GPU 0, tüm bir batch'in bitmesini beklemek yerine, ilk mikro-batch'i GPU 1'e iletir iletmez 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şleri eşzamanlı olarak hesaplayarak pipeline balonlarını ve bellek tüketimini önemli ölçüde en aza indirir. Yakın zamandaki 2024 ve 2025 gelişmeleri, bilgi işlem kümeleri arasındaki boşta kalma süresini neredeyse tamamen ortadan kaldıran, optimize edici duyarlı bir ağırlık tahmin stratejisi olan Zero Bubble Pipeline Paralelliğini bile tanıtmaktadır.
Link to this sectionİlgili Paralellik Tekniklerinin Ayırt Edilmesi#
Pipeline paralelliği, daha geniş bir dağıtık bilgi işlem stratejileri ekosistemi içinde faaliyet gösterir. Farklılıkları anlamak, AI modellerini etkili bir şekilde ölçeklendirmek için kritiktir:
- Model Paralelliği: Bu, bir modeli cihazlar arasında bölmek için kullanılan üst terimdir. Pipeline paralelliği, mimariyi derinlik bazında ardışık olarak bölümlere ayıran, model paralelliğinin oldukça özel bir biçimidir.
- Tensor Paralelliği: Pipeline paralelliğinin derinlik bazlı bölünmelerinin aksine, tensor paralelliği bireysel matris işlemlerini GPU'lar arasında yatay olarak parçalara ayırır. Bu iki teknik, iş hacmini maksimize etmek için sıklıkla birleştirilir.
- Data Parallelism: Data parallelism replicates the entire model on every GPU and distributes the training data among them. For compact, highly optimized object detection and image segmentation architectures like the Ultralytics YOLO26 model, which natively fits into a single device's VRAM, data parallelism via PyTorch's DistributedDataParallel (DDP) is the preferred method to accelerate training.
Link to this sectionYapay Zeka ve Makine Öğreniminde Gerçek Dünya Uygulamaları#
Karmaşık altyapıyı büyütmek, modern son teknoloji AI sistemleri oluşturmak için gereklidir:
- Training Foundation Models: Developing gigantic Large Language Models (LLMs) and foundation models like Meta's Llama 3 requires combining tensor, data, and pipeline parallelism. Frameworks like NVIDIA Megatron-LM leverage these strategies to train massive Mixture-of-Experts (MoE) architectures across thousands of GPUs on cloud platforms like AWS SageMaker.
- Yüksek Çözünürlüklü Tıbbi Teşhis: Sağlık hizmetlerinde AI ve bilimsel modellemede, 3D hacimsel taramalar genellikle tek bir hızlandırıcı için çok büyük aktivasyonlar üretir. Ağ katmanlarını düğümler arasında pipeline ile bağlamak, araştırma hastanelerinin görüntü çözünürlüğünden ödün vermeden devasa MRI veri setleri üzerinde derin ağlar eğitmelerine olanak tanır.
Link to this sectionKod Örneği: Katman Bölümlendirme Kavramı#
Tarihsel olarak, katmanları cihazlar arasında dağıtmak karmaşık, özel kodlar gerektiriyordu. Bugün, temel mantık belirli katmanları farklı cihaz tanımlayıcılarıyla eşleştirir. Aşağıda, PyTorch içinde ağ aşamalarının cihazlar arasında nasıl bölündüğüne ve pipeline paralel işlemleri için temelin nasıl atıldığına dair kavramsal bir temsil bulunmaktadır:
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) projeleri dağıtmak 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çeklendirmek adına Ultralytics Platform'a güvenir. Güçlü model eğitimi ipuçlarından yararlanan platform, altyapı yönetimini soyutlayarak mühendislerin tamamen gerçek zamanlı çıkarım kapasitesine sahip doğru AI çözümleri oluşturmaya odaklanmalarını sağlar.






