量化存储墙(三):GEMM EMA 下限解析解以及硬件静态资源分配设计

news/2025/11/16 18:42:53/文章来源:https://www.cnblogs.com/devil-sx/p/19228698

Roofline 缺失的一角:EMA

计算-存储工艺各自单独演化发展步调不一, Memory Wall 在 AI 计算时代越来越显著[1]。Roofline Model 将计算/存储,软件/硬件用一个简洁优雅的统一模型概括,然而带入具体数值求解时,硬件的极限算力、带宽物理资源是个静态常量,冯诺依曼体系往往不涉及 recomputation[2],模型 FLOPs 也是固定的,而片外访存量(External Memory Access, EMA)并不那么直观,往往需要通过仿真方法获取。这是由于片外访存求解涉及硬件片内存储设计、软件 intra/inter-kernel 的复杂数据复用关系和调度策略,是一个极其复杂的 NP 问题。

Orojenesis :静态资源 Matters

不过换句话说,如果能够简化硬件/软件建模存在求解的可能。比如 decode 阶段由于自回归 token-per-token 丧失了 token 并行度,降低数据复用率,在单用户情形下 EMA 等同数据量。

而在 Prefill 阶段,2024 ISCA 来自 NVIDIA 的 Orojenesis [3] DSE 工作通过简化的 "Snowcat" 模型,即对片上仅用一个片上容量参数建模,并将 workload 限制在单个 GEMM kernel(以及简单 fusion,但不是本文重点不展开了) ,通过遍历式搜索调度 “SRAM 容量-调度策略” 空间,得到一个函数曲线。当片内容量逼近无限大的时候,所有数据都可以放在 SRAM 之中,下限即是“输入-权重-输出” 变量大小之和;而当片内容量逼近 0 的时候,等同于计算单元直接连接片外访存的访存量,其数值近似为 FLOPs 除以一个表示计算单元空间复用度的常数。

../Extra/Images/IMG_20251116180206500.png
这种简化仅仅考虑静态资源片上 SRAM 容量,代表一种 EMA 下限,而实际和理论之差则是靠架构改进。Orojenesis 团队也在多张 NV 实体卡上 CUTCLASS 环境测试对比,可以看到在 SRAM 容量较大时测试结果和仿真值数量级和趋势接近,目测误差在 50-100% 之间。

../Extra/Images/IMG_20251116180206653.png

Orojenesis 的函数曲线揭示了化简硬件和 workload 对 EMA 建模理论化的可能性,本文尝试给出该关系的解析解。

单 GEMM-kernel 优化方程和求解

定义 GEMM 的三个维度为 T (Token)、O (Output Channel)、 I (Input Channel)。定义片内映射维度为 [Ts,Os,Is],对于三种不同的片外循环次顺序 [Tt, Ot, It] (Output Stationary) 、 [Ot, It, Tt] (Weight Stationary)、[Tt, It, Ot] (Input Stationary)。此部分建模可参考 timeloop。

比如片外 Output Stationary 的 nested-loop 表示:

---- off-chip loop ----
for tt in Ttfor ot in Otfor it in It---- inner-chip loop ----for ts in Tsfor os in Osfor is in Isy[tt*Ts+ts][ot*Os+os] += w[ot][it][os][is] * x[tt*Ts+ts][it*Is+is]

定义数据变量精度 bit 数为 \(p\) 以及 SRAM 容量为 \(M\),各个变量的 EMA 开销以及 buffer 占用量如下:

Size EMA (OS) EMA (WS) EMA (IS) Buffer
Input Feature Si=TxIxp OtxSi OtxSi Si TsxIs
Weight Sw=OxIxp TtxSw Sw TtxSw OsxIs
Output Feature So=TxOxp So ItxSo ItxSo TsxOs

以 Output Stationary 为例,其优化问题形式为:

\[\begin{align*} min& \quad EMA =O_{t}\times S_{i}+ T_{t}\times S_{w}+ S_{o}\\ s.t.&\quad (T_{s}\times I_{s} + O_{s}\times I_{s} + T_{s}\times O_{s})\times p\le M \\ s.t.&\quad T_{s}\times T_{t}=T\\ s.t.&\quad O_{s}\times O_{t}=O\\ s.t. &\quad I_{s}\times I_{t}=I \end{align*} \]

其解为:

\[\begin{align*}\\ O_t &= \sqrt{\frac{O T p S_w}{M S_i}} \\ O_s &= \sqrt{\frac{M O S_i}{T p S_w}} \\\\ T_t &= \sqrt{\frac{O T p S_i}{M S_w}} \\ T_s &= \sqrt{\frac{M T S_w}{O p S_i}} \\ I_s &\to 0^+ \\ I_t &\to \infty \\ \text{EMA}_{\text{min}} &= S_o + 2 \sqrt{\frac{O T p S_i S_w}{M}}=S_{o} + 2 \sqrt{ \dfrac{ S_{i} S_{w} S_{o} }{ M } } \end{align*} \]

因为 Output Stationary,此时 Input Channel 分配在片外不会影响整体 EMA,因此最优解将所有的 Input Channel 维度分配在片外,塞下更多 Token 和 Output Channel 在片内,以便减少 Input Feature 和 Weight 的 EMA 访存。这个解和实际的误差来源三方面:

  • 仅仅考虑 EMA,片内没有任何 Input Channel 维度,会增大 Output Feature 片内 buffer 访问次数,实际矩阵计算单元设计一般回考虑 Input Channel 维度;
  • 内积形式实践中为了精度-访存量的 trade-off,累加和往往在高精度内实现计算,而转为低精度访存交互,Input Channel 片内维度分配越少,对精度损坏越大;
  • 变量数值都是整数。

但不妨先按这一假设讨论,定义 \(C = 2 \sqrt{ \dfrac{ S_{i} S_{w} S_{o} }{ M } }\) 。GEMM 维度高度对称,以此类推三种 Stationary 下的 EMA 理论最优结果:

\[\begin{align*} &\min EMA_{OS} = S_{o} + C\\ &\min EMA_{WS} = S_{w} + C \\ &\min EMA_{IS} = S_{i} + C \\ \end{align*} \]

不同 stationary 的理论最优解仅与相应变量数据大小相关,该结论对于片内片外访存都适用。具体来说,哪个变量大用哪种 stationary ,这验证了之前设计加速器的 insight,比如 dense vison prediction task 的浅层网络是典型的 activation-heavy 性质,应当用 OS 或 IS,考虑前文提到的精度 trade-off ,仅有 OS 唯一可行选项。

依此总结为 stationary 无关的通用解析式,仅当片上存储约束取等号时有效:

\[EMA = \min{(S_{i},S_{w},S_{o})}+ 2 \sqrt{ \dfrac{ S_{i} S_{w} S_{o} }{ M } }=\min(S_{i},S_{w},S_{o})+ FLOPs \sqrt{\frac{p^3}{M}} \]

至此得出 EMA 的解析解,我们带入具体数值和 Orojenesis 结果对比。当片上容量大于 1 KB 时,二者相对误差大致在 10% 一下,基本符合,验证结论正确性。

../Extra/Images/IMG_20251116180816427.png

近似推导结论

EMA 解析解由两项组成,一项 \(\min(S_{i},S_{w},S_{o})\) 是 Stationary 下对应的数据大小,另一项 \(FLOPs \sqrt{\frac{p^3}{M}}\) 则是其余变量贡献正比于 FLOPs。T/I/O 三个维度,数据变量是两个维度乘积,而 FLOPs 是三个维度乘积,主要 EMA 实际由第二项贡献,当 \(FLOPs \sqrt{\frac{p^3}{M}} >> \min(S_{i},S_{w},S_{o})\) 时,有:

\[EMA \approx FLOPs \sqrt{\frac{p^3}{M}} \]

片内容量-EMA 经验公式

该公式揭示 EMA 和片上容量 M 满足 \(EMA\propto FLOPs\times M^{-0.5}\) 关系。\(FLOPs\) 含义代表 memory 直连计算单元时的访存上限,改写公式为 \(EMA\propto EMA_{max}\times M^{-0.5}\)

本文单 GEMM-kernel workload 代表 intra-kernel 复用度分析,至于 inter-kernel 本篇系列文章第二篇[4]曾推导过简化 Layer-Fusion 容量和 EMA 的关系满足 \(EMA \propto EMA_{max} \times M^{-1}\),而 Flash Attention [5]的理论上限也满足 \(EMA \propto EMA_{max} \times M^{-1}\) 关系。大致总结一种经验公式:

\[\begin{align*} EMA &\propto EMA_{\text{max}} \times M^{-\alpha} \\ \text{where, } & \\ \alpha &= \begin{cases} 0.5 & \text{if Intra-Kernel} \\ 1 & \text{if Inter-Kernel} \end{cases} \end{align*} \]

芯片静态资源分配和精度 Scaling

\[\begin{align*} EMA &\approx FLOPs \sqrt{\frac{p^3}{M}}\\ \text{Software Intensity} &= \frac{FLOPs}{EMA} \approx \sqrt{\frac{M}{p^3}} \\ \underbrace{\frac{FLOPs}{\sqrt{M/p}}}_{\text{on chip}}&\approx\underbrace{\frac{EMA}{p}}_{\text{off chip}} \end{align*} \]

此公式左侧代表片内计算和 SRAM 存储资源,右侧代表片外带宽资源。当静态资源分配符合此公式时,片内和片外取得平衡,workload 在 roofline 上取转折点位置,计算和带宽资源利用率最优。假设某个设计符合此平衡,且固定片外带宽供应商,精度 bit 每变为原来的 1/2,\(\frac{FLOPs}{\sqrt{M}}\) 应变为原来的 \(\sqrt{2}\approx 1.4\) 倍。


  1. https://www.cnblogs.com/devil-sx/p/18563196 ↩︎

  2. https://www.zhihu.com/question/1954115162412942829/answer/1954961870525030613 ↩︎

  3. https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=10609642 ↩︎

  4. https://www.cnblogs.com/devil-sx/p/18759528#fn7 ↩︎

  5. https://arxiv.org/pdf/2307.08691 ↩︎

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/967270.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Docker - 配置镜像站解决下载镜像的网络问题

Docker - 配置镜像站解决下载镜像的网络问题 {"registory-mirrors": ["https://docker.m.daocloud.io","https://docker.1panel.live","https://hub.rat.dev"] } sudo servic…

2D3D-MATR论文学习

背景 典型的2D3D配准的核心任务是求解一个将点云对齐到图像坐标系下的刚体变换(旋转和平移)。 为了实现这一目的,常见的执行步骤如下 (1)建立对应关系 即找出图像的关键点和点云的关键点,然后将位置相同的关键点…

c# 获取当前时间

c# 获取当前时间void Main() {var time = GetNetworkTime();time.Dump(); }public static DateTime GetNetworkTime(string ntpServer = "cn.pool.ntp.org") {try{// NTP消息结构(48字节)byte[] ntpData =…

YOLOv3 深度解析:网络架构、核心改进与目标检测实践 - 指南

YOLOv3 深度解析:网络架构、核心改进与目标检测实践 - 指南2025-11-16 18:35 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !importa…

ai学习机是不是智商税?到底有没有用?2025年学习机推荐指南

ai学习机是不是智商税?到底有没有用?2025年学习机推荐指南结论:AI学习机并非简单的“智商税”,但也不是万能神器。其价值高度依赖于产品真实的技术实力和是否契合孩子的学习需求。 🤔 一、AI学习机是智商税吗? …

Linux问题

Linux问题 一、问题优先级 highest、high、medium、low(高、中、低) 二、常见问题 1、segmentation fault(core dumped) 含义:“程序发生了内存访问违规,已被系统终止,并生成了核心转储文件。”含义:当程序试图访…

2025 年 11 月石笼网厂家最新推荐,实力品牌深度解析采购无忧之选!

在全球水利防护、交通建设等工程领域,石笼网品牌实力直接决定采购安全性与工程可靠性。据国际丝网产业协会(ISIA)2025 年 11 月测评数据,全球仅 35% 的石笼网品牌同时满足产能达标、专利认证、售后响应及时三大核心…

docker命令提示插件

安装Docker命令提示插件 安装Docker命令提示插件可以提供命令补全与命令提示的功能。对于bash Shell,可以使用以下命令安装curl -L -o /etc/bash_completion.d/docker 对于zsh Shell,可以使用以下命令安装curl -L -o…

C语言和C++有什么区别

前言 C 语言和 C++ 是编程领域中密切相关但定位截然不同的语言,核心区别可概括为:C 是面向过程的结构化语言,专注于 “怎么做”;C++ 是 “面向过程 + 面向对象” 的多范式语言,兼容 C 的同时新增面向对象、泛型编…

详细介绍:通过Modbus TCP网关连接传统RS485电梯的配置详解

详细介绍:通过Modbus TCP网关连接传统RS485电梯的配置详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consol…

python多进程mulprocessing初始化传参进行pickle时不能序列化local局部变量

python多进程mulprocessing初始化传参进行pickle时不能序列化local局部变量报错代码: 可以运行的代码:点击查看代码 import multiprocessing class calculate():"""AttributeError: Cant pickle loca…

Snipe-IT支持Oauth2登录

Snipe-IT支持Oauth2登录Snipe-IT默认支持的第3方登录为:SAML 和 Google Workspace。 不支持添加自定义Oauth2登录。 查了相关文档,https://snipe-it.readme.io/docs/saml并用casdoork作为idp测试了SAML并没有成功,加…

20232424 2025-2026-1 《网络与系统攻防技术》实验五实验报告

1.实验内容(1)选择一个DNS域名进行查询,获取如下信息:DNS注册人及联系方式、该域名对应IP地址、IP地址注册人及联系方式、IP地址所在国家、城市和具体地理位置。(2)尝试获取QQ中某一好友的IP地址,并查询获取该好…

绝对值的性质

本文介绍绝对值的经典方法与例题。 绝对值的化简 若题目给定了数值的范围,那么这个代数式就是可以化简的。 例题 若 \(0<x<10\),求 \(||x-15|+20|+|x-9|\) 的值。 分析:题目中已有数值的范围,直接求出代数式…

软件工程——设计物品复活软件的思考

物品复活系统开发总结:一个软件工程学习过程的回顾与体会 在完成“物品复活系统”这一课程项目的过程中,我第一次较系统地体验了一个软件从需求分析、建模设计、编码实现到测试与文档交付的完整流程。对于一个功能并…

【C++STL :stack queue (二) 】stack 与 queue 的模拟实现与双端队列探秘 - 指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

做题随笔:P14521

Solution 题意 原题链接 感觉题意很难形式化,建议自己读一下。 大概是:给一个定根树,每个点有一个点权,每条边有一个可通过区间,从根开始,带着一个初值向下走,每到一个点把点权加在值上,对初值 \(x\) 的 \(q\)…

《重生之我成为世界顶级黑客》第五章:失败,失败,还是失败

《重生之我成为世界顶级黑客》第五章:失败,失败,还是失败继续肝,趁着有灵感,我也自己看看,感觉还行,凑合能看。晨光透过窗帘的缝隙,在键盘上投下一道细长的光斑。龙傲天深吸一口气,开始了对企鹅公司系统的测试…

Win11系统恢复经典的右键菜单方法(CMD快速执行)

Win11切换经典右键菜单: reg add "HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32" /f /ve taskkill /f /im explorer.exe & start explorer.exe Win11恢复回新右…