全书术语表与易混概念对照#

这章解决什么问题#

书一旦变厚,最先失去稳定性的通常不是局部事实,而是对象边界。尤其在 SGLang 这种系统里,很多词会在不同章节反复出现,但它们并不站在同一抽象层。只要口径稍微漂移,读者就会在章节之间反复重建自己的对象模型,最终把“回扣”读成“混乱”。

这一章的作用,就是把全书里最关键、最容易混淆的一批术语统一收口。它不提供新的机制细节,而是提供一套总坐标:当你在后文再次看到 ReqForwardBatchresponse_format 或 TTFT 时,应该立即知道它们属于哪一层、不要和什么混读、需要回到哪几章继续追。

如何使用这一章#

把这一章当成全书总词表,而不是一次性读完就结束的前言。更实用的用法通常是:

  1. 首次读到一个对象时,先看这里确认主命名。
  2. 觉得两个词越来越像时,回到这里看“不要混淆什么”。
  3. 进入后半部代码导读和维护章节后,再回来看它们在源码层和证据层分别落在哪里。

优秀技术书里的术语表,真正提供的不是名词解释,而是认知止损能力。这一章承担的正是这个职责。

第一组:请求状态对象#

术语主层次更像什么不要和什么混读
ReqState入口 / 回包层API server 与 TokenizerManager 侧的请求状态容器不要把它当成 scheduler 主语
Req调度 / 执行层单请求运行时本体,持有 fill_idsoutput_ids、前缀和 KV 相关状态不要把它当成 HTTP 回包状态
rid跨层标识单请求身份锚点不等于 batch 内部位置

更稳的记法是:ReqState 偏“调用方还在等什么”,Req 偏“系统还在推进什么”。

第二组:batch 与执行对象#

术语主层次更像什么不要和什么混读
ScheduleBatchscheduler 侧哪些请求一起推进、当前 batch 怎样成形不等于 tensor 级执行对象
ModelWorkerBatchworker 交界层从调度视图裁出来、只保留 worker 真正需要的子集不要把它单独当作调度主语
ForwardBatchModelRunner执行视图,含 ForwardMode、positions、spec 信息和采样元数据不要把它当成 waiting queue 的延续

更稳的记法是:ScheduleBatch 偏调度,ForwardBatch 偏执行,中间还有一层 worker façade。

第三组:manager、worker 与 runner#

术语主层次更像什么不要和什么混读
TokenizerManager请求入口与回包收敛请求入口、rid_to_state、streaming 等待和部分证据链收口点不只是 tokenizer
DetokenizerManager输出尾部token 到文本的收口层,管理 decode_status、stop trim 和 grouped decode不只是字符串后处理
TpModelWorkerscheduler 与执行壳之间worker façade,承接 batch 和各类控制动作不等于模型本体
ModelRunner执行中枢模型、KV cache、attention backend、forward() / sample() 汇合点不只是 model.forward() 的薄封装

更稳的记法是:manager 讲编排与回包,worker 讲执行外壳,runner 讲执行内核汇合点。

第四组:cache 与前缀复用#

术语主层次更像什么不要和什么混读
prefix_indices请求视图当前请求“已经能复用的前缀视图”不一定等于树缓存正式保护的长度
cache_protected_len所有权边界已被 prefix cache 正式接管的那一段不等于 len(prefix_indices)
host_hit_length分层命中说明有多少前缀来自 host / storage 命中并回灌不等于纯 device hit
ReqToTokenPool请求到账本逻辑请求位置到 token 槽位的映射层不等于真正的物理 KV 存储
TokenToKVPoolAllocator槽位管理物理 KV index 分配器不要和 prefix tree 混成一层

更稳的记法是:前缀命中首先是请求视图,其次才是所有权与物理占用。

第五组:时间线与延迟字段#

术语主层次覆盖什么不要和什么混读
queue_time调度等待从进入 scheduler 等待到真正进 forward 前的切片不等于总延迟
TTFT用户首感知first_token_time - created_time不等于纯 prefill latency
response_sent_to_client_time对外发送边界系统最后一次把结果送出给调用方的时刻不等于内部 finished 边界
finished_time / request_finished_ts内部完成边界系统认为请求真正结束的时刻不等于客户端已看到最后一个 chunk
e2e_latency总体耗时端到端时长不等于模型执行时间

更稳的记法是:TTFT 讲“第一次看到”,response_sent_to_client_time 讲“最后一次送出”,finished_time 讲“系统内部正式收尾”。

第六组:结构化生成相关对象#

术语主层次更像什么不要和什么混读
response_format协议约束层最终输出形状约束不等于 tool 选择策略
tool_choice工具调用策略层是否必须走工具回路、工具集如何被裁剪不等于 grammar backend
grammar backend约束执行层约束对象怎样存活、推进、回滚不等于 parser
tool parser解释层把模型输出解释成可消费的 tool call 结构不等于约束对象
SamplingParams收口层协议字段、约束和采样语义最终汇合的参数对象不要只把它看成 sampling 配置

更稳的记法是:一个决定约束空间,一个决定工具策略,一个负责解释输出,一个负责把它们统一落成执行参数。

第七组:证据链工具#

术语主层次更像什么不要和什么混读
RequestStage / ReqTimeStats时间语义层请求阶段切片与统一时间线不只是 trace 标签集合
RequestLogger请求完成日志层把 finished request 结构化落盘不等于 crash replay
request dump / crash dump复现场景层线上样本或崩溃前窗口材料不等于 metrics
schedule simulator离线实验层用已记录请求做调度策略实验不等于完整 runtime replay

更稳的记法是:观测工具先分“时间线、完成日志、复现场景、离线实验”,再决定先抓哪一类。

一组最容易混淆的对照#

下面这些词最容易成对混读,读到后面时尤其值得反查:

  • ReqState vs Req
  • ScheduleBatch vs ForwardBatch
  • TokenizerManager vs DetokenizerManager
  • response_sent_to_client_time vs finished_time
  • response_format vs tool_choice
  • grammar backend vs tool parser
  • request dump / replay vs schedule simulator

如果你发现自己在某一章里又开始把这几对词混起来,通常不是那一章本身有问题,而是需要先回到这里重新校准对象边界。

这一章和后文怎样配合#

这一章最常回扣的,不是概览,而是后面的三类正文:

  • 4. 调度与内存
    用来重新理解 Req、prefix reuse、KV 所有权和 batch 对象。
  • 5. 执行模型
    用来重新理解 ForwardBatchSamplingParams、输出边界和 finish 语义。
  • 8. 扩展与调试
    用来重新理解 RequestStage、TTFT、request logger 和离线复盘材料。

也就是说,这一章真正的角色不是“概览的最后一页”,而是全书后半程反复要回来的总词表。

小结#

如果把整本书看成一条不断回扣的系统主线,这一章的职责就是防止回扣变成漂移。它不负责提供新机制,而负责让同一个对象在不同章节出现时,仍然站在同一条稳定坐标轴上。

优秀技术书很少靠“每章发明新术语”来显得高级。更成熟的写法,恰恰是把少量核心对象反复讲透,并始终保持同一套命名和边界。这一章服务的就是这个目标。