📋 摘要

1. 什么是 KV cache?为什么它能加速推理?

📋 回答重点
  • 缓存已算过的历史 K/V,新 token 只算自己的 Q/K/V,避免每步重算全部历史
  • 计算量从 O(n²) 累加降为增量 O(n)
  • 显存 2×batch×层数×KV头数×头维度×seq×字节数,是长序列显存大头

扩展知识


2. 如何估算大模型的显存占用?

📋 回答重点
  • 显存 ≈ 权重 + KV cache + 激活值
  • 权重 = 参数量 × 字节数(FP16=2B、INT8=1B、INT4=0.5B)
  • KV cache 随 batch × 序列长度 线性放大,长序列可远超权重
  • 7B FP16 权重 ≈ 14GB

扩展知识


3. 主流推理框架有哪些?PagedAttention 是什么?

📋 回答重点
  • 框架:vLLM(高吞吐、PagedAttention)、TensorRT-LLM(NVIDIA 极致)、TGI、llama.cpp/Ollama(CPU)
  • PagedAttention:仿 OS 虚拟内存分页,KV cache 切成 block 按需分配,消除碎片、按需分配,batch 更大 → 吞吐高

扩展知识


4. 什么是 continuous batching?如何提升吞吐?

📋 回答重点
  • 静态 batching 等最慢请求,GPU 空转
  • continuous batching 以迭代为单位动态调度:完成即退、新请求立刻补位,batch 持续满负荷
  • 吞吐提升来自 GPU 利用率,常配 PagedAttention

扩展知识


5. 模型量化是什么?INT8/INT4 有哪些方法?

📋 回答重点
  • 用低比特(INT8/INT4)表示权重,省显存/带宽、加速,代价是精度损失
  • PTQ(训练后,GPTQ/AWQ/GGUF)vs QAT(量化感知训练)
  • INT8 基本无损;INT4 略降但省 4 倍;关键层可混合精度

扩展知识


6. 什么是知识蒸馏?部署中有什么用?

📋 回答重点
  • 大模型(教师)指导小模型(学生),把小模型逼近大模型能力
  • 部署用途:模型压缩,降显存与延迟
  • 三种:软标签/温度蒸馏、中间特征蒸馏、数据蒸馏(教师生成训练数据)

扩展知识


7. 什么是投机采样(Speculative Decoding)?

📋 回答重点
  • 小模型(draft)快速起草 k 个 token,大模型(target)一次并行验证
  • 一次前向验证多个 token,2~3 倍加速且不损失精度
  • 保证输出分布与大模型一致

扩展知识


8. FlashAttention 和 FlashDecoding 是什么?

📋 回答重点
  • FlashAttention:tiling + 在线 softmax,中间结果留 SRAM、减少 HBM 读写,显存 O(n²)→O(n),数学等价
  • FlashDecoding:解决解码阶段 batch 小/query 少的并行不足,在 KV 序列维度再切分

扩展知识


9. 长上下文推理有哪些优化手段?

📋 回答重点
  • 压 KV:GQA/MQA、MLA(低秩压缩)
  • 省显存:KV cache 量化、FlashAttention
  • 扩并行:ring attention 序列并行
  • 换架构:稀疏/滑动窗口注意力、Mamba(SSM 线性注意力)

扩展知识


10. 吞吐和延迟如何权衡?如何提升并发?

📋 回答重点
  • batch 大 → 吞吐高但延迟高,二者此消彼长(离线重吞吐、在线重延迟)
  • 提吞吐:continuous batching、量化、投机采样、FlashAttention、多卡 DP/TP
  • 降延迟:降 batch、量化、蒸馏小模型、减少输出长度

扩展知识


11. 什么是模型并行?TP、PP、DP 有什么区别?

📋 回答重点
  • DP 切数据(batch,每卡一份模型)
  • TP 切张量(层内切权重,通信频繁,单机内)
  • PP 切层(按层分卡,流水线,通信少但有空泡)
  • 组合 = 3D 并行;推理主要用 TP/PP

扩展知识


12. 显存不足时有哪些应对手段?

📋 回答重点
  • 阶梯式:量化 → 降 batch/seq → GQA/MLA 压 KV → KV/权重 offload → 多卡 TP/PP → 换小模型/蒸馏
  • 差一点:量化 + 降 batch;差很多:多卡或换小模型
  • 需精度:优先 INT8、混合精度、KV 量化

扩展知识


13. KV cache 显存公式如何推导?

📋 回答重点
  • 每 token 每层存 K、V 两份:2 × KV头数 × 头维度 个元素
  • 公式 2×batch×层数×KV头数×头维度×seq×字节数
  • LLaMA-7B(32 层、32 头、头维 128、FP16、seq 2048)≈ 1GB;batch=8、seq=4096 ≈ 17.2GB
  • 长序列下 KV cache 反超权重,成为显存大头

扩展知识


14. KV cache 量化是什么?

📋 回答重点
  • 把 K/V 用低比特(FP8/INT8/INT4)存储,省 2~4 倍显存
  • 收益:长序列/大批量下 KV 是显存大头,量化后可提 batch/seq
  • 风险:K/V 是激活值,分布敏感、误差沿序列累积
  • 缓解:per-channel/分组量化、混合精度、FP8

扩展知识


15. 什么是 prefix caching?

📋 回答重点
  • 缓存共享前缀(system prompt、few-shot、多轮历史、RAG 公共上下文)的 KV,命中后免重算 prefill
  • 收益:省 prefill → 降 TTFT、提吞吐
  • 实现:vLLM automatic prefix caching(block 哈希)、SGLang RadixAttention(radix tree)

扩展知识


16. 什么是 MLA?

📋 回答重点
  • DeepSeek 的低秩注意力:把 K/V 投影到低维潜变量 c,只缓存 c,按需上投影还原
  • KV cache 大幅下降(DeepSeek-V2 相比 MHA 约降 10 倍以上),几乎不损性能
  • 对比 MQA/GQA(共享头)是「低秩压缩」,更彻底

扩展知识


17. 对称量化和非对称量化有什么区别?

📋 回答重点
  • 对称:零点=0,q=round(x/s),实现简单,常用于权重
  • 非对称:有零点 z,q=round(x/s)+z,把 [min,max] 完整映射到整数区间
  • 非对称更好拟合单边/偏斜分布(ReLU 后激活),但多一个零点参数

扩展知识


18. weight-only 和 W8A8/W4A16 有什么区别?

📋 回答重点
  • WxAy 命名:权重 x bit、激活 y bit
  • weight-only(W4A16/W8A16):只压权重,省显存、实现简单、激活保 FP16
  • W8A8:权重激活都 INT8,省带宽+算力,需 INT8 算子(SmoothQuant 代表)

扩展知识

  • decode 是内存带宽受限,weight-only 收益大;W8A8 才能用 INT8 Tensor Core
  • 详细讲解:大模型推理与部署

19. GPTQ 的原理是什么?

📋 回答重点
  • PTQ,逐层最小二乘重建:min ||WX - ŴX||²
  • 用 Hessian 逆把已量化列的误差补偿到剩余权重(OBS/OBC 思想)
  • GPU 友好、INT4/INT8、无需重训,AutoGPTQ/GGUF 底层算法

扩展知识


20. AWQ 的原理是什么?

📋 回答重点
  • 依据激活幅度找重要通道,重要通道权重乘缩放因子 s 后量化,等效保护
  • 无需反向传播、只统计激活,效率高
  • INT4(W4A16)下性能接近/超过 GPTQ,不损泛化

扩展知识


21. SmoothQuant 的原理是什么?

📋 回答重点
  • 解决:激活 outlier 让 W8A8 量化崩
  • 做法:激活除以 s、权重乘以 s,矩阵乘不变,把量化难度从激活迁移到权重
  • 实现 W8A8 几乎无损,利用 INT8 Tensor Core

扩展知识


22. 什么是 FP8 推理?

📋 回答重点
  • FP8 是 8 位浮点:E4M3(精度高)、E5M2(动态范围大)
  • 相比 INT8:动态范围大、无需逐张量校准、误差小
  • H100+ FP8 Tensor Core 原生支持,理论 2 倍 FP16 吞吐

扩展知识


23. KV cache 量化和权重量化有什么区别?

📋 回答重点
  • 权重:静态参数,离线一次性量化,误差固定
  • KV:运行时激活,动态分布、有 outlier、误差沿序列累积,只能在线缩放
  • 权重省「基础显存」、KV 省「长上下文显存」,两者可叠加

扩展知识


24. 张量并行(TP)的通信成本如何分析?

📋 回答重点
  • 每层多次 all-gather/all-reduce,通信量正比 batch×seq×hidden
  • 通信频繁、延迟敏感,需高带宽互联(NVLink),适合单机内
  • 跨机带宽低一个量级不划算;卡数越多通信占比越大

扩展知识


25. 流水线并行(PP)的 bubble 如何优化?

📋 回答重点
  • bubble 成因:流水线首尾空闲,占比 ≈ (P-1)/(P-1+M)
  • 增大微批次 M 摊薄 bubble
  • chunked/interleaved(1F1B 交错):把每卡层再切成多 stage 交错调度,填满气泡

扩展知识


26. 什么是专家并行(Expert Parallelism)?

📋 回答重点
  • MoE 把不同专家分布到多卡,token 按路由送到对应专家
  • 通信为 all-to-all(dispatch/combine),区别于 TP 的 all-reduce
  • 突破单卡专家显存,常与 TP/DP 组合

扩展知识

  • DeepSeek 的「细粒度 EP + 共享专家」;capacity factor 控负载与丢 token
  • 详细讲解:大模型推理与部署

27. 什么是序列并行(Sequence Parallelism)?

📋 回答重点
  • 切序列维度到多卡,突破单卡长序列显存/算力
  • Ring Attention:环形传 K/V 聚合全局注意力
  • Megatron-SP(切 LayerNorm/Dropout 省激活)、Ulysses(切头 + all-to-all)

扩展知识


28. 3D 并行如何组合?各维度如何分配?

📋 回答重点
  • 3D = DP×TP×PP(MoE 再加 EP)
  • TP 单机内(NVLink)、PP 跨机、DP 切 batch
  • 总卡数 = TP×PP×DP,先填单机 TP

扩展知识


29. ZeRO 是什么?ZeRO-1/2/3 有什么区别?

📋 回答重点
  • 训练显存优化:分片优化器状态/梯度/参数,消除 DP 冗余
  • ZeRO-1 分片优化器状态、ZeRO-2 加梯度、ZeRO-3 再分片参数(需 all-gather)
  • ZeRO-3 随卡数近线性省显存

扩展知识

  • ZeRO-Offload/Infinity 卸载到 CPU/NVMe;推理用不到(无优化器/梯度)
  • 详细讲解:大模型推理与部署

30. prefill 和 decode 阶段有什么区别?

📋 回答重点
  • prefill:并行处理 prompt 全部 token,compute-bound
  • decode:逐 token 自回归,memory-bound,KV 越读越多
  • 瓶颈不同,混在一起会互相干扰(引出 chunked prefill)

扩展知识

  • prefill 堆算力/大 batch/TP;decode 省带宽(量化/投机采样/GQA)
  • 详细讲解:大模型推理与部署

31. TTFT 和 TPOT 是什么?如何优化?

📋 回答重点
  • TTFT = 首 token 延迟(排队 + prefill);TPOT = 后续每 token 平均耗时(decode)
  • 优化 TTFT:prefix caching、chunked prefill、TP 并行、缩短 prompt
  • 优化 TPOT:KV 量化、投机采样/Medusa、GQA/MLA、降 batch

扩展知识


32. chunked prefill 和 splitfuse 是什么?

📋 回答重点
  • 长 prefill 会阻塞 decode(head-of-line blocking)
  • chunked prefill:把长 prefill 切块穿插到 decode 之间
  • SplitFuse:把 prompt 切块与 decode token 合到同一前向,填满算力

扩展知识


33. vLLM 的调度器是如何工作的?

📋 回答重点
  • 迭代级 continuous batching:选请求 → 前向 → 采样 → 更新 KV
  • 优先 prefill(先给首 token),decode 填满剩余容量
  • Block Manager(PagedAttention)管 KV 容量决定准入

扩展知识

  • 显存不足时抢占(swap 到 CPU 或 recompute);chunked prefill 防阻塞
  • 详细讲解:大模型推理与部署

34. 流式输出(streaming)如何实现?

📋 回答重点
  • 逐 token 产出后通过 SSE/WebSocket/HTTP chunked 增量推送
  • OpenAI 兼容 stream:true,data:{delta} 事件流、[DONE] 结束
  • 降低感知延迟,支持中途取消

扩展知识


35. 推理服务如何做并发控制和过载保护?

📋 回答重点
  • 并发控制:最大并发/in-flight token 上限、准入控制、排队 + 超时
  • 过载保护:限流、背压、优先级 + 抢占、熔断降级(429/503)、弹性扩容
  • 目标:保核心请求延迟 SLA、防雪崩

扩展知识


36. 如何在一个服务上部署多个 LoRA adapter?

📋 回答重点
  • base 权重只加载一份,adapter 低秩 A/B 按请求路由
  • 同 adapter 合批、segmented gather 聚合不同 adapter
  • adapter 太多按 LRU 换入换出(S-LoRA 统一分页)

扩展知识


37. 离线推理和在线推理有什么区别?

📋 回答重点
  • 离线:批量打分/生成,重吞吐、延迟不敏感、大 batch、无流式
  • 在线:实时请求,重延迟(TTFT/TPOT)、流式、continuous batching、弹性扩容
  • 调度与优化目标不同

扩展知识


38. KV cache 共享有哪些应用场景?

📋 回答重点
  • 共享前缀(system prompt、few-shot、多轮历史、RAG 公共上下文)
  • beam search、并行采样 n>1 共享父序列 KV
  • PagedAttention 写时复制 + 引用计数

扩展知识


39. 什么是抢占式调度和优先级调度?

📋 回答重点
  • 优先级:高优先级先调度,过载保 SLA
  • 抢占:低优先级被抢占让资源,KV 换出(swap)或重算(recompute)
  • vLLM/TGI 均支持 priority + preemption

扩展知识


40. 如何优化首 token 延迟(TTFT)?

📋 回答重点
  • TTFT = 排队 + prefill
  • prefix caching 命中共享前缀、chunked prefill 不阻塞
  • TP/FlashAttention 加速 prefill、压缩 prompt、量化/蒸馏小模型

扩展知识


41. 模型冷启动和加载如何优化?

📋 回答重点
  • 权重加载:safetensors mmap、多 rank 并行分片、SSD/RAM 缓存
  • 预编译:TensorRT build engine、缓存 autotune/compiled graph
  • 量化减体积、常驻预热池 warm up、NUMA 感知

扩展知识


42. 推理服务有哪些关键可观测指标?

📋 回答重点
  • 延迟:TTFT/TPOT/E2E、P50/P90/P99
  • 吞吐:tokens/s、requests/s、并发数
  • 资源:GPU 利用率、KV cache 使用率、排队长度
  • 稳定性:错误率、超时率、限流率

扩展知识


43. Medusa 是什么?如何加速解码?

📋 回答重点
  • 在底座加多个 Medusa head,一次前向预测未来多个 token
  • 无需独立 draft 模型,共享底座、无分布漂移
  • 2~3 倍解码加速;Medusa-2 用 tree attention 提接受率

扩展知识


44. 投机采样中 draft 模型如何选择?

📋 回答重点
  • 原则:分布接近(高接受率)+ 足够快
  • 同家族小模型、蒸馏 draft、EAGLE(动态 draft)、Medusa(无 draft)
  • tokenizer 必须一致,否则无法逐 token 对齐

扩展知识


45. 什么是 Early Exit(提前退出)?

📋 回答重点
  • 中间层加 exit head + 置信度阈值,简单样本提前返回、跳过深层
  • 省算力、降延迟,端侧部署有用
  • 权衡:多 exit head 增参数,难样本仍走全层

扩展知识


46. 什么是模型剪枝?推理中有什么用?

📋 回答重点
  • 移除冗余权重/头/通道/层,减小体积与计算量
  • 非结构化(难加速)、结构化(硬件友好直接加速)、2:4 半结构化(TensorCore)
  • 流程:重要性打分 → 剪 → 微调恢复精度

扩展知识


47. 如何评估量化误差?

📋 回答重点
  • PPL(困惑度)上升越小越好,先快速筛
  • 下游 benchmark(MMLU/GSM8K/HumanEval)分数下降
  • KL 散度衡量 logits 分布差异

扩展知识


48. vLLM、TGI、TensorRT-LLM、SGLang 有什么区别?

📋 回答重点
  • vLLM:易用、PagedAttention 高吞吐
  • TensorRT-LLM:NVIDIA 极致性能、FP8/量化、编译式
  • SGLang:RadixAttention 前缀复用、结构化生成
  • TGI:HuggingFace 生态整合、生产特性全

扩展知识


49. SGLang 的 RadixAttention 是什么?

📋 回答重点
  • radix tree 管理 KV,自动复用最长公共前缀
  • 命中前缀免重算,省 prefill、提吞吐、降 TTFT
  • cache-aware 调度 + LRU 淘汰

扩展知识


50. 推理服务如何做灰度发布和 A/B 测试?

📋 回答重点
  • 灰度:新模型先放小流量(5%~10%),观察指标,逐步放量/回滚
  • A/B:分流对比不同模型/配置(prompt、量化、采样参数)
  • 实现:网关/负载均衡按比例或用户 ID 哈希分流到不同实例

扩展知识