📌 项目地址:deepseek-ai/DeepGEMM | ⭐ 8,636 颗星 | 🔧 Cuda | 📜 未标注
先说结论
DeepGEMM 是 DeepSeek 开源的 CUDA 张量核计算库,8600 多个 star。它把 DeepSeek 模型里最吃算力的几类运算集中在一个代码库里:FP8/FP4/BF16 的 GEMM、带通信重叠的融合 MoE(Mega MoE)、给 lightning indexer 用的 MQA scoring、HyperConnection 等。
换句话说,这是 DeepSeek v3.2 这类模型实际在跑的 kernel 代码。想理解 DeepSeek 怎么把 FP8 训练效率做到那个水平,代码就在这里。
性能和定位
2025 年 4 月,DeepGEMM 在 H800 上跑到过 1550 TFLOPS。官方的说法是,在多种矩阵形状下,性能持平或超过专家调优的库。
这个数字值得记住,但更值得关注的是它的代码风格。DeepGEMM 借鉴了 CUTLASS 和 CuTe 的一些概念,没有重度依赖后者的模板和代数体系。核心 kernel 函数数量有限,官方明确把它定位成一份“干净的、可以用来学习 NVIDIA GPU kernel 优化技术的资源”。
用过 CUTLASS 的人都知道,那套模板有多难啃。一份性能打平专家库、代码量小到能读完的实现,对学 CUDA 优化的人来说是稀缺品。
DeepJIT:装的时候不编译
DeepGEMM 所有 kernel 都在运行时通过 DeepJIT 编译,安装阶段完全不需要 CUDA 编译。2025 年 7 月那次完整重构引入了低 CPU 开销的 JIT CPP 模块,后来的版本还继续加快了 JIT 编译速度。
这个设计对部署很友好:装起来快,升级 CUDA 相关代码也不用重新走一遍安装编译流程。
迭代节奏:跟着模型走
翻一遍 News 就能看出这个库的演进路径,基本和 DeepSeek 自家模型绑定:
- 2025.04:H800 上 1550 TFLOPS
- 2025.05:dense 和 MoE 反向的权重梯度 kernel(#95)
- 2025.07:支持 SM90/SM100 双架构,重构出 JIT 模块(#112)
- 2025.09:v3.2 lightning indexer 的 weighted ReLU MQA scoring kernel(#200)
- 2026.04:Mega MoE、FP8xFP4 GEMM、FP4 Indexer、PDL(#304,benchmark 在 #316)
- 2026.09:Sparse Indexer、Mega Gate、locality domain 优化等(#432、#462),另外推出了华为昇腾版 DeepGEMM-Ascend(独立仓库)
一个细节:NVCC 12.9 之后编译器会自动做 FFMA interleaving,所以早期版本里相关的手工优化被移除了。看代码学优化技巧时注意版本,别学已经被编译器吃掉的东西。
环境要求
README 列了三条:
- NVIDIA SM90 或 SM100 架构 GPU,也就是 Hopper(H100/H800)和 Blackwell
- Python 3.8 或更高
- 支持 C++2 的编译器和标准库
硬件门槛是硬性的,没有这两代卡就不用看了。
和同类方案怎么选
GPU 上做矩阵乘,常见选择有 cuBLAS、CUTLASS,以及 vLLM、FlashInfer 这类推理框架自带的 kernel。DeepGEMM 的差异在两点:
一是为 DeepSeek 的模型形态深度定制。MoE 分组 GEMM、Mega MoE 的通信重叠、lightning indexer 的 scoring,这些场景通用库要么不支持,要么性能不够。官方 PR 里附有 benchmark,可以对着自己的矩阵形状判断。
二是通用性上的取舍。它只支持 SM90/SM100,功能围绕大模型计算原语展开,不是 cuBLAS 的替代品。
我的建议分人:做大规模训练或推理 infra、想把 FP8/FP4 硬件性能榨干的人,值得直接读代码;想学 CUDA kernel 优化的人,把它当参考实现读,比啃 CUTLASS 划算。如果只是想跑个推理 demo,用 vLLM 或 SGLang 更省事,它们底层已经在用类似的技术。
具体安装命令和 API 用法,README 的 Quick start 部分(此处截取不全)以官方仓库为准。每个大版本的实现细节和 benchmark,News 里链接的 PR(如 #432、#304、#112)写得很细,比 README 本身更有料。