DeepSeek一口氣開源3個項目,還有梁文鋒親自參與,昨晚API大降價 精華
DeepSeek 的開源周已經進行到了第四天(前三天報道見文末「相關閱讀」)。今天這家公司一口氣發布了兩個工具和一個數據集:DualPipe、EPLB 以及來自訓練和推理框架的分析數據。
DeepSeek 表示,DualPipe 曾在 V3/R1 的訓練中使用,是一種用于計算 - 通信重疊的雙向 pipeline 并行算法。
EPLB 是為 V3/R1 打造的專家 - 并行負載均衡器。
而公布訓練和推理框架的分析數據是為了幫助社區更好地理解通信 - 計算重疊策略和底層實現細節。
- DualPipe 鏈接:https://github.com/deepseek-ai/DualPipe
- EPLB 鏈接:https://github.com/deepseek-ai/eplb
- 計算分析鏈接:https://github.com/deepseek-ai/profile-data
值得一提的是,在 DualPipe 的 GitHub 上,DeepSeek 創始人梁文鋒位列開發者行列之中。
技術語言可能不好理解,我們來看一下網友給出的比喻:
想象一下,訓練一個龐大的語言模型就像指揮一個交響樂團。每個 GPU 就像一位音樂家,執行其分配的計算任務,而訓練框架則充當指揮,保持一切完美同步。在典型設置中,音樂家們可能需要等待彼此,造成尷尬的停頓。這些延遲,被稱為流水線氣泡,會減慢整個過程。
DualPipe 通過允許不同部分并行工作來消除這些低效,就像弦樂部演奏的同時銅管部也在排練。這種努力的重疊確保沒有停機時間。
有網友評價說,「DualPipe 不僅僅是另一種流水線并行實現。它解決的根本問題是標準流水線并行中固有的低效率。傳統方法如 1F1B(一次前向,一次后向)甚至 Zero Bubble(ZB1P)都存在流水線氣泡 —— 即各計算單元等待數據時的空閑時間。DualPipe 旨在實現前向和后向計算 - 通信階段的完全重疊,最大限度地減少了這些氣泡。」
而關于 EPLB,我們可以這么理解:傳統的數據并行就像給每個人一份整個項目的副本 —— 既浪費又緩慢。專家并行(EP),即每個專家駐留在不同的 GPU 上,如果可以平衡負載,則效率要高得多。EPLB 就是為了解決這種專家失衡問題而設計的。這不僅僅是分配專家;它是關于智能地分配它們,以最大限度地提高 GPU 利用率和最小化通信開銷。
到現在為止,DeepSeek 似乎已經把發布 V3、R1 模型時未公布的很多訓練、部署細節也公開了出來。人們不僅可以在此基礎上更好地使用 DeepSeek 模型,在使用其他大模型時也能獲得助益。
明天周五,是開源周的最后一天,DeepSeek 有可能用 R2 來收尾嗎?
讓我們先來看看今天開源的三個項目。
DualPipe
DualPipe 是在 DeepSeek-V3 技術報告中引入的一種創新的雙向流水線并行算法。它實現了前向和后向計算 - 通信階段的完全重疊,同時減少了流水線氣泡。有關計算 - 通信重疊的詳細信息,請參閱配置文件數據:https://github.com/deepseek-ai/profile-data
調度
DualPipe 調度示例:8 個 流水線并行(PP)級別和 20 個雙向 micro-batch。反向的 micro-batch 與前向的 micro-batch 對稱,因此圖中省略了它們的 batch ID 。被共享的黑色邊框包圍的兩個單元格具有相互重疊的計算和通信。
有網友制作了 DualPipe 與其他兩種方法 ——1F1B and ZB1P 的對比圖:
Pipeline 氣泡和內存使用情況比較
?? 表示前向數據塊的執行時間,?? 表示完整后向數據塊的執行時間,?? 表示「權重后向」數據塊的執行時間,??&?? 表示兩個相互重疊的前向和后向數據塊的執行時間。
DualPipe由Jiashi Li、Chengqi Deng、梁文鋒創建和開發。更多信息請參見GitHub代碼庫。
EPLB
在使用專家并行(Expert Parallelism,EP)時,不同的專家被分配到不同的 GPU 上。由于不同專家的負載可能會根據當前工作負載而變化,保持不同 GPU 之間的負載平衡非常重要。正如 DeepSeek-V3 論文中所描述的,工程師們采用了冗余專家策略,復制高負載的專家。然后,DeepSeek 通過啟發式方法將這些復制的專家打包到 GPU 上,以確保不同 GPU 之間的負載平衡。
此外,得益于 DeepSeek-V3 中使用的組限制專家路由(group-limited expert routing),DeepSeek 工程師還盡可能地將同一組的專家放置在同一節點上,以減少節點間的數據傳輸。
為了便于復現和部署,DeepSeek 在 eplb.py 中開源了部署的 EP 負載平衡算法。該算法根據估計的專家負載計算出一個平衡的專家復制和放置方案。請注意,預測專家負載的確切方法超出了本倉庫的范圍。一種常見的方法是使用歷史統計數據的移動平均值。
DeepSeek Infra 中的數據分析
DeepSeek 公開分享了自身的訓練和推理框架分析數據,以幫助社區更好地了解通信計算重疊策略和低級實現細節。該分析數據是使用 PyTorch Profiler 捕獲的。下載后,人們可以通過在 Chrome 瀏覽器中導航到 chrome://tracing(或在 Edge 瀏覽器中導航到 edge://tracing)來直接對其進行可視化。
訓練配置文件數據展示了 DeepSeek 在 DualPipe 中針對一對單獨的前向和后向塊的重疊策略。每個塊包含 4 個 MoE(專家混合)層。并行配置與 DeepSeek-V3 預訓練設置一致:EP64、TP1 具有 4K 序列長度。并且為簡單起見,在分析過程中不包括 PP 通信。
在推理上,對于預填充,該配置文件采用 EP32 和 TP1(與 DeepSeek V3/R1 的實際在線部署一致),提示長度設置為 4K,每 GPU 的批大小為 16K 個 token。在預填充階段,DeepSeek 使用兩個 micro-batch 來重疊計算和全對全通信,同時確保注意力計算負載在兩個微批次之間保持平衡 —— 這意味著同一個提示可以在它們之間拆分。
對于解碼,該配置文件采用 EP128、TP1 和 4K 的提示長度(與實際的在線部署配置非常接近),每個 GPU 的批處理大小為 128 個請求。與預填充類似,解碼也利用兩個 micro-batch 進行重疊計算和全對全通信。但是,與預填充不同,解碼期間的全對全通信不占用 GPU SM:發出 RDMA 消息后,所有 GPU SM 都被釋放,系統等待計算完成后全對全通信完成。
DeepSeek 錯峰優惠,半夜跑 AI 更省錢
除了持續開源,DeepSeek 這兩天還宣布了一些重要消息:一是恢復 API 開放平臺充值;二是北京時間每日 00:30 至 08:30 的夜間空閑時段,推出錯峰優惠活動。在此期間,API 調用價格大幅下調:DeepSeek-V3 降至原價的 50%,DeepSeek-R1 更低至 25%。這一使用方式被網友稱為「峰谷 token」。
有人利用峰谷電特點半夜洗碗、烘衣服,自然也有人半夜跑 AI 任務。有用戶表示,「一些批量的任務可以到晚上讓它自動運行了」「DeepSeek 是懂年輕人的」。
而在大洋彼岸,需要 DeepSeek 的打工人正常時段就可以享受到優惠,美國打工人高呼「真香」。
所以,現在壓力給到了其他 API 供應商,這波降價潮,其他家跟不跟?
本文轉自 機器之心 ,作者:機器之心
