《Small Reals Representations for Deep Learning at the Edge: A Comparison》(一)
基于论文《Small Reals Representations for Deep Learning at the Edge: A Comparison》:
1. 论文的主要内容和研究方向
这篇论文主要聚焦于深度神经网络(DNN)在边缘计算设备上的低精度数值表示问题。作者系统比较了多种小实数(Small Reals)表示方式,包括bfloat、flexpoint、logarithmic numbers以及posit,目标是寻找在边缘设备上既能降低存储、计算和能耗成本,又能保持较高推理精度的方法。研究方向围绕以下几点:
- 在存储受限、内存受限、计算力受限的设备上部署DNN。
- 比较传统浮点数(IEEE 754 binary32)与各种低精度实数格式(16-bit或更小)在推理精度与推理时间上的表现。
- 探索posit数在深度学习任务中的应用潜力。
2. 研究方法介绍(含截图)
论文的方法分为以下几个部分:
2.1 DNN优化综述
作者首先回顾了适配边缘设备的各类DNN优化方法,包括:
- 网络剪枝(Pruning):删除不重要的连接减少计算量(见文中2.1节)。
- 量化(Quantization):将权重、激活、甚至梯度压缩为小整数或二进制表示(见文中2.2节)。
- 小实数表示(Small Reals):继续保留实数域表达,使用更小位宽(见文中2.3节)。
2.2 替代浮点表示方法分析
分别介绍了:
- bfloat16/bfloat8
- flexpoint(共享指数块浮点)
- 对数数(Logarithmic Numbers)
2.3 posit格式详细研究
重点介绍了posit格式的内部结构、运算特性(如快速激活函数近似)、以及作者自主开发的cppPosit库。
【截图:Posit格式内部结构】
来自论文 Fig 4.1(解释 posit 的 regime、exponent 和 fraction 字段)
2.4 实验设置
- 在Raspberry Pi 3B平台上部署。
- 测试网络:LeNet-5、EfficientNetB0、SSD300。
- 测试数据集:MNIST、GTSRB、CIFAR-10、ImageNetV2、Pascal VOC 2007。
- 比较标准:准确率变化,推理时间变化。
3. 研究结果分析
3.1 主要实验数据总结
小数据集(LeNet-5 + MNIST/GTSRB/CIFAR10):
- posit16 几乎与 binary32 精度相同,准确率损失小于 0.5%。
- posit8 明显优于 bfloat8(特别是 bfloat8因仅有2位小数,导致大幅精度下降)。
格式 | MNIST | GTSRB | CIFAR10 |
---|---|---|---|
binary32 | 98.86% | 91.9% | 83.5% |
posit16,1 | 98.83% | 91.8% | 83.5% |
posit8,0 | 98.34% | 90.4% | 78% |
bfloat8 | 69.57% | 80.45% | 67.5% |
大数据集(EfficientNetB0 + ImageNetV2 / SSD300 + VOC2007):
- posit16损失约2个百分点,bfloat16损失更多(最高7个百分点)。
格式 | ImageNetV2准确率 | SSD300+VOC07 mAP |
---|---|---|
binary32 | 81.9% | 80.39% |
posit16,2 | 79.7% | 78.49% |
bfloat16 | 78.9% | 73.29% |
3.2 推理速度比较
- bfloat格式推理更快,因为bfloat与IEEE float转换简单(移位操作)。
- posit需要复杂编码/解码,推理速度略慢。
【截图:推理时间统计表 Table 3】
3.3 对比实验涉及的其他项目开源地址
- cppPosit库(用于 posit 实现):https://github.com/eruffaldi/cppPosit
- tiny-dnn库(轻量DNN框架):https://github.com/tiny-dnn/tiny-dnn
- TensorFlow框架(集成posit格式改造版):https://www.tensorflow.org/
4. 论文出处及会议/期刊等级
- 论文题目:Small Reals Representations for Deep Learning at the Edge: A Comparison
- 作者:Marco Cococcioni, Federico Rossi, Emanuele Ruffaldi, Sergio Saponara
- 发表会议:CoNGA 2022 (Conference on Next Generation Arithmetic)
- 发表在:Lecture Notes in Computer Science (LNCS) 第13253卷
- 出版社:Springer Nature Switzerland AG
- DOI链接:10.1007/978-3-031-09779-9_8
会议/期刊等级:
- CoNGA 会议目前暂无CCF评级,但LNCS系列属于国际较高水平的会议论文集,通常视为C类国际会议。
- LNCS系列属于SCI/Scopus收录,部分会议论文根据具体领域影响因子,有时视为四区期刊水平(部分偏弱的会议)。
5. 有无相关的开源代码网站
是的,本文作者开发并开源了cppPosit库:
- cppPosit地址:https://github.com/eruffaldi/cppPosit
- 特点:纯C++头文件实现,兼容Eigen与C++标准数学库,便于无侵入式集成。
6. 引用原文出处示例
- "In order to support posit numbers, in the past, we developed the cppPosit library."
- "We integrated the posit library into tinyDNN and TensorFlow frameworks."
- "From the results we saw that 16-bit posits and bfloat can match the baseline IEEE 32-bit float accuracy."
这是论文中不同数值格式(binary32、posit8、bfloat8)在小型数据集(MNIST、GTSRB、CIFAR10)上的测试准确率对比图。从图中可以非常直观看出:
- posit8 的性能远优于 bfloat8,在低位宽条件下损失非常小。
- bfloat8 在MNIST和CIFAR10上准确率下降明显,尤其是CIFAR10。
- posit8 几乎能保持接近binary32(即标准32位浮点数)的准确率水平。