了解一个叫做微型机器学习(
tiny Machine Learning,TinyML)的机器学习分部,它是什么,它的应用,硬件和软件需求,以及它的好处。
机器学习(ML)是计算机科学中一个动态而强大的领域,它几乎渗透到我们与之互动的每一个数字事物中,无论是社交媒体、
手机、汽车,甚至是家用电器。
尽管如此,仍然有许多机器学习想要去的地方,但是它们很难到达。这是因为许多最先进的机器学习模型需要大量的计算资源和能量消耗来执行推理,这就是运行机器学习模型并对其输入的数据进行预测的行为。
对高性能计算资源的需求将许多机器学习应用程序限制在云中,在云中,数据中心级别的计算随时可用。
为了使机器学习能够扩大其影响范围,并在这一过程中开启一个应用的新时代,我们必须找到方法,在更小、更资源受限的设备上促进机器学习的推理。这种追求导致了微型机器学习或 TinyML (TinyML 基金会的商标名称,已经成为这项技术的代名词)的领域。
什么是微型机器学习或微型机器学习?
机器学习本身就是一种利用神经网络算法(如图1所示)来教计算机识别模式的技术。这可以推广到各种应用程序,包括对象识别和自然语言处理。
图1。一个感知器神经网络实例的可视化。
另一方面,TinyML 可以被定义为机器学习的一个子领域,该领域致力于在资源和能力受限的设备上实现机器学习应用程序。
TinyML 的目标是以一种极端的方式将机器学习带到边缘,电池供电、基于微控制器的嵌入式设备可以实时响应地执行机器学习任务。这种努力是非常多学科的,需要从硬件、软件、数据科学和机器学习等领域进行优化和最大化。
这个领域近年来在很大程度上获得了普及,因为其背后的硬件和软件生态系统已经成熟。
应用程序
不管你是否意识到,TinyML 可能是你日常生活的一部分。
TinyML 的应用包括:
日常生活中 TinyML 应用程序的一个例子是在 Google 和 Android 设备中使用的音频唤醒词检测模型。尾迹字检测组件的示例如图2所示。
为了在听到“ OK Google”这个词时“打开”,Android 设备使用一个14kb 的语音检测机器学习模型,该模型运行在 DSP 上。同样的情况也适用于其他的虚拟助手。
图2. 唤醒词应用程序的组件
来自哈佛大学学生的 TinyML 应用程序还包括汽车高速公路鹿检测(目标检测的一个例子)、基于音频的蚊子检测(音频识别的一个例子)等等。
在 TinyML 应用程序中使用的硬件
在硬件方面,TinyML 令人印象深刻,因为它的目标是在一些相当不起眼的硬件上工作。从某种角度来看,TinyML 的真正目标是以尽可能低的功率执行机器学习推理。
被广泛认为是 TinyML 之父的皮特 · 沃登在他关于这个主题的开创性著作中说,TinyML 应该以低于1兆瓦的电力消耗为目标。这个看似武断的数字的原因是1兆瓦的消耗量使得一个设备能够运行在一个标准的硬币电池,合理的寿命为几个月到一年。因此,当你考虑 TinyML 的
电源时,想想硬币电池、小型 Li-Po 电池和能量收集
元件设备。
从计算的角度来看,TinyML 不依赖于图形处理单元(gpu)、特定于应用程序的集成
电路(asic)和像大多数 ML 应用程序一样的微处理器。图3中显示了一个使用 Arduino 的示例学习工具包。
图3. TinyML 学习工具包的一个例子. 图片由 Arduino 提供
为了达到1兆瓦的目标,我们几乎完全局限于计算能力较差的硬件,如微控制器(mcu)和数字信号处理器(dsp)。这些设备通常是基于 Cortex-M 的,预计内存不超过几百 kB,闪存数量相当,时钟速度在几十兆赫兹。
除此之外,你可能期望在 TinyML 设备上找到的其他硬件包括传感器(如摄像头、麦克风) ,可能还有一些 BLE (低耗电蓝牙)连接。
软件: TensorFlow
在很多方面,TinyML 背后的工具和概念背后的软件是它最重要的特性。
一般来说,TinyML 开发中最流行和内置的生态系统是微控制器用 TensorFlow Lite (TF Lite Micro)。图4显示了 TF Lite Micro 上 TinyML 的通用工作流。
是专门为在资源有限的设备上进行机器学习任务而设计的,其中以 mcu 为重点。
TF Lite Micro 是一个基于 python 的环境,它充满了用于以下目的的内置库和工具包:
图4. TensorFlow Lite 微型工作流图片
正如我们将在后面的文章中谈到的,量化实际上是使 TinyML 成为可能的秘密武器。但简而言之,量化是一个降低模型权重精度(比特大小)的过程,并且存在偏差,使得模型占用的内存更少,运行速度更快,所需功耗更少ーー所有这些对精度的影响都是最小的!
使用量化模型,大多数 TinyML 设备的应用程序都是用 c/c + + 编写的。
TinyML 的好处
TinyML 的主要好处是它的可移植性。使用便宜的微控制器和微型电池以及低功耗意味着,使用 TinyML,人们可以很容易地将机器学习整合到几乎任何便宜的东西中。
除此之外,由于计算的本地特性,TinyML 还有提高安全性的好处ーー也就是说,数据不需要发送到云中。在物联网这样的应用程序中处理个人数据时,这一点非常重要。