Pipeline Parallelism
İşlem hattı paralelliği, bir modelin art arda gelen katmanlarını farklı GPU'lara yerleştirir ve mikro yığınları bu katmanlardan geçirir; böylece tek bir GPU'ya sığmayacak kadar büyük modeller eğitilebilir.
İş hattı paralelliği, bir dağıtık eğitim tekniğidir. Sinir ağını derinliğine göre aşama adı verilen ardışık katman gruplarına böler, her aşamayı ayrı bir GPU üzerine yerleştirir ve aktivasyonları bir aşamadan diğerine aktarır. Her GPU'yu meşgul tutmak için her yığın daha küçük mikro yığınlara bölünür; bunlar bir montaj hattındaki parçalar gibi aşamalardan geçer. Bu yönteme katmanlar arası model paralelliği de denir. Yanping Huang liderliğindeki Google araştırmacıları, mikro yığın yaklaşımını Kasım 2018'de GPipe ile yaygınlaştırdı; 557 milyon parametreli AmoebaNet'i ImageNet üzerinde %84,4 top-1 doğruluğa ve 6 milyar parametreli, 128 katmanlı çok dilli bir çeviri Transformer modelini eğittiler.
Mikro Yığınlar ve İş Hattı Baloncuğu#
Bir seferde tek yığın işlendiğinde, diğerleri beklerken yalnızca bir aşama çalışır: 2. aşama, 1. aşama bitene kadar başlayamaz ve geri yayılım sırasında sıra tersine döner. Mikro yığınlar, 1. aşamanın ilkini 2. aşamaya iletir iletmez ikinci mikro yığını başlatmasını sağlar. İş hattı dolup boşalırken kalan boş zaman aralıklarına baloncuk denir. Dört aşama ve altı mikro yığın için GPipe tarzı ileri geçiş zamanlaması yazdırıldığında ortaya çıkan görünüm şöyledir:
stages, micro_batches = 4, 6
steps = micro_batches + stages - 1 # time steps until the last micro-batch leaves the last stage
for stage in range(stages):
row = ""
for t in range(steps):
m = t - stage # stage s starts micro-batch m once stage s-1 hands it over
row += f" F{m}" if 0 <= m < micro_batches else " ."
print(f"GPU {stage}:{row}")
# Every stage idles for stages - 1 of the steps, in the forward and again in the backward pass
bubble = (stages - 1) / steps
print(f"Idle fraction: {bubble:.0%}")Çıktı basamaklı bir görünüm oluşturur: GPU 0, ilk dokuz adımın altısında F0 ile F5 arasındaki ileri geçişleri yürütür, ardından bekler; GPU 3, F0 çalışmaya başlamadan önce üç adım bekler ve son satır Idle fraction: 33% şeklindedir. Baloncuk oranı (aşamalar − 1) / (mikro yığınlar + aşamalar − 1) olduğundan, aynı dört aşamada 24 mikro yığın kullanmak oranı %11'e düşürür. Tek bir eniyileyici adımından önce tüm mikro yığınların gradyanları toplanır; bu, gradyan biriktirme ile aynı hesaplamadır ve güncelleme tam yığın üzerinde eğitimle eşleşir. GPipe ayrıca her aşamadaki aktivasyonları atar ve geri geçiş sırasında yeniden hesaplar; bu, bir tür gradyan kontrol noktası oluşturmadır.
İş Hattı Zamanlamaları#
Daha sonraki zamanlamalar, belleği korumak veya baloncuğu küçültmek için aynı işi farklı sıraya koyar:
- 1F1B: PipeDream sistemi tarafından 2018'de tanıtılan bu yöntem, iş hattı dolduktan sonra her aşamada bir ileri ve bir geri mikro yığını dönüşümlü olarak işler. Böylece her aşama, tüm mikro yığınlar yerine en fazla aşama sayısı kadar mikro yığının aktivasyonlarını bellekte tutar.
- Aralıklı 1F1B: Her GPU'ya bitişik olmayan birkaç küçük aşama verir. NVIDIA'nın Megatron-LM ekibi bu yöntemle %10'dan fazla yüksek verim bildirdi ve 3.072 GPU üzerinde, tepe performansın %52'si olan 502 petaFLOP/s hızında 1 trilyon parametreli bir model eğitti.
- Sıfır baloncuk: Geri geçişi, önceki aşamanın beklediği aşama girdisinin gradyanı ile daha sonra boş zaman aralıklarını doldurabilecek ağırlık gradyanına ayırır. Benzer bellek bütçesinde verimi 1F1B'ye kıyasla %23'e kadar artırır.
PyTorch, modelini de aşamalara bölen iş hattı API'sinde bunları ScheduleGPipe, Schedule1F1B, ScheduleInterleaved1F1B, ScheduleInterleavedZeroBubble ve ScheduleDualPipeV olarak sunar. DualPipe, DeepSeek-V3'ten gelir; ekip 16 iş hattı aşaması kullanarak hesaplamayı iletişimle çakıştırmış ve baloncuğu küçültmüştür.
İş Hattı Paralelliğinin Yeri#
Aşamalar, her mikro yığında yalnızca sınırlarındaki aktivasyonları aktarır; bu nedenle iş hattı paralelliği, her katmanın içinde iletişim kuran tensör paralelliğine kıyasla sunucular arasındaki daha yavaş bağlantılara tolerans gösterir. Bu yüzden büyük eğitim çalıştırmaları bu yöntemleri birleştirir. Meta, Llama 3 405B modelini her biri 8 GPU'lu sunucuların içinde 8 yönlü tensör paralelliğiyle, sunucular arasında 16 iş hattı aşamasıyla ve 64 ila 128 kopyaya yayılan veri paralelliğiyle eğitti. vLLM gibi sunum motorları da bir büyük dil modeli (LLM) birden fazla düğüm gerektirdiğinde aynı bölme yöntemini kullanır. Tüm iş hattının hızını en yavaş aşama belirler. Ayrıca dil modelinin ilk ve son aşamaları gömme tablosunu ve çıktı katmanını da içerdiğinden, Llama 3 bu aşamaların her birine bir Transformer katmanı daha az verdi.
İlgili yaklaşımlar işi farklı biçimlerde böler:
- Tensör paralelliği: Her katmanın içindeki ağırlık matrislerini böler; böylece her GPU her katmana katılır.
- Bağlam paralelliği: Uzun bir girdi dizisini GPU'lar arasında böler.
- Bölünmüş öğrenme: Ağı da derinliğine göre böler, ancak bunu kuruluşlar arasında yapar; böylece veri sahibi ham verileri sonraki katmanları çalıştıran sunucuya göndermez.
Veri paralelliği, her katmanı her GPU'da tutar ve bunun yerine yığını böler; model tek bir aygıta sığdığında gereken tek yöntem budur. Ultralytics YOLO26 çeşitli GPU'larda böyle eğitilir: eğitim modunda device=[0, 1, 2, 3] ve batch=64 ile her GPU, nesne algılama modelinin tamamını 16 görüntü üzerinde çalıştırır; PyTorch DistributedDataParallel ise her geri geçişten sonra gradyanların ortalamasını GPU'lar arasında alır.










