llm-inference-serving · git:20260920.a4843f5 · 2026-09-20 · sha256 4e99f4872715f3ce
llm-inference-serving git:20260920.a4843f5A
Immutable. This exact content is served forever at /api/v1/blob/4e99f4872715f3ce.
--- name: llm-inference-serving description: 推理服务深挖:投机解码、量化与算子、分布式推理与 PD 分离、MoE 服务、前缀缓存、约束解码、容量。 keywords: [推理服务, inference serving, 投机解码, speculative decoding, 量化, fp8, int4, 张量并行, pd 分离, disaggregation, moe 推理, expert parallel, 前缀缓存, prefix caching, 约束解码, guided decoding, 长上下文推理] layer: detail domains: [ai-infra, ai-agent] --- ## 面试官在意什么 这本是 ai-infra 的推理那一段往下挖:把一个模型的吞吐与延迟再抬一档要动哪些机制。面试官要算账(接受率、并行通信量、KV 传输带宽、量化后的精度差)和要故障(PD 分离后 TTFT 反而变差、MoE 专家不均、量化后某类请求崩)。应用岗读它是为了知道自己的 agent 每回合的首字延迟和缓存命中从哪来。 ## 项目 / 实习怎么深挖 简历上出现下面这类经历时从哪里切、追什么。追到候选人能说出机制、数字的来源与一次真实的故障或取舍才算实;只有框架名与结论、说不出自己那一段的,记为危险信号。通用的追问方法见 project-deep-dive。 - 简历出现投机解码 → 追草稿怎么产生、接受率、什么分布下加速消失、和 batch 的冲突 - 简历出现量化 → 追方法与量化对象、精度回归、kernel 来源、实测吞吐 - 简历出现多卡 / 多机推理 → 追并行方式、通信占比、PD 分离有没有做、掉卡表现 - 简历出现 MoE 推理 → 追专家并行与 all-to-all、负载不均、显存放法 - 简历出现前缀缓存 / 多轮 → 追命中率、驱逐策略、什么请求模式命中低 - 简历出现结构化输出 / 约束解码 → 追怎么实现、对吞吐的影响、和采样的冲突 ## 常见失守与危险信号 - 投机解码:只会"小模型猜";说不出接受率决定加速比;不知道 batch 大时收益消失 - 量化与算子优化:量化只知道"变小变快";不做精度回归;写 kernel 不看 profiler - 分布式推理与并行:张量并行说不出通信在哪;不知道 PD 分离解决什么、代价是什么 - 长上下文与显存:只答"加显存";不知道 offload 与 KV 压缩的取舍 - PD 分离与 KV 传输:不知道 KV 怎么在实例间传、带宽要多少;不知道什么规模才值得分 - MoE 服务:只答"选专家";不谈 all-to-all 与负载不均;不知道专家怎么放显存 - 前缀缓存与多轮:只答"缓存前缀";说不出命中条件;不知道系统提示放前面的意义 - 约束解码与采样:不知道结构化输出在推理侧怎么实现;不知道它对吞吐的影响 - 容量规划:不会从 SLO 反推卡数;没有峰谷弹性方案 ## 常考主题清单 只列名字、阶梯与答实的标志,作"问到哪一层算实"的参考;问哪些、问几道由这份 JD 与这份简历定,不是配额。 ### 投机解码 - 阶梯:为什么 decode 阶段有"白算"的空间 → 草稿模型 / n-gram / 自草稿(Medusa、EAGLE 类)各怎么产生候选,验证怎么一次前向完成 → 加速比由接受率与草稿长度决定,什么分布下接受率低;batch 大时为什么收益消失 → 验证的显存与算力成本、和 continuous batching 的冲突、什么业务值得开 - 答实的标志:能写出加速比与接受率的关系;知道输出分布不变的保证来自拒绝采样;有实测的接受率与不同 batch 下的收益曲线 ### 量化与算子优化 - 阶梯:权重量化与激活量化的难点差在哪(离群值)→ GPTQ / AWQ / SmoothQuant / FP8 各解决什么,KV cache 量化的收益 → 量化后精度怎么回归(评测集、任务、长尾),kernel 不匹配时为什么反而变慢 → FlashAttention 省的是什么(分块 + 在线 softmax 减少显存读写)、算子融合的收益边界、什么时候该自己写 kernel - 答实的标志:区分 PTQ 与 QAT;量化前后有评测对比;能说出 FlashAttention 的分块思路;写过或读过一个 kernel 并能讲 profiler 里前后的变化 ### 分布式推理与并行 - 阶梯:单卡放不下怎么切:张量并行、流水并行、专家并行各切什么、通信在哪一步 → 张量并行为什么一般不跨机、流水并行的气泡、通信与计算的重叠 → MoE 的路由、all-to-all 开销、专家负载不均与容量因子;PD 分离(prefill 与 decode 分到不同实例)解决什么、KV 怎么传、代价是什么 → 多机部署的故障:掉卡、慢节点、NCCL 超时怎么表现与定位 - 答实的标志:能说出每种并行的通信量与适用层;知道 PD 分离对 TTFT 与 TPOT 各自的影响;MoE 有负载均衡的具体手段;有一次多机故障的时间线 ### 长上下文与显存 - 阶梯:长上下文的显存与延迟各随长度怎么增长(attention 的计算 vs KV 的存储)→ 分块 attention、序列并行、KV 换出各解决什么 → 128k 上下文的 prefill 要多久、怎么让首 token 不等太久(chunked prefill、缓存前缀)→ KV 压缩与滑动窗口的精度代价,什么业务能接受 - 答实的标志:能算长序列下 KV 与激活的显存;知道 prefill 时长与序列长度的关系;有长上下文下的实测延迟与取舍 ### PD 分离与 KV 传输 - 阶梯:为什么把 prefill 与 decode 放到不同实例:两阶段瓶颈不同、互相干扰 → KV 从 prefill 实例传到 decode 实例怎么做(RDMA、传输库)、带宽要多少、传输时延占多少 → PD 分离后 TTFT 或 TPOT 反而变差怎么排查;两池比例怎么定 → 什么规模、什么请求分布才值得分;和单实例 chunked prefill 的比较 - 答实的标志:能算 KV 传输量与带宽需求;知道两池比例按负载调;有分与不分的实测对比或推演 ### MoE 模型的服务 - 阶梯:MoE 为什么推理便宜但服务难 → 专家并行的路由、all-to-all 通信、容量因子与丢弃 → 专家负载不均怎么表现与处理;注意力与专家层分开并行的动机 → 显存怎么放专家(全放、分片、offload);MoE 与稠密模型在同等算力下的吞吐比较 - 答实的标志:能说出 all-to-all 的开销所在;有负载均衡的具体手段;知道注意力与专家分离并行解决什么 ### 前缀缓存与多轮对话 - 阶梯:前缀缓存的命中条件(逐 token 前缀一致)与失效 → 基数树管理与块级共享的差别;多租户下的隔离 → 系统提示、few-shot、工具定义放前面为什么重要;agent 多回合怎么设计上下文才命中 → 命中率怎么测、驱逐策略、对 TTFT 的实际收益 - 答实的标志:有命中率数字与提升手段;知道什么请求模式命中低;能说出应用侧要配合什么 ### 约束解码与采样策略 - 阶梯:结构化输出(JSON、schema、语法)在推理侧怎么实现(掩码、状态机、编译后的约束)→ 约束解码对吞吐与延迟的影响、和投机解码的冲突 → 温度、top-p、重复惩罚各改变什么,对结构化输出的影响 → 服务端约束与应用端修补的分工 - 答实的标志:知道约束解码的实现原理与开销;能说出采样参数对格式稳定性的影响;有服务端与应用端分工的判断 ### 容量规划与弹性 - 阶梯:从 SLO(TTFT、TPOT、并发)反推需要多少卡 → 请求分布(输入长、输出长、并发)对容量的影响;峰谷怎么弹 → 超载时准入控制、降级(换小模型、截断上下文)与限流放哪层 → 成本模型:每千 token 成本随利用率怎么变 - 答实的标志:能给出一次容量估算的过程;有峰谷弹性方案;知道利用率是成本分母