開源周的第三天,DeepSeek把訓練推理 V3/R1 背後的 " 動力 " 給亮出來了——
DeepGEMM:一個 FP8 GEMM(通用矩陣乘法)庫,支持密集(dense)和混合專家(MoE)矩陣乘法運算。

我們先來簡單了解一下 GEMM。
GEMM,即通用矩陣乘法,是線性代數中的基本運算,是科學計算、機器學習、深度學習等領域中 " 常客 ",也是許多高性能計算任務的核心。
但由于它的計算量往往都比較大,所以 GEMM 的性能優化是至關重要的一點。
而 DeepSeek 這次開源的 DeepGEMM,依舊是保持了" 高性能 + 低成本 "的特性,亮點如下:
高性能:在 Hopper 架構的 GPU 上,DeepGEMM 能夠實現高達 1350+FP8 TFLOPS 的性能。
簡潔性:核心邏輯僅約 300 行代碼,但性能卻優于專家調優的内核。
即時編譯(JIT):采用完全即時編譯的方式,這意味着它可以在運行時動态生成優化的代碼,從而适應不同的硬件和矩陣大小。
無重依賴:這個庫設計得非常輕量級,沒有複雜的依賴關系,可以讓部署和使用變得簡單。
支持多種矩陣布局:支持密集矩陣布局和兩種 MoE 布局,這使得它能夠适應不同的應用場景,包括但不限于深度學習中的混合專家模型。
簡單來說,DeepGEMM 主要用于加速深度學習中的矩陣運算,特别是在大規模模型訓練和推理中,它特别适用于需要高效計算資源的場景,能夠顯著提升計算效率。
很多網友們對這次的開源都比較 " 買單 ",有人将 DeepGEMM 比作數學界的超級英雄,認爲它比飛快的計算器還要快,比多項式方程還要強大。

也有人将 DeepGEMM 的發布比喻爲量子态穩定到一個新的現實,稱贊其即時編譯的幹淨利落。

當然……也有人開始擔心起自己手上的英偉達股票了……

深入了解 DeepGEMM
DeepGEMM 是一個專門爲實現簡潔高效的 FP8 通用矩陣乘法(GEMMs)而打造的庫,它還具備細粒度縮放功能,這一設計源于 DeepSeek V3。
它既能處理普通的通用矩陣乘法,也能支持 MoE 分組的通用矩陣乘法。
這個庫是用 CUDA 編寫的,安裝的時候不需要編譯,因爲它會在運行時通過一個輕量級的即時編譯(JIT)模塊來編譯所有的内核程序。
目前,DeepGEMM 隻支持英偉達的 Hopper 張量核心。
爲了解決 FP8 張量核心在計算累積時不夠精确的問題,它采用了 CUDA 核心的兩級累積(提升)方法。
雖然 DeepGEMM 借鑒了 CUTLASS 和 CuTe 裏的一些理念,但并沒有過度依賴它們的模闆或代數運算。
相反,這個庫設計得很簡潔,隻有一個核心内核函數,代碼量大概 300 行左右。
這使得它成爲一個簡潔易懂的資源,方便大家學習 Hopper 架構下的 FP8 矩陣乘法和優化技術。
盡管其設計輕巧,但 DeepGEMM 的性能可以匹配或超過各種矩陣形狀的專家調優庫。
那麽具體性能如何呢?
團隊在 H800 上使用 NVCC 12.8 測試了 DeepSeek-V3/R1 推理中可能使用的所有形狀(包括預填充和解碼,但沒有張量并行)。
下面這張圖展示的是用于密集模型的普通 DeepGEMM 的性能:

從測試結果來看,DeepGEMM計算性能最高可達 1358 TFLOPS,内存寬帶最高可達 2668 GB/s。
加速比方面,與基于 CUTLASS 3.6 的優化實現相比,最高可達 2.7 倍。
再來看下 DeepGEMM 支持 MoE 模型的連續布局(contiguous layout)的性能:

以及支持 MoE 模型掩碼布局(masked layout)的性能是這樣的:

如何使用?
要想使用 DeepGEMM,需先注意一下幾個依賴項,包括:
必須支持 Hopper 架構的 GPU,sm_90a。
Python 3.8 及以上。
CUDA 12.3 及以上(推薦 12.8)。
PyTorch 2.1 及以上。
CUTLASS 3.6 及以上
Development 代碼如下:
# Submodule must be clonedgit clone --recursive [email protected]:deepseek-ai/DeepGEMM.git
# Make symbolic links for third-party ( CUTLASS and CuTe ) include directoriespython setup.py develop
# Test JIT compilationpython tests/test_jit.py
# Test all GEMM implements ( normal, contiguous-grouped and masked-grouped ) python tests/test_core.py
安裝代碼如下:
python setup.py install
在上述步驟之後,您的 Python 項目中導入 deep_gemm 即可。
在接口方面,對于普通的 DeepGEMM,可調用 deep_gemm.gemm_fp8_fp8_bf16_nt 函數,支持 NT 格式(非轉置 LHS 和轉置 RHS)。
對于分組的 DeepGEMM,連續布局情況下是 m_grouped_gemm_fp8_fp8_bf16_nt_contiguous;掩碼布局情況下是 m_grouped_gemm_fp8_fp8_bf16_nt_masked。
DeepGEMM 還提供設置最大 SM 數量、獲取 TMA 對齊大小等工具函數;支持環境變量,如 DG_NVCC_COMPILER、DG_JIT_DEBUG 等。
除此之外,DeepSeek 團隊還提供了幾種優化的方式,包括:
JIT 設計:所有内核在運行時編譯,無需安裝時編譯;支持動态選擇最優塊大小和流水線階段。
細粒度縮放:通過 CUDA 核心兩層累加解決 FP8 精度問題;支持非 2 的幂次方塊大小,優化 SM 利用率。
FFMA SASS 交錯:通過修改 SASS 指令的 yield 和 reuse 位,提高性能。

感興趣的小夥伴可以戳文末 GitHub 鏈接查看詳情哦 ~
One More Thing
英偉達這幾天的股票……嗯……一直再跌:

不過在北京時間 27 日淩晨,英偉達 2025 财年第四季度業績報告也即将出爐,我們可以期待一下它的表現 ~
掃碼備注「DeepSeek- 職業 / 姓名」加入群聊,一起追蹤 DeepSeek 開源周!

DeepGEMM GitHub 入口:
https://github.com/deepseek-ai/DeepGEMM