[论文解读] Hardware-oriented Approximation of Convolutional Neural Networks
Ristretto 是一个基于 Caffe 的框架,能够自动将浮点 CNN 裁剪成带有动态定点表示的定点数,然后进行微调,在 1% 误差容忍度下实现 8 位模型,且几乎不损失准确性。
High computational complexity hinders the widespread usage of Convolutional Neural Networks (CNNs), especially in mobile devices. Hardware accelerators are arguably the most promising approach for reducing both execution time and power consumption. One of the most important steps in accelerator development is hardware-oriented model approximation. In this paper we present Ristretto, a model approximation framework that analyzes a given CNN with respect to numerical resolution used in representing weights and outputs of convolutional and fully connected layers. Ristretto can condense models by using fixed point arithmetic and representation instead of floating point. Moreover, Ristretto fine-tunes the resulting fixed point network. Given a maximum error tolerance of 1%, Ristretto can successfully condense CaffeNet and SqueezeNet to 8-bit. The code for Ristretto is available.
研究动机与目标
- 通过降低计算和内存需求来推动硬件友好的 CNN 部署。
- 开发一个后训练量化与微调工具,将浮点 CNN 转换为定点表示。
- 将动态定点作为在大规模网络中保持准确性的策略进行探索。
- 量化比特宽度的降低如何影响卷积层和全连接层的准确性进行量化。
- 提供一个开源解决方案,适用于 Caffe,面向加速器的 CNN 压缩。
提出的方法
- 将浮点网络量化为定点,采用四舍五入最近邻映射。
- 分析层激活以确定足够的整数部分以避免饱和。
- 执行二分搜索以找到卷积权重、层输出和全连接权重的最优比特宽度。
- 将每个网络层分成两组(权重和输出),使用独立的比特宽度以管理动态范围。
- 使用全精度影子权重和随机舍入来重新训练定点网络(微调)。
- 在前向传播时使用浮点累积,以实现硬件仿真精度并利用已优化的矩阵运算。
实验结果
研究问题
- RQ1在压缩大规模 CNN 时,带有动态定点的定点表示能否保持高准确性?
- RQ2卷积层与全连接层在比特宽度减少与分类准确性之间的权衡是什么?
- RQ3对于像 CaffeNet 和 GoogLeNet 这样的大型网络,动态定点与静态定点在保持准确性方面有何比较?
- RQ4后训练量化及随后的微调对多种架构的网络性能有何影响?
- RQ5在现代 CNN 中实现 8 位或更低表示且不显著损失准确性是否可行?
主要发现
- 动态定点在较低比特宽度下对大型网络的准确性保持显著优于静态定点。
- 卷积核和层激活可以量化为 8 位,跨网络的绝对准确率损失约为 0.3%。
- 全连接层参数更为敏感,在 8 位时绝对准确率损失高达 0.9%。
- LeNet 的权重可裁剪到 2 位,准确率损失低于 0.4%。
- 五个网络(LeNet、CIFAR-10、CaffeNet、GoogLeNet、SqueezeNet)可微调至 8 位动态定点,较浮点基线的准确率下降小于 2.3%。
- Ristretto 实现显著的硬件效益,包括约 4–8 倍的内存带宽降低和 4–8 倍的片上参数数量增加,且没有解压缩开销。
更好的研究,从现在开始
从论文设计到论文写作,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。