端侧神经网络量化(一):为什么要量化 & 量化基础

摘要

端侧设备算力弱、内存小,直接部署几百兆浮点模型几乎不可行------这是 AI 落地绕不开的坎。量化把 FP32 压成 INT8,体积缩到四分之一且几乎不掉精度,正是破局关键。本篇从仿射映射讲起,理清对称与非对称、量化粒度的取舍,拆解精度损失来源,帮你建立量化的核心直觉,为后续 PTQ、QAT 实战打底。


1. 端侧部署的困境

当我们试图把神经网络塞进手机、嵌入式设备或 IoT 终端时,马上就会撞上三重约束:

  • 算力:移动端处理器(如 ARM Cortex-A 系列)的浮点算力通常在几十到上百 GFLOPS,而桌面级 GPU 可达数十 TFLOPS,差距约两个数量级。

  • 内存带宽:LPDDR 带宽典型值为 15--50 GB/s,桌面 GPU 的 HBM 带宽可达 1--2 TB/s。模型推理的瓶颈往往是搬运权重而非计算本身。

  • 功耗:持续高负载计算会触发温控降频,电池供电设备尤为敏感。

以 ResNet-50 为例:FP32 模型体积约 98 MB,在 iPhone 12 的 A14 芯片上单次推理约 15 毫秒,功耗约 0.8W。当模型规模增大到 ViT-Large(约 1.2 GB),移动端几乎无法运行------加载即 OOM。

量化的价值就在这里:把 FP32 权重和激活值压缩到 INT8,模型体积直接缩到四分之一,内存带宽需求同步降低,定点运算在专用 NPU/DSP 上还能拿到更优的能效比。


2. 量化的数学定义

说白了,量化本质就是浮点数到整数的一次仿射映射:

复制代码
r = s × (q - z)

其中:

  • r:原始浮点值

  • q:量化后的整数值

  • s(scale):浮点缩放因子,决定映射精度

  • z(zero-point):浮点 0.0 对应的整数值,用于精确定位零值

反量化(推理时恢复)为:

复制代码
q = round(r / s) + z

来个具体例子:假设某层权重的值域为 -2.0, 3.0,量化为 INT8(值域 -128, 127),那么:

复制代码
s = (3.0 - (-2.0)) / (127 - (-128)) ≈ 0.0196
z = round(127 - 3.0 / 0.0196) ≈ -26

原始值 1.5 被量化为:round(1.5 / 0.0196) + (-26) = 77 - 26 = 51。反量化回去就是 51 × 0.0196 = 0.9996,和原始值差了约 0.5------这就是不可恢复的舍入误差。


3. 对称量化 vs 非对称量化

对称量化直接令 z = 0,强制量化区间关于零点对称。公式简化为:

复制代码
r = s × q

优点:推理时反量化只需一次乘法,不用减法,硬件实现更高效。代价是:当数据分布不对称时(比如 ReLU 输出的激活值恒 ≥ 0),一半的 INT8 值域就被白白浪费了。

非对称量化保留 z ≠ 0,把 INT8 的值域完整利用起来。公式跟前节一样。推理时需要"乘法 + 减法",计算开销略增,但精度更高。

工程上怎么选?一条经验规则:权重通常用对称量化(权重大多近似正态分布,对称性好);激活值则要看激活函数------ReLU 后的激活值适合非对称,GELU/SiLU 后则根据校准数据再定。


4. 量化粒度

量化粒度决定了 scale 和 zero-point 的共享范围,直接左右精度与效率的平衡:

4.1 Per-Tensor 量化

整个张量共享一套 (s, z)。实现简单,推理计算路径统一。问题是张量内不同通道的值域差异可能很大------一个通道权重集中在 -0.1, 0.1,另一个通道却跑到 -2.0, 2.0,per-tensor 一量化,小值通道几乎被压成零。

4.2 Per-Channel 量化

对权重的每个输出通道(卷积核 / 线性层输出维度)独立算一组 (s, z)。比如一个 64 × 3 × 3 × 3 的卷积核,per-channel 会为 64 个输出通道各算一组参数。精度比 per-tensor 好得多,代价是推理时每个通道的反量化要独立做一次乘法。

4.3 Per-Group 量化

把通道内进一步分组,每组 32、64 或 128 个元素独立量化。这是大模型 4-bit 量化的标准做法,在精度和效率之间找到了工程上的甜点。分组越小精度越高,但量化参数的存储开销也越大。当组大小 = 128 时,参数开销只增加 1/128,几乎可以忽略。


5. 量化误差从哪来

量化的精度损失,其实是三个因素叠加的结果:

  1. 舍入误差:连续浮点值映射到离散整数刻度,每个值最多损失 ±0.5 × s。误差会在多层网络里累积,每层都逃不掉。

  2. 截断误差:确定量化范围 r_min, r_max 时,超出边界的离群值会被硬截断。比如一个权重张量 99.9% 的值在 -0.5, 0.5,偏偏个别值飙到 ±10------按全范围量化,s 太大、内部值全被压碎;按 99.9% 范围截断,又会损失极端值的信息。

  3. 分布不匹配:量化默认数据均匀分布,可实际激活值往往是指数分布或长尾分布,量化刻度跟数据密度对不上,误差自然就来了。

后续整个系列都会围绕怎么压住这三点误差展开------PTQ 用校准数据优化截断策略,QAT 通过训练让模型主动适应量化误差,动态量化则在运行时统计、绕开激活分布的预校准假设。


6. 总结

量化的核心是一次仿射映射,由此衍生出对称与非对称的选择、per-tensor / per-channel / per-group 三种粒度的取舍,以及舍入、截断、分布不匹配三大精度损失来源。掌握这些,你就能判断何时量化、用什么粒度、误差从何而来。端侧部署已成 AI 落地主战场,量化是从"能跑"到"跑得好"的关键一跃,技术价值与工程需求都在快速放大。下一篇我们进入训练后量化(PTQ)实战。

相关推荐
2401_8322981011 分钟前
绿色AI:算力优化与低碳发展的双向共生之路
人工智能
Wang's Blog12 分钟前
Vibe Coding一人即团队系列19:Figma原型导出与Claude Code优化流程实践
人工智能·figma·stitch
Amir_zy13 分钟前
AI 测试实战:从功能到安全,三层质量验证体系详解
人工智能·安全
绿算技术15 分钟前
大模型本地化的经济账:DeepSeek V4 Flash 部署实测
人工智能·科技·算法·spark
阿尔法工场研究院17 分钟前
小米向下扎根,中国科技向上
人工智能·科技
智圣新创0118 分钟前
存量数字化校园升级破局:从基础数据集成到校务服务全域提效的通用落地路径
大数据·人工智能·物联网
AI的探索之旅19 分钟前
97 个 OpenCV 实例(十二):仪表自动读数,从图像处理到落地项目
人工智能·opencv·计算机视觉·ai
奈斯先生Vector22 分钟前
从“能调用”到“可替换”:Coze 多模型 API 编排层设计指南
linux·运维·人工智能·ubuntu·平面·ios
aneasystone本尊25 分钟前
学习大模型推理的嵌入与位置编码
人工智能