開宗明義,TinyML并非指單一的具體技術(shù),而是一個(gè)概括詞,舉凡能在微控制器(MCU)芯片上實(shí)現(xiàn)AI/ML推論工作的,即算是TinyML。TinyML的益處與Edge AI近似,主要有四:
1.更快獲得推論結(jié)果,省去透過Internet與云端機(jī)房溝通信息(快速)
2.Internet通訊若以流量計(jì)費(fèi),能因此節(jié)省通訊花費(fèi)(節(jié)費(fèi))
3.Internet擁塞、斷線故障時(shí),推論工作不會因此受影響(可靠)
4.信息較少在Internet上傳遞,有助提升數(shù)據(jù)安全性(安全)
眾所皆知,MCU運(yùn)算力有限(相對于IoT網(wǎng)關(guān)、手機(jī)、計(jì)算機(jī)),而AI/ML向來耗用運(yùn)算力,如此TinyML的技術(shù)主張豈不矛盾?事實(shí)上,MCU的運(yùn)算力也非如刻板印象中那樣一直不堪,MCU運(yùn)算力也在提升,如此可用來執(zhí)行簡單(相對于云端機(jī)房、邊緣運(yùn)算)的AI/ML推論工作。
例如在邊緣運(yùn)算系統(tǒng)上可執(zhí)行高分辨率的影像辨識,在MCU上可執(zhí)行簡易的物體形貌、顏色辨識;或在邊緣運(yùn)算系統(tǒng)上可執(zhí)行完整自然語言處理(NLP)的語音識別,而在MCU上可實(shí)現(xiàn)簡單的話語中關(guān)鍵詞詞辨識。
不過,無論是邊緣運(yùn)算(Edge AI)或MCU(TinyML),均是以AI/ML推論工作為主,有關(guān)AI/ML的模型學(xué)習(xí)訓(xùn)練與驗(yàn)證,仍是在運(yùn)算力較充沛的數(shù)據(jù)中心或高階桌上系統(tǒng)上進(jìn)行。
TinyML軟件框架、平臺
Google TensorFlow Lite for Microcontrollers
要實(shí)現(xiàn)TinyML,首要癥結(jié)是軟件,目前已有多家業(yè)者提出TinyML軟件方案,例如Google的TensorFlow Lite for Microcontrollers/TensorFlow Lite Micro(簡稱TFLiteMicro),顧名思義是原來TensorFlow Lite的更減肥版,事實(shí)上TensorFlow Lite本身自TensorFlow減肥而來。TensorFlow Lite用于網(wǎng)關(guān)或手機(jī)等電力、運(yùn)算力受限的裝置上,TensorFlow則用于電力、運(yùn)算力充沛的數(shù)據(jù)中心云端機(jī)房。
TFLite Micro使用C++語言撰寫AI/ML程序,程序可在Cortex-M系列的MCU上執(zhí)行, 2021年時(shí)已能支持11種MCU系統(tǒng)開發(fā)板。TFLiteMicro也隨開發(fā)工具包提供幾個(gè)范例程序,一是可以辨識出話語中是否有人說Yes或No,另一是透過加速度傳感器的搖晃數(shù)值辨識出人的手勢動作,三是辨識影像中有沒有人。
TensorFlow Lite for Microcontrollers技術(shù)范例:講Yes亮黃燈,講No亮綠燈
Edge Impulse
相對于TFLite Micro需要自行下載安裝,Edge Impulse平臺則是登入網(wǎng)站就可使用,可以直接在上頭訓(xùn)練、驗(yàn)證模型,最后將完成的模型程序放入MCU內(nèi)(文雅的說法是安裝install、布建deploy),由MCU負(fù)責(zé)推論執(zhí)行。
Edge Impulse的服務(wù)分成免費(fèi)的開發(fā)者版與收費(fèi)的企業(yè)版,開發(fā)者版最多只能建立5個(gè)開發(fā)項(xiàng)目及每月使用25分鐘的在線運(yùn)算,收費(fèi)版沒有項(xiàng)目數(shù)目限制且有1萬分鐘運(yùn)算時(shí)間,并可使用進(jìn)階功能。
Edge Impulse有一個(gè)特點(diǎn)是具有邊緣優(yōu)化神經(jīng)(EdgeOptimised Neural, EON)編譯程序,宣稱以該編譯程序編譯出來的神經(jīng)網(wǎng)絡(luò)推論模型,與TFLite Micro相比,可以少使用25~55%的RAM內(nèi)存與少使用35%的儲存空間。Edge Impulse目前支持13款開發(fā)板。
另外Edge Impulse也在其官方Blog上發(fā)表技術(shù)實(shí)證專文,運(yùn)用他們的數(shù)字信號處理區(qū)塊(DSP Block)來對聲音進(jìn)行推論前的前置處理,可以更快完成推論、更精準(zhǔn)推論,以鳥叫聲辨識為例,速度快48%,精準(zhǔn)度增7%。
Edge Impulse獨(dú)有的EON編譯程序可讓TinyML更快、更精準(zhǔn)、用更少內(nèi)存資源。
OpenMV
OpenMV完全專攻視覺取向的AI/ML應(yīng)用,包含靜態(tài)圖片、動態(tài)影像,應(yīng)用主要是視覺中的物體辨識、物品分類。OpenMV有官方搭配的系統(tǒng)板OpenMV Cam H7,芯片核心為Cortex-M7,需使用MicroPython開發(fā)。
有趣的是,OpenMV Cam H7硬件其實(shí)也支持TFLite Micro與Edge Impulse,官方軟硬件并非強(qiáng)制綁黏。
OpenMV IDE整合開發(fā)環(huán)境畫面。
Arm FVP、Arm ML embeddedevaluation kit
針對MCU的程序開發(fā)Arm的方案為FVP(Fixed Virtual Platform),并與Corstone-300、Corstone-700兩參考平臺對應(yīng),前者使用Cortex-M55核心,后者則時(shí)為Cortex-A32,兩者均要求于IoT應(yīng)用領(lǐng)域,但TinyML較偏向于Corstone-300/Cortex-M55。
以Corstone-300為基礎(chǔ),Arm也延伸提供Arm ML embedded evaluation kit機(jī)器學(xué)習(xí)嵌入式評估軟件套件,搭配Arm本有的Arm MSP3FPGA官方開發(fā)板,開發(fā)者可先行評估自己的設(shè)計(jì)是否合乎TinyML應(yīng)用的需求。
另外,Arm ML embedded evaluation kit也支持Arm Ethos-U55核心為主的MCU開發(fā)評估。ArmEthos-U55核心為NPU神經(jīng)處理單元,是針對ML應(yīng)用需求而提出的MCU核心。
Arm ML embedded evaluation kit基本上也是要用及TFLiteMicro,但增加提供相關(guān)驅(qū)動程序以支持呼應(yīng)TFLite Micro,且套件內(nèi)也提供幾個(gè)ML范例程序,如影像中的物品辨識、錄音中的關(guān)鍵詞詞辨識、把錄音辨識后產(chǎn)生文字、偵測錄音中的不正常行為等,比較多在聲音應(yīng)用上。
附帶一提的,F(xiàn)VP為開放免費(fèi),可同時(shí)搭配Arm的專業(yè)開發(fā)工具Keil MDK(需付費(fèi),但可30日體驗(yàn))一起開發(fā)。
Arm針對Corstone-300的FVP架構(gòu)圖。
書籍、課程、社群、效能指標(biāo)逐一到位
TinyML相關(guān)軟件的到位,雖是推動TinyML最關(guān)鍵的一環(huán),但依然需要相關(guān)配套,這些配套也已逐一到位,例如Arduino基金會運(yùn)用本有的Arduino Nano 33 BLE Sense board開發(fā)板(31.1美元),搭配攝影機(jī)硬件與TFLiteMicro軟件,以此構(gòu)成TinyML套件:Arduino Tiny Machine Learning Kit(49.9美元)。
有了套件若不知如何使用,在edX學(xué)習(xí)網(wǎng)站上還有一系列由哈佛大學(xué)開設(shè)的課程可參考(可免費(fèi)上課,但認(rèn)證要錢)。另外,也開始有外文書籍介紹TinyML,如TinyML: Machine Learning with TensorFlow Lite on Arduino andUltra-Low-Power Microcontrollers。
edX上哈佛大學(xué)開設(shè)的TinyML課。
進(jìn)一步的,也有TinyML的社群團(tuán)體出現(xiàn),稱為tiny基金會,去年已舉辦TinyML Summit峰會,中東地區(qū)技術(shù)論壇,以及挑戰(zhàn)賽Eyes on Edge: tinyML Vision Challenge,與視覺相關(guān)的ML競賽。
更重要的是,產(chǎn)業(yè)聯(lián)盟ML Commons過去就針對學(xué)習(xí)與推論而分別推出效能標(biāo)竿測試MLPerf,之后又各自細(xì)分,學(xué)習(xí)方面有學(xué)習(xí)與高效能運(yùn)算系統(tǒng)(HPC)的學(xué)習(xí),推論也分成數(shù)據(jù)中心、邊緣、行動等,最新的是針對TinyML提出Tiny版標(biāo)竿測試標(biāo)準(zhǔn),明顯呼應(yīng)TinyML時(shí)代的到來。
與之前其他標(biāo)竿測試相同的,分成開放測試與封閉測試,目前僅一套系統(tǒng)參與開放測試,另有五套參與封閉測試,測試項(xiàng)主要有:Visual Wake Words、Image Classification、Keyword Spotting、Anomaly Detection等。
送測系統(tǒng)使用的MCU核心包含Cortex-A9雙核、Cortex-M0、Cortex-M4、Cortex-A72四核(其實(shí)就是拿RPi 4直接上陣),軟件則有前述的TFLite Micro、修改版的TFLite Micro、TensorFlow+Syntiant官方開發(fā)工具包、LEIP Framework、hls4ml等。
測試結(jié)果的好壞指標(biāo)包含得到推論結(jié)果所需要的時(shí)間愈快愈好(延遲,單位:毫秒)、推論結(jié)果愈精準(zhǔn)愈好(精確度,單位:百分比)、耗用的電能愈低愈好(單位:微焦耳)。
MLPerf Inference Tiny封閉測試0.5版的目前成績。
回頭談硬件
理論上,TinyML軟件要能直接在現(xiàn)行各種MCU上直接適用執(zhí)行,但實(shí)務(wù)上有困難,前述的TFLite Micro與Edge Impulse目前各自支持如下的10余款系統(tǒng)板:
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開發(fā)板,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的系統(tǒng)板也支持TinyML,其核心為Cortex-M0+,或有SeeedStudio的Wio Terminal與SeeeduinoXIAO,核心分別為Cortex-M4F、Cortex-M0+。
由上述可知,想執(zhí)行TinyML也不是4-bit、8-bit MCU可以的,16-bit或可能可以但16-bit MCU未曾有明顯的產(chǎn)業(yè)主流架構(gòu),因此幾乎都要32-bit Cortex-M系列才成,最低要Cortex-M0,跳過少數(shù)使用的M3,幾乎都是M4以上的水平。
進(jìn)一步的,若有處理器取向的Cortex-A系列核心,或有硬件的浮點(diǎn)運(yùn)算單元(FPU),或有數(shù)字信號處理器(DSP),以及較高的運(yùn)作頻率等則更好,未來若有新MCU直接內(nèi)建AI/ML硬件加速電路,兼顧速度與功耗,就更理想了。
審核編輯:湯梓紅
?
評論
查看更多