- DeepSeek V3/R1’de kullanılan stratejiler ve kodlar
- DualPipe: hesaplama-iletişim örtüşmesi için çift yönlü pipeline paralelleştirme algoritması
- EPLB: Expert-Parallel yük dengeleyici
- Profile-Data: DeepSeek altyapısındaki veri profillemesiyle hesaplama-iletişim örtüşmesinin analizi
- DualPipe, DeepSeek-V3 Technical Report’ta tanıtılan yenilikçi bir çift yönlü pipeline paralellik algoritmasıdır
- İleri ve geri hesaplama-iletişim aşamalarını tamamen örtüştürerek pipeline bubble’larını azaltır
- Hesaplama-iletişim örtüşmesiyle ilgili daha ayrıntılı bilgiye profile data içinde ulaşılabilir
- Expert Parallelism (EP) içinde farklı expert’ler her GPU’ya atanır
- Ancak expert bazında iş yükü değişebildiği için, GPU’lar arasındaki yükü dengeli biçimde ayarlamak önemlidir
- DeepSeek-V3, yükü yüksek expert’leri kopyalayıp bunları GPU’lara verimli şekilde yerleştirerek yük dengesini sağlamak için redundant experts stratejisini kullanır
- Ayrıca, group-limited expert routing kullanarak aynı gruptaki expert’leri mümkün olduğunca aynı node üzerinde konumlandırır ve böylece node’lar arası veri aktarımını en aza indirir
- Bunu yeniden üretmeyi ve dağıtmayı kolaylaştırmak için,
eplb.py içinde EP yük dengeleme algoritması açık kaynak olarak sunulmuştur
- Bu algoritma, tahmin edilen expert yüküne göre dengeli bir expert çoğaltma ve yerleştirme planı hesaplar
- Ancak expert yükünü tahmin etmenin somut yöntemi bu deponun kapsamı dışındadır; genelde geçmiş istatistikleri kullanan hareketli ortalama yaklaşımı yaygın biçimde kullanılır
- Yük dengeleme algoritması iki politika sunar ve her biri farklı durumlarda kullanılır
- Hiyerarşik yük dengeleme (Hierarchical Load Balancing)
- Sunucu node sayısı expert grup sayısını bölebiliyorsa, hiyerarşik yük dengeleme politikası kullanılarak group-limited expert routing optimize edilir
- Önce expert grupları node’lara eşit şekilde yerleştirilerek node’lar arası yük dengelenir
- Ardından her node içinde expert’ler çoğaltılır
- Son olarak çoğaltılan expert’ler tekil GPU’lara yerleştirilerek GPU’lar arası yük dengesi sağlanır
- Bu politika, expert paralellik ölçeğinin küçük olduğu prefilling aşamasında kullanılabilir
- Küresel yük dengeleme (Global Load Balancing)
- Diğer durumlarda, expert gruplarından bağımsız olarak expert’leri küresel ölçekte çoğaltıp tekil GPU’lara yerleştiren küresel yük dengeleme politikası kullanılır
- Bu politika, expert paralellik ölçeğinin büyük olduğu decoding aşaması için uygundur
- DeepSeek, topluluğun iletişim-hesaplama örtüşmesi stratejilerini ve düşük seviye uygulama ayrıntılarını daha iyi anlayabilmesi için eğitim ve çıkarım framework’ündeki profilleme verilerini yayımladı
- Bu profilleme verileri PyTorch Profiler kullanılarak toplandı; indirildikten sonra Chrome’da
chrome://tracing, Edge’de ise edge://tracing üzerinden görselleştirilebilir
- Ayrıca deneylerde, profilleme için dengeli MoE routing stratejisi simüle edildi
- Eğitim (Training)
- Eğitim profil verileri, DualPipe içinde ileri ve geri chunk’ların örtüşme stratejisini gösterir
- Her chunk, 4 adet MoE (Mixture of Experts) katmanı içerir ve DeepSeek-V3’ün ön eğitim ayarlarıyla uyumlu paralel yapılandırmaya sahiptir:
- Çıkarım (Inference)
- Prefilling
- Bu aşamada hesaplama ile all-to-all iletişimini örtüştürmek için iki mikro batch kullanılır
- Ayrıca attention işlem yükü iki mikro batch arasında dengeli şekilde dağıtılır, böylece aynı prompt birden fazla mikro batch’e bölünebilir
- Decoding
- Decoding’de de prefilling’de olduğu gibi hesaplama ile all-to-all iletişimini örtüştürmek için iki mikro batch kullanılır
- Ancak decoding’de all-to-all iletişimi GPU SM’lerini işgal etmez → RDMA mesajını gönderdikten sonra GPU SM’lerini serbest bırakır ve hesaplama bittikten sonra iletişimin tamamlanması beklenir
- Daha ayrıntılı all-to-all uygulama bilgileri DeepEP içinde görülebilir
Henüz yorum yok.