【DeepSeek】開源第四彈放大招:一口氣放出平行計算最佳化三劍客「訓練速度,GPU利用,最佳化經驗」


DeepSeek 開源周第四天放大招,推出平行計算最佳化三劍客,直接放出了DeepSeek-V3和R1 模型背後的平行計算最佳化技術,一口氣帶來了三個寶藏項目!

三個項目,簡單來說分別對應:

✅ DualPipe - 雙向流水線平行演算法,讓計算和通訊高效協同
✅ EPLB - 專家平行負載平衡器,讓每個 GPU 都“雨露均霑”
✅ profile-data - 性能分析資料,深入剖析 V3/R1 的平行奧秘

這三個項目個個都是硬核技術,每一個都直擊大模型訓練和推理的效率痛點!下面帶大家逐個解讀

DualPipe:雙向流水線平行演算法

項目地址:https://github.com/deepseek-ai/DualPipe

DualPipe 是 DeepSeek-AI 在DeepSeek-V3 技術報告中提出的創新雙向流水線平行演算法。它厲害在那呢?

  • 計算-通訊全重疊: 傳統流水線平行難免會有 “pipeline bubbles”(流水線氣泡),導致 GPU 等待。 DualPipe 的絕妙之處在於,它能讓前向計算和後向計算的通訊階段完美重疊!
  • 減少 Pipeline Bubbles: 通過精巧的設計,DualPipe 顯著減少了流水線氣泡,讓 GPU 資源得到最大化利用

看看官方提供的 Schedules 圖,簡直是藝術! 🎨 清晰展示了 8 個 PP ranks 和 20 個 micro-batches 的調度策略,前向和後向計算對稱進行,重疊區域一目瞭然!

再看看 Pipeline Bubbles and Memory Usage Comparison 表格,DualPipe 對比 1F1B 和 ZB1P,在減少 bubbles 的同時,記憶體效率也槓槓的!

如果你想在自己的項目中用上 DualPipe,DeepSeek-AI 也貼心地提供了 Quick Start 指南和 example.py 示例程式碼。 基於 PyTorch 2.0+ 版本就能輕鬆上手!

EPLB:專家平行負載平衡,讓 GPU 各司其職!

項目地址:https://github.com/deepseek-ai/eplb

EPLB (Expert Parallelism Load Balancer) 顧名思義,是為專家平行 (Expert Parallelism, EP)量身打造的負載平衡利器!

在 EP 中,不同的專家模型會被分配到不同的 GPU 上。 但是,專家模型的負載可能會隨著輸入資料變化而波動,導致 GPU 負載不均,影響整體效率。 EPLB 就是來解決這個問題的!

DeepSeek-V3 採用了冗餘專家 (redundant experts)策略,複製重負載專家,並巧妙地將它們分配到不同的 GPU 上,實現負載平衡。 同時,結合 group-limited expert routing 技術,儘量將同一組的專家放在同一節點上,減少跨節點通訊

EPLB 提供了兩種負載平衡策略:

  • Hierarchical Load Balancing (分層負載平衡): 當伺服器節點數可以整除專家組數時使用。 先平衡節點間的負載,再平衡節點內 GPU 的負載。 適用於預填充 (prefilling) 階段
  • Global Load Balancing (全域負載平衡): 適用於其他情況。 全域複製專家,然後分配到各個 GPU。 適用於解碼 (decoding) 階段

項目提供了詳細的 Interface and Example, 讓你輕鬆理解如何使用 eplb.rebalance_experts 函數,根據專家權重、副本數、組數、節點數和 GPU 數,計算出最優的專家複製和放置方案。 還有生動的 placement plan 圖示,一目瞭然!

📊 profile-data:性能分析資料,揭秘 V3/R1 平行策略!

項目地址:https://github.com/deepseek-ai/profile-data

DeepSeek直接公開了他們的 訓練 (Training) 和 推理 (Inference) 框架的性能分析資料! 簡直是手把手教你學最佳化!

這些資料是用 PyTorch Profiler 採集的,下載後可以直接在 Chrome 或 Edge 瀏覽器中通過 chrome://tracing 或 edge://tracing 打開,可視化分析! DeepSeek-AI 還貼心地模擬了絕對平衡的 MoE 路由策略用於性能分析

項目提供了 Training, Prefilling 和 Decoding 三種場景的性能資料:

  • Training (訓練): 展示了 DualPipe 在一對 forward 和 backward chunks 中的重疊策略。 使用了 4 層 MoE,EP64, TP1, 4K 序列長度等 DeepSeek-V3 預訓練設定。 注意,為了簡化分析,PP 通訊被排除在外
  • Prefilling (預填充): 採用了 EP32, TP1,4K 提示長度,16K tokens/GPU 的 batch size。 展示了如何使用兩個 micro-batches 來重疊計算和 all-to-all 通訊,並確保 attention 計算負載在兩個 micro-batches 間平衡
  • Decoding (解碼): 採用了 EP128, TP1, 4K 提示長度,128 requests/GPU 的 batch size。 同樣使用了兩個 micro-batches 來重疊計算和 all-to-all 通訊。 但與 prefilling 不同的是,解碼階段的 all-to-all 通訊 不佔用 GPU SMs! RDMA 消息發出後,GPU SMs 就被釋放,系統等待 all-to-all 通訊完成後再繼續計算。 效率更高!

通過這些性能資料,你可以清晰地看到 DeepSeek-AI 是如何精細地最佳化計算和通訊的,學習他們是如何在 low-level 實現上提升效率的。 絕對是研究大模型平行計算的寶貴資料! 💎

寫在最後:

這次 DeepSeek AI 開放原始碼的這三個項目,可以說是誠意滿滿,直接把大模型訓練和推理的效率最佳化秘籍都拿出來了!利多AI研究人員

  • DualPipe 讓你掌握高效流水線平行的核心技術,提升模型訓練速度。
  • EPLB 讓你學會如何為專家平行模型做負載平衡,提升 GPU 利用率。
  • profile-data 讓你深入瞭解 DeepSeek-V3 的平行策略,學習頂尖團隊的最佳化經驗 (AI寒武紀)