边缘AI新方法TinyML,超低功耗,在边缘设备进行机器学习
一旦模型被量化和编码,它就被转换成一种格式,该格式可以被某种形式的小型神经网络解释器解释,其中最流行的可能是 TF Lite(大小约 500kb)和 TF Lite Micro(大小约 20kb)。然后将该模型被编译成 C 或 C++(大多数微控制器都能有效地使用内存),并由设备上的解释器运行。 TinyML 应用程序工作流(图源:https://tinymlbook.com/) TinyML 大部分技巧来自于处理复杂的微控制器世界。TF Lite 以及 TF Lite Micro 之所以这么小是因为所有不必要的功能都被删除了。不幸的是,一些有用的功能也被删除了,如调试和可视化。这意味着,如果在部署期间出现错误,就很难判断发生了什么。 此外,当模型存储在设备上时,还能进行推理。这意味着微控制器必须有足够大的内存来运行(1)操作系统和库;(2)神经网络解释器,如 TF Lite;(3)存储的神经权重和神经结构;(4)推理过程中的中间结果。因此,量化算法的峰值内存使用率,以及内存使用量、乘法累加单元(mac)的数量、精度等经常在 TinyML 研究论文中引用。 为什么不在设备上训练 在设备上进行训练会带来更多的「并发症」。由于数值精度降低,很难保证充分训练网络所需的准确率水平。标准台式计算机上的自动区分方法对于机器精度大约是准确的。以 10^-16 的精度计算导数令人难以置信,但是对 8 位值使用自动微分将会导致较差的结果。在反向传播过程中,这些导数会组合并最终用于更新神经参数。在如此低的数值精度下,模型的准确度可能很差。 话虽如此,神经网络已经使用 16 位和 8 位浮点数进行了训练。 2015 年,Suyog Gupta 及其同事发表的第一篇有关降低深度学习中的数值精度的论文是《Deep Learning with Limited Numerical Precision》。论文结果表明,32 位浮点表示形式可以减少为 16 位定点表示形式,而准确度几乎没有降低。但这是使用 stochastic rounding 算法的唯一情况, 因为通常来说,它会产生无偏结果。 2018 年,Naigang Wang 及其同事在其论文《Training Deep Neural Networks with 8-bit Floating Point Numbers》中使用 8 位浮点数训练了神经网络。由于需要在反向传播期间保持梯度计算的保真度(在使用自动微分时能够实现机器精度),因此使用 8 位数字来训练神经网络要比使用推理更有挑战性。 计算效率如何? 模型还可以进行裁剪,以提高计算效率。广泛部署在移动设备上的模型架构如 MobileNetV1 以及 MobileNetV2 就是很好的例子。这些本质上是卷积神经网络,它们重新定义了卷积运算,使其计算效率更高。这种更有效的卷积形式被称为深度可分离卷积。此外还可以使用基于硬件的配置以及神经架构搜索来优化架构延迟,但这些在本文中没有涉及。 下一次 AI 革命 在资源受限设备上运行机器学习模型的能力为许多新的可能性打开了大门。AI 的发展可能使标准机器学习更加节能,有助于减少人们对数据科学影响环境的担忧。此外,TinyML 允许嵌入式设备被赋予基于数据驱动算法的新智能,这些算法可以用于从预防性维护到森林中的鸟叫声检测等任何方面。 虽然一些 ML 从业者无疑会继续扩大模型的规模,一个新的趋势是开发更多具备内存、计算和能耗效率的机器学习算法。目前,TinyML 仍处于起步阶段,未来发展的空间还很大。
(编辑:应用网_阳江站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |