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