利用TinyML在MCU上实现AI/ML推论工作

控制/MCU

1876人已加入

描述

开宗明义,TinyML并非指单一的具体技术,而是一个概括词,举凡能在微控制器(MCU)芯片上实现AI/ML推论工作的,即算是TinyML。TinyML的益处与Edge AI近似,主要有四:

1.更快获得推论结果,省去透过Internet与云端机房沟通信息(快速)

2.Internet通讯若以流量计费,能因此节省通讯花费(节费)

3.Internet拥塞、断线故障时,推论工作不会因此受影响(可靠)

4.信息较少在Internet上传递,有助提升数据安全性(安全)

众所皆知,MCU运算力有限(相对于IoT网关、手机、计算机),而AI/ML向来耗用运算力,如此TinyML的技术主张岂不矛盾?事实上,MCU的运算力也非如刻板印象中那样一直不堪,MCU运算力也在提升,如此可用来执行简单(相对于云端机房、边缘运算)的AI/ML推论工作。

例如在边缘运算系统上可执行高分辨率的影像辨识,在MCU上可执行简易的物体形貌、颜色辨识;或在边缘运算系统上可执行完整自然语言处理(NLP)的语音识别,而在MCU上可实现简单的话语中关键词词辨识。

不过,无论是边缘运算(Edge AI)或MCU(TinyML),均是以AI/ML推论工作为主,有关AI/ML的模型学习训练与验证,仍是在运算力较充沛的数据中心或高阶桌上系统上进行。

TinyML软件框架、平台

Google TensorFlow Lite for Microcontrollers

要实现TinyML,首要症结是软件,目前已有多家业者提出TinyML软件方案,例如Google的TensorFlow Lite for Microcontrollers/TensorFlow Lite Micro(简称TFLiteMicro),顾名思义是原来TensorFlow Lite的更减肥版,事实上TensorFlow Lite本身自TensorFlow减肥而来。TensorFlow Lite用于网关或手机等电力、运算力受限的装置上,TensorFlow则用于电力、运算力充沛的数据中心云端机房。

TFLite Micro使用C++语言撰写AI/ML程序,程序可在Cortex-M系列的MCU上执行, 2021年时已能支持11种MCU系统开发板。TFLiteMicro也随开发工具包提供几个范例程序,一是可以辨识出话语中是否有人说Yes或No,另一是透过加速度传感器的摇晃数值辨识出人的手势动作,三是辨识影像中有没有人。

mcu

TensorFlow Lite for Microcontrollers技术范例:讲Yes亮黄灯,讲No亮绿灯

Edge Impulse

相对于TFLite Micro需要自行下载安装,Edge Impulse平台则是登入网站就可使用,可以直接在上头训练、验证模型,最后将完成的模型程序放入MCU内(文雅的说法是安装install、布建deploy),由MCU负责推论执行。

Edge Impulse的服务分成免费的开发者版与收费的企业版,开发者版最多只能建立5个开发项目及每月使用25分钟的在线运算,收费版没有项目数目限制且有1万分钟运算时间,并可使用进阶功能。

Edge Impulse有一个特点是具有边缘优化神经(EdgeOptimised Neural, EON)编译程序,宣称以该编译程序编译出来的神经网络推论模型,与TFLite Micro相比,可以少使用25~55%的RAM内存与少使用35%的储存空间。Edge Impulse目前支持13款开发板。

另外Edge Impulse也在其官方Blog上发表技术实证专文,运用他们的数字信号处理区块(DSP Block)来对声音进行推论前的前置处理,可以更快完成推论、更精准推论,以鸟叫声辨识为例,速度快48%,精准度增7%。

mcu

Edge Impulse独有的EON编译程序可让TinyML更快、更精准、用更少内存资源。

OpenMV

OpenMV完全专攻视觉取向的AI/ML应用,包含静态图片、动态影像,应用主要是视觉中的物体辨识、物品分类。OpenMV有官方搭配的系统板OpenMV Cam H7,芯片核心为Cortex-M7,需使用MicroPython开发。

有趣的是,OpenMV Cam H7硬件其实也支持TFLite Micro与Edge Impulse,官方软硬件并非强制绑黏。

mcu

OpenMV IDE整合开发环境画面。

Arm FVP、Arm ML embeddedevaluation kit

针对MCU的程序开发Arm的方案为FVP(Fixed Virtual Platform),并与Corstone-300、Corstone-700两参考平台对应,前者使用Cortex-M55核心,后者则时为Cortex-A32,两者均要求于IoT应用领域,但TinyML较偏向于Corstone-300/Cortex-M55。

以Corstone-300为基础,Arm也延伸提供Arm ML embedded evaluation kit机器学习嵌入式评估软件套件,搭配Arm本有的Arm MSP3FPGA官方开发板,开发者可先行评估自己的设计是否合乎TinyML应用的需求。

另外,Arm ML embedded evaluation kit也支持Arm Ethos-U55核心为主的MCU开发评估。ArmEthos-U55核心为NPU神经处理单元,是针对ML应用需求而提出的MCU核心。

Arm ML embedded evaluation kit基本上也是要用及TFLiteMicro,但增加提供相关驱动程序以支持呼应TFLite Micro,且套件内也提供几个ML范例程序,如影像中的物品辨识、录音中的关键词词辨识、把录音辨识后产生文字、侦测录音中的不正常行为等,比较多在声音应用上。

附带一提的,FVP为开放免费,可同时搭配Arm的专业开发工具Keil MDK(需付费,但可30日体验)一起开发。

mcu

Arm针对Corstone-300的FVP架构图。

书籍、课程、社群、效能指标逐一到位

TinyML相关软件的到位,虽是推动TinyML最关键的一环,但依然需要相关配套,这些配套也已逐一到位,例如Arduino基金会运用本有的Arduino Nano 33 BLE Sense board开发板(31.1美元),搭配摄影机硬件与TFLiteMicro软件,以此构成TinyML套件:Arduino Tiny Machine Learning Kit(49.9美元)。

有了套件若不知如何使用,在edX学习网站上还有一系列由哈佛大学开设的课程可参考(可免费上课,但认证要钱)。另外,也开始有外文书籍介绍TinyML,如TinyML: Machine Learning with TensorFlow Lite on Arduino andUltra-Low-Power Microcontrollers。

mcu

edX上哈佛大学开设的TinyML课。

进一步的,也有TinyML的社群团体出现,称为tiny基金会,去年已举办TinyML Summit峰会,中东地区技术论坛,以及挑战赛Eyes on Edge: tinyML Vision Challenge,与视觉相关的ML竞赛。

更重要的是,产业联盟ML Commons过去就针对学习与推论而分别推出效能标竿测试MLPerf,之后又各自细分,学习方面有学习与高效能运算系统(HPC)的学习,推论也分成数据中心、边缘、行动等,最新的是针对TinyML提出Tiny版标竿测试标准,明显呼应TinyML时代的到来。

与之前其他标竿测试相同的,分成开放测试与封闭测试,目前仅一套系统参与开放测试,另有五套参与封闭测试,测试项主要有:Visual Wake Words、Image Classification、Keyword Spotting、Anomaly Detection等。

送测系统使用的MCU核心包含Cortex-A9双核、Cortex-M0、Cortex-M4、Cortex-A72四核(其实就是拿RPi 4直接上阵),软件则有前述的TFLite Micro、修改版的TFLite Micro、TensorFlow+Syntiant官方开发工具包、LEIP Framework、hls4ml等。

测试结果的好坏指标包含得到推论结果所需要的时间愈快愈好(延迟,单位:毫秒)、推论结果愈精准愈好(精确度,单位:百分比)、耗用的电能愈低愈好(单位:微焦耳)。

mcu

MLPerf Inference Tiny封闭测试0.5版的目前成绩。

回头谈硬件

理论上,TinyML软件要能直接在现行各种MCU上直接适用执行,但实务上有困难,前述的TFLite Micro与Edge Impulse目前各自支持如下的10余款系统板:

TFLite Micro

•Arduino Nano 33 BLE Sense,nRF52840,Cortex-M4

•SparkFun Edge,Apollo3 Blue,Cortex-M4F

•STM32F746 Discovery套件,Cortex-M7

•Adafruit EdgeBadge,ATSAMD51J19,Cortex-M4

•Adafruit TensorFlow Lite for Microcontrollers套件,ATSAMD51J19

•Adafruit Circuit Playground Bluefruit,nRF52840,Cortex-M4

•Espressif ESP32-DevKitC

•Espressif ESP-EYE

•Wio Terminal:ATSAMD51,Cortex-M4F

•Himax WE-I Plus EVB Endpoint AI开发板,32-bit EM9D DSPwith FPUSynopsys DesignWare EM Software Development Platform

Edge Impulse

•ST B-L475E-IOT01A(IoT Discovery Kit),Cortex-M4

•Arduino Nano 33 BLE Sense,Cortex-M4

•Eta Compute ECM3532 AI Sensor,Cortex-M3+CoolFlux DSP

•Eta Compute ECM3532 AI Vision,同上

•OpenMV Cam H7 Plus,Cortex-M7

•Himax WE-I Plus,HX6537-A,32-bit EM9D DSP with FPU

•Nordic Semiconductor nRF52840 DK,Cortex-M4

•Nordic Semiconductor nRF5340 DK,Cortex-M33

•Silicon Labs Thunderboard Sense 2,Cortex-M4

•Sony’s Spresense,Cortex-M4F

•Arduino Portenta H7+Vision shield(preview support),Cortex-M7

•Raspberry Pi 4

•NVIDIA Jetson Nano,Cortex-A57

另外,Arduino基金会以树莓派RP2040芯片打造的Arduino Nano RP2040 Connect的系统板也支持TinyML,其核心为Cortex-M0+,或有SeeedStudio的Wio Terminal与SeeeduinoXIAO,核心分别为Cortex-M4F、Cortex-M0+。

由上述可知,想执行TinyML也不是4-bit、8-bit MCU可以的,16-bit或可能可以但16-bit MCU未曾有明显的产业主流架构,因此几乎都要32-bit Cortex-M系列才成,最低要Cortex-M0,跳过少数使用的M3,几乎都是M4以上的水平。

进一步的,若有处理器取向的Cortex-A系列核心,或有硬件的浮点运算单元(FPU),或有数字信号处理器(DSP),以及较高的运作频率等则更好,未来若有新MCU直接内建AI/ML硬件加速电路,兼顾速度与功耗,就更理想了。

审核编辑:汤梓红

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分