术语表与对象对照#
这一节解决“同一个词在不同层里是什么意思”这个问题。SGLang 的很多对象会在协议层、manager 层、scheduler 层和执行层反复出现,如果术语不先对齐,后面越深入越容易混淆。
为什么术语要先收口#
系统书一旦变厚,最先失稳的往往不是局部事实,而是对象边界。尤其对 SGLang 这种系统来说,很多词会在不同章节反复出现,但并不站在同一抽象层。只要口径稍微漂移,读者就会在章节之间反复重建对象模型,最后把“回扣”读成“混乱”。
所以这一节不是附录词典,而是整本书后面反复要回来的总坐标。
第一组:请求对象#
最先需要对齐的是请求对象这组词:
| 术语 | 主层次 | 更像什么 | 不要和什么混读 |
|---|---|---|---|
GenerateReqInput | 协议 / 运行时交界 | 统一的 runtime 请求输入 | 不要把它看成 HTTP request body |
ReqState | API server 侧 | 请求状态与返回收口容器 | 不要把它看成 scheduler 的主语 |
Req | 调度 / 执行交界 | 单请求运行时本体 | 不要把它当成回包对象 |
更稳的记法是:
GenerateReqInput负责统一输入形态ReqState负责 API server 侧状态Req负责 runtime 侧工作单元
第二组:batch 与执行对象#
第二组最容易混的是 batch 和执行对象:
| 术语 | 主层次 | 更像什么 | 不要和什么混读 |
|---|---|---|---|
ScheduleBatch | 调度层 | 这一轮被组织出来的运行批次 | 不等于执行层输入 |
ForwardBatch | 执行前边界 | 前向真正消费的对象 | 不等于 waiting queue 的延续 |
ModelRunner | 执行壳 | 在当前并行拓扑下运行模型前向 | 不等于调度器的附属函数 |
这组对象是第三部分反复回扣的主轴。只要这组边界先稳住,后面读第五章和第六章就不会把调度与执行混成一层。
第三组:manager 边界#
第四章反复要回来的,是下面这组三层边界:
| 术语 | 主层次 | 更像什么 |
|---|---|---|
TokenizerManager | API server 一侧 | 请求接入、状态托管、结果收口 |
Scheduler | runtime 中段 | queue、batch、cache、执行门控 |
DetokenizerManager | 返回链 | token ids 到文本增量的转换层 |
这三个名字如果一开始没对齐,后面无论读主链还是读调试章节,都会一直串层。
第四组:cache 与位置映射#
第五章之后,另一组很容易混的词是:
| 术语 | 主层次 | 更像什么 |
|---|---|---|
ReqToTokenPool | 请求到账本 | request 占了哪些 token 位置 |
TokenToKVPoolAllocator | 物理分配 | KV 位置怎样分配 |
RadixCache | 前缀复用 / 驱逐策略 | 哪些状态值得继续保留 |
更稳的记法是:
ReqToTokenPool先解决“谁占了哪些位置”- allocator 再解决“这些位置在哪”
RadixCache决定“哪些位置应该继续保留”
第五组:结构化语义对象#
到第七章时,最容易混的是:
| 术语 | 主层次 | 更像什么 |
|---|---|---|
response_format | 协议层 | 对输出结构的声明 |
| grammar constraints | 执行期约束 | 对 token 可选空间的限制 |
FunctionCallParser | 解释层 | 把输出解释成 tool call |
| Responses API | 工作流 surface | 可以被持续操作的 response 实体 |
这组对象如果一开始不拆开,后面读结构化生成时就很容易把“限制输出空间”和“解释输出结果”写成一件事。
第六组:证据链对象#
最后一组和第四部分最相关:
| 术语 | 主层次 | 更像什么 |
|---|---|---|
RequestStage / ReqTimeStats | 时间语义层 | 请求时间线切片 |
RequestLogger | 请求级证据层 | 首尾事实记录 |
| request dump / crash dump | 事故材料层 | 现场窗口样本 |
| test / benchmark / profiling | 维护验证层 | 证明系统仍然成立的路径 |
这些对象之所以要先对齐,是因为第四部分不会再从零解释它们,而是假定你已经知道它们属于哪条证据链。
最容易混淆的几组对照#
下面这些词最容易成对混读,后面尤其值得反查:
ReqStatevsReqScheduleBatchvsForwardBatchTokenizerManagervsDetokenizerManagerresponse_formatvstool_choice- grammar constraints vs parser
response_sent_to_client_timevsfinished_time
如果你在某一章里又开始把这几对词混起来,通常不是那一章本身有问题,而是需要先回到这里重新校准对象边界。
怎样使用这一节#
更实用的用法通常是:
- 第一次遇到一个对象时,先回这里确认它站在哪一层;
- 觉得两个词越来越像时,回这里看“不要和什么混读”;
- 进入第三、第四部分以后,再回来看它们在源码层和证据层分别落在哪。
这一节真正提供的不是术语解释,而是认知止损能力。
小结#
如果把整本书看成一条不断回扣的系统主线,这一节的职责就是防止回扣变成漂移。它不提供新的实现细节,但负责让同一个对象在不同章节再次出现时,仍然站在同一条稳定坐标轴上。
叶王 © 2013-2026 版权所有。如果本文档对你有所帮助,可以请作者喝饮料。