当前位置: 首页 > news >正文

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 SM90(Hopper)/ SM100(Blackwell)

  • 依赖:CUDA 12.3+、PyTorch 2.1+、CUTLASS 4.0+

  • 编译:JIT 即时编译,零安装编译负担

  • 协议:MIT License


5. 平台核心功能

  • FP8 GEMM 密集计算:支持 NT/NN/TN/TT 四种内存布局,H800 上可达1550 TFLOPS

  • Grouped 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 程序化依赖启动等底层优化

🆚 竞品对比:

维度

DeepGEMM

CUTLASS

cuBLAS

Triton

定位

LLM 专用 GEMM

通用 GEMM 库

NVIDIA 官方库

通用 GPU 编程

代码简洁度

⭐⭐⭐⭐⭐

⭐⭐

⭐⭐⭐⭐(闭源)

⭐⭐⭐⭐

FP8 支持

✅ 原生

⭐⭐ 有限

✅ 支持

⭐⭐ 需手动

MoE 优化

✅ Grouped GEMM

⭐⭐ 可自实现

学习曲线

高(模板复杂)

低(API 简单)

性能

⭐⭐⭐⭐⭐

⭐⭐⭐⭐⭐

⭐⭐⭐⭐⭐

⭐⭐⭐⭐

通用性

⭐⭐⭐(LLM 专用)

⭐⭐⭐⭐⭐

⭐⭐⭐⭐⭐

⭐⭐⭐⭐⭐

开源

✅ MIT

✅ BSD

❌ 闭源

✅ MIT

DeepGEMM 的核心优势在于为 LLM 推理量身定制——FP8 原生支持、MoE 优化、简洁代码设计。CUTLASS 更通用但学习曲线陡峭,cuBLAS 性能最强但闭源且不支持 MoE,Triton 灵活但需要手动优化。如果你专注于 LLM 推理加速,DeepGEMM 是最直接的选择。


7. 平台安装使用

环境要求

# NVIDIA SM90 或 SM100 GPU # Python 3.8+ / CUDA 12.3+ / PyTorch 2.1+

开发安装

git clone --recursive git@github.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), dtype=torch.bfloat16, device='cuda') deep_gemm.fp8_gemm_nt( a_fp8, a_sf, b_fp8, b_sf, c=out, out_scale=1.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 采用JIT(Just-In-Time)即时编译机制,安装时无需预编译 CUDA 代码,运行时按需编译。这个设计解决了传统 CUDA 库的什么痛点?

1. 传统 CUDA 库的安装困境

传统 GPU 计算库(如 cuBLAS、CUTLASS)需要用户在安装时指定 GPU 架构(如-arch=sm_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, c=out) # 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 精度优化的核心

FP8(8 位浮点)相比 FP16/BF16 将内存带宽和计算量减半,但精度损失是核心挑战。DeepGEMM 通过逐块缩放(Block-wise Scaling)解决:将矩阵分块(如 128×128),每块计算一个缩放因子,在 GEMM 计算后将结果乘以缩放因子恢复精度。这种方案在 H800 上达到1550 TFLOPS(理论峰值的 90%+),精度损失控制在 0.1% 以内。


总结

DeepGEMM 填补了开源社区在高性能 GPU GEMM 内核库的空白。它以简洁的代码设计实现了专家级的性能表现

对比 CUTLASS、cuBLAS 和 Triton,DeepGEMM 的核心优势在于为 LLM 推理量身定制 + FP8 原生支持 + MoE 优化 + 代码简洁。对于从事大模型推理优化的团队来说,这是一个值得深入研究的底层工具库。

💬互动话题:你在项目中用过这个工具/框架吗?体验如何?评论区聊聊你的看法。

项目地址:https://github.com/deepseek-ai/DeepGEMM

http://www.rkmt.cn/news/1488295.html

相关文章:

  • Windows一键运行的车牌识别计费工具,含源码和摄像头实时识别支持
  • 如何在Windows 10/11上快速恢复经典游戏网络功能:IPXWrapper完整指南
  • 大模型、技能、协议全解析:AI 世界的“超级大脑”如何协作?
  • Stable Baselines3深度解析:从PyTorch强化学习框架到生产级部署实战
  • 从传统PC到云桌面:一次真实的呼叫中心VDI改造项目复盘与避坑指南
  • 树莓派5/4B通用:MobaXterm一站式搞定SSH与VNC远程桌面(含固定IP与开机自启配置)
  • 从有量到优质适配:2026园林绿化工程采购新标准与五大优选供应商 - 品研笔录
  • Kafka消费者手动提交offset,你真的搞懂了吗?一个订单处理场景的实战解析
  • Genesis Plus GX:深度技术解析与多平台实现指南
  • 如何在Android手机上实现专业级FT8通信?FT8CN完整使用指南
  • 基于MC68HC908MR32的无传感器BLDC电机控制硬件方案深度解析
  • 终极指南:如何用AutoHotkey快速实现Chrome浏览器自动化
  • 别再手动忽略!用Beyond Compare过滤规则一键清理IDE垃圾文件
  • 如何快速配置Aria2下载工具:面向新手的完整解决方案
  • 嵌入式开发中整数模拟小数运算:定点数实现与优化实践
  • 调试效率翻倍!手把手教你改造ZLToolKit日志,实现彩色输出、按文件分割与动态级别切换
  • 焕新视觉,净爽随行 宏洛图设计・控油清爽系列洗护包装设计案例 - 宏洛图品牌设计
  • 2026成都翡翠回收口碑榜,收的顶凭专业鉴评收获用户认可 - 奢侈品回收测评
  • 如何为Umi-OCR选择最适合的文字识别引擎?7款免费OCR插件深度对比
  • K32W无线MCU低功耗实战:从原理到测量,优化BLE/Zigbee设备续航
  • MPC5744P ECC错误注入实战:从原理到功能安全测试
  • AGI、Agent、Skill、MCP:AI应用开发必知四大金刚如何协同作战!
  • STM32F40x闹钟实战工程:带串口实时校时与完整外设调试支持
  • 告别纯手动操作:揭秘HydroD的JScript脚本批处理,如何一键完成系列工况计算
  • Vue低代码布局工具:拖组件进表格区、锁水平移动、调文字大小
  • kvass加密机制详解:AES-256 GCM如何保护你的数据安全
  • 电子元器件缺货潮的根源剖析与供应链韧性构建实战指南
  • 成都卖黄金避坑!6家实测,高价零杂费首选它 - 薛定谔的梨花猫
  • Linux内核学习轨迹第五部: Swap交换分区机制实现(第十一小节)
  • WASM运行时中的AI推理引擎设计与优化