拓展阅读

推理与服务

解码、缓存、显存、吞吐和延迟

阶段 312 项展开讲义正文全部展开

沿着对象与状态理解本章

先把单个请求的等待时间和整个服务的吞吐分开。下图用相同服务槽位、相同请求长度比较静态组批与连续组批;每步耗时被明确理想化,后面的真实调度仍要加入prefill、队列与设备测量。

下方图解的固定输入在“输入与适用条件”中声明。它用于解释本章机制,不与本章其他独立例子的数值暗中接续。

动态图解 · O06

连续组批:有座位空出来,就接下一位

为什么设备更忙,不代表每条请求都更快?

固定批次像一车人必须一起离站;连续组批允许有人结束就补入新请求。这样减少空转,有机会提高吞吐。但已有请求的关键步骤未必缩短,新请求的预处理、排队与竞争还可能增加部分延迟。

槽位简化表示一次迭代能同时处理的请求位置。
Prefill新请求的完整已知输入处理阶段。
公平性避免某类请求长期等不到资源。

输入与适用条件:两槽位、三请求,A/B/C分别需2/4/2个等时decode步骤。忽略prefill和通信,只说明调度机制。

1 / 4 · 普通批次等待整体结束

第1步,共4步

窄屏可左右滑动图形,或点击“放大图形”。文字解释紧随图后。

连续组批:有座位空出来,就接下一位:普通批次等待整体结束固定批次:6步步1AB步2A✓B步3空闲B步4空闲B✓步5C空闲步6C✓空闲连续组批:4步步1AB步2A✓B步3CB步4C✓B✓每步耗时相同的简化假设;✓表示该步结束时请求完成。

两槽位、请求A需2步、B需4步、C需2步且等待。普通批次中A完成后空出的位置仍要等B结束,再处理C。

A2步;B4步;C2步;槽位2

默认静止。用“下一步”看完解释再继续;播放到最后一步自动停止。键盘聚焦播放器后,可用左右键逐步查看、空格播放/暂停。图中颜色辅助区分,含义同时用文字注明。

为什么需要

不同请求长度不同,固定批次会浪费提前空出的计算位置。

怎样实现

在迭代边界移除完成请求、纳入候选,并用预算管理prefill/decode竞争。

可能的代价与误解

吞吐提升可能伴随首Token或长尾延迟上升,不能只看平均速度。

如何判断是否做对

同负载测吞吐、TTFT、逐Token延迟和尾延迟;单独报告排队。

一次请求的时间线

Prefill处理已知输入,Decode逐步生成新Token。前者能批量处理已有序列,后者存在自回归依赖。两者对计算与访存的需求不同,不能只按输入输出Token总数估算响应时间。[S036][S040]

总耗时 ≈ 排队 + 输入处理 + 生成 + 工具执行
        + 网络往返 + 编排等待 + 重试恢复

这是原创诊断分解;并行操作会重叠,不能直接累加全部Span时间。8,000输入、200输出与200输入、8,000输出并不等价,实际还受模型、缓存、硬件和服务调度影响。[S044]

解码与采样

贪心选择最高分,Sampling从分布抽样,Beam Search维护多条候选。温度常通过softmax(logits/T)调整尖锐程度;T=0通常是接口的特殊贪心模式,不是数学上直接除零。Top-k保留固定数量候选,Top-p保留累计概率达到阈值的集合。[S034][S035]

原创演算:概率0.60、0.25、0.15,p=0.8时保留前两个,重新归一化约为0.706、0.294。尾部被截去不意味着前两项已验证正确。正常结束、截断、拒绝与工具调用必须区分。

KV Cache与显存

KV缓存复用过去位置的Key与Value,减少生成时重复计算。标准注意力的简化估算为:

字节 ≈ 2 × 层数 × 批大小 × 序列长度
      × KV头数 × 每头维度 × 每元素字节数

2表示K与V。公式不包括分配浪费、对齐和元数据,也不直接适用于所有特殊架构。32层、1条序列、8,192 Token、8个KV头、128维、2字节的教学例子约1 GiB。改成32个KV头,估算约4 GiB,不代表端到端慢四倍。[S036][S013]

动态、静态、量化和外置缓存分别权衡空间、编译、精度和传输。权重放得下不代表长上下文高并发也放得下。量化缓存或外置也可能增加额外运算。

Prompt Cache不是压缩

Prompt Caching复用匹配前缀的计算;压缩改变真正提供的信息。命中缓存不代表上下文不占窗口,失去缓存也不代表历史被删除。稳定前缀有利于复用,但不应为了缓存保留大量无关规则。[S039][S094]

原创例子:固定规则6,000 Token、每轮新证据500 Token。如果在最前插入变化时间戳,可能减少可匹配前缀。是否省钱要结合实际计费、命中范围与任务质量,而非只看一个比例。

服务端三种加速思路

FlashAttention优化注意力计算的数据搬运,原始工作关注精确注意力的IO效率。PagedAttention改善KV内存组织与共享;vLLM是相关服务实现生态。Speculative Decoding用草稿提出候选、目标模型验证,在相应算法条件下保持目标采样分布。它们分别优化不同瓶颈,不能互相替代。[S040][S041][S042][S043]

连续批处理提高资源利用,但平均吞吐上升不保证所有用户尾延迟下降。推测解码依赖草稿接受率;工具耗时占主导时,GPU加速对整体任务帮助可能有限。

性能归因练习

记录一次exclude任务各轮输入、输出、工具耗时与总时长。若耗在完整测试,改采样没用;若反复长计划,检查编排;若每轮读全仓库,检查检索;若推理不足造成返工,缩减预算可能更贵。

自检:缓存命中率升高就优化成功吗?不能,需质量不退化且总成本或时长改善。输出短一定高效吗?不一定,遗漏验证会把成本转移给用户。

逐项中文讲义

保留拓展阅读目录编号与A/B/C优先级;每项包括机制解释、边界与原创练习。

A3.1 · 文本生成与解码策略

对应资料:Generation Strategies

生成策略决定怎样从模型分布选择Token。贪心、采样与束搜索各有目标,序列概率高不保证开放回答更自然或事实更正确。

长度、停止与重复控制也会改变结果,不同模型支持不同。代码被截断时应识别未完成,不能把最后返回的文本都当合法程序。

运行示例 · R03-01

贪心与采样从同一概率开始

输入与条件。p=[0.5,0.3,0.2]。

步骤与对象内部动作中间结果 / 新状态
1贪心选最大项每次第1项。
2采样在[0,1)均匀取uu=0.7落在第2项区间[0.5,0.8)。
3输出取第2项Token随机性发生在选择,不是概率公式失效。

把过程连起来。同输入产生不同输出可以来自采样,但温度0也不保证所有分布式实现逐位确定。

边界与反例。本表是独立教学构造,用来解释该研究主题的一个局部机制,不是原论文实验或产品实测;完整方法与适用条件仍需结合本节正文。

依据与适用范围:[DERIVE]。示例输入和场景由本书明确设定。

原创练习:固定Logits,比较不同温度、Top-k和Top-p的候选概率,再多次采样观察分布。不要用一次随机结果判断策略优劣。

完成标准是区分分布控制与事实验证。温度低可以减少某些随机变化,但不会补上未读源码,也不能解决工具失败和环境不稳定。

拓展阅读目录事实依据 [S034] · 练习与工程推导为本书独立编写。

A3.2 · 退化文本与核采样

对应资料:The Curious Case of Neural Text Degeneration

文本退化研究讨论高概率搜索在开放生成中可能产生重复或不自然结果,核采样按累计概率形成动态候选集合。Top-p不是保留p比例的词表。

分布尖锐时候选少,平缓时候选多,截断后需要归一化。尾部过滤控制采样,不验证候选事实。

运行示例 · R03-02

核采样为什么保留越过阈值的那项

输入与条件。p=[0.5,0.3,0.15,0.05],阈值0.9。

步骤与对象内部动作中间结果 / 新状态
1累计0.5、0.8、0.95前两项不足0.9。
2选择保留前3项包含使累计达到阈值的第3项。
3归一化分别除0.95不是仍用原概率然后凭空丢掉5%总质量。

把过程连起来。top-p是动态候选集合;同阈值在不同分布中保留数量可以不同。

边界与反例。本表是独立教学构造,用来解释该研究主题的一个局部机制,不是原论文实验或产品实测;完整方法与适用条件仍需结合本节正文。

依据与适用范围:[DERIVE]。示例输入和场景由本书明确设定。

原创练习:概率0.70、0.15、0.10、0.05,计算p=0.8与0.95的集合,再说明边界累计为何重要。实验只演示数学,不预设代码生成的最佳参数。

完成标准是知道研究条件与实际任务不同。开放文本中的优势不能直接变成所有编码Agent都必须使用某个固定p值。

拓展阅读目录事实依据 [S035] · 练习与工程推导为本书独立编写。

A3.3 · KV缓存策略

对应资料:KV Cache Strategies

KV缓存复用过去位置的Key、Value,减少解码重复计算。动态、静态、量化和外置缓存在空间、速度、精度与传输之间取舍。

估算需包括层数、序列、批大小、KV头和精度,不能把查询头数直接代入所有模型。特殊架构也可能改变表示方式。

运行示例 · R03-03

动态缓存与预分配缓存占用不同

输入与条件。上限10Token,当前3Token,每Token缓存32字节。

步骤与对象内部动作中间结果 / 新状态
1有效内容3×32=96字节当前有意义状态。
2动态分配按增长申请或追加管理方式有开销。
3静态预分配先留10×32=320字节有效长度仍3,不允许读取未来空槽。

把过程连起来。已分配容量、有效Token和逻辑mask是三个数。

边界与反例。本表是独立教学构造,用来解释该研究主题的一个局部机制,不是原论文实验或产品实测;完整方法与适用条件仍需结合本节正文。

依据与适用范围:[DERIVE]。示例输入和场景由本书明确设定。

原创练习:用本章公式比较一条与八条长序列,列出权重之外的缓存、临时张量和分配开销。解释为什么权重能加载不代表高并发也可行。

完成标准是把缓存看成计算状态而非记忆知识。删除缓存可能重新计算,但不等于删除模型参数中的能力;缓存命中也不等于永久记住用户。

拓展阅读目录事实依据 [S036] · 练习与工程推导为本书独立编写。

A3.4 · 推理模型的API使用

对应资料:Reasoning Models

推理模型接口可能提供推理努力或预算,并区分最终可见回答与额外计算。参数支持、状态形式和费用要按模型与接口核对。

受保护或不透明推理状态不能任意伪造或拼接。最终回答短也可能使用较多内部计算,工具调用之间还可能继续推理。

运行示例 · R03-04

推理预算也要留在请求容量里

输入与条件。总预算1000,输入700,输出及内部推理共需400。

步骤与对象内部动作中间结果 / 新状态
1相加700+400=1100超过示意预算。
2处理减少输入或调整预算/上限不能以最终可见答案仅50字就忽略推理成本。
3核查读取API实际usage与限制定义按所用模型区分计费与上下文口径。

把过程连起来。预算数是例子,不代表某模型窗口;真实规则需查对应接口。

边界与反例。本表是独立教学构造,用来解释该研究主题的一个局部机制,不是原论文实验或产品实测;完整方法与适用条件仍需结合本节正文。

依据与适用范围:[DERIVE]。示例输入和场景由本书明确设定。

原创练习:比较确定公式、跨模块推理与未知私有文件三个问题。前两者可能受计算预算影响,第三个首先需要访问证据。再设计怎样记录实际消耗而非从答案长度猜测。

完成标准是按任务需要选择预算,不把更长思考当万能补救。模型不能通过纯推理直接读取未提供的工作目录。

拓展阅读目录事实依据 [S037] · 练习与工程推导为本书独立编写。

B3.5 · 推理模型的使用边界

对应资料:Reasoning Best Practices

推理模型使用建议强调清楚目标、约束和验证方式,而不是机械要求展示长推导。不同模型对示例和指令组织的反应可能不同。

复杂任务需要足够信息,简单任务可减少固定规划,工具可验证的结论应实际验证。最佳实践是起点,不代替自己的评测。

运行示例 · R03-05

简单查值不必用树状推理替代工具

输入与条件。用户只问config中timeout。

步骤与对象内部动作中间结果 / 新状态
1有只读工具直接读取字段问题具有低成本确定证据。
2多轮猜测分析可能为3或5或7没有提供新事实。
3选策略先取证再回答复杂推理留给有真实歧义的部分。

把过程连起来。推理强度应随任务的信息结构与风险变化。

边界与反例。本表是独立教学构造,用来解释该研究主题的一个局部机制,不是原论文实验或产品实测;完整方法与适用条件仍需结合本节正文。

依据与适用范围:[DERIVE]。示例输入和场景由本书明确设定。

原创练习:比较清晰Prompt与叠加很多“深思熟虑”句子的版本,记录正确性、延迟和可核查性。若只增加措辞没有减少错误,就不应因显得严谨而保留。

完成标准是把预算与质量联系起来。失败来自证据缺失或权限时,调高推理努力可能只是增加费用而不改变可行性。

拓展阅读目录事实依据 [S038] · 练习与工程推导为本书独立编写。

B3.6 · Prefill与Decode

对应资料:CS336 Inference

Prefill处理已知输入,Decode扩展新序列,二者的并行与访存特征不同。不能把所有耗时都归为一个笼统的模型速度。

长输入影响首Token,长输出增加串行生成,多轮工具还叠加网络和环境等待。不同瓶颈对应不同优化。

运行示例 · R03-06

prefill处理三位置,decode处理一个新位置

输入与条件。初始输入A/B/C,首个输出D。

步骤与对象内部动作中间结果 / 新状态
1prefillA/B/C共同前向建立长度3的每层KV。
2选择D由C位置输出分布取得缓存还未因此含D。
3decode下轮送D缓存增长到4并预测E。

把过程连起来。首个输出的选择与该输出进入下一次前向相差一个步骤。

边界与反例。本表是独立教学构造,用来解释该研究主题的一个局部机制,不是原论文实验或产品实测;完整方法与适用条件仍需结合本节正文。

依据与适用范围:[DERIVE]。示例输入和场景由本书明确设定。

原创练习:画长输入短输出、短输入长输出、频繁工具调用三种时间线,标出应测指标。再解释缓存、压缩和工具并行分别可能改变哪段。

本条作为CS336推理主题的应用练习,完成标准是提出可测性能假设。不需要先搭生产推理服务,也不应从一个样例推断所有任务的加速比例。

拓展阅读目录事实依据 [S005] · 练习与工程推导为本书独立编写。

A3.7 · 提示前缀缓存

对应资料:Prompt Caching

Prompt Caching复用符合条件的相同前缀计算,不改变上下文内容本身。阈值、保留时间与计费是产品规则,不能无版本记成普遍常数。

稳定规则在稳定位置有利于复用,动态数据放后部可能更合适;但正确的指令与证据组织优先于缓存。无关长前缀即使命中也会占窗口。

运行示例 · R03-07

相同前缀与不同尾部

输入与条件。请求1=[规则R,工具T,问题A],请求2=[规则R,工具T,问题B]。

步骤与对象内部动作中间结果 / 新状态
1比较前缀R/T一致具备复用的结构条件。
2动态前插若开头加不同随机编号共同前缀被破坏。
3逻辑容量命中缓存仍有R/T输入不变成免费新增上下文。

把过程连起来。计算复用不等于删掉上下文内容;具体命中以服务实测为准。

边界与反例。本表是独立教学构造,用来解释该研究主题的一个局部机制,不是原论文实验或产品实测;完整方法与适用条件仍需结合本节正文。

依据与适用范围:[DERIVE]。示例输入和场景由本书明确设定。

原创练习:比较固定前缀与每轮最前插时间戳,标出共享范围。再计入压缩调用、后续重读与失败返工,判断整体成本。

完成标准是区分缓存、压缩和长期记忆。命中率提高不是充分成功指标,任务质量、总费用与总时长必须一起看。

拓展阅读目录事实依据 [S039] · 练习与工程推导为本书独立编写。

B3.8 · 分页管理KV缓存

对应资料:PagedAttention / vLLM

PagedAttention按块管理KV缓存,减少连续预留空间浪费,并支持相应共享。它主要解决服务端内存和吞吐,不直接提高答案事实性。

分页需要映射与调度,收益依赖长度分布、并发和实现。低并发或工具等待占主导时,端到端收益可能有限。

运行示例 · R03-08

逻辑块与物理块

输入与条件。块容量4,页表[7,2,19]。

步骤与对象内部动作中间结果 / 新状态
1位置5逻辑块5//4=1偏移1。
2查表第1块映射物理2访问(2,1)。
3位置12逻辑块3尚不存在须分配新块,不覆盖物理19。

把过程连起来。分页改变地址映射,不改变Token先后。

边界与反例。本表是独立教学构造,用来解释该研究主题的一个局部机制,不是原论文实验或产品实测;完整方法与适用条件仍需结合本节正文。

依据与适用范围:[DERIVE]。示例输入和场景由本书明确设定。

原创练习:模拟三个不断增长的请求,比较最大长度预留与按需块分配。分叉序列共享前缀后,指出哪些块可共用、哪些必须分离。

完成标准是理解存储组织与模型能力分层。教材模拟不复现GPU性能,不能把空间比例当成真实吞吐倍数。

拓展阅读目录事实依据 [S040] · 练习与工程推导为本书独立编写。

B3.9 · 注意力的IO优化

对应资料:FlashAttention

FlashAttention通过分块与数据搬运优化提高注意力的IO效率。原始工作关注精确注意力,不是简单删掉远距离关系来近似。

数学运算目标相同,内存读写方式也能改变实际时间。性能取决于硬件、序列和内核,不能只看理论运算量。

运行示例 · R03-09

在线softmax重标度

输入与条件。先score=1,value=2,后score=3,value=10。

步骤与对象内部动作中间结果 / 新状态
1第一块m=1,l=1,u=2统计建立。
2第二块旧l/u乘exp(−2),再加1和10与新最大值对齐。
3输出(2exp(−2)+10)/(exp(−2)+1)约9.046377。

把过程连起来。少写中间矩阵依赖正确在线统计,不是删掉低注意力项近似。

边界与反例。本表是独立教学构造,用来解释该研究主题的一个局部机制,不是原论文实验或产品实测;完整方法与适用条件仍需结合本节正文。

依据与适用范围:[DERIVE]。示例输入和场景由本书明确设定。

原创练习:比较完整保存T×T分数矩阵与分块累计结果的中间存储,解释为什么减少访问可能重要。再指出模型其他层和工具时间不受该优化直接影响。

完成标准是把算法复杂度、IO和端到端体验分开。采用FlashAttention也不意味着模型自动理解任意长输入。

拓展阅读目录事实依据 [S041] · 练习与工程推导为本书独立编写。

B3.10 · 推测解码

对应资料:Speculative Decoding

推测解码用较便宜草稿提出候选,目标模型批量验证。在相应算法条件下,可以保持目标采样分布;它不是直接用小模型替换目标模型。

收益取决于候选接受率、草稿成本与验证效率。草稿偏离太大时,频繁拒绝会减少加速;短输出或其他瓶颈也可能影响价值。

运行示例 · R03-10

拒绝后的分布不能随便选

输入与条件。p=[0.6,0.3,0.1],q=[0.2,0.5,0.3]。

步骤与对象内部动作中间结果 / 新状态
1接收质量逐项min(p,q)[0.2,0.3,0.1]。
2剩余质量p−已接收[0.4,0,0]。
3拒绝补偿残差归一化只选第1项最终还原p。

把过程连起来。分布等价依赖残差校正;只做“大模型同意/不同意”不充分。

边界与反例。本表是独立教学构造,用来解释该研究主题的一个局部机制,不是原论文实验或产品实测;完整方法与适用条件仍需结合本节正文。

依据与适用范围:[DERIVE]。示例输入和场景由本书明确设定。

原创练习:假设一次草稿提出四项,目标只接受前两项,描述继续过程。再比较高接受与低接受情景,不给未经测量的提速数字。

完成标准是理解“提出—验证”与简单投票不同。这里验证的是目标分布条件,不等于外部事实核查;目标模型仍可能生成错误答案。

拓展阅读目录事实依据 [S042] · 练习与工程推导为本书独立编写。

C3.11 · 推理服务架构

对应资料:vLLM Documentation

vLLM文档提供推理服务的实际组织,包括缓存、批处理、调度与部署能力。支持项随版本变化,不能把某篇论文的全部实现等同于当前默认配置。

服务需要同时管理模型权重、KV、请求队列与资源限制。高吞吐可能增加个别请求等待,平均性能和尾延迟需分别观察。

运行示例 · R03-11

活跃集合怎样轮间改变

输入与条件。并发槽2,A余3步、B余1步,C等待。

步骤与对象内部动作中间结果 / 新状态
1第1轮A/B各生成1步B完成退出。
2第2轮前C完成必要prefill后补位不必等A整条结束。
3独立状态A/C各有自己的KV和长度不能共享错误上下文。

把过程连起来。连续批处理重新组织请求,而不是重新定义每条序列的模型语义。

边界与反例。本表是独立教学构造,用来解释该研究主题的一个局部机制,不是原论文实验或产品实测;完整方法与适用条件仍需结合本节正文。

依据与适用范围:[DERIVE]。示例输入和场景由本书明确设定。

原创练习:为短问答和长代码任务混合负载设计指标,考虑并发、最大长度、取消和超时。说明为何只测单请求Tokens/s不足以评价服务。

完成标准是从用户任务而非单内核速度理解部署。未实际运行硬件实验时,只陈述机制与假设,不把文档能力写成自己的测试成绩。

拓展阅读目录事实依据 [S043] · 练习与工程推导为本书独立编写。

C3.12 · 端到端延迟优化

对应资料:Latency Optimization

延迟优化要检查请求次数、生成长度、缓存、并行、工具和用户感知。减少无谓往返可能有效,但删除必要验证会损害任务成功。

首句更快与最终完成更快不同。并行只适合独立步骤,有依赖的修改与读取不能为了速度乱序。

运行示例 · R03-12

压缩输出有时比压缩输入更省时

输入与条件。教学时间模型:prefill耗时20ms并已给出首个Token,之后每个Token间隔10ms,总共输出100个Token。

步骤与对象内部动作中间结果 / 新状态
1原时长20+99×101010ms。
2输入减半假定prefill也减半到10只省10ms。
3输出减半在任务允许下总共只需50Token20+49×10=510ms,省500ms,但不能牺牲必要答案。

把过程连起来。优化先看时间组成;数字为简化估算,不代表实际线性关系。

边界与反例。本表是独立教学构造,用来解释该研究主题的一个局部机制,不是原论文实验或产品实测;完整方法与适用条件仍需结合本节正文。

依据与适用范围:[DERIVE]。示例输入和场景由本书明确设定。

原创练习:记录一次任务关键路径,分别估计减少一轮调用、减少日志和并行两个搜索的影响。只改变一个机制后重测,避免把多种变化混为原因。

完成标准是优化成功任务总耗时,而不是孤立Token指标。若模型主要等待测试环境,调采样或换缓存策略可能不是最有价值的改动。

拓展阅读目录事实依据 [S044] · 练习与工程推导为本书独立编写。

记录保存在本机浏览器。

输入关键词即可检索。

↑ ↓ 选择 Enter 打开Esc 关闭 · 仅本地搜索

阅读设置

阅读设置仅保存在本机浏览器,不上传任何数据。