作者:陸向陽
談及TinyML(或寫成tinyML)軟體技術,多數人第一個想到的便是TFLM,即TensorFlow Lite for Microcontrollers(註1),不過近期有個MicroFlow試圖挑戰TFLM,包含相同模型條件下的推論速度、記憶體佔量、用電量、最低可執行使用的硬體水準等。
簡單介紹MicroFlow
在正式說明兩者的技術表現差異前先簡單說明一下MicroFlow,MicroFlow這套AI框架需要用Rust程式語言來撰寫,目前還不能像TFLM那般支援多種程式語言。MicroFlow是由三名義大利帕多瓦(Padua)大學的工程師所發創。
MicroFlow選擇使用Rust程式語言有其考量,Rust具有諸多技術特性,特別是較安全的記憶體安全防護及較佳的記憶體資源利用效率。以記憶體安全而言,Rust不允許像C/C++那樣直接操作記憶體,所以記憶體發生問題(系統整個當掉或錯亂)的情形減少,而且不允許空指標(Null Pointer)或緩衝區溢位(Buffer Overflow)等,如此就減少資安攻擊的可能。
MicroFlow運用Rust語言,然後使用靜態的記憶體規劃配置,亦即還沒正式推論執行前就已經確定AI模型會在RAM記憶體的哪一個區段內運作,具體的區段位置由Rust編譯器(compiler)軟體在編譯過程中決定。
接著有個問題,如果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)晶片來測試比較。
結果除了人員偵測的推論時間是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來稱。
(責任編輯:謝嘉洵。)
- Sony強力加持!樹莓派發表專屬AI攝影機 - 2024/10/28
- 【Qualcomm Inside】12TOPS Edge AI單板RUBIK Pi規格剖析 - 2024/10/20
- TinyML潛力股!MicroFlow挑戰TensorFlow Lite for Microcontrollers - 2024/10/15