当前位置: 首页 > 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.jsqmd.com/news/976575/

相关文章:

  • 2026 东莞实力代理记账公司推荐:广东万创实力标杆 合规财税、进出口退税、内账外包服务、注册公司正规专业财税服务优选榜单 - 变量人生001
  • 如何在Windows 10/11上快速恢复经典游戏网络功能:IPXWrapper完整指南
  • COM3D2 MaidFiddler终极指南:5分钟快速掌握实时游戏编辑器
  • 别再只记Payload了!从302跳转原理到Gopher协议,彻底搞懂SSRF本地请求伪造
  • 利用NXP i.MX RT1010 FlexIO模块模拟I2S接口实现音频数据传输
  • 2026年东莞优质 专业铜铝型材切割机生产企业信息参考 - 变量人生001
  • 深入解析NXP A5000 APDU规范:安全对象与会话管理实战
  • Kafka消费者手动提交offset,你真的搞懂了吗?一个订单处理场景的实战解析
  • 从传统PC到云桌面:一次真实的呼叫中心VDI改造项目复盘与避坑指南
  • 从有量到优质适配:2026园林绿化工程采购新标准与五大优选供应商 - 品研笔录
  • C++模板用多了编译报错?手把手教你用CMake跨平台解决MSVC/GCC的bigobj问题
  • Stable Baselines3深度解析:从PyTorch强化学习框架到生产级部署实战
  • i.MX 8平台DDR ECC实战:原理、性能影响与工程优化指南
  • 树莓派5/4B通用:MobaXterm一站式搞定SSH与VNC远程桌面(含固定IP与开机自启配置)
  • 大模型、技能、协议全解析:AI 世界的“超级大脑”如何协作?
  • Genesis Plus GX:深度技术解析与多平台实现指南
  • 图解+代码:5分钟搞懂ShuffleNet的‘通道混洗’到底在洗什么(PyTorch实现)
  • 用Python手把手实现卷积码的维特比硬判决译码(附完整代码与网格图动画)
  • Android NFC移植实战:PN7160驱动集成与VTS测试排错指南
  • 别再只用tcpdump了!Linux运维用tshark抓包排查网络问题的5个实战场景
  • 2026 天津黄金回收市场摸底,本地靠谱回收排行清单 - 奢侈品回收评测
  • 基于FSCI框架实现异构MCU的BLE通信:K64F与KW36协同构建物联网传感器节点
  • 微信小程序天气查询功能源码(含界面预览与多版本项目文件)
  • 终极指南:如何用AutoHotkey快速实现Chrome浏览器自动化
  • 如何在Android手机上实现专业级FT8通信?FT8CN完整使用指南
  • GPT-4稀疏激活机制:1.8万亿参数与2%动态路由的工程真相
  • 基于MC68HC908MR32的无传感器BLDC电机控制硬件方案深度解析
  • 嵌入式开发中整数模拟小数运算:定点数实现与优化实践
  • 终极指南:使用PotatoNV免费解锁华为Bootloader的完整教程
  • 抚州工厂与实体店如何挑选 GEO 公司?五大核心筛选标准 - GrowthUME