DeepSeek开源库DeepGEMM 性能测评

1.背景

DeepGEMM 是一个为高效 FP8 通用矩阵乘法(GEMMs)设计的库,其特点如提出于 DeepSeek--V3 的精细粒度缩放,支持普通和专家混合(MoE)分组 GEMMs。用 CUDA 编写,安装时无需编译,通过轻量级即时(JIT)模块在运行时编译所有内核。目前仅支持 NVIDIA Hopper 张量核心,采用 CUDA 核心两级积累(提升)解决 FP8 张量核心积累不精确问题。它避免过度依赖 CUTLASS 和 CuTe 的模板或代数,以简洁为设计理念,只有一个约 300 行代码的核心内核函数,是学习 Hopper FP8 矩阵乘法和优化技术的干净且易获取的资源。尽管设计轻量,但在各种矩阵形状下性能可匹配或超越专家调优的库。

2.验证运行

我们分别在H20和H800上测试了 DeepSeek-V3/R1 推理中可能使用的所有形状的稠密矩阵乘法性能。并对deepgemm、vllm triton ,以及vllm cutlass 进行对比

2.1 H20 表现

分别就不同维度的稠密矩阵乘法,对比在三个架构下乘法性能,

2.1.1 指标数据

TFLOPS

GB/s

Latency

2.1.2 性能对比分析

DeepGEMM vs Cutlass
  • 总体对比:Cutlass 的性能相较于 DeepGEMM 波动较大,加速比介于 0.77x ~ 3.31x 之间。

  • 小规模计算(m ≤ 128):

    • 在 m=64, k=2048 的情况下,Cutlass 性能达到 3.31x DeepGEMM,表明 Cutlass 在小批量计算中的优化较好。

    • 但在 m=64, k=16384 和 m=128, k=16384 这类大 k 值情况下,Cutlass 低于 DeepGEMM,仅 0.49x ~ 0.78x,可能由于 Cutlass 在大 k 处理上的局限性。

  • 中等规模计算(256 ≤ m ≤ 1024):

    • Cutlass 在大多数情况下接近 1.0x ~ 1.78x DeepGEMM,例如 m=512, k=2048 达到 1.21x,但 m=512, k=7168 下降至 0.90x。

  • 大规模计算(m = 4096):

    • 在 m=4096, k=16384 的情况下,Cutlass 性能与 DeepGEMM 基本持平(1.01x)。

    • 但在 m=4096, k=7168,Cutlass 低于 DeepGEMM,仅 1.02x,说明 Cutlass 在大规模 m 下仍有优化空间。

DeepGEMM vs Triton
  • 总体对比:DeepGEMM 全面优于 Triton,加速比范围在 1.38x ~ 1.95x 之间。

  • 小规模计算(m ≤ 128):

    • DeepGEMM 在 m=64, k=16384 领先 1.55x,在 m=128, k=16384 领先 1.95x,说明 DeepGEMM 在处理大 k 时表现优异。

  • 中等规模计算(256 ≤ m ≤ 1024):

    • 在 m=512, k=16384,DeepGEMM 领先 1.80x,但 m=512, k=4096 时 Triton 仍能保持较高的竞争力(1.75x)。

  • 大规模计算(m = 4096):

    • 在 m=4096, k=16384,DeepGEMM 仍然领先 1.74x,但对 m=4096, k=2048,领先幅度减少至 1.66x,说明 Triton 在处理小 k 值的大 m 时相对较优化。

结论
  • DeepGEMM vs Cutlass:

    • Cutlass 在 小批量计算 (m 小,k 适中) 时 比 DeepGEMM 快 3.31x,但 在大 k 值时性能下降,整体表现不如 DeepGEMM 稳定。

    • 在 大规模计算(m ≥ 1024) 时,Cutlass 基本与 DeepGEMM 持平(1.01x ~ 1.07x),但部分情况下略有下降(0.89x)。

  • DeepGEMM vs Triton:

    • DeepGEMM 全面优于 Triton,尤其在 k 较大(如 16384)的情况下,DeepGEMM 最高 1.95x Triton,展现出强大的优化能力。

    • 在 小 k 值(如 2048)的大 m 计算 时,Triton 能维持一定的竞争力(1.66x ~ 1.74x),但仍落后于 DeepGEMM。

2.1.3 详细数据

Cutlass 与 DeepGEMM和Triton对比

m

n

k

Time

TFLOPS

GB/s

vs DeepGEMM

vs Triton

64

24576

1536

49.2

98.1

832.5

1.47x

1.14x

64

32768

512

27.1

79.2

774.2

2.66x

1.18x

64

7168

16384

152.5

98.6

783

0.49x

1.55x

64

4096

7168

68.1

55.2

445.3

1.09x

1.22x

64

7168

2048

23

81.6

683

3.25x

1.38x

128

24576

1536

49.4

195.5

894.8

1.48x

1.74x

128

32768

512

26.9

159.4

936.6

2.72x

1.38x

128

7168

16384

152.8

196.7

794.2

0.78x

1.95x

128

4096

7168

68.2

110.1

459

1.10x

1.30x

128

7168

2048

22.8

164.6

734.8

3.31x

1.50x

256

24576

1536

80.4

240.3

630.6

1.07x

1.72x

256

32768

512

45

190.9

748.8

1.63x

1.53x

256

7168

16384

300.2

200.3

417.5

0.77x

1.82x

256

4096

7168

69.4

216.7

479.9

1.08x

1.73x

256

7168

2048

42.6

176.5

443.3

1.78x

1.56x

512

24576

1536

155.8

248.1

408.9

1.06x

1.66x

512

32768

512

87

197.5

581.5

1.09x

1.50x

512

7168

16384

448.3

268.3

297.1

1.01x

1.80x

512

4096

7168

135.6

221.7

274.5

0.90x

1.75x

512

7168

2048

62.2

241.8

371.1

1.21x

1.57x

1024

24576

1536

306.3

252.4

292.7

1.06x

1.64x

1024

32768

512

163.3

210.4

517

1.09x

1.54x

1024

7168

16384

891.9

269.7

167

1.01x

1.73x

1024

4096

7168

266.4

225.7

169.2

0.89x

1.69x

1024

7168

2048

122.2

246

257.4

1.07x

1.62x

1024

24576

1536

306.3

252.4

292.7

1.06x

1.64x

1024

32768

512

163

210.8

517.9

1.09x

1.54x

1024

7168

16384

892

269.6

166.9

1.01x

1.73x

1024

4096

7168

266.3

225.8

169.3

0.89x

1.69x

1024

7168

2048

122.2

246.1

257.5

1.07x

1.62x

4096

24576

1536

1190.1

259.8

206.2

1.06x

1.65x

4096

32768

512

620.7

221.4

462.9

1.07x

1.57x

4096

7168

16384

3395.3

283.4

71.6

1.01x

1.74x

4096

4096

7168

920.4

261.3

100.3

1.02x

1.65x

4096

7168

2048

455.1

264.3

179.7

1.07x

1.66x

AVERAGE PERFORMANCE

Implementation

Avg TFLOPS

TFLOPS

Avg GB/s

DeepGEMM

188.49

384.46

0.36

vLLM Triton

126.01

297.19

0.58

vLLM CUTLASS

204

451.96

0.35

AVERAGE SPEEDUPS

Comparison

Speedup

DeepGEMM vs vLLM Triton

1.46x faster

DeepGEMM vs vLLM CUTLASS

0.90x slower

vLLM CUTLASS vs vLLM Triton

1.59x faster

2.2 H800表现

2.2.1 指标数据

TFLOPS

GB/s

Latency

2.2.2 性能对比分析

Cutlass vs DeepGEMM
  • 小规模矩阵 (m, n, k ≤ 256): Cutlass 明显优于 DeepGEMM,通常 快 2-5 倍,说明 Cutlass 在小矩阵优化更好。

  • 中等规模矩阵 (512 ≤ m, n, k ≤ 2048): Cutlass 仍然 比 DeepGEMM 快 1.0x-3.5x,但随着矩阵增大,优势缩小。

  • 大规模矩阵 (m, n, k ≥ 4096): DeepGEMM 逐渐追平甚至略超 Cutlass,特别是在 (4096, 7168, 16384) 这种大矩阵情况下,Cutlass 仅为 DeepGEMM 的 0.73x-0.98x,说明 DeepGEMM 在超大规模 GEMM 计算上更优。

Triton vs DeepGEMM
  • Triton 在所有情况下都明显慢于 DeepGEMM,一般 慢 2-3 倍,个别情况甚至慢 3 倍以上(如 7168×16384 计算)。

  • 即便是 Cutlass 相对 DeepGEMM 性能下降的情况(大矩阵),DeepGEMM 仍然远超 Triton,说明 Triton 的矩阵计算优化远不及 DeepGEMM。

结论
  • DeepGEMM 在大规模 GEMM 计算上比 Cutlass 和 Triton 更高效,特别是 4096 及以上的矩阵。

  • Cutlass 在小矩阵上最优,但在超大矩阵上被 DeepGEMM 赶超。

  • Triton 在所有情况下最慢,DeepGEMM 远超 Triton,适合更高效的 GEMM 计算。

2.2.3 详细数据

Cutlass 与 DeepGEMM和Triton对比

m

n

k

Time

TFLOPS

GB/s

vs DeepGEMM

vs Triton

64

24576

1536

49.2

98.1

832.5

1.47x

1.14x

64

32768

512

27.1

79.2

774.2

2.66x

1.18x

64

7168

16384

152.5

98.6

783

0.49x

1.55x

64

4096

7168

68.1

55.2

445.3

1.09x

1.22x

64

7168

2048

23

81.6

683

3.25x

1.38x

128

24576

1536

49.4

195.5

894.8

1.48x

1.74x

128

32768

512

26.9

159.4

936.6

2.72x

1.38x

128

7168

16384

152.8

196.7

794.2

0.78x

1.95x

128

4096

7168

68.2

110.1

459

1.10x

1.30x

128

7168

2048

22.8

164.6

734.8

3.31x

1.50x

256

24576

1536

80.4

240.3

630.6

1.07x

1.72x

256

32768

512

45

190.9

748.8

1.63x

1.53x

256

7168

16384

300.2

200.3

417.5

0.77x

1.82x

256

4096

7168

69.4

216.7

479.9

1.08x

1.73x

256

7168

2048

42.6

176.5

443.3

1.78x

1.56x

512

24576

1536

155.8

248.1

408.9

1.06x

1.66x

512

32768

512

87

197.5

581.5

1.09x

1.50x

512

7168

16384

448.3

268.3

297.1

1.01x

1.80x

512

4096

7168

135.6

221.7

274.5

0.90x

1.75x

512

7168

2048

62.2

241.8

371.1

1.21x

1.57x

1024

24576

1536

306.3

252.4

292.7

1.06x

1.64x

1024

32768

512

163.3

210.4

517

1.09x

1.54x

1024

7168

16384

891.9

269.7

167

1.01x

1.73x

1024

4096

7168

266.4

225.7

169.2

0.89x

1.69x

1024

7168

2048

122.2

246

257.4

1.07x

1.62x

1024

24576

1536

306.3

252.4

292.7

1.06x

1.64x

1024

32768

512

163

210.8

517.9

1.09x

1.54x

1024

7168

16384

892

269.6

166.9

1.01x

1.73x

1024

4096

7168

266.3

225.8

169.3

0.89x

1.69x

1024

7168

2048

122.2

246.1

257.5

1.07x

1.62x

4096

24576

1536

1190.1

259.8

206.2

1.06x

1.65x

4096

32768

512

620.7

221.4

462.9

1.07x

1.57x

4096

7168

16384

3395.3

283.4

71.6

1.01x

1.74x

4096

4096

7168

920.4

261.3

100.3

1.02x

1.65x

4096

7168

2048

455.1

264.3

179.7

1.07x

1.66x

AVERAGE PERFORMANCE

Implementation

Avg TFLOPS

Avg GB/s

Avg Time (ms)

DeepGEMM

378.44

632.26

0.17

vLLM Triton

180.53

546.70

0.42

vLLM CUTLASS

450.88

1273.15

0.16

AVERAGE SPEEDUPS

Comparison

Speedup

DeepGEMM vs vLLM Triton

1.61x faster

DeepGEMM vs vLLM CUTLASS

0.62x slower

vLLM CUTLASS vs vLLM Triton

2.45x faster

3. 算法优劣分析

根据测试数据,我们从 计算性能(TFLOPS)、带宽利用率(GB/s)、执行时间(Time/ms)、相对加速比 等维度对 DeepGEMM、vLLM Triton、vLLM CUTLASS 进行深入分析,并最终给出适合不同应用场景的建议。

3.1 DeepGEMM

优点

✅ 计算性能较高,优于 vLLM Triton

  • 在 H20 上,DeepGEMM 比 vLLM Triton 快 1.46x(188.49 vs 126.01 TFLOPS)。

  • 在 H800 上,DeepGEMM 比 vLLM Triton 快 1.61x(378.44 vs 180.53 TFLOPS)。

  • 说明 DeepGEMM 在 核心计算效率 方面比 Triton 版本更强。

✅ 适用于多种 GPU,兼容性较好

  • 在 两款 GPU 上的性能表现均衡,虽然 CUTLASS 在 H800 上更强,但 DeepGEMM 保持较好性能。

  • 适合用于不同的 GPU 硬件环境,不依赖特定优化。

缺点

❌ 在 H800 上比 CUTLASS 慢

  • H800 上 DeepGEMM 的 TFLOPS 低于 CUTLASS(378.44 vs 450.88),意味着 CUTLASS 的矩阵计算优化更好。

  • 带宽利用率也不如 CUTLASS(632.26 vs 1273.15 GB/s),表明 CUTLASS 可能更适合高效数据传输的任务。

  • 如果使用 H800 并追求极致性能,CUTLASS 更值得选择

3.2 vLLM Triton

优点

✅ Triton 内核易于优化,支持自定义 Kernel

  • Triton 适用于优化 LLM 计算,能在不同硬件上通过 kernel-level 代码调整性能。

✅ 计算方式较灵活,适用于动态 workload

  • Triton 允许动态 shape 计算,比 CUDA kernel 更适合处理 动态 batch size 任务,例如 在线推理

缺点

❌ 计算效率最低,远逊于 DeepGEMM 和 CUTLASS

  • 在 H20 GPU 上,TFLOPS 仅 126.01,比 DeepGEMM 低 32%。

  • 在 H800 上,TFLOPS 仅 180.53,带宽 546.7 GB/s,相比 CUTLASS(450.88 TFLOPS,1273.15 GB/s)差距很大。

  • DeepGEMM 比 vLLM Triton 快 1.61x,CUTLASS 比 vLLM Triton 快 2.45x!

❌ H800 上表现尤为不佳

  • 执行时间更长(0.42ms vs DeepGEMM 0.17ms vs CUTLASS 0.16ms),表明 vLLM Triton 在大规模矩阵运算上表现不理想。

  • 说明 Triton 版本的 kernel 可能在 算子融合 和 数据流优化 方面仍有较大优化空间。


3.3 vLLM CUTLASS

优点

✅ H800 上性能最佳,TFLOPS 和带宽最高

  • 在 H800 上的 TFLOPS 高达 450.88(比 DeepGEMM 高 19%),说明 CUTLASS 内核优化出色。

  • 带宽利用率远超 DeepGEMM(1273.15 vs 632.26 GB/s),意味着 CUTLASS 能更有效地管理 内存带宽

  • 执行时间最短(0.16ms vs DeepGEMM 0.17ms vs Triton 0.42ms),在低延迟推理场景下表现优异。

✅ 高度优化的 CUDA kernel,适合高吞吐量任务

  • CUTLASS 主要优化了 GEMM 计算,能最大限度发挥 GPU Tensor Core 的性能

  • 适合大规模 LLM 推理,尤其是 batch size 较大的情况

缺点

❌ 在部分 GPU 上,CUTLASS 的提升有限

  • 在 H20 上,CUTLASS 仅比 DeepGEMM 快 1.08x(204 vs 188.49 TFLOPS),提升不明显。

  • 可能表明 CUTLASS 的优化主要针对 H100/H800 这种高端 GPU,对 H20 等架构的提升不大。

❌ 可能对动态 workload 兼容性较差

  • CUTLASS 适用于 大 batch size,静态 shape 计算,但可能 不如 Triton 适用于动态 shape 任务

4. 总结

方案

优点

缺点

适用场景

DeepGEMM

适用于多种 GPU,计算性能较好,优于 Triton

H800 上比 CUTLASS 慢

通用计算场景,适用于不同 GPU

vLLM Triton

Kernel 易优化,适合动态 shape

计算效率最低,H800 上表现尤差

需要 Triton 兼容性,需要优化 kernel

vLLM CUTLASS

H800 上最高 TFLOPS & 带宽,最短执行时间

可能对老 GPU 提升有限,动态 workload 兼容性较差

大规模推理任务,H800 等高端 GPU

天纪大模型开发平台TLM使用地址:https://zyun.360.cn/product/tlm

### DeepSeek 开源项目概述 DeepSeek 是一系列专注于特定领域研究和应用的开源项目集合,在 GitHub 和其他代码托管平台上拥有活跃的社区支持。这些项目不仅推动了技术进步,还通过开放协作的方式促进了知识共享和技术交流。 #### 排名 Top 5 的 DeepSeek 相关开源项目 在 GitHub 上搜索关键词 "DeepSeek" 可发现多个优秀的开源项目,其中排名最靠前的五个项目因其高质量的实现和广泛的影响力脱颖而出[^1]。 #### DeepSeek V2 项目详情 特别值得一提的是 **DeepSeek-V2** 项目,该项目位于 [GitCode](https://gitcode.com/gh_mirrors/de/DeepSeek-V2),提供了详细的文档和支持资源。其目录结构清晰合理,方便开发者快速上手并参与贡献: - `docs`: 文档文件夹,包含安装指南、API说明等资料。 - `src`: 源码文件夹,存放核心算法及其实现。 - `tests`: 测试用例集,用于验证功能正确性和性能表现。 - `examples`: 示例程序,帮助新手理解如何使用该框架解决实际问题[^2]。 ```python # 这是一个简单的 Python 脚本示例,展示了如何导入 DeepSeek 库来执行基本操作 import deepseek as ds def main(): model = ds.load_model('path/to/model') result = model.predict(data) print(result) if __name__ == '__main__': main() ``` #### DeepSeek 开源的意义 作为重要的开源项目之一,DeepSeek 不仅实现了技术创新的目标,更重要的是激发了广大开发者的创作激情与自信心。这种积极的影响体现在更多的人愿意参与到开源活动中去,共同构建更加繁荣的技术生态系统[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值