本篇 10 题|覆盖初级到高级|KV Cache 与批处理。先用自己的话回答,再核对参考要点,最后练习工程追问。

本篇目录
- DEP-021 KV Cache 为什么能加速解码?
- DEP-022 KV Cache 容量如何粗略估算?
- DEP-023 静态批处理有什么局限?
- DEP-024 连续批处理的核心是什么?
- DEP-025 PagedAttention 解决什么问题?
- DEP-026 前缀缓存适合哪些场景?
- DEP-027 分块预填充有什么价值?
- DEP-028 KV Cache 量化有什么取舍?
- DEP-029 缓存不足时可以怎样处理?
- DEP-030 批处理优化应该遵守什么约束?
DEP-021 KV Cache 为什么能加速解码?
难度:中级
参考答案:自回归生成复用历史 token 的键和值,避免每一步重复计算其投影。缓存仍占内存,注意力读取历史也有成本,长上下文并非免费。
工程追问:为什么一般不缓存所有历史 Query?
DEP-022 KV Cache 容量如何粗略估算?
难度:中级
参考答案:可按层数、KV 头数、头维度、序列长度、精度与并发估算键和值存储。不同架构和缓存实现有差异,需要考虑分块与运行时开销。
工程追问:GQA 为什么能减少缓存?
DEP-023 静态批处理有什么局限?
难度:中级
参考答案:请求通常一起开始或等待整个批次结束,长度差异导致空闲和等待。它实现简单,但对持续到达且输出长度不同的在线请求利用率可能较低。
工程追问:离线任务什么时候仍适合静态批处理?
DEP-024 连续批处理的核心是什么?
难度:中级
参考答案:在生成过程中动态加入新请求并移除完成请求,提高设备利用率。调度仍需兼顾公平、上下文预算和延迟,吞吐最大不等于体验最好。
工程追问:长请求会不会饿死短请求?
DEP-025 PagedAttention 解决什么问题?
难度:中级
参考答案:以分块方式管理 KV Cache,减少传统连续分配带来的浪费并支持更灵活共享。收益依负载与实现而定,不意味着注意力计算量消失。
工程追问:碎片减少如何转化为并发提升?
DEP-026 前缀缓存适合哪些场景?
难度:中级
参考答案:大量请求共享稳定系统提示或文档前缀时,可复用相关预填充结果。需满足模型与输入一致性,并管理租户隔离、有效期和内存占用。
工程追问:只有语义相似前缀可以直接复用吗?
DEP-027 分块预填充有什么价值?
难度:中级
参考答案:将长输入预填充分段调度,减少一次长预填充对正在解码请求的阻塞。块大小需要权衡调度开销、吞吐和首字延迟。
工程追问:为什么长输入会影响别人的输出节奏?
DEP-028 KV Cache 量化有什么取舍?
难度:中级
参考答案:降低缓存精度可减少显存并扩大并发,但可能影响数值精度和任务质量。是否加速取决于内核与硬件,需单独评估长上下文任务。
工程追问:权重量化与缓存量化有何不同?
DEP-029 缓存不足时可以怎样处理?
难度:中级
参考答案:限制准入、排队、缩小上下文或采用运行时支持的换出与重算机制。必须明确延迟与失败策略,避免无上限接收请求后集中 OOM。
工程追问:重算与换出如何选择?
DEP-030 批处理优化应该遵守什么约束?
难度:中级
参考答案:在显存和 SLO 范围内提高吞吐,同时控制不同租户与长度请求的公平性。记录每类请求的等待和生成速度,避免总体收益掩盖局部退化。
工程追问:如何设置最大等待时间?
复盘练习
任选一题,用“场景与约束 → 方案 → 验证方法 → 失败边界”组织一段回答。初级先讲清概念,中级补实现与测试,高级补成本、权限和故障取舍。难度标签是学习建议,同一题可继续深入。
延伸阅读
以下为本模块相关原始论文与官方文档,用于继续学习;本文为原创面试要点整理,具体框架行为以所用版本为准。