这些年随着AIOT(人工智能+物联网)的快速发展,以及MCU性能的提升(比如瑞萨推出的基于Cortex-M85内核的RA8系列MCU),在MCU上实现机器学习也变得越来越流行。
近些年,随着机器学习(ML, Machine Learning)的发展,出现了分歧,分为两个规模:
- 一个是传统的大型ML(云ML),模型越来越大,以实现准确性方面的最佳性能;
- 另外一个是新兴的微型机器学习(TinyML)领域,其中模型被缩小以适应受限设备(如MCU)以超低功耗执行。
由于TinyML是一个新兴领域,本篇文章将讨论在开发TinyML和当前行业标准纳入TinyML设备基准测试的系统时要考虑的各种参数。
关于TinyML
机器学习本身是一种利用称为神经网络的算法(如下图所示)来教计算机识别模式的技术, 这被外推到各种应用,包括对象识别和自然语言处理。
另一方面,TinyML可以认为是ML的一个子领域,它追求在廉价且资源和功率受限的设备上启用ML应用程序。
TinyML的目标是以一种极端的方式将机器学习带到边缘,比如电池供电的、基于微控制器(MCU)的嵌入式设备可以实时响应地执行ML任务。这项工作是非常多学科的,需要从硬件、软件、数据科学和机器学习等领域进行优化和最大化。
MCU中实现机器学习几大指标
上面我们了解了关于TinyML的内容,那么在MCU系统中实现机器学习,通常我们要考虑以下四个指标:准确性、功耗、延迟和内存要求。
准确性
在过去十年中,准确性一直被用作衡量机器学习模型性能的主要指标,较大的模型往往优于较小的。在TinyML系统中,准确性也是一个关键指标,但与云ML相比,与其他指标的平衡更为必要。
功耗
由于TinyML系统预计将长时间使用电池运行,因此考虑TinyML模型的功耗(通常为mW量级)至关重要。TinyML模型的功耗将取决于可用的硬件指令集,例如,由于采用了氦气指令集,ARM® Cortex®-M85比ARM® Cortex®-M7更节能。此外,功耗还取决于用于运行模型的底层软件,即推理引擎。例如,与参考内核相比,使用CMSIS-NN库可显著提高性能。
延迟
TinyML系统在端点运行并且不需要云连接,因此,此类系统的推理速度明显优于基于云的系统。在某些用例中,拥有超高的推理速度对于生产就绪至关重要(ms为单位)。与功耗指标类似,延迟取决于底层硬件和软件。
内存
内存是TinyML的一大障碍,它挤压了ML模型以适应资源受限的MCU(内存小于1MB的MCU更常见)。所以,降低内存需求一直是一个挑战。在模型开发过程中,会使用许多技术,例如:剪枝和量化。此外,底层软件发挥着重要作用,因为更好的推理引擎可以更有效地优化模型(更好的内存管理和用于执行层的库)。
由于这四个参数是相关的(往往是准确性和内存之间的负相关,但内存、延迟和功耗之间存在正相关),改进一个参数可能会影响其他参数。在开发TinyML系统时,仔细考虑这些因素很重要。一般的经验法则是根据用例定义所需的必要模型准确性,将各种开发的模型与其他三个指标进行比较。如下图所示,给定已训练的各种模型的虚拟示例。
不同标记形状表示具有不同超参数的模型架构(超参数,是指机器学习算法中的调优参数,需要人为设定)。这些超参数往往会随着架构大小的增加而提高准确性,但却牺牲了其他3个指标。根据系统定义的用例,显示一个典型的相关区域,由此,只有一个模型具有90%的精度,如果需要更高的精度,则应重新考虑整个系统以适应其他指标的增加。
在此,提一下“基准测试”(benchmark),它是设置可重复标准以比较不同技术、架构、软件等的必要工具。在AI/ML中,准确性是衡量不同模型的关键指标。在嵌入式系统中,常见的基准测试包括CoreMark和EEMBC的ULPMark用以测量性能和功耗。就TinyML而言,MLCommons作为行业标准越来越受到关注,它可以评估前面讨论的四个指标,并且由于TinyML系统的异构性,为了确保公平性,使用了4个具有4个不同AI模型的AI用例,并且必须达到一定水平的准确性才能获得基准测试资格。
目前,瑞萨基于Cortex-M85内核的MCU已经提供了TinyML的各种用例,感兴趣的读者可以进入他们官网进一步了解更多信息。
END
作者:瑞萨嵌入式小百科
来源:strongerHuang
推荐阅读
欢迎大家点赞留言,更多Arm技术文章动态请关注极术社区嵌入式客栈专栏欢迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。