章节摘要:本章跟着一条追因线走——从一条卡顿的生成请求出发,拆出推理成本到底花在哪几步,建立吞吐、延迟、TTFT 与显存天花板的指标语言,最后落到 vLLM 的解题思路总览。读完本章,你会拿到全册用来"说话"的所有工具:看得懂压测数字,说得出瓶颈位置,画得出问题与解法的对应关系。
我们的主线是一个再普通不过的线上场景:产品要求把一个开源大模型架在自己租的显卡上,对外提供对话能力。第一个版本用最直觉的方式部署——Hugging Face Transformers 起一个进程,一个请求进来,模型一个字一个字往外蹦。测试环境里单发请求一切正常;一上流量,吞吐上不去、排队越排越长、账单按 token 计费贵得离谱。
追因从这里开始:慢和贵,究竟发生在哪一步?是矩阵乘法算得太慢?是显存不够?还是请求组织方式有问题?本章沿途会反复回到这条主线上取证据,第 2 章之后每解开一层,都会让主线场景里的某个数字发生可见的变化。
值得先交代一个认知拐点:直觉会把"推理慢"归因于"模型大、算力弱"。但真实世界里,推理服务的瓶颈往往不在计算本身,而在显存的容量与组织方式、请求的调度粒度、重复计算的浪费上。这三件事分别对应本册的三大主线章节——这也是为什么全册的章节顺序是"显存困境 → PagedAttention → 连续批处理",而不是按功能模块罗列。
本章分三站:
本章最关键的认知转折是视角的切换:从"让单次计算更快"转向"让整块显存和整段时间被更充分地利用"。单次计算的优化空间受限于硬件物理规律,而利用率上的浪费动辄是数倍之差——传统部署方式下显存有效利用率长期只有三成上下,这意味着同样一张卡,理论上存在把并发能力翻倍的空间,前提是把管理方式换掉。
vLLM 的答案因此不是"更快的算子"这么简单,而是一套组合:用 PagedAttention 重新组织显存,用连续批处理重新组织时间,用前缀缓存与投机解码消灭重复劳动,用量化与并行突破单卡边界。第 1.3 节会给这张总览图,之后每章展开一个机制。
主线场景的疑点排在首位的是显存:GPU 明明有几十 GB 显存,为什么没服务几条请求就报显存不足?第 2 章我们就去翻这本显存账——把 KV Cache 的计算公式逐项拆开,看看预留式分配和碎片是怎么把大半张卡的容量白白锁死的。