MCU也能機器學習!TinyML新技術生態成形

作者:陸向陽

開宗明義,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(簡稱TFLite Micro),顧名思義是原來TensorFlow Lite的更瘦身版,事實上TensorFlow Lite本身自TensorFlow瘦身而來。TensorFlow Lite用於閘道器或手機等電力、運算力受限的裝置上,TensorFlow則用於電力、運算力充沛的資料中心雲端機房。

TFLite Micro使用C++語言撰寫AI/ML程式,程式可在Cortex-M系列的MCU上執行,今(2021)年2月時已能支援11種MCU系統開發板。TFLite Micro也隨開發套件提供幾個範例程式,一是可以辨識出話語中是否有人說Yes或No,另一是透過加速度感測器的搖晃數值辨識出人的手勢動作,三是辨識影像中有沒有人。

TensorFlow Lite for Microcontrollers技術範例:講Yes亮黃燈,講No亮綠燈(圖片來源:Google)

Edge Impulse

相對於TFLite Micro需要自行下載安裝,Edge Impulse平台則是登入網站就可使用,可以直接在上頭訓練、驗證模型,最後將完成的模型程式放入MCU內(文雅的說法是安裝install、佈建deploy),由MCU負責推論執行。

Edge Impulse的服務分成免費的開發者版與收費的企業版,開發者版最多只能建立5個開發專案及每月使用25分鐘的線上運算,收費版沒有專案數目限制且有1萬分鐘運算時間,並可使用進階功能。

Edge Impulse有一個特點是具有邊緣最佳化神經(Edge Optimised Neural, EON)編譯器,宣稱以該編譯器編譯出來的神經網路推論模型,與TFLite Micro相比,可以少使用25~55%的RAM記憶體與少使用35%的儲存空間。Edge Impulse目前支援13款開發板。

另外Edge Impulse也在其官方Blog上發表技術實證專文,運用他們的數位信號處理區塊(DSP Block)來對聲音進行推論前的前置處理,可以更快完成推論、更精準推論,以鳥叫聲辨識為例,速度快48%,精準度增7%。

Edge Impulse獨有的EON編譯器可讓TinyML更快、更精準、用更少記憶體資源。(圖片來源:Edge Impulse)

OpenMV

OpenMV完全專攻視覺取向的AI/ML應用,包含靜態圖片、動態影像,應用主要是視覺中的物體辨識、物品分類。OpenMV有官方搭配的系統板OpenMV Cam H7,晶片核心為Cortex-M7,需使用MicroPython開發。

有趣的是,OpenMV Cam H7硬體其實也支援TFLite Micro與Edge Impulse,官方軟硬體並非強制綁黏。

OpenMV IDE整合開發環境畫面。(圖片來源:OpenMV)

Arm FVP、Arm ML embedded evaluation 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 MSP3 FPGA官方開發板,開發者可先行評估自己的設計是否合乎TinyML應用的需求。

另外,Arm ML embedded evaluation kit也支援Arm Ethos-U55核心為主的MCU開發評估。Arm Ethos-U55核心為NPU神經處理單元,是針對ML應用需求而提出的MCU核心。

Arm ML embedded evaluation kit基本上也是要用及TFLite Micro,但增加提供相關驅動程式以支援呼應TFLite Micro,且套件內也提供幾個ML範例程式,如影像中的物品辨識、錄音中的關鍵字詞辨識、把錄音辨識後產生文字、偵測錄音中的不正常行為等,比較多在聲音應用上。

附帶一提的,FVP為開放免費,可同時搭配Arm的專業開發工具Keil MDK(需付費,但可30日體驗)一起開發。

Arm針對Corstone-300的FVP架構圖。(圖片來源:Arm)

書籍、課程、社群、效能指標逐一到位

TinyML相關軟體的到位,雖是推動TinyML最關鍵的一環,但依然需要相關配套,這些配套也已逐一到位,例如Arduino基金會運用本有的Arduino Nano 33 BLE Sense board開發板(31.1美元),搭配攝影機硬體與TFLite Micro軟體,以此構成TinyML套件:Arduino Tiny Machine Learning Kit(49.9美元)。

有了套件若不知如何使用,在edX學習網站上還有一系列由哈佛大學開設的課程可參考(可免費上課,但認證要錢)。另外,也開始有外文書籍介紹TinyML,如TinyML: Machine Learning with TensorFlow Lite on Arduino and Ultra-Low-Power Microcontrollers(博客來,792元新台幣)。

edX上哈佛大學開設的TinyML課。(圖片來源:edX)

進一步的,也有TinyML的社群團體出現,稱為tiny基金會,今年3月已舉辦TinyML Summit峰會,6月份則有中東地區技術論壇,8月即將有挑戰賽Eyes on Edge: tinyML Vision Challenge,為視覺相關的ML競賽。

更重要的是,產業聯盟ML Commons過去就針對學習與推論而分別推出效能標竿測試MLPerf,之後又各自細分,學習方面有學習與高效能運算系統(HPC)的學習,推論也分成資料中心、邊緣、行動等,最新的是針對TinyML提出Tiny版標竿測試標準,明顯呼應TinyML時代的到來,不過至2021年6月仍處於前期階段,為0.5版,尚未達正式的1.0版。

與之前其他標竿測試相同的,分成開放測試與封閉測試,目前僅一套系統參與開放測試,另有五套參與封閉測試,測試項主要有: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版的目前成績。(圖片來源:MLPerf)

回頭談硬體

理論上,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 DSP with 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與SeeedStudio Seeeduino XIAO,核心分別為Cortex-M4F、Cortex-M0+。

SeeedStudio的Seeeduino XIAO比銅板還小卻能支援TinyML。(圖片來源:SeeedStudio)

由上述可知,想執行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硬體加速電路,兼顧速度與功耗,就更理想了。

(責任編輯:謝涵如)

陸向陽

Author: 陸向陽

從電子科系畢業後,即以媒體人的角色繼續這段與「電子科技」的不解之緣。歷任電子技術專書作者、電子媒體記者、分析師等角色,並持續寫作不殆。近來投入Arduino、Raspberry Pi等開放硬體的研究與教程介紹。

Share This Post On

發表

跳至工具列