我们目前生活在一个被机器学习模型包围的世界。在一天中,您使用这些模型的次数比您意识到的要多。诸如浏览社交媒体、拍照、查看天气等日常任务都依赖于机器学习模型。您甚至可能会看到此博客,因为机器学习模型向您推荐了此博客。
我们都知道训练这些模型的计算成本很高。但大多数时候,在这些模型上运行推理的计算成本也很高。我们使用机器学习服务的速度,我们需要足够快的计算系统来处理它。因此,大多数模型都运行在具有 CPU 和 GPU 集群(在某些情况下甚至是 TPU)的大型数据中心上。
大并不总是更好
当您拍照时,您希望机器学习的魔力立即发生。您不想等待图像发送到正在处理图像并再次发送回的数据中心。在这种情况下,您希望机器学习模型在本地运行。
当您说“Alexa”或“好的,Google”时,您希望设备立即响应您。等待设备将您的语音发送到对其进行处理的服务器,并检索信息。这需要时间并削弱用户体验。同样,在这种情况下,您希望机器学习模型在本地运行。
什么是 TinyML
TinyML 是机器学习和嵌入式系统的一个研究领域,它探索可以在微控制器等小型低功耗设备上运行的模型类型。它可以在边缘设备上实现低延迟、低功耗和低带宽模型推理。标准消费类 CPU 的功耗在 65 瓦到 85 瓦之间,标准消费类 GPU 的功耗在 200 瓦到 500 瓦之间,而典型的微控制器的功耗约为毫瓦或微瓦。这大约减少了一千倍的功耗。这种低功耗使得TinyML 设备可以在不插电的情况下使用电池运行数周、数月,在某些情况下甚至数年,同时在边缘运行 ML 应用程序。
机器学习的未来是微小而光明的
TinyML 的优点
- 低延迟:由于模型在边缘运行,因此无需将数据发送到服务器即可运行推理。这减少了输出的延迟。
- 低功耗:正如我们之前讨论的,微控制器的功耗非常低。这使得它们能够在不充电的情况下运行很长时间。
- 低带宽:由于数据不必不断发送到服务器,因此使用的互联网带宽较少。
- 隐私:由于模型在边缘运行,因此您的数据不会存储在任何服务器中。
TinyML的应用
通过总结和分析低功耗设备边缘的数据,TinyML 提供了许多独特的解决方案。尽管 TinyML 是一个新兴领域,但它已在生产中使用多年。“OK Google”、“Alexa”、“Hey Siri”唤醒词是 TinyML 的一个示例。在这里,设备始终处于开启状态,并正在分析您的声音以检测唤醒词。我将在这里添加一些 TinyML 的更多应用。
- 工业预测维护:机器很容易出现故障。在低功耗设备上使用 TinyML,可以持续监控机器并提前预测故障。这种预测性维护可以显着节省成本。澳大利亚初创公司 Ping Services 推出了一款物联网设备,该设备通过磁性连接到涡轮机外部并分析边缘的详细数据来自动监控风力涡轮机。该设备甚至可以在潜在问题发生之前向当局发出警报。
- 医疗保健: Solar Scare Mosquito 项目使用 TinyML 来遏制登革热、疟疾、寨卡病毒、基孔肯雅热等蚊媒疾病的传播。它的工作原理是检测蚊子的繁殖条件并搅动水以防止蚊子繁殖。它依靠太阳能运行,因此可以无限期地运行。
- 农业: Nuru 应用程序可帮助农民通过使用 TensorFlow Lite 在设备上运行机器学习模型拍摄照片来检测植物中的疾病。由于它可以在设备上运行,因此不需要互联网连接。这对于偏远农民来说是一个至关重要的要求,因为他们可能没有适当的互联网连接。
- 海洋生物保护:基于机器学习的智能设备用于实时监控西雅图和温哥华周围水道中的鲸鱼,以避免在繁忙的航道上发生鲸鱼袭击。
我该如何开始?
- 硬件: Arduino Nano 33 BLE Sense是用于在边缘部署机器学习模型的建议硬件。它包含一个运行频率为 64MHz 的 32 位 ARM Cortex-M4F 微控制器,具有 1MB 程序存储器和 256KB RAM。该微控制器提供足够的马力来运行 TinyML 模型。Arduino Nano 33 BLE Sense 还包含颜色、亮度、接近度、手势、运动、振动、方向、温度、湿度和压力传感器。它还包含一个数字麦克风和一个低功耗蓝牙 (BLE) 模块。该传感器套件对于大多数应用来说已经足够了。
- 机器学习框架:只有少数框架可以满足 TinyML 的需求。其中,TensorFlow Lite最受欢迎且拥有最多的社区支持。使用 TensorFlow Lite Micro,我们可以在微控制器上部署模型。
- 学习资源:由于TinyML是一个新兴领域,目前的学习资料并不多。但也有一些优秀的材料,例如 Pete Warden 和 Daniel Situnayake 的书“TinyML:在 Arduino 和超低功耗上使用 TensorFlow Lite 进行机器学习”、哈佛大学 Vijay Janapa Reddi 的 TinyML 课程以及 Digikey 关于 TinyML 的博客和视频。
结论
微控制器无处不在,它们收集大量数据。借助 TinyML,我们可以利用这些数据来构建更好的产品