TinyML:下一轮人工智能革命
为什么要做量化?假定对于一台 Arduino Uno,使用 8 位数值运算的 ATmega328P 微控制器。在理想情况下要在 Uno 上运行模型,不同于许多台式机和笔记本电脑使用 32 位或 64 位浮点表示,模型的权重必须以 8 位整数值存储。通过对模型做量化处理,权重的存储规模将减少到 1/4,即从 32 位量化到 8 位,而准确率受到的影响很小,通常约 1-3%。 图 7 8 位编码过程中的量化误差示意图,进而将用于重构 32 位浮点数。图片来源:《[TinyML](https://tinymlbook.com/)》一书。 由于存在 量化误差),可能会在量化过程中丢失某些信息。例如在基于整型的平台上,值为 3.42 的浮点表示形式可能会被截取为 3。为了解决这个问题,有研究提出了量化可感知(quantization-aware,QA)训练作为替代方案。QA 训练本质上是在训练过程中,限制网络仅使用量化设备可用的值(具体参见 Tensorflow 示例)。 霍夫曼编码 编码是可选步骤。编码通过最有效的方式来存储数据,可进一步减小模型规模。通常使用著名的 霍夫曼编码。 编译 对模型量化和编码后,需将模型转换为可被轻量级网络解释器解释的格式,其中最广为使用的就是 TF Lite(约 500 KB 大小)和 TF Lite Micro(约 20 KB)。模型将编译为可被大多数微控制器使用并可有效利用内存的 C 或 C++ 代码,由设备上的解释器运行。 图 8 TinyML 应用的工作流图。来源:Pete Warden 和 Daniel Situnayake 编写的《[TinyML](https://tinymlbook.com/)》一书。 大多数 TinyML 技术,针对的是处理微控制器所导致的复杂性。TF Lite 和 TF Lite Micro 非常小,是因为其中删除了所有非必要的功能。不幸的是,它们同时也删除了一些有用的功能,例如调试和可视化。这意味着,如果在部署过程中出现错误,可能很难判别原因。 另外,尽管模型必须存储在设备本地,但模型也必须要支持执行推理。这意味着微控制器必须具有足够大的内存去运行(1)操作系统和软件库;(2)神经网络解释器,例如 TF Lite);(3)存储的神经网络权重和架构;(4)推理过程中的中间结果。因此,TinyML 方向的研究论文在给出内存使用量、乘法累加单元(multiply-accumulate units,MAC)数量,准确率等指标的同时,通常还需给出量化算法的峰值内存使用情况。 为什么不在设备上训练? 在设备上进行训练会引入额外的复杂性。由于数值精度的降低,要确保网络训练所需的足够准确率是极为困难的。在标准台式计算机的精度下,自动微分方法是大体准确的。计算导数的精度可达令人难以置信的 10^{-16},但是在 8 位数值上做自动微分,将给出精度较差的结果。在反向传播过程中,会组合使用求导并最终用于更新神经参数。在如此低的数值精度下,模型的准确率可能很差。 尽管存在上述问题,一些神经网络还是使用了 16 位和 8 位浮点数做了训练。 第一篇研究降低深度学习中的数值精度的论文,是 Suyog Gupta 及其同事在 2015 年发表的“具有有限数值精度的深度学习”(Deep Learning with Limited Numerical Precision)。该论文给出的结果非常有意思,即可在几乎不降低准确率的情况下,将 32 位浮点表示形式降至 16 位固定点表示。但该结果仅适用于使用随机舍入(stochastic rounding)的情况,因为其在均值上产生无偏结果。 在 Naigang Wang 及其同事 2018 年发表的论文“使用 8 位浮点数训练深度神经网络”(Training Deep Neural Networks with 8-bit Floating Point Numbers)中,使用了 8 位浮点数训练神经网络。在训练中使用 8 位数值,相比在推理中要明显难以实现,因为需要在反向传播期间保持梯度计算的保真度(fidelity),使得在做自动微分时能够达到机器的精度。 计算效率如何? 可以通过定制模型,提高模型的计算效率。一个很好的例子就是 MobileNet V1 和 MobileNet V2,它们是已在移动设备上得到广泛部署的模型架构,本质上是一种通过重组(recast)实现更高计算效率卷积运算的卷积神经网络。这种更有效的卷积形式,称为深度可分离卷积结构(depthwise separable convolution)。针对架构延迟的优化,还可以使用 基于硬件的概要(hardware-based profiling) 和 神经架构搜索(neural architecture search) 等技术,对此本文将不做详述。 新一轮人工智能革命 在资源受限的设备上运行机器学习模型,为许多新的应用打开了大门。使标准的机器学习更加节能的技术进步,将有助于消除数据科学对环境影响的一些担忧。此外,TinyML 支持嵌入式设备搭载基于数据驱动算法的全新智能,进而应用在了从 预防性维护 到 检测森林中的鸟叫声 等多种场景中。 尽管继续扩大模型的规模是一些机器学习从业者的坚定方向,但面向内存、计算和能源效率更高的机器学习算法发展也是一个新的趋势。TinyML 仍处于起步阶段,在该方向上的专家很少。本文参考文献中列出了一些 TinyML 领域中的重要论文,建议有兴趣的读者去阅读。该方向正在快速增长,并将在未来几年内,成为人工智能在工业领域的重要新应用。请保持关注。
(编辑:应用网_阳江站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |