AI打字为什么卡在带宽墙?70B大模型逐字推理与硬件解耦拆解
AI 每在屏幕上敲出一个词,显卡就要把整个模型从头到尾重读一遍。
一个 700 亿参数的大模型,体重大概是 140G。 这相当于三万五千首高品质音乐的文件大小。 屏幕上蹦出一个标点,显卡从显存里搬运 140G。 蹦出下一个词,再把这 140G 重新搬一遍。 它要是给你写了一段 50 个词的简短回答,显卡在总线里来回倒腾了整整 7000G 的数据。
有没有搞错? 几十万买回来的顶级计算卡,模型不早就加载在显存里了吗? 算力那么强,为什么打字还是像老式电报机一样,一个词一个词往外挤?
先看你按下回车的那一瞬间。 这时候芯片可一点都不憋屈。 你扔进去一篇两千字的提示词,显卡把这两千个词打包成一个大矩阵,一口气吞下去。 模型里这 140G 的权重参数,从显存搬进计算核心一次,这两千个词就同时挂上去做乘加法。 显卡里成千上万个张量计算核心全在全速狂飙。 搬运一次数据,能做好几千次运算。 算力利用率直接拉满。 这一步在工程上叫预填充。
可是一旦开始输出回答,整个逻辑突然全乱了套。 大语言模型是自回归的。 什么叫自回归? 就是它算下一个词的前提,是必须先知道前面的词是什么。 它没办法未卜先知,只能把第 50 个词算出来了,把这个词贴回句尾,才能去猜第 51 个词。 这就带来了一个很尴尬的场面: 算第 51 个词的时候,手头只有这一个词的向量。 但为了算出这个词到底该选哪个,显卡必须把模型里全部 700 亿个参数,重新在计算核心里过一遍。 140G 的数据从显存搬进芯片核心,只服务这一个词。 算完了,吐出一个词,接着把这 140G 从头再搬一次。
问题就卡在搬运的速度上。 这就是著名的显存带宽墙。 你可以把显卡的计算核心看成一个胃口极大的超级车间,一秒钟能消化天文数字般的材料。 但连通仓库和车间的走廊,宽度是有物理极限的。 哪怕是最顶级的英伟达 H100 显卡,每秒钟能搬运的数据上限大概也就是 3.3 TB。 3.3 TB 听起来很大,但搬一次 140G 的数据,一秒钟最多也就只能搬 24 次。 如果就你一个人在用这个大模型,不管这块显卡算力有多逆天,它物理上的打字速度上限,就是一秒钟 24 个词。 那剩下的算力在干嘛? 在干等。 那些造价昂贵的高性能计算单元,超过百分之九十八的时间都在工位上喝茶,等显存把权重数据慢慢送过来。 整个显卡的实际算力利用率,经常跌到百分之一以下。 你在屏幕前看它噼里啪啦像个资深打字员,实际上芯片核心绝大部分时间都在等走廊清空。
那搞 AI 基础设施的工程师怎么破这个局? 第一反应是拼车。 既然搬一次 140G 这么费劲,那就别只为一个人的提问跑这一趟。 把几十个甚至几百个用户的请求凑在一起解码。 显存搬运一次 140G 权重,同时给这一百个用户算各自的下一个词。 这样走廊没白跑,车间的计算工人也有活干了。 但这招很快就碰到了新麻烦。 拼车需要等人,大家的回答长度不一样,长回答拖着短回答,就会导致屏幕上的打字突然卡顿。 而且每个人的上下文历史都要在显存里占地方,缓存越攒越大,显存很容易直接被撑爆。
所以现在业界开始搞一种更彻底的拆解:让工作分家。 预填充和解码,根本就是两类完全相反的活。 读提示词需要强大的暴力算力,不怕数据大,就怕算力不够用; 而逐字写回答,纯粹是在拼谁的显存带宽大、谁的走廊更宽,根本用不上那么夸张的顶级算力。 既然如此,干嘛非要让同一张昂贵的高端显卡同时干这两件事? 最近通用计算(General Compute)和 Positron AI 这类硬件新玩家搞的合作,走的就是这条路。 把读提示词的算力重活,扔给擅长大规模并行的英伟达 GPU; 等到开始一个词一个词往外挤的时候,立刻把任务切给专门堆带宽的专用芯片去处理。 用成本低得多的架构,去解这个纯拼搬运速度的死局。
以前很多人以为,大模型跑得快不快,全看芯片的浮点算力有多高。 真到了大规模推理的落地阶段才看清楚,真正卡住技术的物理极限,往往根本不在于芯片算得多快,全看显存里的数据搬得有多慢。
同领域解读 / AI & LLMS
规范引用 / CANONICAL CITATION
AI打字为什么卡在带宽墙?70B大模型逐字推理与硬件解耦拆解 — 墓碑科技 MUBEITECH(https://mubeitech.com/deep/mb-20261020-30aebf)
导出 / EXPORT
订阅 · SUBSCRIBE
每周一封独立、不受审查的科技与 AI 深度评论,周一发出。带出处,可核查。