一个 token 的成本
LLM 生成一个 token 的成本,与其说取决于 GPU 价目表,不如说更取决于服务设计。本图从解码为何受限于内存带宽出发,追踪批处理、量化、推测解码等服务技术,以及 MoE、MLA 等模型结构,如何改变同一块 GPU 能产出的 token 数量,并把这一差异一路连到 API 价目表、产品毛利,以及负责这项工作的岗位。
完整简报
LLM 生成一个 token 的成本,并不只由 GPU 租金决定。出发点是一个物理条件:解码受限于内存带宽。绕开这一瓶颈的服务技术和模型结构,改变了同一块 GPU 能产出的 token 数量。这一差异会传导到 API 价目表和产品毛利,负责这件事的岗位也随之独立出来。
受内存限制的解码#
等待的不是算力,而是带宽
模型每生成一个 token,都要从内存中重新读取几乎全部权重。一个 70B 模型以 16 位加载,仅权重就约 140GB,因此在逐个处理请求时,内存带宽会先于计算核心触及上限。所以降低推理成本的方法,大多归结为每读一次得到更多 token,或减少需要读取的字节数。
预填充与解码#
两个阶段的瓶颈不同
读取提示词的预填充阶段一次性处理全部输入 token,因此瓶颈在计算量。写出回答的解码阶段逐个生成 token,每次都要读取权重和 KV 缓存,因此瓶颈在内存。首个 token 出现前的时间主要由预填充决定,之后 token 之间的间隔则由解码决定。这正是 DistServe、Splitwise 等研究提出把两个阶段放到不同 GPU 上运行的原因。
服务技术#
绕开同一瓶颈的三条路
不改模型、在服务端降低每 token 成本的方法主要有三种。批处理用一次读取的权重同时为多个请求生成 token,量化直接减少要读取的字节数,推测解码则通过一次验证确定多个 token。批处理和推测解码不会改变模型的输出分布;量化则以少量质量换取内存空间。
连续批处理与 KV 缓存#
读一次,分给多个请求
连续批处理不等某个请求结束,而是在每个解码步骤把新请求填进空位,用一次权重读取同时为多人生成 token。这时限制批大小的,是每个请求不断累积的 KV 缓存。2023 年的 vLLM 论文报告,现有系统浪费了 KV 缓存内存的 60%~80%,并通过按页管理缓存,在相同延迟下把吞吐量提高到 2~4 倍。
量化#
降到 8 位,要读的字节减半
把权重从 16 位降到 8 位,每个 token 要从内存读取的量就减半,降到 4 位则只剩四分之一。GPTQ、AWQ 这类只压缩权重的方法,对以内存为瓶颈的解码立竿见影;把激活值也降到 8 位的 W8A8,还能加快以计算为瓶颈的预填充。位数越少,质量可能越差,因此位数要用实际服务的任务重新评估后再定。
推测解码#
小模型起草,大模型一次验证
小型草稿模型先提出几个 token,主模型再用一次前向传播把它们一起验证。由于只保留被接受的 token,输出分布与主模型单独生成时相同。2023 年谷歌研究人员报告,在 T5-XXL 上不改变输出即可提速 2~3 倍;实际收益取决于草稿 token 被接受的比例。
计算 token 成本#
吞吐量翻倍,成本减半
如果自行部署服务,一个 token 的成本等于 GPU 每小时的费用除以这一小时内生成的 token 数。服务技术和模型结构降低成本的方式,是提高吞吐量,而不是改变 GPU 的价格。不过,即使 token 单价下降,像智能体那样一次任务要多次调用模型的产品,调用次数可能增长得更快,总账单仍可能变大。
open_in_newstartupxo.com/ko/news/2026/06/ai-inference-cost-economics-for-foundersToken 税#
推理成本计入营业成本
传统 SaaS 多服务一位用户的成本很低,而 LLM 产品每个请求都要消耗 GPU 时间。因此推理成本会计入营业成本;在固定费率套餐下,用得最多的用户就是成本最高的用户。只有清楚单个请求的输入 token、输出 token 和缓存命中率,才能算出套餐是否赚钱。
缓存命中折扣#
不必重读的提示词更便宜
如果每个请求开头都带着同样的系统提示词或长文档,复用这部分的 KV 缓存,就能省掉相应的预填充。主流模型 API 对命中缓存的输入 token 收费低于普通输入,原因就在这里。缓存只会命中从开头起完全一致的部分,所以只要把固定内容放在前面、变化内容放在后面,命中率就会不同。
模型结构#
在设计阶段减少读取量
如果说服务技术是让既定模型跑得更便宜的方法,那么模型结构就是从一开始减少每个 token 需要读取和计算的量。混合专家(MoE)减少每个 token 使用的参数,MLA 减少每个请求累积的 KV 缓存。DeepSeek-V3 同时采用了两者,以 FP8 混合精度训练,并以 FP8 格式公开了权重。
混合专家(MoE)#
671B 中每个 token 只用 37B
DeepSeek-V3 共有 671B 参数,处理每个 token 时只激活其中 37B。每个 token 的计算量和需读取的权重缩减到激活参数的规模,但由于无法事先知道会调用哪些专家,全部 671B 仍须加载在内存中。MoE 以更多内存容量换取计算上的节省,随之而来的是把专家分布到多块 GPU 上的设计。
MLA#
压缩 KV 缓存,扩大批次
多头潜在注意力(MLA)不直接存储键和值,而是把它们压缩成较小的潜在向量再放进缓存。DeepSeek-V2 技术报告写道,采用 MLA 的该模型,KV 缓存比 DeepSeek 67B 小 93.3%。单个请求占用的内存变少,同一块 GPU 就能容纳更多请求和更长的上下文。
服务工程师#
负责压低 token 成本的岗位
随着推理成本直接左右产品毛利,在构建模型之外,让模型跑得又便宜又快的工作变得重要起来。挑选并调优 vLLM、SGLang、TensorRT-LLM 等服务引擎,让同一块 GPU 产出更多 token,就是这个岗位的成果。本图的大多数分支,正是这个岗位每天调整的配置项。
open_in_newreputo.net/ko/jobs/software-engineer/specializations/llm-serving-systems-engineer服务工程师的工作#
从测量负载到解码设置
第一步是测量工作负载,判断瓶颈在预填充还是解码,要守住的延迟指标是首个 token 的时间还是 token 之间的间隔。接着调整批大小、KV 缓存的内存分配、量化位数以及是否启用推测解码,并确认质量没有下降。每改动一项设置,都要把吞吐量、延迟和质量一起重新测量。
来源与相关
想把这张图变成真正的系统
读完简报之后,下一个问题通常是「那我们该怎么把它做出来」。Weple 是一家外包开发工作室,擅长把这样的结构拆成小块交付。咨询时把本页链接一并发给我们即可。
咨询开发