- Strategi dan kode yang digunakan di DeepSeek V3/R1
- DualPipe: algoritme paralelisasi pipeline dua arah untuk overlap komputasi-komunikasi
- EPLB: penyeimbang beban Expert-Parallel
- Profile-Data: analisis overlap komputasi-komunikasi melalui profiling data dari infrastruktur DeepSeek
- DualPipe adalah algoritme paralel pipeline dua arah inovatif yang diperkenalkan dalam DeepSeek-V3 Technical Report
- Berfungsi mengurangi pipeline bubble dengan melakukan overlap penuh antara tahap komputasi-komunikasi forward dan backward
- Informasi overlap komputasi-komunikasi yang lebih detail dapat dilihat di profile data
- Dalam Expert Parallelism (EP), expert yang berbeda dialokasikan ke masing-masing GPU
- Namun, karena beban kerja tiap expert bisa berbeda, penting untuk menjaga keseimbangan beban antar-GPU
- Di DeepSeek-V3, strategi redundant experts digunakan untuk mereplikasi expert dengan beban tinggi, lalu menempatkannya secara efisien ke GPU agar beban tetap seimbang
- Selain itu, dengan memanfaatkan group-limited expert routing, expert dari grup yang sama ditempatkan sebisa mungkin pada node yang sama sehingga transfer data antar-node dapat diminimalkan
- Agar lebih mudah direproduksi dan diterapkan, algoritme penyeimbangan beban EP disediakan sebagai open source di
eplb.py
- Algoritme ini menghitung rencana replikasi dan penempatan expert yang seimbang berdasarkan beban expert yang diperkirakan
- Namun, metode spesifik untuk memprediksi beban expert berada di luar cakupan repositori tersebut, dan umumnya digunakan pendekatan moving average berbasis statistik historis
- Algoritme penyeimbangan beban menyediakan dua kebijakan, masing-masing digunakan dalam situasi yang berbeda.
- Hierarchical Load Balancing
- Jika jumlah node server dapat membagi jumlah grup expert, kebijakan hierarchical load balancing digunakan untuk mengoptimalkan group-limited expert routing
- Pertama, grup expert ditempatkan secara merata ke node untuk menyeimbangkan beban antar-node
- Setelah itu, expert direplikasi di dalam masing-masing node
- Terakhir, expert yang telah direplikasi ditempatkan ke GPU individual untuk menyeimbangkan beban antar-GPU
- Kebijakan ini dapat digunakan pada tahap prefilling yang memiliki skala expert parallelism kecil
- Global Load Balancing
- Dalam kasus lainnya, kebijakan global load balancing digunakan untuk mereplikasi expert secara global tanpa memedulikan grup expert, lalu menempatkannya ke GPU individual
- Kebijakan ini cocok untuk tahap decoding dengan skala expert parallelism besar.
- DeepSeek membuka profiling data dari framework pelatihan dan inferensinya agar komunitas dapat lebih memahami strategi overlap komunikasi-komputasi dan detail implementasi level rendah
- Profiling data ini dikumpulkan menggunakan PyTorch Profiler, dan setelah diunduh dapat divisualisasikan melalui
chrome://tracing di Chrome atau edge://tracing di Edge
- Selain itu, dalam eksperimen tersebut profiling dilakukan dengan mensimulasikan strategi routing MoE yang seimbang
- Pelatihan (Training)
- Data profil pelatihan menunjukkan strategi overlap chunk forward dan backward di DualPipe
- Setiap chunk mencakup 4 layer MoE (Mixture of Experts) dan memiliki konfigurasi paralel yang sesuai dengan pengaturan pre-training DeepSeek-V3:
- Inferensi (Inference)
- Prefilling
- Pada tahap ini digunakan dua micro-batch untuk melakukan overlap antara komputasi dan komunikasi all-to-all
- Selain itu, beban operasi attention dibagi seimbang di antara dua micro-batch sehingga prompt yang sama dapat dibagi ke beberapa micro-batch
- Decoding
- Pada decoding juga, seperti pada prefilling, digunakan dua micro-batch untuk overlap komputasi dan komunikasi all-to-all
- Namun, pada decoding komunikasi all-to-all tidak menggunakan GPU SM → setelah mengirim pesan RDMA, GPU SM dibebaskan, lalu sistem bekerja dengan menunggu komunikasi selesai setelah komputasi selesai
- Informasi implementasi all-to-all yang lebih detail dapat dilihat di DeepEP
Belum ada komentar.