[论文解读] Quantizing Convolutional Neural Networks for Low-Power High-Throughput Inference Engines
本文提出一种用于卷积神经网络的动态浮点量化方案,可在仅使用8位或更少运算的情况下实现高精度、低功耗推理。通过仅使用一次推理批次进行校准而不需微调,该方法实现了与全精度模型相当的端到端后量化精度,且在FPGA上实现了硬件和功耗成本4倍或以上的降低。
Deep learning as a means to inferencing has proliferated thanks to its versatility and ability to approach or exceed human-level accuracy. These computational models have seemingly insatiable appetites for computational resources not only while training, but also when deployed at scales ranging from data centers all the way down to embedded devices. As such, increasing consideration is being made to maximize the computational efficiency given limited hardware and energy resources and, as a result, inferencing with reduced precision has emerged as a viable alternative to the IEEE 754 Standard for Floating-Point Arithmetic. We propose a quantization scheme that allows inferencing to be carried out using arithmetic that is fundamentally more efficient when compared to even half-precision floating-point. Our quantization procedure is significant in that we determine our quantization scheme parameters by calibrating against its reference floating-point model using a single inference batch rather than (re)training and achieve end-to-end post quantization accuracies comparable to the reference model.
研究动机与目标
- 解决在资源受限设备上部署深度学习模型所带来的日益增长的计算与功耗需求。
- 通过将32位运算替换为低精度替代方案,降低CNN推理中的硬件和功耗成本。
- 开发一种无需微调即可保持高推理精度的量化方法,仅需单次校准批次。
- 通过支持针对特定网络的自定义n位和p位量化参数,实现高效的FPGA部署。
- 证明动态浮点量化在精度和效率方面优于定点和标准低精度浮点方案。
提出的方法
- 提出一种动态浮点格式,定义为 α × 2^exponent × 有符号整数,其中 α 为实数,尾数用 n 位表示,p 位用于尾数。
- 采用符号-大小或补码表示法表示尾数,并通过特殊的指数编码支持 denormal 值。
- 采用基于校准的量化过程,利用单次推理批次确定最优缩放因子和指数参数。
- 支持在指数位和尾数位之间灵活分配位宽,实现范围与精度之间的权衡。
- 通过支持FPGA重构,实现对特定网络最优量化参数的自定义 n 和 p 配置。
- 通过使用极少数据(最少仅8张图像)的后量化校准避免微调,实现快速、离线的网络压缩。
实验结果
研究问题
- RQ1是否能够仅通过单次校准批次,在不微调的情况下实现接近精度的推理精度?
- RQ2在精度和效率方面,动态浮点量化与定点和标准低精度浮点方案相比如何?
- RQ3对于 GoogLeNet、ResNet 和 MobileNet 等不同CNN架构,指数与尾数位的最佳分配比例是什么?
- RQ4在推理中,位宽可降低到多小(例如5或6位)而不会造成显著精度损失?
- RQ5能否安全地从量化方案中排除 denormal 值以及 Infs/NaNs 而不降低性能?
主要发现
- 该方法在使用 fp8 和 fp6 量化且 p=4 或 p=3 时,GoogLeNet 的归一化 top-1 精度达到 100%,显著优于先前工作在 fp8 下报告的约 60% 精度。
- 对于 fp8,最佳精度在 p=4 或 p=3 时实现,表明对零附近精度的重视对性能至关重要。
- GoogLeNet 和 ResNet 的权重可减少至5位而精度损失极小,而 MobileNet 至少需要7位才能维持性能。
- 当指数位超过3位后,增益呈边际递减;4位指数位相比3位无显著改进,这与“截断的 fp32 优于 fp16”的普遍认知相矛盾。
- 由于具有更大的动态范围和在零附近的更高精度,该动态浮点方案优于动态定点方案。
- 通过将32位运算替换为8位或更少的运算,该方法实现了4倍或以上的功耗和硬件成本降低,即使仅使用极少校准数据(最少8张图像)也能实现。
更好的研究,从现在开始
从论文设计到论文写作,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。