新闻动态
亚博体育是以 GEMM 的性能优化是至关要害的少量-亚博买球「中国」yabo官方网站-登录入口
开源周的第三天亚博体育,DeepSeek把查抄推理 V3/R1 背后的"能源"给亮出来了——
DeepGEMM:一个 FP8 GEMM(通用矩阵乘法)库,解救密集(dense)和搀杂群众(MoE)矩阵乘法运算。
咱们先来简便了解一下 GEMM。
GEMM,即通用矩阵乘法,是线性代数中的基本运算,是科学筹画、机器学习、深度学习等领域中"常客",亦然许多高性能筹画任务的中枢。
但由于它的筹画量时常都比较大,是以 GEMM 的性能优化是至关要害的少量。
而 DeepSeek 此次开源的 DeepGEMM,依旧是保抓了"高性能 + 低资本"的特质,亮点如下:
高性能:在 Hopper 架构的 GPU 上,DeepGEMM 能够杀青高达 1350+FP8 TFLOPS 的性能。
粗略性:中枢逻辑仅约 300 行代码,但性能却优于群众调优的内核。
即时编译(JIT):秉承所有这个词即时编译的方式,这意味着它不错在运行时动态生成优化的代码,从而符合不同的硬件和矩阵大小。
无重依赖:这个库野心得尽头轻量级,莫得复杂的依赖探求,不错让部署和使用变得简便。
解救多种矩阵布局:解救密集矩阵布局和两种 MoE 布局,这使得它能够符合不同的应用场景,包括但不限于深度学习中的搀杂群众模子。
简便来说,DeepGEMM 主要用于加快深度学习中的矩阵运算,额外是在大畛域模子查抄和推理中,它额外适用于需要高效筹画资源的场景,能够权贵陶冶筹画收尾。
许多网友们对此次的开源都比较"买单",有东谈主将 DeepGEMM 比作数学界的超等英豪,合计它比飞速的筹画器还要快,比多项式方程还要普遍。
也有东谈主将 DeepGEMM 的发布譬如为量子态默契到一个新的践诺,齰舌其即时编译的干净利落。
天然……也有东谈主运转总结起我方手上的英伟达股票了……
深切了解 DeepGEMM
DeepGEMM 是一个特地为杀青粗略高效的 FP8 通用矩阵乘法(GEMMs)而打造的库,它还具备细粒度缩放功能,这一野心源于 DeepSeek V3。
它既能处理平淡的通用矩阵乘法,也能解救 MoE 分组的通用矩阵乘法。
这个库是用 CUDA 编写的,安设的时候不需要编译,因为它会在运行时通过一个轻量级的即时编译(JIT)模块来编译通盘的内核范例。
当今,DeepGEMM 只解救英伟达的 Hopper 张量中枢。
为了措置 FP8 张量中枢在筹画集会时不够精准的问题,它秉承了 CUDA 中枢的两级集会(陶冶)步调。
固然 DeepGEMM 鉴戒了 CUTLASS 和 CuTe 里的一些理念,但并莫得过度依赖它们的模板或代数运算。
相背,这个库野心得很粗略,唯有一个中枢内核函数,代码量简略 300 行傍边。
这使得它成为一个粗略易懂的资源,便捷寰宇学习 Hopper 架构下的 FP8 矩阵乘法和优化时候。
尽管其野心轻巧,但 DeepGEMM 的性能不错匹配或稀奇多样矩阵阵势的群众调优库。
那么具体性能如何呢?
团队在 H800 上使用 NVCC 12.8 测试了 DeepSeek-V3/R1 推理中可能使用的通盘阵势(包括预填充息争码,但莫得张量并行)。
底下这张图展示的是用于密集模子的平淡 DeepGEMM 的性能:
从测试收尾来看,DeepGEMM筹画性能最高可达 1358 TFLOPS,内存宽带最高可达 2668 GB/s。
加快比方面,与基于 CUTLASS 3.6 的优化杀青比较,最高可达 2.7 倍。
再来看下 DeepGEMM 解救 MoE 模子的连气儿布局(contiguous layout)的性能:
以及解救 MoE 模子掩码布局(masked layout)的性能是这么的:
如何使用?
要思使用 DeepGEMM,需先提防一下几个依赖项,包括:
必须解救 Hopper 架构的 GPU,sm_90a。
Python 3.8 及以上。
CUDA 12.3 及以上(保举 12.8)。
PyTorch 2.1 及以上。
CUTLASS 3.6 及以上
Development 代码如下:
# Submodule must be clonedgit clone --recursive git@github.com:deepseek-ai/DeepGEMM.git
# Make symbolic links for third-party ( CUTLASS and CuTe ) include directoriespython setup.py develop
# Test JIT compilationpython tests/test_jit.py
# Test all GEMM implements ( normal, contiguous-grouped and masked-grouped ) python tests/test_core.py
安设代码如下:
python setup.py install
在上述智商之后,您的 Python 面容中导入 deep_gemm 即可。
在接口方面,关于平淡的 DeepGEMM,可调用 deep_gemm.gemm_fp8_fp8_bf16_nt 函数,解救 NT 格式(非转置 LHS 和转置 RHS)。
关于分组的 DeepGEMM,连气儿布局情况下是 m_grouped_gemm_fp8_fp8_bf16_nt_contiguous;掩码布局情况下是 m_grouped_gemm_fp8_fp8_bf16_nt_masked。
DeepGEMM 还提供竖立最大 SM 数目、取得 TMA 对王人大小等器具函数;解救环境变量,如 DG_NVCC_COMPILER、DG_JIT_DEBUG 等。
除此以外,DeepSeek 团队还提供了几种优化的方式,包括:
JIT 野心:通盘内核在运行时编译,无需安设时编译;解救动态聘用最优块大小和活水线阶段。
细粒度缩放:通过 CUDA 中枢两层累加措置 FP8 精度问题;解救非 2 的幂次方块大小,优化 SM 运用率。
FFMA SASS 交错:通过修改 SASS 提醒的 yield 和 reuse 位,提高性能。
感趣味的小伙伴不错戳文末 GitHub 连气儿稽查细目哦 ~
One More Thing
英伟达这几天的股票……嗯……一直再跌:
不外在北京时间 27 日凌晨,英伟达 2025 财年第四季度功绩讲明也行将出炉,咱们不错期待一下它的发扬 ~
扫码备注「DeepSeek- 行状 / 姓名」加入群聊,沿途跟踪 DeepSeek 开源周!
DeepGEMM GitHub 进口:
https://github.com/deepseek-ai/DeepGEMM亚博体育