鲁 冰 (《电子产品世界》编辑)
本文引用地址:http://www.eepw.com.cn/article/201909/405225.htmAI(人工智能)在M级的便宜的小器件上能不能落地?它需要什么资源,性能又怎么样?不久前,Arm中国携手恩智浦半导体在全国进行了巡回讲演。Arm中国高级市场经理Eric Yang分享了AI的基础知识,分析认为边缘AI可以通过在MCU这样的小芯片上实现,并推介了Arm的软件中间件NN——可以有效地对接算法和具体芯片,最后列举出了Arm MCU的应用案例。
1 边缘AI潜力巨大
AI有没有前途?
前两年AI非常火,AI公司支付的薪水很高。不过,2019年上半年以来,很多AI公司活得并不是很好。AI到底有没有机会?还需不需要关注?
如果借鉴历史,大约在5亿年前是单细胞生物,之后生物学上出现了寒武纪大爆发,产生了大量的新生物,其中带智能的生物慢慢进化出来。
现在从嵌入式或者产业角度来看,有点类似于寒武纪的前夕。如果从身边去观察,会发现无论是生活还是工作环境安装了很多传感器,而且传感器有越来越多的趋势。Arm的孙正义先生认为,现在还是百亿级、千亿级传感器的量,到2025年会有约1万亿的设备连上传感器,相当于2025年时到了寒武纪大爆发时期。
不过,那么多传感器相连,如果都靠传统的计算方式,即完全是靠你的算法或控制去实现一些功能/性能的时候,是有很大的瓶颈的。所以大量传感器可能会采用AI技术,一部分AI在云端,更多的是在嵌入式端。
2 AI中遇到的概念
AI、机器学习(ML)、深度学习(DL),这些概念到底什么关系?
AI是用机器来模拟人的思维习惯,让机器来达到人的决策的能力。要实现这一功能,就需要让机器做学习,这主要是通过概率论、统计论之类的方法,让机器找到算法,以实现机器能够学习这样的功能(如图1)。
实现机器学习里面有种方法叫深度学习。深度学习相当于你准备大量的数据,然后放到那个模型里边去,让它学会“感知+判断+思维”的能力。在深度学习下面,会有我们经常听到的算法,诸如CNN、RNN等。
3 CNN
在机器学习方面有两个方面需要去理解:训练和推断。第一是若在云端,叫训练,云端需要有巨大的数据量做训练;第二是设备端。设备端主要是做推断,即把云端训练好的模型思维方式下载到设备端,设备端再根据获得的信号得出一个推断的结果。
训练需要大量的数据,需要非常高的性能、大量的带宽去实现。所以一般要在服务器、GPU、加速卡上运行。
在设备端,因为已经有现成的训练模型,所以只做判断/推断,相对来讲要考虑的地方较为简单,例如性能方面,中低端的性能就可实现;效率方面,包括成本效率、功耗效率;再有,因为设备端涉及到联网,还要有安全隐私的考虑。
那么,哪些功能适合放在设备端或服务器端/云端?如图2,分别从AI的3个典型应用——视觉、音频以及健康管理来分析。图2左都是大型的机器学习,在服务器上面,图2右是设备端可以实现的应用与技术。
以视觉来看,首先,如果做具体物体的识别,例如,这是一条狗,这条是什么品种的狗,或者人脸识别,这种方式基本上放在服务器端。如果做类的识别,例如是狗、车还是飞机,这种识别就可以放在设备端了。CIFAR-10就是一种常用来做的标准模型。
例如在音频方面,如果只是做一个关键字的识别,或简单的一个命令的识别,可以放在设备端;如果是做语义的识别(例如你讲一句话,让机器知道你的意思,回答你下一句话),通常放在云端/服务器端。
同样,在健康管理方面,如果让手机、手环或智能手表做一个动作的识别,例如解释你是在走路、跑步还是蹲下,这可在设备端实现;如果要是做具体的疾病识别,要放在服务器端实现。
在嵌入式系统里面,做ML要考虑哪些因素?列表如表1所示。
首先在系统层,你要考虑到效率,因为嵌入式设备一般都会有成本的考虑,因为量非常大,布设的端点非常多。另外是功耗的考虑,有的设备涉及到电池供电。之后还有带宽,因为需要跟服务器/云去通讯。最后还需要考虑到隐私和加密。
在AI部分,可能你要考虑到的你输入的种类、参数、转换的效率、你要得到结果的精度、你所选用的设备的算法,或者你要达到这样精度要消耗的内存资源。
在ML部分经常听到一些算法,诸如CNN、DNN、RNN、LSTN。这些算法对应的常用的应用场景,例如CNN适合视觉识别、图片识别,DNN比较适合语音识别。
表2是Arm做的不同ML算法在不同的内存资源和CPU资源情况下得到的结果。
可见准确度、消耗的资源跟你的系统呈对应关系。例如分散式CNN算法可以达到95%的准确度,最小的时候可能只占了不到40 kB内存,消耗的CPU运算能力只有5.4MOps,这相当于人们常见的M0嵌入式设备就能运行起来。可见,在Arm生态系统里,从M0到M7,都可以在这些芯片上面去实现ML功能(如图3)。这颠覆了人们以前的观念——一定要有很大的GPU、服务器、手机平台等去做。
在硬件方面,Arm推动MCU芯片合作伙伴,加外设、加功能去做具体芯片出来。同样,在软件方面,Arm也提供了软件中间件,叫。
4 CMSIS-NN
该软件中间件的一个出发点是全球比较大的一些公司,包括国内的百度、阿里等经常无偿地提供机器学习的算法,让免费使用,以在其服务器上得到接口。但落地时候怎么办?因为不同公司会提供不同种类的算法,如果你对每种算法都去做支持,整个开发维护的工作量会非常大的,尤其对于嵌入式设备的厂家更是如此。
Arm在中间做了一个标准化的接口优化。上面直接去对接算法,下面去对接具体的硬件。这就把AI机器学习当做是一个以前的通讯库,或者是API来用,就可以了。图4是具体应用的流程。
CMSIS-NN在Cortex-M上来实现的软件库,是在2018年1月发布的,是开源的,你可以看到所有源代码,因此不会存在安全、自主可控的困惑。
不仅如此,现在NN 还 针 对 大 核 , 例 如系列以及Mali GPU,也是开源的,于2018年年中发布。
至此,CMSIS-NN可以运行在Arm所有CPU上。
相比只从那些算法公司下载开源程序、把它移植到Arm CPU上去运行,分别对卷积、池化以及激活函数方面做对比,对比图如图5。可见在池化时,用CMSIS-NN,可以达到4.6倍性能的提升。
CMSIS-NN效率很高。恩智浦半导体做的一个在相同的硬件环境下,CMSIS-NN与的性能对比。采用的芯片分别是Cortex-M4和的 芯 片 , 在 做 C I F A R - 1 0 时 ,(注:提供的嵌入式版本的CNN模型)用约120 ms才能完成某个识别;只需要20 ms左右。
CMSIS-NN一直在更新,基本上每个季度有优化版。
5 用CMSIS-NN做ML的应用案例
第一个应用是CMSIS-NN如何与恩智浦半导体的AI平台——eIQ平台对接(如图6)。它是把算法集成好,对用户来讲,首先是找到一个事先做好的模型,选择是否也需要做压缩的算法。如果不做压缩,就把它做模型转换到Cortex-M系列里的语言里。只需要把传感器的信号输入,恩智浦的芯片(例如:i.MX RT)就会做出一个决策。
实际上,用Arm MCU芯片做成的产品已有商用化的案例。美国的Amiko公司做的哮喘治疗器(如图7)采用ML算法来做监测、统计。它的原理比较简单,其中的传感器可以识别几个内容。第一,把设备从正常的状态颠倒过来,变成放到嘴里的状态。其次,它可以监测到吸入的流量大小。实现方法是:在云端做好了一个模型之后,它可以通过这模型来指导这个吸入哮喘剂是否正确,以及吸的量够不够。