1. 量化基础概念:什么是模型量化?为什么 NPU 需要量化?
大家好,我是这次课的主讲。在芯片部署这行摸爬滚打了十来年,今天咱们来聊聊量化。
很多人一听到「量化」就觉得是玄学,其实没那么复杂。说白了,就是给模型「减肥」——把那些又大又沉的浮点数,换成轻便的整数。
1.1 什么是模型量化?
模型量化,就是把神经网络里用 float32 表示的权重和激活值,映射到 int8 甚至 int4 这样的低精度整数上。
举个例子,你训练好的模型里有个权重是 0.12345678,量化之后可能就变成了 42(假设是 int8)。精度确实丢了,但换来的是速度和体积。
我刚开始做部署时,总觉得量化是「偷工减料」。直到有一次,一个 200MB 的模型死活塞不进芯片的 8MB SRAM,量化到 int8 后直接降到 50MB,推理速度还快了 4 倍。嗯,从那以后我再也不敢小看量化了。
1.2 为什么 NPU 需要量化?
NPU(神经网络处理器)跟 CPU 不一样。CPU 是通用型选手,什么活都能干,但效率一般。NPU 是专为神经网络设计的,它最擅长的事就是做矩阵乘法。
但 NPU 有个硬伤——它的计算单元和片上存储都非常有限。你想想看,一个嵌入式 NPU 可能只有几 MB 的 SRAM,几百个 MAC(乘加)单元。如果跑 float32 模型,带宽和存储根本扛不住。
量化带来的好处,我列个表你就明白了:
| 指标 | Float32 | Int8 量化后 | 提升幅度 |
|---|---|---|---|
| 模型体积 | 100 MB | 25 MB | 4x 缩小 |
| 内存带宽 | 高 | 低 | 4x 降低 |
| 计算速度 | 慢 | 快 | 2-4x 提升 |
| 功耗 | 高 | 低 | 显著降低 |
1.3 量化的数学原理
量化的数学其实不复杂。核心就一句话:找一个映射关系,把浮点数区间映射到整数区间。
常见的量化方式有两种:对称量化和非对称量化。我分别讲讲。
1.3.1 对称量化
对称量化,就是让浮点数的 0 对应整数的 0。映射关系是线性的:
Q = round(r / S)
其中:
r是原始浮点数Q是量化后的整数S是缩放因子(scale)
反量化就是:
r ≈ Q × S
S 怎么算?很简单:
S = max(|r|) / (2^(N-1) - 1)
N 是量化位数。int8 的话,N=8,分母就是 127。
举个例子:
假设浮点范围是 [-3.0, 3.0]
S = 3.0 / 127 ≈ 0.0236
浮点数 1.5 → Q = round(1.5 / 0.0236) = round(63.56) = 64
反量化回来:64 × 0.0236 = 1.5104
误差只有 0.0104,还不错吧?
1.3.2 非对称量化
非对称量化引入了零点(zero-point)的概念。映射关系变成:
Q = round(r / S) + Z
其中 Z 就是零点,用来对齐浮点数的 0 和整数的某个值。
S 和 Z 的计算:
S = (r_max - r_min) / (Q_max - Q_min)
Z = round(Q_max - r_max / S)
还是刚才的例子:
浮点范围 [-3.0, 3.0],int8 范围 [0, 255]
S = (3.0 - (-3.0)) / (255 - 0) = 6.0 / 255 ≈ 0.0235
Z = round(255 - 3.0 / 0.0235) = round(255 - 127.66) = round(127.34) = 127
浮点数 1.5 → Q = round(1.5 / 0.0235) + 127 = round(63.83) + 127 = 64 + 127 = 191
反量化:191 × 0.0235 - 127 × 0.0235 = 1.504
你看,非对称量化多了一个零点,但能更灵活地覆盖浮点数的分布范围。
1.3.3 两种方式的对比
| 对比项 | 对称量化 | 非对称量化 |
|---|---|---|
| 零点 | 无(固定为 0) | 有(可调节) |
| 整数范围 | 有符号(如 int8: -128~127) | 无符号(如 uint8: 0~255) |
| 适用场景 | 权重分布对称(如卷积层) | 激活值分布偏斜(如 ReLU 后) |
| 计算复杂度 | 低 | 稍高(需处理零点) |
| 硬件友好度 | 高 | 中等 |
1.4 量化知识体系总览
为了让你对量化有个整体认识,我画了张图:
这张图把量化的核心脉络理清楚了。从「为什么需要量化」到「量化原理」再到「量化方法」,每一步都有对应的技术细节。后面的章节,我们会逐一深入。
好了,这一章就到这里。量化不是什么高深莫测的东西,它就是一套工程化的精度-效率权衡方案。你只要掌握了映射关系,剩下的就是调参和踩坑了。