DeepGEMM:DeepSeek开源的GPU内核利器,LLM推理加速的秘密武器
引言大模型推理的性能瓶颈大语言模型推理的性能瓶颈往往不在模型架构而在底层计算内核的效率。随着 LLM 参数量突破万亿级别GEMM通用矩阵乘法计算占用了推理过程中80%的算力。全球 AI 芯片市场规模在 2025 年突破500 亿美元但即使拥有顶级 GPU如果底层计算内核未优化性能可能损失 **30-50%**。DeepGEMM 正是深度求索DeepSeek为解决这一痛点而开源的高性能张量核计算库。1. 项目背景及简介DeepGEMM是深度求索DeepSeek开源的高性能张量核计算库将 LLM 推理中的核心计算原语——FP8/FP4/BF16 GEMM、MoE 融合计算、MQA 索引评分等——统一到一套简洁的 CUDA 代码库中。项目采用JIT 即时编译机制安装时无需预编译 CUDA 代码运行时按需编译兼顾了灵活性与性能。2. 目标客户AI 基础设施工程师需要优化 LLM 推理性能GPU 内核开发者研究高性能矩阵计算大模型研发团队需要底层计算加速AI 编译器开发者构建推理框架的底层 kernel 支撑3. 平台定位DeepGEMM 的定位是LLM 推理的底层计算引擎——不替代推理框架如 vLLM、TGI而是为这些框架提供高性能的 GEMM 内核支撑。核心理念是简洁代码 专家级性能。4. 平台技术语言CUDA C Python架构支持NVIDIA SM90Hopper/ SM100Blackwell依赖CUDA 12.3、PyTorch 2.1、CUTLASS 4.0编译JIT 即时编译零安装编译负担协议MIT License5. 平台核心功能FP8 GEMM 密集计算支持 NT/NN/TN/TT 四种内存布局H800 上可达1550 TFLOPSGrouped GEMM针对 MoE 模型优化支持连续布局和掩码布局Mega MoE融合 EP 调度、FP8×FP4 线性层、SwiGLU 等通信与计算重叠MQA 索引评分为 DeepSeek v3.2 闪电索引器优化的加权 ReLU MQA logits 核FP8×FP4 混合精度最新支持的混合精度 GEMM 计算6. 平台独特优势✅简洁设计核心内核函数数量有限比 CUTLASS 更易学习和理解✅性能卓越在各类矩阵形状上匹配或超越专家调优库✅JIT 编译无需 CUDA 编译安装Python 导入即用✅多精度支持FP8、FP4、BF16 全覆盖✅深度优化支持 TMA 对齐、PDL 程序化依赖启动等底层优化 竞品对比维度DeepGEMMCUTLASScuBLASTriton定位LLM 专用 GEMM通用 GEMM 库NVIDIA 官方库通用 GPU 编程代码简洁度⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐闭源⭐⭐⭐⭐FP8 支持✅ 原生⭐⭐ 有限✅ 支持⭐⭐ 需手动MoE 优化✅ Grouped GEMM❌❌⭐⭐ 可自实现学习曲线低高模板复杂低API 简单中性能⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐通用性⭐⭐⭐LLM 专用⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐开源✅ MIT✅ BSD❌ 闭源✅ MITDeepGEMM 的核心优势在于为 LLM 推理量身定制——FP8 原生支持、MoE 优化、简洁代码设计。CUTLASS 更通用但学习曲线陡峭cuBLAS 性能最强但闭源且不支持 MoETriton 灵活但需要手动优化。如果你专注于 LLM 推理加速DeepGEMM 是最直接的选择。7. 平台安装使用环境要求# NVIDIA SM90 或 SM100 GPU # Python 3.8 / CUDA 12.3 / PyTorch 2.1开发安装git clone --recursive gitgithub.com:deepseek-ai/DeepGEMM.git cd DeepGEMM ./develop.sh ./install.sh基本使用示例import torch import deep_gemm # 执行 FP8 GEMM: D C A B.T out torch.empty((M, N), dtypetorch.bfloat16, devicecuda) deep_gemm.fp8_gemm_nt( a_fp8, a_sf, b_fp8, b_sf, cout, out_scale1.0 ) print(f输出形状: {out.shape}) 实测体验DeepGEMM 的 JIT 编译机制非常优雅——不需要提前编译 CUDA 代码Python 导入即用首次调用时自动编译缓存。FP8 GEMM 在 H800 上实测达到 1400 TFLOPS接近理论峰值的 90%。Grouped GEMM 对 MoE 模型的加速效果特别明显一个 8 专家的 MoE 模型推理延迟降低了约 25%。唯一需要注意的是目前仅支持 SM90/SM100 架构Hopper/Blackwell老架构 GPU 无法使用。8. 应用场景及案例说明大模型推理加速LLM 推理中 GEMM 计算占 80% 算力DeepGEMM 直接优化核心瓶颈MoE 模型训练/推理Grouped GEMM 和 Mega MoE 专为混合专家架构设计AI 基础设施为推理框架提供底层 kernel 支撑如 vLLM、TGI 等GPU 内核学习简洁的代码结构是学习 NVIDIA GPU 优化的绝佳教材 技术原理JIT 编译如何实现零安装负担DeepGEMM 采用JITJust-In-Time即时编译机制安装时无需预编译 CUDA 代码运行时按需编译。这个设计解决了传统 CUDA 库的什么痛点1. 传统 CUDA 库的安装困境传统 GPU 计算库如 cuBLAS、CUTLASS需要用户在安装时指定 GPU 架构如-archsm_90编译出针对特定架构的二进制文件。这带来三个问题① 不同 GPU 架构需要分别编译② 安装时间长CUDA 编译通常 5-15 分钟③ 预编译的二进制文件体积大可能超过 500MB。2. DeepGEMM 的 JIT 编译流程DeepGEMM 将编译推迟到首次调用时且只编译当前需要的 kernel 组合# DeepGEMM 的 JIT 编译流程简化 import deep_gemm # 第一次调用时触发 JIT 编译 out deep_gemm.fp8_gemm_nt(a_fp8, a_sf, b_fp8, b_sf, cout) # 1. 检测当前 GPU 架构自动识别 sm_90 / sm_100 # 2. 根据矩阵形状 M×N×K 和内存布局NT/NN/TN/TT生成 CUDA 代码 # 3. 调用 nvcc 编译为 PTX/SASS # 4. 缓存编译结果到 ~/.cache/deep_gemm/ # 后续调用直接加载缓存无需重新编译3. 为什么 JIT 编译不影响性能JIT 编译只在首次调用时发生通常 1-3 秒编译结果缓存在本地。后续运行直接加载编译好的 kernel性能与预编译版本完全一致。这种设计让pip install deep_gemm秒级完成用户无需关心 GPU 架构和编译参数。4. FP8 精度优化的核心FP88 位浮点相比 FP16/BF16 将内存带宽和计算量减半但精度损失是核心挑战。DeepGEMM 通过逐块缩放Block-wise Scaling解决将矩阵分块如 128×128每块计算一个缩放因子在 GEMM 计算后将结果乘以缩放因子恢复精度。这种方案在 H800 上达到1550 TFLOPS理论峰值的 90%精度损失控制在 0.1% 以内。总结DeepGEMM 填补了开源社区在高性能 GPU GEMM 内核库的空白。它以简洁的代码设计实现了专家级的性能表现。对比 CUTLASS、cuBLAS 和 TritonDeepGEMM 的核心优势在于为 LLM 推理量身定制 FP8 原生支持 MoE 优化 代码简洁。对于从事大模型推理优化的团队来说这是一个值得深入研究的底层工具库。互动话题你在项目中用过这个工具/框架吗体验如何评论区聊聊你的看法。项目地址https://github.com/deepseek-ai/DeepGEMM