参考
术语表
39 个术语,按本课程中的用法定义。每一条都链接到构建它的那一章。
- 不规则 batchS09
- 成员序列长度各不相同的 batch,采用扁平化而不是补齐。
- 队首阻塞S10
- 在严格先到先服务下,队首一个特别大的请求会拖住它后面的一切。
- 分块 prefillS11
- 把长 prefill 拆到多步执行,并把这些块混进 decode 批次,使任何一步都不足以让流式用户察觉。
- 分离部署S18
- 让 prefill 和 decode 跑在不同机器上,并在它们之间搬运 KV 缓存,使两者的 SLO 不再互相竞争。
- 拒绝采样S14
- 以 min(1, p/q) 的概率接受草稿 token,否则从 norm(max(0, p−q)) 重新采样。它让投机解码可证明地无损。
- 空泡S17
- 流水线填充和排空期间的空闲时间。占比为 (阶段数−1)/(micro-batch 数+阶段数−1)。
- 连续批处理S09
- 在两次前向之间、而不是两个 batch 之间准入和退出请求。也叫迭代级批处理或 in-flight batching。
- 内部碎片S06
- 已预留却从未写入的显存。有了分页,每请求的期望浪费是 block_size/2 个 token(最坏情况是一个未填满的 block),与长度无关。
- 前缀缓存S07
- 复用那些 token 内容(及位置)此前已计算过的 KV block,通过链式哈希进行匹配。
- 抢占S10
- 在池子耗尽时回收某个运行中请求的 KV 显存,之后要么重算、要么换出到主机内存。
- 容量系数S16
- 相对于均分份额,一个 MoE 专家最多可接受多少 token。溢出的 token 会无声地跳过该专家。
- 水位线S10
- 为让运行中的请求还能增长而保持空闲的 KV block。准入到 100% 会死锁。
- 算术强度S03
- 每从显存读取一字节所执行的浮点运算次数。H100 大约需要 300 才能吃满算力,而一次 decode 只给出约 1。本课程的优化,要么在抬高这个数字,要么在绕开它。
- 跳跃解码S15
- 当语法只允许一种后续时,直接输出它,不必再做采样决策。真实引擎仍要在这段强制内容上跑模型来填 KV 缓存,但只需一次批量前向,而不是许多次——受约束生成比无约束更快,靠的就是这一点。
- 投机解码S14
- 廉价的提议器给出 k 个 token;目标模型一次前向验证全部,并接受最长的合法前缀。
- 有效位宽S08
- 把每组的 scale 也算进去之后的每权重比特数。所谓「4-bit」格式实际是 4.25–4.8,具体取决于分组大小,以及是否存零点。
- 在线 softmaxS12
- 用滚动最大值和滚动求和增量地计算 softmax,每当最大值移动时,把已累积的值乘以 exp(m_old − m_new) 重新缩放。
- All-reduceS17
- 一种集合通信:把张量在所有 rank 上求和,并让每个 rank 都拿到结果。张量并行每个子层需要一次,而且它是阻塞的。
- AWQS08
- 激活感知的权重量化。从激活统计中识别出占比很小的显著通道,在量化前把它们放大,使其落在更细的码上。
- Block tableS06
- 每个请求一份的数组,把逻辑 KV block 下标映射到物理 block 下标。它就是一张页表,只不过用在了注意力上。
- cu_seqlensS09
- 描述不规则 batch 的累积序列长度数组:一个扁平的 token 缓冲区加偏移量,没有任何填充。
- DecodeS01
- prefill 之后的阶段:一次前向一个 token,受显存带宽限制,每个请求要跑成千上万步。
- FlashAttentionS12
- 使用在线 softmax 的分块注意力,使 N×N 分数矩阵从不写入 HBM。它给出的结果是精确的,不是近似。
- GQAS03
- 分组查询注意力:一个 KV 头被若干 query 头共享。按比例缩小 KV 缓存,而质量代价几乎为零。
- ITL / TPOTS19
- token 间延迟,或每输出 token 耗时:相邻流式 token 之间的间隔。汇报时用分位数,别用均值。
- K-quantS08
- GGUF 的嵌套 scale 格式:32 权重的子块配量化后的 scale,再组成 256 权重的超块,配一个 fp16 的「scale 的 scale」。
- KV 缓存S05
- 已处理的每个 token 的 key 和 value 的存储。把 O(N³) 的引擎变成 O(N²),并随之成为稀缺资源。
- min-pS04
- 保留概率不低于 m × p_max 的 token。阈值随模型自身的置信度伸缩,所以在高 temperature 下,它比 top-p 退化得更平缓。
- MoES16
- 专家混合:若干个 FFN,路由器为每个 token 激活其中 k 个。算力下降,显存不降。
- PagedAttentionS06
- 把 KV 缓存存成固定大小的 block、通过 block table 寻址,从而实现按需分配和 block 共享。
- PrefillS01
- 对整个 prompt 的第一次前向。受算力限制、在各位置上并行,也是 TTFT 花掉的地方。
- RMSNormS03
- 不减均值、不加 bias 的 LayerNorm:x / rms(x) × g。
- RoPES03
- 旋转位置编码:通过旋转 q 和 k 中成对的维度来注入位置。存在两种互不兼容的布局(NeoX 与交错)。
- SLOS18
- 服务等级目标,通常是一个 TTFT 上限加一个 ITL 上限。几乎每个调度决策都是在两者之间做取舍。
- SmoothQuantS08
- 把激活中的离群值迁移进权重:把激活的第 i 个通道缩小、对应权重放大,乘积保持不变。
- SwiGLUS03
- 现代 decoder 使用的门控 FFN:(silu(x@W1) * (x@W3)) @ W2。每个 block 要做三次 matmul,传统 FFN 只要两次。
- token 预算S10
- max_num_batched_tokens:每步处理 token 数的上限,它限制了单步耗时,也就限制了 token 间延迟。
- top-p / nucleusS04
- 保留累积概率达到 p 的最小 token 集合,跨过阈值的那个 token 也算在内。
- TTFTS19
- 首 token 时间,从请求到达起算,包含排队。把排队时间排除掉,恰好会盖住最需要看到的那种故障。