開宗明義,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,另一是透過加速度傳感器的搖晃數值辨識出人的手勢動作,三是辨識影像中有沒有人。
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%。
Edge Impulse獨有的EON編譯程序可讓TinyML更快、更精準、用更少內存資源。
OpenMV
OpenMV完全專攻視覺取向的AI/ML應用,包含靜態圖片、動態影像,應用主要是視覺中的物體辨識、物品分類。OpenMV有官方搭配的系統板OpenMV Cam H7,芯片核心為Cortex-M7,需使用MicroPython開發。
有趣的是,OpenMV Cam H7硬件其實也支持TFLite Micro與Edge Impulse,官方軟硬件并非強制綁黏。
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日體驗)一起開發。
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。
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等。
測試結果的好壞指標包含得到推論結果所需要的時間愈快愈好(延遲,單位:毫秒)、推論結果愈精準愈好(精確度,單位:百分比)、耗用的電能愈低愈好(單位:微焦耳)。
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硬件加速電路,兼顧速度與功耗,就更理想了。
審核編輯:湯梓紅
?
評論
查看更多