Pipeline Parallelism (PP): Pembagian Layer Lintas Device
I3 — Distributed Serving & Parallelism Strategies
Membagi Layer Model Secara Sekuensial ke Multi-GPU
Berbeda dengan Tensor Parallelism yang membagi satu matriks layer, Pipeline Parallelism (PP) membagi tumpukan layer model secara utuh ke beberapa GPU berbeda.
1. Contoh Kasus Nyata (Model 10 Layer, 1 Layer = 4 GB VRAM)
GPU 0 (12/12 GB): [ Layer 1 ] --> [ Layer 2 ] --> [ Layer 3 ]
│ (Kirim Aktivasi Output Layer 3)
↓
GPU 1 (12/12 GB): [ Layer 4 ] --> [ Layer 5 ] --> [ Layer 6 ]
│ (Kirim Aktivasi Output Layer 6)
↓
GPU 2 (12/12 GB): [ Layer 7 ] --> [ Layer 8 ] --> [ Layer 9 ]
│ (Kirim Aktivasi Output Layer 9)
↓
GPU 3 (4/12 GB): [ Layer 10 ] + [ Sisa 8 GB VRAM Kosong ]
Untuk Apa Sisa 8 GB VRAM Kosong di GPU 3? Ruang memori kosong ini sengaja dialokasikan untuk menampung hasil perhitungan (Query, Key, Value) cache, tensor aktivasi intermediate, dan buffer logits sebelum proses sampling token berikutnya!
2. Karakteristik Komunikasi Pipeline Parallelism
- GPU 0 hanya perlu mengirim vektor aktivasi ke GPU 1 saat Layer 3 selesai.
- Volume data yang ditransfer antar GPU jauh lebih kecil dibanding Tensor Parallelism Dapat dijalankan lintas node menggunakan PCIe atau jaringan InfiniBand/RDMA.
- Tantangan: Pipeline Bubble (waktu di mana GPU akhir harus menunggu output dari GPU awal) diatasi menggunakan penjadwalan mikro-batching (1F1B Schedule).
I3