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, modeli derinlemesine bölerek büyük bir neural network (NN) yapısını GPUs gibi birden fazla bilgi işlem cihazına dağıtmak için tasarlanmış gelişmiş bir distributed training tekniğidir. Modern bir mimarinin model weights ve optimizer durumları tek bir hızlandırıcının bellek sınırlarını aştığında, mühendisler ağın sırayla çalışan katmanlarını "aşamalara" ayırır. Örneğin, ilk 10 katman GPU 0 üzerinde bulunabilirken, sonraki 10 katman GPU 1 üzerinde bulunabilir. forward pass sırasında veri bir cihazdan diğerine akar. Araştırmacılar bu cihazları birbirine zincirleyerek, donanımı sınırlayan out-of-memory errors ile karşılaşmadan devasa deep learning (DL) algoritmaları eğitebilir.
Pipeline Paralelliği Nasıl Çalışır#
Katmanları cihazlar arasında bölmenin saf bir uygulaması, "pipeline bubbles" 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ı küresel batch size değerini daha küçük "mikro partilere" böler.
Tüm partinin bitmesini beklemek yerine GPU 0, ilk mikro partiyi GPU 1'e aktarır aktarmaz ikinci mikro partiyi işlemeye hemen başlar. Microsoft DeepSpeed ve PyTorch Distributed Pipelining API gibi araçlar yaygın olarak 1F1B (One Forward, One Backward) scheduling strategy yöntemini kullanır. Bu yöntem, farklı mikro partiler için ileri ve geri geçiş hesaplamalarını aynı anda yürüterek pipeline duraklamalarını ve bellek tüketimini önemli ölçüde en aza indirir. 2024 ve 2025 yıllarındaki son gelişmeler, bilgi işlem kümelerindeki boşta kalma süresini neredeyse ortadan kaldıran, optimize edici bilincine sahip bir ağırlık tahmin stratejisi olan Zero Bubble Pipeline Parallelism özelliğini bile sunmaktadır.
İ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 Parallelism: Pipeline paralelliğinin derinlemesine bölmelerinin aksine, tensor paralelliği bireysel matris işlemlerini yatay olarak GPU'lar arasında parçalar. Verimliliği en üst düzeye çıkarmak için bu iki teknik sıklıkla birleştirilir.
- Data Parallelism: Veri paralelliği, modelin tamamını her GPU'da çoğaltır ve eğitim verilerini bunların arasında dağıtır. Tek bir cihazın VRAM'ine doğal olarak sığabilen kompakt, son derece optimize edilmiş Ultralytics YOLO26 modeli gibi object detection ve image segmentation mimarileri için, PyTorch'un DistributedDataParallel (DDP) özelliği aracılığıyla veri paralelliği, eğitimi hızlandırmak için tercih edilen yöntemdir.
Yapay 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: Meta's Llama 3 gibi devasa Large Language Models (LLMs) ve foundation models geliştirmek, tensor, veri ve pipeline paralelliğinin birleştirilmesini gerektirir. NVIDIA Megatron-LM gibi çerçeveler, AWS SageMaker gibi bulut platformlarında binlerce GPU üzerinde devasa Mixture-of-Experts (MoE) mimarilerini eğitmekten yararlanır.
- High-Resolution Medical Diagnostics: AI in healthcare 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 boru hattına sokmak, araştırma hastanelerinin görüntü çözünürlüğünden ödün vermeden derin ağları devasa MRI veri kümeleri üzerinde 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 kod gerektiriyordu. Günümüzde temel mantık, belirli katmanları farklı cihaz tanımlayıcılarıyla eşleştirir. Aşağıda, ağ aşamalarının PyTorch içinde cihazlar arasında nasıl bölündüğünün ve pipeline paralel işlemlerinin temelini nasıl oluşturduğunun kavramsal bir gösterimi yer almaktadı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 düzenleme gerektirirken, hızlı ve ölçeklenebilir computer vision (CV) projeleri konuşlandırmak genellikle daha basittir. Kolaylaştırılmış model deployment ve otomatik çoklu GPU kullanımı için geliştiriciler, iş yüklerini otomatik olarak ölçeklendirmek üzere Ultralytics Platform güvenmektedir. Güçlü model training tips yararlanan platform, altyapı yönetimi soyutlayarak mühendislerin real-time inference yeteneğine sahip doğru yapay zeka çözümleri oluşturmaya tamamen odaklanmasını sağlar.






