ai-infra-interview-305

第 130 题:混合精度推理的策略?哪些层必须保持FP16

题目

混合精度推理的策略?哪些层必须保持FP16


完整讲解

一、混合精度推理的目的

混合精度指模型中部分层或张量用 FP16(或 BF16/FP8),部分保持 FP32 或更高精度,在精度与速度/显存间折中。推理时用 FP16 可减带宽与算力、加速;但某些层(如 softmax、LayerNorm 的方差、敏感输出)若全 FP16 可能数值不稳或掉点,需保留高精度。

二、策略与必须 FP16 的层

常见策略:默认 FP16,敏感处保留 FP32。通常可全 FP16 的:大部分 Linear、Conv、激活;常需保留 FP32 或局部高精度的:softmax 分母与指数(防溢出与精度)、LayerNorm 的 mean/var 计算(方差对精度敏感)、累加项很多时的 reduction(避免 FP16 累加误差)、首尾层(embedding 输出、logits)若敏感也可 FP32。具体可结合 sensitivity 分析:逐层切 FP16 看指标,掉点层保留高精度。

三、实现方式

框架级:PyTorch 的 autocast、TensorRT 的 layer precision 设置、ONNX 的 mixed precision 等;或手写时对指定 op 用 FP32 kernel。FP8 可用时,可进一步做 FP8+FP16 混合(如 TE),策略类似:敏感层或敏感 op 用 FP16,其余 FP8。


面试要点


记忆要点

  1. 混合精度 = 大部分 FP16,敏感处 FP32;目的省带宽与算力且保精度。
  2. 必须/建议 FP32:softmax、LayerNorm 统计、大累加、首尾层(按 sensitivity 定)。
  3. 实现靠框架精度设置或手写 kernel;可与 FP8 组合。
返回模块 返回总览