3. 数值表示基础

在自动驾驶模型部署中,低精度推理并不是简单地把 float32 换成 int8,而是对数值表示体系的一次重构。要理解量化为什么有效、误差从哪里来、什么时候会失效,必须先掌握定点与浮点的差异,以及位宽、动态范围、精度、分辨率、溢出与饱和这些基础概念。它们共同决定了模型在车端芯片上的数值行为。

一、定点与浮点:两种数值世界观

浮点数用“符号 + 指数 + 尾数”表示,小数点位置随指数浮动,因此能在很大范围内表示数值。以 FP32 为例,1 位符号、8 位指数、23 位尾数,动态范围可达约 1e-38 ~ 3e38,但每个数占 32 位,乘加运算功耗和带宽开销大。定点数则固定小数点位置,通常用整数加一个缩放因子 scale 表示实数:

real ≈ (int_value - zero_point) × scale
例如:int8 值 34,scale=0.05,zero_point=0
real = 34 × 0.05 = 1.70

定点表示没有指数位,所有位都用于有效数字,因此在相同位宽下精度更高、运算更简单,但可表示的动态范围被压缩。低精度推理的本质,就是用定点整数近似浮点张量,把乘加从浮点单元搬到整数单元,换取吞吐、功耗和内存收益。

二、位宽、动态范围、精度与分辨率

位宽决定了一个数值格式能表达多少个离散状态。对于有符号定点整数,位宽 n 可表示 2^n 个状态,范围是 [-2^(n-1), 2^(n-1)-1]。位宽越大,动态范围和分辨率通常越高,但存储和计算成本也越高。

  • 动态范围:可表示的最大值与最小值之比,决定能否覆盖激活和权重的分布跨度。
  • 精度:表示值与真实值之间的接近程度,常受舍入、截断和累积误差影响。
  • 分辨率:相邻两个可表示数之间的最小间隔,定点中等于 scale。

三者并不等价。一个格式可能有很大的动态范围,却在某个区间分辨率很差;也可能分辨率很高,但范围太窄导致大量饱和。量化校准的核心,就是在范围与分辨率之间找平衡。

关键关系:定点格式中,scale = (max - min) / (qmax - qmin)。范围选得越大,scale 越大,分辨率越粗;范围选得越小,分辨率越细,但更容易溢出。

三、溢出与饱和:低精度推理的边界行为

当计算结果超出可表示范围时,会发生溢出。整数溢出通常表现为回绕,例如 int8 的 127 加 1 变成 -128,这种错误对自动驾驶感知结果可能是灾难性的。饱和则是在溢出时把结果钳制到边界值,例如 127 加 1 仍为 127。饱和比回绕安全,但会引入非线性误差。

在量化推理中,累加器位宽非常关键。int8 乘 int8 的结果是 int16,多个乘积累加后可能超出 int16,因此硬件通常使用 int32 累加器。若累加器位宽不足,就会在中间结果处溢出。下面是一个典型检查清单:

检查项典型值/条件风险
权重范围int8: [-128,127]范围过窄导致饱和
激活范围校准集统计 min/max离群值拉大 scale
累加器位宽int32位宽不足导致回绕
scale 选择对称/非对称零点偏移引入误差
饱和策略clamp 到 qmin/qmax边界处梯度消失

四、案例:同一层在不同数值格式下的表现

假设某卷积层输出真实范围为 [-6.0, 6.0],采用 int8 对称量化,则 scale = 6.0 / 127 ≈ 0.0472,分辨率约 0.047。若真实值出现 7.2,量化后会饱和到 127,对应 5.99,误差约 1.21。若改用 int16,scale 约 0.000183,分辨率提升约 256 倍,7.2 可被较准确表示。但 int16 的算力开销和带宽也显著增加。

这正是低精度推理的数学本质:用可控的量化误差,换取数量级的效率提升。误差来源包括舍入误差、饱和误差和累积误差。工程上通过校准、逐通道量化、混合精度和饱和保护,把误差控制在模型可接受的范围内。

实践建议:先统计每层权重和激活的 min/max,再决定对称或非对称量化;对激活离群值明显的层,可保留较高位宽或使用 per-channel 量化;累加器统一用 int32,避免中间溢出。

常见误区:认为“位宽越低越好”。实际上,位宽过低会导致动态范围不足和分辨率粗糙,检测头、回归分支等对数值敏感的层可能严重掉点。量化不是单纯压缩,而是数值表示与模型结构的联合设计。

浮点张量 → 定点量化映射与边界行为 FP32 实数轴 -6.0 +6.0 真实值连续分布 scale = 6.0 / 127 ≈ 0.0472 INT8 定点离散格点 -128 +127 分辨率 = scale ≈ 0.0472 溢出(回绕) 127 + 1 → -128 数值跳变,误差巨大 需用 int32 累加器规避 饱和(钳制) 127 + 1 → 127 边界误差可控,更安全 clamp 到 qmin / qmax 低精度推理 = 用可控量化误差换取效率;范围、分辨率、饱和策略需联合设计

理解这些基础后,后续的量化校准、逐通道缩放、混合精度和算子融合才有统一的判断依据。数值表示不是部署前的“格式转换”,而是贯穿模型设计、训练微调和推理运行时的核心约束。