TinyML(微型机器学习)

什么是 TinyML(微型机器学习)?

微型机器学习 (TinyML) 是机器学习的一个分支,旨在将模型部署到微控制器和其他低功耗边缘设备。它将人工智能带到了联网系统的边缘,使得无需依赖云连接即可直接在设备上实时执行低延迟、高能效的推断成为了可能。边缘人工智能的范围更广,可以涵盖功能强大的边缘服务器和物联网设备。与之不同的是,TinyML 面向功耗最低的设备,这些设备通常在毫瓦级的功率预算下运行。对于此领域的工程师,他们主要关注如何优化算法和模型,以在保持性能的同时,最大限度减少功耗和占用空间,从而在最小的设备和传感器中实现智能功能。

TinyML 工作流包含以下基本阶段:

  • 模型开发和训练:使用预处理数据训练所选的模型,采用迁移学习或数据增强等方法来实现所需的准确性,同时考虑到目标设备的限制。
  • 模型优化和评估:优化经过训练的模型以使资源得到更高效的利用,采用量化、剪枝、投影和数据类型转换等方法来减少内存和计算需求,而不牺牲重要的准确性。
  • 部署:将优化的模型部署到目标设备上,确保该模型能够实时执行低延迟的推断。
  • 测试和验证:使用有代表性的数据在目标设备上测试和验证部署的模型,以验证该模型在真实场景中的性能,并确定任何潜在问题或限制。
移动机器人操作臂平台,在可能由 TinyML 工作流支持的边缘设备上采用实时人工智能决策。

MATLAB 和 Simulink 支持整个 TinyML 工作流,使得在边缘设计、测试和部署基于人工智能的系统成为了可能。

深度学习 Simulink 模块,包含通过假想线连接到微控制器的生成代码,表示部署 TinyML 应用的过程。

通过 MATLAB 和 Simulink 中的自动代码生成功能,可在嵌入式设备上对 TinyML 应用进行快速原型构建和部署,从而弥合理论与实践之间的差距。

使用 MATLAB 和 Simulink 进行 TinyML

MATLAB® 提供了高级编程环境,用于机器学习算法的原型构建和试验。而 Simulink® 提供了模块图环境,用于设计和仿真系统模型,以便于在迁移到硬件之前进行迭代和验证。下面详述了 MATLAB 和 Simulink 中一些支持 TinyML 工作流的功能。

  1. 模型开发和训练

    要开发和训练 TinyML 网络,您可以使用 MATLAB 和 Simulink,它们通过 App 以及高级语言和模块图建模环境提供机器学习和深度学习。您还可以使用 Deep Learning Toolbox™ 从 TensorFlow™、PyTorch® 和 ONNX 导入网络,以加速您的网络开发和训练。

  2. 模型优化

    要针对资源受限的边缘设备优化您的机器学习模型,您可以使用 Deep Learning Toolbox。MATLAB 和 Simulink 包括用于模型量化、投影、剪枝和数据类型转换的工具,使您能够在减少模型的内存占用量和计算需求的同时,保持可接受的准确性。这有助于在低功耗设备上高效执行模型,而不会牺牲其性能。

  3. 代码生成和部署

    您可以使用 Embedded Coder® 从经过训练的模型中生成优化的 C/C++ 代码。生成的代码可以包括处理器特定的优化和设备驱动程序,它们可以直接部署在微控制器或嵌入式系统上,从而实现 TinyML 的高效部署。MathWorks 与多家半导体公司合作,支持各种常见的微控制器平台,使开发者可以轻松部署到您的特定硬件。

  4. 实时测试和验证

    硬件在环 (HIL) 仿真使您能够实时仿真和测试 TinyML 模型。这样,在部署到硬件之前,您就可以在表示物理系统的虚拟实时环境中验证模型的性能了。MATLAB 和 Simulink 支持仿真和部署之间的集成,这有助于通过有针对性的硬件支持包 (HSP) 确保得到可靠且准确的结果。

另请参阅: AutoML, 嵌入式系统, 验证、确认和测试, 机器学习模型, 深度学习模型, MATLAB 代码生成