|

TinyML潛力股!MicroFlow挑戰TensorFlow Lite for Microcontrollers

   

作者:陸向陽

談及TinyML(或寫成tinyML)軟體技術,多數人第一個想到的便是TFLM,即TensorFlow Lite for Microcontrollers(註1),不過近期有個MicroFlow試圖挑戰TFLM,包含相同模型條件下的推論速度、記憶體佔量、用電量、最低可執行使用的硬體水準等。

簡單介紹MicroFlow

在正式說明兩者的技術表現差異前先簡單說明一下MicroFlow,MicroFlow這套AI框架需要用Rust程式語言來撰寫,目前還不能像TFLM那般支援多種程式語言。MicroFlow是由三名義大利帕多瓦(Padua)大學的工程師所發創。

圖1 MicroFlow框架概要圖,先將神經網路的AI模型送入MicroFlow編譯器,由編譯器產生參數權重、原始程式碼等,最後再由MicroFlow執行階段(Runtime)來推論執行。(圖片來源:M. Carnelos等人)

MicroFlow選擇使用Rust程式語言有其考量,Rust具有諸多技術特性,特別是較安全的記憶體安全防護及較佳的記憶體資源利用效率。以記憶體安全而言,Rust不允許像C/C++那樣直接操作記憶體,所以記憶體發生問題(系統整個當掉或錯亂)的情形減少,而且不允許空指標(Null Pointer)或緩衝區溢位(Buffer Overflow)等,如此就減少資安攻擊的可能。

MicroFlow運用Rust語言,然後使用靜態的記憶體規劃配置,亦即還沒正式推論執行前就已經確定AI模型會在RAM記憶體的哪一個區段內運作,具體的區段位置由Rust編譯器(compiler)軟體在編譯過程中決定。

圖2 MicroFlow編譯器的編譯步驟,MicroFlow編譯器產生原始程式碼,然後把MicroFlow執行階段、使用者程式碼等都送入Rust程式語言的編譯器,最終產生給目標體(某一顆MCU)可執行的二進制程式碼。(圖片來源:M. Carnelos等人)

接著有個問題,如果MCU微控制器晶片的RAM容量很小,AI模型無法整個載入到RAM裡頭時怎麼辦?關於這點MicroFlow能夠以分頁(page)方式控制記憶體存取,意思是會先把AI模型的一部份載入到RAM裡頭推論執行,之後將該部份卸除,再將尚未推論的部份採取相同的方式載入、推論執行、卸除,最終完成一次完整的推論工作。

也因此MicroFlow框架可以在很低階的MCU上執行,目前宣稱連8位元ATmega328(元祖Arduino開發板上常見的主控MCU)晶片都可以。相對的,TFLM最低也要32位元Cortex-M才可以。

低階硬體可以,相對寬裕的硬體當然也可以,MicroFlow可以支援32位元ESP32晶片,加上MicroFlow本身是模組化設計且開源,很吸引人。

效能對比

談一些特性後接著是效能真章,透過3個AI模型來看推論效果,3個模型分別是正弦預測(sine predictor)、話語命令認知(speech command recognizer)以及人員偵測(person detector),並同時用ESP32晶片跟nRF52840(核心Cortex-M4)晶片來測試比較。

 

圖3 用2種MCU、3種AI模型來測試,比較MicroFlow、TFLM兩者的推論速度能耐,長條圖越短越好,表示越快完成推論工作。(圖片來源:M. Carnelos等人)

結果除了人員偵測的推論時間是MicroFlow略慢於TFLM外(約慢6%),其餘都是MicroFlow較快完成推論,且以正弦預測的模型最明顯(約快10倍),而推論時間縮短也意味著MCU耗電的減少,所以也是MicroFlow勝。

至於推論準確性(accuracy)方面未有相同的量化數據揭露,但測試方表示兩者(MicroFlow vs. TFLM)的差異非常小,只有一點點差別,這些微小差別來自四捨五入的差異、不同程式語言在浮點數方面的實作差異等,簡單說兩者的差異幾乎可忽略不計。

至於記憶體佔量上,在3種AI模型與2種MCU晶片上,無論是RAM或ROM(快閃記憶體)的需求都是MicroFlow少於TFLM,尤其是在ESP32上可以省到65%之多。

結語

雖然知道AI軟體技術肯定是持續精進,讓越來越小的硬體系統與裝置也能推論執行,甚至有可能拿來訓練AI模型等,但看到MicroFlow的表現還是很讓人興奮。

特別是MicroFlow的工程技術團隊表明框架還有進步的空間,但承認自身能力與時間有限,所以採取開源發展政策,希望各界能共同貢獻響應MicroFlow,使其更好。

當然!如果開源的表現如此好,一些採行專屬封閉發展路線的技術自然就有壓力,例如一些以SaaS型態提供AI模型壓縮服務的編譯器,除非能明顯與MicroFlow拉開技術表現,否則難以說服AI開發者持續付費使用其編譯器服務。

註1:2024年9月TensorFlow Lite已改名LiteRT,TensorFlow Lite for Microcontrollers也連帶改名LiteRT for Microcontrollers。由於改名不久,短期熟悉與慣性而言,本文仍以TFLM來稱。

(責任編輯:謝嘉洵。)

陸向陽
陸向陽

Author: 陸向陽

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

Share This Post On

Submit a Comment

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *