---
id: "mb-20260912-3fa4d3"
kind: "deep"
title: "一次计算只产一个token：大模型推理引擎如何把三万美元GPU压榨到物理极限"
topic: "一次计算只产一个token：大模型推理引擎如何把三万美元GPU压榨到物理极限"
source_type: "generated"
status: "published"
generated_at: "2026-09-12 20:37:56"
frame_type: ["LLM推理流水线与物理饱和（预填充算力受限、解码", "机制"]
legal_anchor_count: 0
transcript_citation_count: 0
---

# 一次计算只产一个token：大模型推理引擎如何把三万美元GPU压榨到物理极限

在前端让大模型写一篇五百字的文章，后台那张几万美元的 GPU 到底经历了什么？
很多人以为它像打印机一样，把整篇文章算好了直接吐出来。
真实的情况完全相反。
这个庞大的神经网络每从头到尾跑一整遍，只吐出一个 token。
一次前向传播，产一个词。
一篇五百字的长回答，GPU 要在短短几秒钟里把整个模型循环跑上七百次。
每一次循环，都在跟底层的物理硬件搏命。
Together AI 的工程师 Zain Hasan，最近在开源 AI 峰会上把这台推理引擎的底细彻底讲透了。
它不是什么优雅的思考机器。
它是一座把三万美元显卡压榨到极致的重工业流水线。
整个过程从你敲下回车的那一瞬间就开始了。
模型根本不认识人类的文字。
在 GPU 真正介入之前，CPU 必须先把你的句子切碎成一个个编号。
字典里大概有十万多个代码。
比如你问一句纽约去哪玩，送进显卡时，其实是一串枯燥的整数。
接下来，请求进入了整个推理过程最分裂的两个阶段。
第一阶段叫预填充。
它把你发过去的所有问题，一次性打包压进显卡的核心里。
几千个计算核心全功率开动，疯狂做矩阵乘法。
这个阶段完全是算力受限。
显卡算力跑满了，决定了你多久能看到屏幕上蹦出第一个字。
但只要第一个字一出来，画风立刻大变。
系统马上滑进第二阶段，解码。
大模型是按顺序自回归的：想算第十个词，必须先把前九个词都看一遍。
这时候每一次循环，只算一个新词。
矩阵计算量小得可怜，几万个计算核心大部分时间都在无所事事地空转。
但显卡必须干一件极耗时间的苦力活：为了算出这一个新词，它必须把之前所有词的数据，从显存里完完整整搬运一遍。
算力根本没用完，显存带宽先被撞瘫了。
第一阶段在拼命吃算力，第二阶段在疯狂吃带宽。
如果每生成一个新词，都要把前面所有词的注意力从头重算一遍，计算量会跟着长度呈平方级爆炸。
怎么避免这种自杀式计算？
工程师把前面算过的键值数据直接存下来，这就是 KV 缓存。
下一次循环只算新词，前面全部从缓存里读。
可是新的麻烦立刻就来了。
三万美元一张的旗舰 GPU，显存就那么几十个 G 到一百多 G。
每一个用户的每一轮对话，都在疯狂吞噬这些昂贵的高带宽显存。
早期的引擎设计非常笨拙：每个请求一进来，就先给它预留最大长度的显存空间。
哪怕你只问了两个字，剩下的显存也必须给这单留着。
显存利用率低得离谱，大半空间都是被占着位置的空白碎片，后面的用户只能在外面干等。
后来怎么解决的？
工程师把操作系统管理虚拟内存的那套机制搬了过来，这就是分页注意力。
显存不再提前整块霸占，切成固定大小的小块，按需申请，动态拼接。
同样的显存空间，能并发接客的请求数量直接翻倍，甚至翻上几倍。
显存挤出空间了，下一个问题是：怎么别让显卡闲着？
以前的静态批处理，就像凑一车人发车。
四个人的请求一起跑，有人十个词就答完了，有人要答一千个词。
早答完的人只能干坐着等，空出来的显存和算力全在陪跑烧钱。
现在的引擎换成了连续批处理。
调度器不再等一整批任务结束，它在每一次循环之后重新排班。
任何一个用户的回答刚冒出结束标记，下一毫秒立刻出队。
等在排队列表里的新用户，当场插进这个刚空出来的卡槽。
没有一张显卡被允许停下来休息。
要是半路突然杀进来一个几千词的超长提示词怎么办？
一次性吃下去，其他正在吐字的用户就会被活活卡死。
调度器就搞分块预填充，把长输入切成两千词一段的小碎片，分批塞进显卡，一边切片一边匀速给别人吐字。
真正把这套精巧系统推向崩溃边缘的，是智能体循环。
人类开始用智能体写代码、跑任务，交互逻辑全变了。
智能体不是在聊天。
它每执行一步工具调用，都要把最初的系统设定、几十个工具接口说明、历史执行记录和新拿到的结果，打包成一个全新的请求重新发进引擎。
在一个一百轮的智能体长任务里，灾难发生了。
第一轮发几百个词，第十轮把前九轮全带上，第五十轮带上前四十九轮。
每次输入都比上一次更长，而吐出来的工具调用往往只有几十个词。
如果没有针对性的优化，每一轮交互，都要把滚雪球一样的历史记录从头到尾重新预填充一遍。
算下来，一百轮任务的总计算量，会膨胀到第一轮的整整 55 倍。
显卡算力直接在无休止的历史复算里被榨干。
前缀缓存拯救了这个死局。
既然每一轮前面那一长串系统提示词和工具定义完全没变，引擎就直接给这些文本块打上哈希标签。
相同的前缀，物理显存块只算一次，全生命周期直接复用。
每一轮交互，显卡只需要预填充最后新蹦出来的那一点点工具结果。
一百轮智能体循环的总计算量，硬生生从 55 倍被砍到了 10 倍。
当智能体在外面执行搜索或者跑代码时，引擎甚至会把它的显存缓存临时倒腾到便宜的 CPU 内存里，等它下次唤醒再搬回来。
很多人在前端看着光标飞速打字，以为自己看到的是智能在自然流淌。
但在那块硅片上，根本没有什么随心所欲的魔法。
分词切片、连续拼车、显存分页、前缀复用。
每一个环环相扣的调度机制，都是工程师在用极为繁复的工序，拼命掩盖神经网络在物理结构上的笨拙。
算力从来不是免费的空气。
屏幕前每一次丝滑流畅的交互，背后都是一层又一层工程调度，在顶着物理极限做生死极限的榨取。

_Rendered by mubei-terminal._
