数值映射
数值映射定义高精度值如何变成低精度编码,以及如何重建为近似值。Integer 与 Float 都需要数值映射,但两者的目标格点和映射参数不同。
数值类型定义目标编码,量化粒度定义多少元素共享映射参数;本文只讨论转换规则。
映射总览
| 映射 | 目标格点 | 常见参数 | 典型形式 |
|---|---|---|---|
| Integer Mapping | 均匀整数格点 | scale、zero-point | Affine Quantization |
| Float Mapping | 由指数与尾数定义的非均匀格点 | 可选 scale | Direct Cast、Scaled Cast |
两类映射都会涉及舍入和范围处理。Zero-point 主要属于 Integer 的 Affine Mapping,不是低精度 Float 的常规参数。
Integer Mapping
Integer 常用 Affine Quantization:
:原始高精度值。 :低精度整数编码。 :反量化后的近似值。 :scale,决定整数格点在原始数值域中的间距。 :zero-point,使整数 对应原始值 0。
Symmetric / Asymmetric
| 对比项 | Symmetric | Asymmetric |
|---|---|---|
| 原始覆盖范围 | 以 0 为中心,通常为 | 根据 |
| 参数 | scale,zero-point 通常固定为 0 | scale 与 zero-point 或 offset |
| 反量化 | ||
| 特点 | 参数少、Kernel 简单 | 更充分地利用非对称分布的编码范围 |
Symmetric / Asymmetric 描述整数格点相对 0 的布局,不是 Float 格式的分类。
Zero-Point
由
Symmetric Quantization 通常令
Float Mapping
低精度 Float 的指数和尾数直接定义非均匀格点:数值越大,相邻可表示值的间距通常也越大。映射不使用整数 zero-point,常见形式包括:
Direct Cast
Scaled Cast
Scale 先把局部数值范围对齐到目标 Float 格式,再由 Float 格点完成舍入。FP8、MXFP8 和 NVFP4 都可以采用 Scaled Cast,但 scale 的类型、粒度和层级不同。