有没有做过模型压缩?比如在车载端或低端设备上的推理加速
1️⃣ 考察意图
面试官想看的不是你会背“量化、剪枝、蒸馏”这几个词,而是你是否在资源受限(内存/功耗/延迟) 场景下做过系统性的工程取舍。刁钻点在于:多数人只做过云端大模型部署(A100 随便跑),但车载/端侧要求模型 <4GB、延迟 <50ms、功耗 <15W,这迫使你必须从“模型-硬件-精度”三角做联合优化。答好了能展示:你理解精度-速度-成本的不可三角,并且有从理论到落地的完整流程能力(比如量化后校准集怎么选、剪枝后微调策略)。
2️⃣ 标准答
做过,核心场景是车载语音助手(Jetson Orin NX 16GB,功耗 15W 限制)和低端手机端侧翻译(骁龙 865,内存 6GB)。下面从压缩方法和推理加速两个维度展开,最后给一个落地案例。
模型压缩:量化为主,剪枝+蒸馏为辅
- 量化(核心手段):
- INT8 量化:用 TensorRT 的 PTQ(Post-Training Quantization),校准集选 500 条车载场景语音文本(不是通用语料),避免分布偏移导致精度崩。坑:LayerNorm 和 Softmax 对量化敏感,必须保留 FP16,否则 WER 飙升 15%+。
- INT4 量化:用 GPTQ(GPTQ: Accurate Post-Training Quantization for Generative Pre-trained Transformers),对 7B 模型从 FP16 压缩到 4GB 以内。取舍:GPTQ 比 AWQ 更稳(AWQ 在低比特下对 outlier channel 敏感),但 GPTQ 需要 1 小时校准时间,AWQ 只需 10 分钟。实际选型:离线场景用 GPTQ,在线快速迭代用 AWQ。
- 混合精度:Embedding 层和 LM Head 保留 FP16(参数量大但计算少),Transformer 层用 INT4,最终模型 3.8GB,延迟 35ms/token。
- 结构化剪枝:
- 对 Attention 的 head 做重要性评分(基于 L1 范数 + 梯度敏感度),剪掉 20% 冗余 head,参数量减少 15%,精度损失 <1% BLEU。注意:非结构化剪枝(逐权重)在 GPU 上加速不明显,因为稀疏矩阵运算库不成熟;结构化剪枝(逐 head/逐层)能直接减少 FLOPs。
- 知识蒸馏:
- 用 13B 模型做 teacher,7B 做 student,蒸馏时不仅用 logit-level(KL 散度),还加 feature-level(中间层 hidden state 的 MSE)。坑:teacher 和 student 的 hidden size 不一致时,需要加一个线性映射层对齐,否则蒸馏效果差。
推理加速:TensorRT + FlashAttention + 算子融合
- TensorRT 编译:将 ONNX 模型用 TensorRT 8.6 编译,开启 FP16 + INT4 混合精度,算子融合(如 QKV 合并、LayerNorm+Residual 融合),延迟从 80ms 降到 35ms。
- FlashAttention:在 Orin 上使用 FlashAttention-2,利用 shared memory 减少 HBM 读写,长序列(512 tokens)下加速 2x。取舍:FlashAttention 需要 Ampere 架构以上,Orin 是 Ampere 架构,兼容;但低端手机(骁龙 865)不支持,只能用传统 attention + 内存池优化。
- vLLM 的 PagedAttention:在车载场景下,PagedAttention 的 KV cache 管理能减少显存碎片,支持更大 batch size(从 1 到 4),吞吐提升 3x。但 PagedAttention 对动态 batch 友好,对固定 batch 场景(如单路语音流)收益不大,所以只用在多路并发场景。
落地案例:Jetson Orin NX 上部署 7B 模型
- 目标:延迟 <50ms/token,模型 <4GB,功耗 <15W。
- 方案:GPTQ INT4 量化 + 20% head 剪枝 + TensorRT 编译 + FlashAttention-2。
- 结果:模型 3.8GB,延迟 35ms/token,功耗 12W,WER 比 FP16 基线高 2%(可接受)。
- 坑:校准集必须覆盖车载噪声场景(如发动机声、风噪),否则量化后对噪声文本的困惑度飙升 30%。解法:用 1000 条车载语音 ASR 结果做校准集。
3️⃣ 答题模板(30 秒电梯版)
“这个问题我从三个层面回答:第一,模型压缩,核心用 GPTQ INT4 量化 + 结构化剪枝 + 知识蒸馏,把 7B 模型压到 4GB 以内;第二,推理加速,用 TensorRT 编译 + FlashAttention-2 + PagedAttention,延迟降到 35ms/token;第三,精度补偿,校准集必须贴合场景(如车载噪声),混合精度部署保留敏感层 FP16。总结一句:端侧部署的核心是精度-速度-功耗的联合优化,没有银弹,必须根据硬件特性做取舍。”
4️⃣ 高频追问 & 应对
追问 1:INT4 量化后精度损失怎么评估?你用的校准集多大?
评估指标:困惑度(PPL)和下游任务指标(如 WER/BLEU)。PPL 上升 <5% 算可接受,WER 上升 <3%。校准集大小:500-1000 条,覆盖场景分布(如车载:70% 导航指令,30% 闲聊)。坑:校准集太小(<100 条)会导致量化后 outlier channel 没被校准,精度崩;太大(>5000 条)收益饱和,浪费计算时间。经验法则:校准集数量 = 模型层数 × 10。
追问 2:为什么不用 AWQ 而用 GPTQ?在什么场景下你会换?
GPTQ 对 outlier channel 更鲁棒,适合低比特(INT4)且精度敏感场景(如语音识别)。AWQ 优点是速度快(校准只需 10 分钟),但 INT4 下精度略差(PPL 高 1-2%)。换场景:如果模型是 13B 以上且校准时间受限(如在线服务),我会用 AWQ + 额外 outlier 保护(保留 1% 的 channel 为 FP16)。另外,AWQ 对 activation 分布敏感,如果模型经过大量微调(如 LoRA),AWQ 可能比 GPTQ 更稳。
追问 3:车载端为什么不用模型蒸馏到 3B 或 1B,而用 7B 量化?
这是精度-成本权衡。3B 模型直接部署(FP16 约 6GB)虽然延迟低(20ms),但 WER 比 7B 高 10%+,用户无法接受。7B 量化到 INT4(3.8GB)延迟 35ms,精度损失仅 2%,是更优解。例外:如果硬件内存 <4GB(如树莓派),只能蒸馏到 3B 并 INT8 量化(约 3GB),但需要额外微调补偿精度。所以选择取决于硬件上限和精度底线。
5️⃣ 避坑 · 常见错误答法
- ❌ “我做过量化,用 PyTorch 的
torch.quantization直接转 INT8,效果还行。” → ✅ “PyTorch 的量化对 CNN 友好,但对 Transformer 的 LayerNorm 和 Softmax 敏感,必须用 TensorRT 或 ONNX Runtime 的 Q/DQ 节点做混合精度,否则精度崩。实际落地我用了 GPTQ + 校准集场景化。” - ❌ “剪枝就是去掉不重要的权重,用 L1 范数就行。” → ✅ “非结构化剪枝在 GPU 上加速有限(稀疏矩阵运算库不成熟),必须用结构化剪枝(逐 head/逐层)才能减少 FLOPs。而且剪枝后必须微调,否则精度损失不可控。”
- ❌ “蒸馏就是把大模型的 logits 拿来训练小模型。” → ✅ “蒸馏的关键是 teacher 和 student 的架构对齐(hidden size 不一致时加映射层),以及 feature-level 蒸馏(中间层 MSE)比 logit-level 更有效。另外,teacher 模型不能太强(如 70B),否则 student 学不动,建议 teacher 比 student 大 2-4 倍。”
6️⃣ 简历呼应
- 如果你有车载/端侧部署项目:从“Jetson Orin 上部署 7B 模型”切入,强调量化校准集场景化、功耗-延迟联合优化、PagedAttention 的 KV cache 管理。面试官会追问“校准集怎么选”“功耗怎么测”,提前准备好数字(如 12W 功耗)。
- 如果你只做过云端推理(A100/V100):用“云端和端侧的差异”类比迁移。例如:“云端用 FP16 追求吞吐,端侧用 INT4 追求延迟和内存,核心 trade-off 是精度-速度-功耗的不可三角。我虽然没做过端侧,但理解量化原理(GPTQ/AWQ)和 TensorRT 编译流程,可以快速上手。”
- 如果你是校招无项目:聚焦论文复现。例如:“我复现了 GPTQ 论文,在 LLaMA-7B 上做 INT4 量化,对比了 FP16/INT8/INT4 的 PPL 和延迟,发现校准集分布对精度影响很大。虽然没有硬件部署经验,但理解量化原理和精度补偿策略。”
- GPTQ: Accurate Post-Training Quantization for Generative Pre-trained Transformers(论文)
- AWQ: Activation-aware Weight Quantization for LLM Compression and Acceleration(论文)
- FlashAttention: Fast and Memory-Efficient Exact Attention with IO-Awareness(论文)
- TensorRT 官方文档:INT8/INT4 量化最佳实践(NVIDIA Developer)
- vLLM: PagedAttention for Efficient LLM Serving(论文 + 博客)