- A+
读完本文,你会发现量化、推测解码、连续批处理等技术看起来不再是需要死记硬背的技巧,而是一套自洽的逻辑推演。
有一件事几乎让每个刚开始做语言模型服务的人都感到困惑——你租了一块顶级数据中心GPU,规格表上写着每秒近千万亿次运算。你把700亿参数的模型加载上去,开始生成文本。利用率监视器读数很高,但每秒只能得到几十个Token。
没有哪里出故障。你看到的正是关于这类硬件最重要的一件事:一旦你建立起正确的直觉,多数性能建议就不再是一堆技巧,而会变得显而易见。

一、一个不对称性解释了几乎所有问题
整个设计依赖于一个事实:做算术很便宜,而取回要做算术的数字却很贵。
现代硬件上这个差距并不小。一个有用的比喻是车间:算术单元是工作台,数据存放在仓库里,仓库和车间之间由一条走廊连接——那条走廊就是内存带宽。
在最近几代加速器中,算术能力的增长速度是内存带宽的数倍。每一代新芯片能做的数学运算多得多,而能取回的数据只多了一点。所以这种失衡每一代都在加剧。
二、为什么GPU有数千个简单单元
CPU的设计让一条指令序列尽快完成,把大部分芯片面积花在缓存、预测和重排逻辑上。GPU则下了相反的赌注——当数百万个数据元素运行相同的程序时,一个控制器可以同时指挥数千个算术单元。
GPU去掉了CPU携带的大部分控制机制,把省出来的面积用来装算术单元。一颗高端服务器CPU能同时推进几百条线程,而一颗数据中心GPU每个时钟周期能推进数万条线程。
三、GPU不会让等待变短,而是让等待隐形
CPU试图用缓存和预测让等待不发生。GPU则接受等待,并安排好在等待期间总有别的事可做——芯片上装载的工作量远超一次能运行的量,当正在运行的warp向主内存请求数据而停滞时,调度器立刻挑另一个就绪的warp顶上。
在warp之间切换基本零成本,只需要一个时钟周期。
这也是监控中利用率数字具有误导性的原因——它通常只报告芯片上是否调度了工作,而不是算术单元是否在做有用的事。
四、内存是一把梯子,每一级都比上一级慢得多
数据位于距离算术单元不同远近的若干层级之一:
| 层级 | 规模 | 访问成本 |
|---|---|---|
| 寄存器文件 | 少量数值 | 几乎为零 |
| 共享内存/L1 | 数百KB | 非常低 |
| L2缓存 | 数十MB | 明显更高 |
| HBM主内存 | 数十GB | 最高,且差距悬殊 |
读取一条线程已经持有的值几乎不需要成本,而访问主内存则要贵上几百倍。你的模型权重就位于最底层——它是唯一大到足以装下它们的那一层。
五、每字节工作量:决定一切的核心数字
以你在GPU上运行的任何操作为例,统计两件事:执行了多少次算术运算,以及要从主内存拉取多少字节。
用第一个除以第二个,这个比值就是该操作的算术强度。在你做任何测量之前,它就已经能预测你的性能。
对当前16位精度的数据中心GPU(如H100 SXM5)而言,平衡阈值大约是每字节300次运算:
- 低于300:你受限于内存。增加算术能力什么也改变不了。
- 高于300:你受限于算术。增加带宽什么也改变不了。
六、为什么生成一个Token是最糟的情况
生成文本是逐Token进行的。每个新Token都需要一次完整的模型前向传播,读取模型中的每一个权重,每个权重只读一次。
一个700亿参数的模型生成一个Token大约要做1400亿次运算。在16位精度下每个权重占2字节,读取全部权重意味着搬运140GB。两者相除得到每字节1次运算——比平衡阈值(300)低了大约三百倍。
这就是算术单元闲置的原因——这个操作本身没有足够的工作量来喂饱它们。
一旦你接受生成受限于内存,Token速率就变成一道简单的算术题:140GB权重,每秒3300GB的传输速度,产生一个Token约42毫秒,即每秒约24个Token——任何软件技巧都无法撼动这个下限。
七、你听说过的每一个优化都在改变同一个比值
一旦你把性能看作一个比值,这些技术就不再是互不相干的技巧:
- 批处理:同时处理多个请求,每个权重只读一次用于所有请求,每字节工作量乘以批大小
- 融合:链式操作合并为一个,中间值从不离开芯片,砍掉多次内存往返
- 共享内存:把数据加载到片上,做所有计算,再继续——为一次行程派上多次用场(FlashAttention就是典型)
- 量化:8位代替16位,每个权重占用的空间减半,生成上限翻倍
八、如何判断你处于哪种情况
在运行中测量两件事:每秒从主内存搬运多少字节,以及每秒执行多少次算术运算。
- 带宽接近天花板,算术远低于它:内存受限。优化批处理、量化、融合、布局。
- 算术接近天花板,带宽远低于它:算力受限。这是一个好状态。
- 两者都远低于天花板:开销受限。你的工作规模太小,填不满芯片。
对于语言模型服务,生成阶段在几乎所有现实配置中都是内存受限的。如果你在优化Token吞吐,批大小、精度和KV cache大小几乎总是比你能尝试的其他任何东西都重要。
九、什么会变,什么不会
会变的是数字:内存容量、带宽和算术吞吐每一代都在增长。不会变的是形状:算术仍然远比数据搬运便宜;内存梯子仍然保留它的层级;每字节工作量仍然决定你会撞上哪一面天花板。
减少数据搬运的技术价值会持续上升,而规格表上的峰值算术数字,会持续成为文档里最没有预测力的那个数字。
【关于EPCP智竞大奖赛】
EPCP扑克中文网(epcppk.com)为EPCP智竞大奖赛官方中文网站。EPCP中文网收录所有EPCP中文赛事资讯,EPCP新闻以及EPCPT扑克教学的文章。EPCP智竞大奖赛是国内电视游戏和娱乐领域的首屈一指的赛事品牌,赛事安全公正,值得参赛选手信赖,点燃了国内扑克热潮。
EPCP游戏试玩入口










