什么是 tinyML(微型机器学习)?
微型机器学习 (tinyML) 是机器学习的一个分支,旨在将模型部署到微控制器和其他低功耗边缘设备。它将人工智能带到了联网系统的边缘,使得无需依赖云连接即可直接在设备上实时执行低延迟、高能效的推断成为了可能。边缘人工智能的范围更广,可以涵盖功能强大的边缘服务器和物联网设备。与之不同的是,tinyML 面向功耗最低的设备,这些设备通常在毫瓦级的功率预算下运行。对于此领域的工程师,他们主要关注如何优化算法和模型,以在保持性能的同时,最大限度减少功耗和占用空间,从而在最小的设备和传感器中实现智能功能。
tinyML 工作流包含以下基本阶段:
- 模型开发和训练:使用预处理数据训练所选的模型,采用迁移学习或数据增强等方法来实现所需的准确性,同时考虑到目标设备的限制。
- 模型优化和评估:优化经过训练的模型以使资源得到更高效的利用,采用量化、剪枝、投影和数据类型转换等方法来减少内存和计算需求,而不牺牲重要的准确性。
- 部署:将优化的模型部署到目标设备上,确保该模型能够实时执行低延迟的推断。
- 测试和验证:使用有代表性的数据在目标设备上测试和验证部署的模型,以验证该模型在真实场景中的性能,并确定任何潜在问题或限制。
使用 MATLAB 和 Simulink 进行 tinyML
MATLAB® 提供了高级编程环境,用于机器学习算法的原型构建和试验。而 Simulink® 提供了模块图环境,用于设计和仿真系统模型,以便于在迁移到硬件之前进行迭代和验证。下面详述了 MATLAB 和 Simulink 中一些支持 tinyML 工作流的功能。
- 模型开发和训练
要开发和训练 tinyML 网络,您可以使用 MATLAB 和 Simulink,它们通过 App 以及高级语言和模块图建模环境提供机器学习和深度学习。您还可以使用 Deep Learning Toolbox™ 从 TensorFlow™、PyTorch® 和 ONNX 导入网络,以加速您的网络开发和训练。
- 模型优化
要针对资源受限的边缘设备优化您的机器学习模型,您可以使用 Deep Learning Toolbox。MATLAB 和 Simulink 包括用于模型量化、投影、剪枝和数据类型转换的工具,使您能够在减少模型的内存占用量和计算需求的同时,保持可接受的准确性。这有助于在低功耗设备上高效执行模型,而不会牺牲其性能。
- 代码生成和部署
您可以使用 Embedded Coder
®
从经过训练的模型中生成优化的 C/C++ 代码。生成的代码可以包括处理器特定的优化和设备驱动程序,它们可以直接部署在微控制器或嵌入式系统上,从而实现 tinyML 的高效部署。MathWorks 与多家半导体公司合作,支持各种常见的微控制器平台,使开发者可以轻松部署到您的特定硬件。 - 实时测试和验证
硬件在环 (HIL) 仿真使您能够实时仿真和测试 tinyML 模型。这样,在部署到硬件之前,您就可以在表示物理系统的虚拟实时环境中验证模型的性能了。MATLAB 和 Simulink 支持仿真和部署之间的集成,这有助于通过有针对性的硬件支持包 (HSP) 确保得到可靠且准确的结果。