LLM Infer Infra 学习资料库

P7–P8 专家面试总纲:重点 KV Cache 存储

总目录 · 岗位分流 · 设计图册 · KV 存储教材

这份总纲按专家职责组织,不对应某家公司的官方职级标准。这里用 P7 型要求表示能独立负责关键子系统的设计、交付、性能与可靠性闭环;用 P8 型要求表示能定义跨子系统边界、容量与成本目标、演进路线,并协调多个团队形成可持续的平台能力。

重点不是背出更多项目名。面试需要证明:能建立问题模型,识别约束和风险,做取舍,落地验证,解释失败,并推动系统持续演进。建议将准备精力主要放在 KV 管理、共享存储、传输与故障闭环,保留足够的推理执行和 GPU 性能基础。

1. 专家回答的六层结构

  1. 需求:模型、负载、SLO、规模、租户和故障目标是什么?
  2. 约束:算力、显存、host、网络、元数据、兼容性和团队边界分别是什么?
  3. 协议:哪些不变量必须成立,状态由谁持有、发布、消费和回收?
  4. 取舍:比较至少两个可行方案,量化收益、成本和失效条件。
  5. 验证:给出正确性、性能、故障、升级与观测证据。
  6. 演进:解释灰度、回滚、后续瓶颈和跨团队接口怎样推进。

例如“远端缓存更快”只是结论。专家回答要说明什么负载、节省多少计算、引入多少排队和字节流量、失效率如何影响回源,以及在什么条件下应关闭它。

2. 必修能力矩阵

表中的 P0 表示本资料重点方向的必修能力;P1 表示需要分析清楚并按岗位深入。它不是题目出现频率统计。

能力域 P7 型要求 P8 型进一步要求 最低证据
P0 推理与资源模型 算 KV/权重/在途量,解释 Prefill/Decode 和指标 把模型组合与流量变化映射到资源池规划 容量表、阶段成本模型
P0 运行时与接入 追通调度、页管理、Connector、设备完成 定义跨引擎可复用的接入契约与升级边界 正常/取消/抢占时序
P0 KV 身份与布局 解释前缀、模型、rank/group、页/chunk 与格式 定义版本化格式、共享域、迁移和兼容性矩阵 错误共享反例、格式设计
P0 存储协议 设计发布、读保护、回收、幂等与部分失败 明确跨组件一致性、代际隔离与恢复不变量 状态机、故障矩阵
P0 异步资源管理 处理 staging、引用、事件、取消与晚到完成 设计统一所有权和诊断模型,减少集成缺陷 资源所有者表、并发用例
P0 LMCache/Mooncake 用源码说明职责、调用与返回语义 识别接口契约与实现保证的差距,提出可验证改进 联合链路与代码定位
P0 容量与数据放置 计算副本、对象数、元数据、内存和热点 设计跨故障域容量、修复和弹性规划 正常/故障/扩容三套预算
P0 传输与拓扑 分析 RDMA、注册、NUMA、PCIe、批量与完成 协调传输、布局和调度,定义系统带宽目标 流量矩阵、分层测量
P0 缓存策略 分析准入、淘汰、预取、路由和重算选择 联合优化 goodput、成本、公平性和资源池利用 对照与退化条件
P0 HA 与故障恢复 处理节点退出、超时、主切换和回源压力 定义服务恢复目标、隔离和跨团队故障责任 故障演练与复盘
P0 可观测性 分离候选命中、加载、少算 token 与排队 定义跨层 trace、指标口径和容量预测体系 一次端到端归因
P0 多租户与演进 配额、共享边界、版本隔离、限流与回滚 平台化配置、兼容协议、治理和迁移路线 灰度/回滚方案
P1 GPU 与模型优化 解释 kernel IO、Graph、量化、投机、并行 判断优化应落在哪层以及机会成本 代表性 shape 与质量约束
P0 工程与技术影响 交付可维护代码、接口、测试和运维方案 明确目标、拆解风险、推进接口共识和长期迭代 设计评审、落地和复盘材料

如果面试通信/GPU 专家岗位,kernel 和并行需要提升为主修;本总纲默认 KV Cache 存储是主攻方向。

3. KV 存储必须能展开的十组问题

A. 身份、命名空间与格式

解释为什么相同文本不等于可共享状态,哪些信息进 key,哪些由 manifest/部署约束保证。能处理模型 revision、LoRA、位置、dtype、TP、混合模型和租户边界。

专家追问:格式升级时旧对象如何识别?能否双读新写?如何回滚?namespace 隔离和授权分别由谁负责?

阅读:KV 语义、数据模型与预算。

B. 发布、不可变对象与多对象完整性

说明分配、写入、发布、可读之间的区别;处理重复写者、已有 key、部分成功和写者退出。区分对象级幂等、批量效率与多对象事务。

专家追问:前缀的多个 rank/group 只成功一部分怎么办?应提供事务、manifest commit,还是在消费者折叠有效范围?各自成本和故障语义是什么?

C. 资源生命周期与并发

画出 GPU 页、L1 staging、resident、远端副本和在途任务的所有者。区分本地锁计数、租约、pin、TTL、设备事件。解释超时不能直接触发内存复用。

专家追问:旧请求 ID、重启后的旧回调和地址复用如何隔离?如何证明不会重复释放、悬空访问或永久泄漏?

D. 缓存策略与调度协同

同时考虑复用概率、重算成本、对象大小、剩余寿命、写入成本和有效前缀。能解释 LRU 的优点与局限,并给出无需复杂模型也可上线的基线。

专家追问:预取如何限制在途内存?热点路由如何平衡缓存命中和计算排队?策略失效时如何降级与观测?

E. 副本、放置与故障域

区分 segment、host、rack 和可用区;定义复制目标和实际结果。说明副本对容量、写流量、热点读取与修复流量的影响。

专家追问:一个故障域退出后剩余容量够不够?修复是否抢占在线请求?扩容与重新放置期间如何限制读写放大?

F. 控制面扩展

计算对象数、元数据大小、查询 QPS 和批量开销。区分单进程锁分片与分布式分片,不能把哈希表有很多 shard 当作控制面已横向扩展。

专家追问:什么时候需要分布式元数据?客户端位置缓存怎样失效?主切换之后谁隔离旧写者、旧地址和未完成对象?

G. 传输、布局与完成

画真实的 GPU/host/NIC 路径,说明注册、批量、切片、GDR、NUMA 和多 rail 的收益边界。区分理论线速、微基准、对象读写和端到端 TTFT。

专家追问:RDMA 带宽未满但请求仍慢,查什么?怎样证明 H2D 或 CPU 完成处理成了瓶颈?负载变化后最优 chunk 是否改变?

H. 故障、隔离和回源

覆盖 miss、部分加载、超时未知完成、校验失败、节点退出、目录故障与容量打满。针对每一种情况明确允许消费什么、怎样释放、何时重算,以及谁承担背压。

专家追问:缓存故障导致重算激增,能不能维持服务?哪些请求优先、哪些被拒绝?恢复缓存会不会造成第二波预热风暴?

I. 成本、SLO 与实验

用固定模型、精度、负载、冷热状态和到达方式做比较。分别测量少算的 token、加载字节、队列、goodput 和成本。

专家追问:命中率提高但成本增加,是否上线?平均值更好但长请求或小租户 P99 更差怎么办?怎样排除本地 APC、预热和负载变化造成的假收益?

J. 接口与平台演进

说明哪些接口应稳定,哪些实现细节不应该泄漏给引擎。准备一个能分阶段实施的迁移方案,包括兼容性、灰度、回滚、指标和责任分工。

专家追问:一个新后端支持 put/get,但没有等价的锁与取消语义,接入层怎样适配?是否应降低能力承诺、改变上层协议,还是拒绝接入?

以上各组都能在 LMCache + Mooncake 联合链路中找到具体讨论对象;不得把设计建议说成框架当前已实现的能力。

4. 一道专家系统设计题

题目:为多租户推理服务设计共享 KV 缓存。示例模型每 8K 前缀约 1 GiB,保留 32,768 个不重叠前缀,两份副本;正常到达 200 请求/s,75% 请求需要远端恢复整份前缀。给定主机 DRAM、400 Gbit/s 网络和延迟目标,如何规划并验证?

这些是教学输入,不是实测。具体计算见存储预算。

讨论轮次 应主动完成 面试官可追加的约束
需求澄清 模型/长度分布、共享率、TTFT/ITL、租户和故障目标 流量翻倍,模型版本同时存在
容量建模 32 TiB 逻辑、64 TiB 副本 payload;再算其他资源 128×512 GiB 主机只能用 80%
对象建模 chunk/rank/group、对象数、key、布局、发布协议 改为更小 chunk,控制 QPS 增加
带宽建模 读取约 150 GiB/s,再算写入与修复的流量矩阵 热点落到少数主机,单机架故障
正确性 完整性、读保护、代际、超时、设备完成 第三个 rank 迟到,客户端已取消
策略 准入、预取、淘汰、路由、重算边界 热点切换,写入污染,租户争抢
可靠性 副本、主切换、回源限额、恢复顺序 缓存全冷,GPU 无额外重算容量
落地 兼容矩阵、实验、灰度、回滚、运维所有者 跨引擎接入,后端能力不对等

P7 型回答应能把一条方案讲到接口、状态、预算和验证闭环。P8 型回答还应比较资源组织和协议边界的替代方案,识别组织与演进成本,提出分阶段目标及退出条件。

不能只画“引擎→缓存→存储”三个框。至少还要画职责图、部署故障域图、正常与失败时序、资源状态图,并解释哪些是方案假设、哪些已有证据。

5. 编码与工程深度不能省略

练习 应证明的不变量 进一步追问
带容量限制的对象缓存 活跃读者不被普通淘汰,重复完成不重复释放 锁粒度、热点竞争、内存统计
同 key 在途加载合并 多个等待者共享任务,失败和取消都能正确唤醒 最后一个等待者退出时怎么办
异步 buffer 所有权 任务完成/取消确认之前不释放,旧回调无权操作新代际 RAII、引用、线程安全和关闭顺序
分组命中折叠 不能跨过必需状态缺口;窗口语义单独处理 部分 rank/group、结果消费一次
有界重试与背压 失败不会形成无界任务、内存与回源放大 幂等、重试预算和公平性

实现语言随岗位选择。C++ 重点理解 RAII、move、原子与锁、内存模型和线程生命周期;Python/native 边界重点理解 buffer 所有权、跨进程地址、GIL 的适用范围和设备异步性。用清晰协议和可测不变量解释代码,不用“无锁一定快”代替分析。

6. 准备四份可被追问的材料

  1. 设计文档:需求、约束、两个备选方案、预算、协议、风险、验证和演进。
  2. 源码链路记录:一条保存、一条加载、一条取消,列出函数、状态、所有者和完成条件。
  3. 实验报告:冷基线、单变量对照、正确性、退化条件、原始数据和测量口径。
  4. 故障或设计复盘:症状、时间线、根因、修复、长期预防和仍未解决的问题。

有真实项目时说明自己负责的决策、协作边界和结果;没有真实集群证据时,可以提交推导与实验计划,但不能描述成已经生产落地。技术影响力应来自清晰目标、评审共识、交付与持续改进,而不是夸大参与范围。

7. 专家自评方法

对每个 P0 能力按下面的证据等级自评:

等级 判断标准
0 只认识术语,无法独立解释
1 能讲原理,但不能推导状态、预算或失败
2 能独立设计、算账、定位源码并分析失败
3 有可复现实现/实验或真实交付证据,能说明收益与局限

P7 型准备应让所有关键 P0 达到 2,并至少在一个完整子系统达到 3;P8 型还需跨层目标、协议与演进的闭环证据。这是学习自评,不是职级判定公式。 正确性、生命周期和故障回收的严重缺口不能被其他主题的高分抵消。

可进行一次 90 分钟模拟:10 分钟问题建模,25 分钟系统设计,20 分钟生命周期与故障追问,15 分钟源码或编码,15 分钟性能与成本,5 分钟演进复盘。每次把“说不清的假设”和“缺证据的结论”单独记录。

8. 怎样使用学习计划

28 天计划是查漏和整理作品的节奏,不能把从零学习到专家压缩成固定天数。已有相关经验者可以按它整合证据;缺少子系统实践者,应在协议正确性、性能实验和故障恢复三个阶段补足交付后再进入下一阶段。

主线:设计图册 → KV 存储详解 → 联合实现 → 系统设计与编码 → 实验与复盘。常规题库用于补薄弱点;公共问答与算例是底座,本篇是专家层的准备要求。

输入主题、术语或问题