DeepSeek一口氣開源3個專案,還有梁文鋒親自參與,昨晚API大降價
机器之心發表於2025-02-27
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 是在 DeepSeek-V3 技術報告中引入的一種創新的雙向流水線並行演算法。它實現了前向和後向計算 - 通訊階段的完全重疊,同時減少了流水線氣泡。有關計算 - 通訊重疊的詳細資訊,請參閱配置檔案資料:https://github.com/deepseek-ai/profile-dataDualPipe 排程示例:8 個 流水線並行(PP)級別和 20 個雙向 micro-batch。反向的 micro-batch 與前向的 micro-batch 對稱,因此圖中省略了它們的 batch ID 。被共享的黑色邊框包圍的兩個單元格具有相互重疊的計算和通訊。有網友製作了 DualPipe 與其他兩種方法 ——1F1B and ZB1P 的對比圖: 𝐹 表示前向資料塊的執行時間,𝐵 表示完整後向資料塊的執行時間,𝑊 表示「權重後向」資料塊的執行時間,𝐹&𝐵 表示兩個相互重疊的前向和後向資料塊的執行時間。DualPipe由Jiashi Li、Chengqi Deng、梁文鋒建立和開發。更多資訊請參見GitHub程式碼庫。在使用專家並行(Expert Parallelism,EP)時,不同的專家被分配到不同的 GPU 上。由於不同專家的負載可能會根據當前工作負載而變化,保持不同 GPU 之間的負載平衡非常重要。正如 DeepSeek-V3 論文中所描述的,工程師們採用了冗餘專家策略,複製高負載的專家。然後,DeepSeek 透過啟發式方法將這些複製的專家打包到 GPU 上,以確保不同 GPU 之間的負載平衡。此外,得益於 DeepSeek-V3 中使用的組限制專家路由(group-limited expert routing),DeepSeek 工程師還儘可能地將同一組的專家放置在同一節點上,以減少節點間的資料傳輸。為了便於復現和部署,DeepSeek 在 eplb.py 中開源了部署的 EP 負載平衡演算法。該演算法根據估計的專家負載計算出一個平衡的專家複製和放置方案。請注意,預測專家負載的確切方法超出了本倉庫的範圍。一種常見的方法是使用歷史統計資料的移動平均值。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 這兩天還宣佈了一些重要訊息:一是恢復 API 開放平臺充值;二是北京時間每日 00:30 至 08:30 的夜間空閒時段,推出錯峰優惠活動。在此期間,API 呼叫價格大幅下調:DeepSeek-V3 降至原價的 50%,DeepSeek-R1 更低至 25%。這一使用方式被網友稱為「峰谷 token」。有人利用峰谷電特點半夜洗碗、烘衣服,自然也有人半夜跑 AI 任務。有使用者表示,「一些批次的任務可以到晚上讓它自動執行了」「DeepSeek 是懂年輕人的」。而在大洋彼岸,需要 DeepSeek 的打工人正常時段就可以享受到優惠,美國打工人高呼「真香」。所以,現在壓力給到了其他 API 供應商,這波降價潮,其他家跟不跟? 《剛剛,DeepSeek 開源 FlashMLA,推理加速核心技術,Star 量飛漲中》《剛剛,DeepSeek 開源 MoE 訓練、推理 EP 通訊庫 DeepEP,真太 Open 了!》《DeepSeek 開源通用矩陣乘法庫,300 行程式碼加速 V3、R1,R2 被曝五月前問世》