WMX · 随记
·AI· 3 分钟阅读

量化小实验:压缩数值范围会引入什么误差

把浮点权重保存为低位整数可以减少表示体积,但映射与还原会产生舍入误差。先观察一组数值,比直接讨论模型速度更具体。

AI 系列概览:模型机制、系统边界与效果评估
AI 系列概览:模型机制、系统边界与效果评估 点击图片查看大图 ↗

问题从哪里出现

把浮点权重保存为低位整数可以减少表示体积,但映射与还原会产生舍入误差。先观察一组数值,比直接讨论模型速度更具体。

理解核心机制

对称量化用最大绝对值确定尺度,将值映射到有限整数区间,再乘尺度还原。下面使用 [-127,127] 区间演示,不声称等同于实际推理引擎。

动手做一个小实验

Python 3.11 或更新版本,仅使用标准库;将示例保存为 demo.py 后执行 python3 demo.py。数字与样本均为教学演示,不代表真实模型或服务器的测量结果。

Python8 行 · 可横向滚动
values = [-1.0, -0.12, 0.0, 0.37, 1.0]
peak = max(abs(value) for value in values)
scale = peak / 127 if peak else 1.0
quantized = [max(-127, min(127, round(value/scale))) for value in values]
restored = [value * scale for value in quantized]
error = max(abs(a-b) for a, b in zip(values, restored))
assert error <= scale / 2 + 1e-12
print(quantized, restored, error)

适用边界与常见误区

真实量化涉及分组、异常值、激活和硬件内核。数值误差小不自动意味着任务质量不变,也不能仅按位宽推断延迟提升。

继续练习

加入一个很大的异常值,观察其余小数的误差,再比较逐组尺度与全局尺度的差别。

参考资料

阅读相关官方文档或原始资料 ↗

← 返回文章归档