← 返回题库
第 142 题 · 推理与部署 · 困难

多副本推理如何在 Prefix Cache 命中与负载均衡间取舍?

岗位专项 这代表什么?
✓ 资料核验 来源说明:公开面经题库主题;公司归属未独立核验,技术答案依据原论文或官方文档整理
Cache-aware Routing负载均衡Prefix Cache
评论与补充 ↓
口述训练

先用自己的话答,再看参考说法

60 秒是练习上限,不是必须凑满。原理题讲清因果,设计题讲清约束,项目题只讲真实证据。

别照着背。参考说法只用于对照;直接回答问题,简单题说清楚就收尾。项目题只用自己的经历和数字。

面试时怎么答

这题的核心是路由目标冲突:把相同长前缀送到已有 KV/Prefix Cache 的副本能省 Prefill,但该副本若排队严重,命中反而拖慢请求。说明一个“预计缓存节省减去队列代价”的打分思路,再补热点上限和回退策略。不要只追求命中率,最终要服从 TTFT 与租户公平。

可以这样答:

Cache-aware Routing 会优先把相同长前缀的请求送到已经缓存该前缀的副本,从而跳过一部分 Prefill;但如果这个副本队列很长,等待时间可能超过缓存收益。路由器因此要同时估计可复用 Token 带来的计算节省和各副本的 Token 队列负载,并设置热点上限。缓存命中率只是中间指标,最终目标仍是降低 TTFT 且避免负载倾斜。

核心回答

普通最短队列路由可能把共享长前缀的请求送到没有缓存的副本,重复 Prefill;纯缓存亲和又可能把热点前缀全部压到一个副本。Cache-aware Routing 要比较两类代价:命中能省下的 Prefix 计算,以及目标副本当前排队、Decode 负载、KV 容量和网络成本。

全局调度器可维护“前缀块在哪些副本上”的近似目录:命中收益大于负载差时选择已有最长前缀的副本,否则回到负载均衡。没有共享前缀、输出很长或目录陈旧时,策略应平稳退化为普通路由。

展开说明

Preble 用全局 Radix 信息估计 Cached Tokens 与 Missed Tokens,并结合每个 GPU 的负载作 Explore/Exploit 决策。生产实现还应限制单一亲和键的最大份额,并在热点持续时复制前缀或允许多个副本共同承载。

  • 目录一致性:缓存淘汰频繁,目录只能是带版本/租约的近似信息,不能假设强一致。
  • 负载估计:请求数不够,应包含剩余输出长度、活跃 KV、Scheduled Tokens 和队列等待。
  • 会话路由:多轮会话天然适合亲和,但副本故障时必须允许重算或迁移。
  • 隐私:目录和路由键应按租户命名空间隔离,避免暴露敏感 Prefix 指纹。

版本边界:Preble 针对长且可共享的 Prompt 评估,其收益会随前缀共享、输出长度和集群拓扑变化;论文策略不是所有 vLLM/SGLang 版本的内置默认行为。

工程实践

离线回放真实共享前缀 Trace,比较 Round Robin、最短队列、会话粘性与 Cache-aware 策略。观测逐副本队列、缓存 Token 命中、重算 Token、负载方差、TTFT/TPOT 和路由错误;故障注入目录延迟、缓存提前淘汰和热点副本退出,验证回退不会放大雪崩。

常见追问

  1. 什么时候应放弃缓存亲和选择空闲副本? 当预计排队代价大于重算前缀的代价,或命中块很短、输出很长、目标副本 KV 紧张时,应优先负载。
  2. 全局缓存目录为什么不必强一致? 强一致更新会让每次块分配/淘汰进入关键路径;允许陈旧并在本地二次确认,最坏只是少一次命中,通常更可扩展。
  3. 热点 Prefix 如何避免单副本过载? 可在多个副本预热/复制该前缀、对亲和流量设上限,并按负载把新请求扩散;复制成本也要计入决策。

一句话复习

Cache-aware Routing 比较“复用前缀省下的计算”和“副本排队/容量代价”,并在无收益或信息陈旧时退化为普通负载均衡。

参考资料

无需账号 · 原地交流

评论与补充

评论会直接显示在这道题下面。可以写自己的答法、继续追问或指出错误,不需要 GitHub 账号,也不会跳转到 Issue;内容会公开,请勿填写个人隐私、公司机密或受保密约束的材料。

正在加载评论…