Skip to content

10. 面试题 ​

覆盖初级(概念与计算)、中级(机制与权衡)、高级(架构与生产)三档,共 14 题。

初级 ​

1. 对称量化与非对称量化的区别?各适合什么数据? ​

对称量化 zero-point 恒为 0,scale = max|x|/qmax,表示范围关于 0 对称;非对称带 zero-point,scale = (max-min)/(2^b-1),能利用全部量化区间。近似零均值的数据(权重、 LayerNorm 后激活)用对称(省存储);偏置数据(ReLU 后激活)非对称更准。对称还省去反量化时的一次减法,kernel 更友好。

2. 手算:INT8 对称 per-tensor 量化,张量最大值 12.0,求 scale,x=7.3 量化后是多少? ​

scale = 12.0 / 127 ≈ 0.0945。q = round(7.3 / 0.0945) = round(77.25) = 77。反量化 77 × 0.0945 ≈ 7.28,舍入误差约 0.02。

3. per-tensor、per-channel、group-wise 的区别和开销? ​

粒度从粗到细:per-tensor 全张量一个 scale(开销≈0);per-channel 每行/列一个 scale(开销可忽略);group-wise 每 g 个元素一个 scale(g=128 时 INT4 等效 4 + 16/128 = 4.125 bit/weight)。粒度越细误差越小,INT4 时代 per-tensor 不可接受(实测误差近 20%),g=128 是常见甜点。

4. FP8 E4M3 和 E5M2 有什么区别?怎么选? ​

E4M3:4 指数位 3 尾数位,范围 ±448、精度高;E5M2:5 指数位 2 尾数位,范围 ±57344、精度低一位。典型值分布选 E4M3(如权重),有大幅度离群的激活选 E5M2 或改用 block scaling。Mini Demo 场景 6:2000× 离群下 E4M3 相对误差 0.83、E5M2 仅 0.05。

5. PTQ、QAT、QAFT 各是什么?成本与精度排序? ​

PTQ(训练后量化):冻结权重,只校准统计量,成本最低;QAT(量化感知训练):前向模拟量化、反向更新权重,精度最高、要训练;QAFT(微调后量化):PTQ 后少量微调恢复精度,居中。生产默认 PTQ,门禁不过再 QAFT,QAT 是兜底。

中级 ​

6. AWQ 的核心思想是什么?为什么只保护 1% 的通道就够? ​

AWQ 发现激活幅度大的输入通道(约 1%)对量化误差贡献不成比例地大。它先按激活统计为每组权重搜索缩放因子(把激活离群「搬进」权重),再对这 1% salient 通道保持高精度。只保护 1% 是因为激活幅度分布极度重尾——误差被头部通道主导,保护尾部性价比极低。

7. GPTQ 为什么比 RTN 好?为什么它的权重误差可能比 RTN 还大? ​

GPTQ 用校准数据估计输入 Hessian H = XᵀX,量化第 j 列时把误差按 H⁻¹ 的最优补偿系数摊给未量化的列(OBS 逐列版)。它优化的是校准集输出误差 X(Ŵ−W)ᵀ 而非权重范数——补偿扰动刻意落在数据的零空间,所以权重 rel L2 可能更大、输出误差反而小 2-3×(Mini Demo 场景 4:2.85×)。看量化质量要看输出误差和任务指标。

8. SmoothQuant 的「难度迁移」为什么不会引入误差? ​

迁移是数学恒等变换:X' = X/s、W' = W·diag(s) 后 X'W'ᵀ ≡ XWᵀ,浮点下严格成立。误差只来自变换后的量化。它把激活的离群通道摊平(激活除以 s)、代价是权重变难(乘以 s),α 控制迁移比例;α 选错会更糟(Mini Demo 场景 3:α=0 时比不迁移还差)。

9. 为什么 INT4 量化需要 group-wise,而 FP4 需要 block scale?两者是一回事吗? ​

本质相同:都是「一小块共享一个 scale」,用小范围的局部统计代替全局统计,对抗分布不均。区别在 scale 的表达:INT4 用 FP16 浮点 scale(每 128/64/32 元素),FP4(NVFP4/MXFP4)用 8bit 微型 scale(每 16/32 元素)——因为 E2M1 本身动态范围只有 ±6,没有局部归一化完全不可用(裸 E2M1 对 0.02 量级权重误差 100%,Mini Demo 场景 6)。

10. KV cache 量化为什么 K 和 V 的粒度选择不同? ​

K 的离群在通道维(某些 channel 全序列都大),按 token 量化会被离群通道拖垮 scale,所以要按通道分组(沿 token 轴切组);V 没有这种通道结构,按 token 分组即可。Mini Demo 场景 5:INT4 下 K 按通道在 512 token 上下文仍 ~0.98 余弦,按 token 降到 0.844 且随长度劣化。

11. W4A16 和 W8A8 的加速来源有什么不同? ​

W4A16(INT4 权重、FP16 激活):加速来自显存带宽——权重读少 4 倍,乘法仍 FP16 做,dequant 与 GEMM 融合;decode 收益大、prefill 收益小。W8A8/FP8:tensor core 原生低精度 MMA,乘法本身变快,但要激活也量化,需付激活精度的账(SmoothQuant/FP8 scale 管理)。

高级 ​

12. 设计一条量化管线:从 FP 模型到 vLLM 上线,环节如何划分、契约如何设计? ​

六环节:导出(层清单与豁免策略)→ 校准(observer 产统计量:minmax/saliency/Hessian,统计量契约与算法解耦)→ 压缩(recipe:算法+位宽+粒度,同一校准数据可喂多个算法对比)→ 校验(权重级/模型级/任务级三级门禁,不过回炉)→ 封装(compressed-tensors/GGUF,量化参数契约:bits/group_size/sym/axis/scale dtype,外加 kernel 布局契约:packing/对齐)→ 部署(引擎按 config 分发 kernel)。两个反馈回路:校验不过回炉校准/压缩;线上质量回退触发重校准。

13. 如何为一个 MoE 长上下文服务选量化方案?权衡什么? ​

显存预算全局分配:权重(专家层 INT4 W4A16,专门化+稀疏使其鲁棒;共享专家/注意力 FP8)+ KV(长上下文下 KV 是显存第一大户,FP8 KV 或 NVFP4 KV)+ 激活。TTFT/TPOT 分别验证:prefill 算力瓶颈不吃 W4A16 红利,decode 带宽瓶颈两头都敏感。逐层粒度:路由层与 shared expert 保守。门禁要拉长上下文 eval(KV 量化误差随长度累积)。Blackwell 上优先 NVFP4 全家桶,用 TRT-LLM/SGLang 的新格式路径。

14. 线上量化模型的精度 silently 劣化,可能的原因有哪些?如何监控与处置? ​

可能原因:上游数据分布漂移(新 prompt 模板/新功能)导致校准统计量过期;引擎升级换了 kernel(scale 舍入口径变化);上游模型微调后未重新量化;KV 量化与长度分布变化叠加。监控:线上抽样比对量化版与 FP 版输出分布(KL/embedding 距离)+ 业务质量指标 + ppl 代理探针。处置:一键回退到 FP 版本;按模型卡片定位 recipe 与校准集版本;用新流量样本重跑校准-压缩-门禁闭环;把校准集更新挂进上游变更的 checklist。

Released under CC-BY-SA-4.0 License.