0

0

通俗讲解DeepSeek开源:DeepGEMM,究竟是个啥?(第三弹)

蓮花仙者

蓮花仙者

发布时间:2025-04-23 22:16:01

|

796人浏览过

|

来源于php中文网

原创

deepseek开源周,继deepep之后,第三弹deepgemm震撼来袭。今天我们来探讨一下:

  1. 吃瓜:DeepGMEE是干什么用的?
  2. 技术:DeepGMEE是如何实现的?
  3. 普通人有什么用:对写提示词有什么启示?

【1】DeepGMEE是干什么用的?

通俗讲解DeepSeek开源:DeepGEMM,究竟是个啥?(第三弹)

DeepGMEE,全称General Matrix Multiplication,是一个FP8通用矩阵乘法库(library)。

画外音,FP8:8-bit Floating Point,8位浮点格式。

【2】关于FP8通用矩阵乘法

有人可能会问,矩阵乘法的优化值得这么吹吗?

矩阵乘法是现代AI计算的基石:

  1. 矩阵是数据表示的核心工具:神经网络中的权重、特征、参数传递等都使用矩阵表示;
  2. 矩阵乘法占大模型中90%的计算量:Transformer基操QKV运算、卷积计算、分层全连接计算等;
  3. 硬件优化的核心目标就是矩阵乘法计算。

传统AI的矩阵乘法通常使用NVIDIA开源的CUDA C++模板库CUTLASS,采用FP16/FP32格式,但存在一些不足:

  1. 占显存资源:FP32占显存是FP8的4倍;
  2. 资源利用率低:强制要求矩阵为2次幂尺寸(例如:128*128),容易出现显存碎片;
  3. 不支持MOE模型的分组矩阵计算;
  4. 部署复杂度高:需要编译,需要配置。

为什么之前不直接采用FP8呢?因为FP8虽然占用资源少,资源利用率高,但会带来精度损失。

高精度乘法:1.2 * 3.4 = 4.08

如果直接降低精度,用整数表示浮点数,变为1 * 3 = 3,精度损失是无法接受的。

我们可以对浮点数进行整数化编码处理:

步骤一:1.2用(12, 1)表示,其中1是小数位数; 步骤二:3.4用(34, 1)表示; 步骤三:1.2 3.4 = (12, 1) (34, 1) = (12*34, 1+1) = (408, 2)

如此一来,就没有精度损失了。

矩阵乘法的精度补偿比这个复杂,其核心思路是:使用低精度乘法矩阵快速计算,高精度加法补足。

结论就是:DeepSeek使用FP8就能完成FP16/FP32的计算,降低显存占用+提高显存利用率的同时,仍然能够保持高精度。

【3】DeepGMEE的特点

Git介绍中对DeepGMEE有三个关键形容词:

  • 简洁(clean)
  • 高效(efficient)
  • 高精度(fine-grained scaling)

为什么说DeepGMEE简洁?

  1. 核心代码300行,而CUTLASS数千行;
  2. 零依赖(除CUDA),无需预编译,无需复杂环境配置;
  3. 注释清晰,便于学习与二次开发

画外音:我看了一下,调整数据分块策略,只需要修改10-20行代码。

为什么说DeepGMEE高效?

这是FP8对比FP16/FP32的天然优势,相比CUTLASS:

  1. 显存占用下降50%+;
  2. MOE推理延时下降60%+;
  3. 计算密度(TFLOPS)提升了270%+;

为什么说DeepGEMM高精度?

采用FP8矩阵乘法加速计算,BF16累加修正精度的办法,平衡了速度与精度。

除此之外,DeepGEMM还有不少特色:

arXiv Xplorer
arXiv Xplorer

ArXiv 语义搜索引擎,帮您快速轻松的查找,保存和下载arXiv文章。

下载
  1. 针对MOE优化,支持MOE分组矩阵乘法;
  2. 针对硬件加速
  3. 动态编译JIT:运行时根据矩阵大小与硬件条件优化;
  4. 矩阵灵活尺寸对齐(例如:可以支持112*128矩阵);

上面种种,DeepGMEE本次最大的创新,我认为是:FP8优化,JIT优化,以及MOE优化。

【4】DeepGMEE是怎么做到的?

信息密度太大,头疼,有点学不过来了,感兴趣的同学去官网看吧,我Copy一下git的信息:

1. Persistent warp-specialization

2. Hopper TMA features

3. A unified and optimized block scheduler

4. Fully JIT design

5. Unaligned block sizes

6. FFMA SASS interleaving

7. Common detail optimizations

画外音:其实你也不想知道这些how?

【5】了解GEMM对普通人写提示词有什么启示?

没有启示,这东西和提示词没关系。

【6】结尾

对于DeepGEMM,我的思考是:

  1. 之前各大玩家都卷硬件,而忽略了软件的优化;
  2. 僵化思维真的很要命,一直以来都是FP16/FP32,大家也都用CUTLASS,它就一定是最优吗?
  3. 写代码,搞架构,少即是多:多写这类300行优美的代码,而不要在垃圾公司堆shi山;

先睡了,共勉!

画外音:球球deepseek,明天不要开源新东西了。

补充阅读材料:

《DeepGEMM》

https://www.php.cn/link/e0c082bdcbcf050ff454698580c89289

可参考。

==全文完==

相关文章

AI工具
AI工具

AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型,支持联网搜索。

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
Sass和less的区别
Sass和less的区别

Sass和less的区别有语法差异、变量和混合器的定义方式、导入方式、运算符的支持、扩展性等。本专题为大家提供Sass和less相关的文章、下载、课程内容,供大家免费下载体验。

198

2023.10.12

堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

371

2023.07.18

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

563

2023.08.10

堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

371

2023.07.18

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

563

2023.08.10

自建git服务器
自建git服务器

git服务器是目前流行的分布式版本控制系统之一,可以让多人协同开发同一个项目。本专题为大家提供自建git服务器相关的各种文章、以及下载和课程。

637

2023.07.05

git和svn的区别
git和svn的区别

git和svn的区别:1、定义不同;2、模型类型不同;3、存储单元不同;4、是否拥有全局版本号;5、内容完整性不同;6、版本库不同;7、克隆目录速度不同;8、分支不同。php中文网为大家带来了git和svn的相关知识、以及相关文章等内容。

524

2023.07.06

git撤销提交的commit
git撤销提交的commit

Git是一个强大的版本控制系统,它提供了很多功能帮助开发人员有效地管理和控制代码的变更,本专题为大家提供git 撤销提交的commit相关的各种文章内容,供大家免费下载体验。

263

2023.07.24

php源码安装教程大全
php源码安装教程大全

本专题整合了php源码安装教程,阅读专题下面的文章了解更多详细内容。

74

2025.12.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Git 教程
Git 教程

共21课时 | 2.3万人学习

Git版本控制工具
Git版本控制工具

共8课时 | 1.5万人学习

Git中文开发手册
Git中文开发手册

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号