项目地址:https://github.com/deepseek-ai/DeepEP
开源日历:2025-02-24起 每日9AM(北京时间)更新,持续五天 (3/5)!

一、开源背景

DeepGEMM是DeepSeek开源周第三日发布的重量级项目,作为专为NVIDIA Hopper架构优化的FP8矩阵乘法库,其核心代码仅约300行,却在多项测试中展现出超越CUTLASS 3.6的性能表现:

  • 计算性能突破:在典型64×2112×7168矩阵运算中达到206 TFLOPS,带宽1688GB/s,较CUTLASS提升2.7倍
  • MoE专属优化:针对混合专家模型的连续/掩码分组计算提速1.2倍
  • 轻量级JIT设计:无需预编译,运行时自动优化,完美适配动态计算需求

二、技术解析

1. FP8精度革命

传统AI计算采用FP32/FP16浮点数,而FP8将存储位宽压缩至8位,在保持模型精度的同时:

  • 内存占用减少50-75%
  • 计算吞吐量提升2-4倍
  • 能源效率显著提高

DeepGEMM特别针对Hopper架构的FP8 Tensor Core优化,通过CUDA核心二次累算解决精度损失问题。

2. GEMM

通用矩阵乘法(GEMM)是神经网络的核心操作,占据90%以上的计算时间。DeepGEMM通过以下创新实现突破:

  • 非标准块划分:112×128等灵活块大小提升SM利用率
  • 指令级优化:FFMA指令交织提升并行度
  • 统一调度系统:增强缓存重用,减少内存访问

线程专业化设计

三、性能实测

标准矩阵计算性能对比

矩阵尺寸 (M×N×K) 计算性能 (TFLOPS) 内存带宽 (GB/s) 加速比
64×2112×7168 206 1688 2.7x
128×24576×1536 535 2448 1.6x
4096×7168×16384 1358 343 1.2x

MoE模型优化表现

计算类型 矩阵尺寸 (组×M×N×K) 加速比
连续分组(训练) 4×8192×4096×7168 1.2x
掩码分组(推理) 4×256×7168×2048 1.2x

四、架构创新

1. 张量内存加速器(TMA)

  • 异步数据搬运:LHS/RHS矩阵TMA加载
  • 多播优化:单次加载多SM共享
  • 描述符预取:隐藏指令延迟

2. 即时编译(JIT)技术

# 运行时自动优化示例
import deep_gemm
output = deep_gemm.gemm_fp8_fp8_bf16_nt(
    lhs, rhs, 
    lhs_scale, rhs_scale, 
    M, N, K
)
  • 动态编译:矩阵维度作为编译常量
  • 自动参数选择:块大小、流水线级数等
  • 完全展开:提升小矩阵性能

五、MoE模型专项优化

1. 两种数据布局

布局类型 适用场景 技术特点
连续分组 训练/批量推理 专家数据连续存储,TMA对齐
掩码分组 实时推理+CUDA图 动态掩码标记有效计算区域

2. 线程专业化设计

  • 加载线程:专用TMA数据搬运
  • 计算线程:Tensor Core矩阵运算
  • 存储线程:结果回写与尺度恢复
    三级流水线实现计算与IO的完美重叠。

六、快速部署指南

环境要求

  • GPU: NVIDIA Hopper架构(H100/H800)
  • CUDA: 12.8+
  • Python: 3.8+
  • PyTorch: 2.1+

安装步骤

git clone --recursive git@github.com:deepseek-ai/DeepGEMM.git
python setup.py develop
python tests/test_jit.py  # 验证JIT编译

核心API

# 标准GEMM
deep_gemm.gemm_fp8_fp8_bf16_nt(lhs, rhs, scales...)

# MoE连续分组
deep_gemm.m_grouped_gemm_nt_contiguous(...)

# MoE掩码分组 
deep_gemm.m_grouped_gemm_nt_masked(...)

七、技术启示与展望

DeepGEMM的突破源自多项创新:

  1. 指令级微调:通过SASS汇编优化FFMA指令交织
  2. 非标准分块:112×128等灵活划分提升SM利用率
  3. 统一调度器:智能任务分配实现L2缓存复用

未来该库有望扩展支持更多硬件架构,并结合动态稀疏计算进一步优化MoE模型效率。其简洁的代码实现(核心仅300行)更为GPU优化提供了绝佳学习范本。


参考引用

  1. DeepSeek开源第三天:300行代码性能赶超英伟达?
  2. DeepGEMM技术详解
  3. GitHub - deepseek-ai/DeepGEMM

专业术语解释

  • 混合专家模型(MoE)
    一种将复杂任务分配给多个专家模块进行处理的模型架构。类似于一个大型项目被分解给多个专业团队分别完成。
  • FP8
    一种将存储位宽压缩至 8 位的浮点数精度格式,在保持模型精度的同时减少内存占用、提升计算吞吐量和能源效率。类似于用更小的盒子装东西但不影响物品的重要性识别。
  • GEMM(通用矩阵乘法)
    是神经网络中的核心操作,占据大量计算时间。类似于建筑中的基石,支撑起整个结构。
  • CUDA
    一种并行计算平台和编程模型。类似于一个为计算机处理复杂任务提供的高效工具套装。
  • Tensor Core
    用于加速深度学习中矩阵运算的硬件单元。类似于工厂里专门用于快速处理特定产品的高效生产设备。
  • 张量内存加速器(TMA)
    用于加速数据搬运的硬件模块。类似于物流运输中的高速输送带。
  • 即时编译(JIT)
    一种在运行时根据特定条件进行编译优化的技术。类似于根据现场情况随时调整施工方案以达到最佳效果。
  • 非标准块划分
    采用不同于常规的矩阵块大小划分方式来提升计算效率。类似于不按常规尺寸切割物品,而是根据实际需求定制更合适的大小。
  • 指令级优化
    在指令层面进行优化以提高计算并行度。类似于对工人的每个具体操作动作进行优化以提高工作效率。
  • 统一调度系统
    对计算任务进行统一管理和分配的系统。类似于一个统一指挥多个施工队的调度中心。
  • 线程专业化设计
    将线程分为不同的专业类型,各自负责特定的任务。类似于将工人分为不同工种,各司其职。
  • 连续分组
    一种数据布局方式,专家数据连续存储。类似于把相关物品连续摆放。
  • 掩码分组
    一种数据布局方式,通过掩码标记有效计算区域。类似于给特定区域做标记以便进行针对性处理。

"真正的创新往往来自对基础计算的极致优化。"——DeepGEMM开发团队

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐