Technical Marketing for AI Software · Onsite 1/4,Deep Learning Fundamentals

Nvidia 面经:Kernel Fusion 与量化怎样优化模型?

把编译优化问答拆成融合的访存与 launch 收益、资源代价,以及量化的精度和校准取舍,给出可复现实验方案。

题目重点:把编译优化问答拆成融合的访存与 launch 收益、资源代价,以及量化的精度和校准取舍,给出可复现实验方案。

题意与假设

这道练习题保留了面经中值得训练的核心约束,并将需要澄清的条件单独列出。现场拿到变体时,先和面试官确认这些条件。

  • 用逐元素 `relu(x+b)` 和矩阵乘后激活作为训练例,不假设面试官指定融合策略。
  • 量化范围、对称/非对称、per-tensor/per-channel、校准集及允许的精度损失都需先确认。

解题路线

  1. 先构造未优化 baseline:记录硬件、batch/shape、dtype、软件版本、图、冷启动与稳态时间、峰值显存和输出误差。
  2. Kernel fusion 把兼容的生产者和消费者放进同一 kernel,可省中间结果写回/读回 HBM 与额外 launch;例如逐元素 bias+ReLU 理想情况下少一次中间张量往返。若融合扩大寄存器占用、减少 occupancy 或跨越难融合的依赖,性能可能倒退。
  3. 量化把浮点权重/激活映射到低位宽表示以减少存储与访存,并在有对应硬件支持时提升算力利用;但 scale、zero point、校准和重新量化有成本。量化属于数值表示/模型部署决策,不能仅按‘编译器必做 pass’理解。
  4. 分别做 fusion-only、quantization-only、组合三组实验;除延迟和吞吐,检查分组质量、离群样本和输出误差。仅在目标任务 SLA 和质量门槛内比较收益。

手动走一遍

训练例:两个逐元素 kernel 各读取 N 个元素并写 N 个元素,中间张量额外经历约 N 次写入和 N 次读取;融合后理想情况下节省这对全局内存流量以及一次 launch。这个估算不等于实际提速,缓存命中、带宽、寄存器、形状和后端生成代码都需实测。INT8 若比 FP32 权重占用小,也不代表端到端延迟自动变成四分之一。

规模与取舍

逐元素计算和访问规模仍为 O(N);融合改变常数和中间存储峰值。矩阵乘主算术量 O(MKN) 通常不变;量化常可降低每元素字节数,但校准是额外遍历,运行时转码和数值误差须计入。

易错点与追问

容易失分的边界

  • 把融合说成总会更快,不测寄存器压力和 occupancy。
  • 只报告量化后的权重大小,不报告精度损失、激活及端到端 latency。
  • 比较不同输入、硬件或 warm-up 条件的 benchmark。
  • 将题目给出的两种术语扩展成面试官要求的固定实现细节。

继续深挖

  • 什么情况下 fusion 会降低性能?
  • 怎样选择代表性的量化校准集并定位退化层?
  • 冷启动与稳态指标如何分别服务不同产品场景?

技术参考

✓已复制微信号!