2024年2月16日 星期五

TinyML 核心函式庫 Arm CMSIS 6 DSP & NN 更新比較

20240216_CMSIS6_Fig00

 留言

有在玩單晶片(MCU)的朋友們應該都知道Arm Cortex-M系列吧!近年來AI當道,自然也有很多人想用MCU來玩微型AI應用,於是「TinyML」開始成為大家關注的重點。目前有太多廠商使用Arm Cortex-M IP開發成各式各樣的MCU,所以硬體介面不統一變成開發者的一大麻煩,只要一換廠牌、封裝方式甚至升降階(如M3降成M0,或升成M7)都需重新撰寫韌體(firmware)。

Arm為了讓開發者抽離硬體相依性於是推出硬體抽象層(Hardware Abstraction Layer, HAL)的概念,提供通用微控制器軟體介面標準(Common Microcontroller Software Interface Standard, 簡稱CMSIS)。其中DSP和NN模組又成了MCU AI最重要的核心函式庫,方便如 Google TensorFlow Lite (TFL), TensorFlow Lite for Microcontroller (TFLM) 等上階AI開發框架進行呼叫及執行。

Arm CMSIS在2016年底推出5.0.0版[1]後已有許久未大改版,去(2023)年12月18日推出最新版的CMSIS 6.0.0版[2],將原有一大包的架構分拆成個別模組,除更輕量化外,同時更方便未來獨立呼叫及更新。此次將DSP[3], NN[4], Driver 等模組獨立出來,廢除RTOS改用RTOS2,更有利AI應用的開發及升級,其它更多變動可參考官方說明。[5]

20240216_CMSIS6_Fig01
Fig. 1 Arm CMSIS v5及v6架構比較圖。(OmniXRI整理製作,2024/02/16)

以下為CMSIS v5 和 v6 版本資訊,包含DSP和NN模組目前對應版本。原則上這兩個版本都有支援單指令多資料流(Single Instruction Multiple Data, SIMD),DSP擴展指令集及v8.1-M Helium M型向量擴展指令(M-Profile Vector Extension, MVE),方便AI加速計算使用。

版本CMSIS v5CMSIS v6
最後版本5.9.06.0.0
發行日期2022/05/022023/12/08
CMSIS-DSP1.10.01.15.0
CMSIS-NN3.1.05.0.0

為方便大家理解 CMSIS-DSP 和 CMSIS-NN 在此次更新有什麼差別,以下就簡單表列出其差異。綠字部份表示新增功能,紅字部份表示v6版本已不再提供,藍字部份表示移入私有函式中,即只提供給CMSIS函式使用,而不提供給開發者使用。黑字部份則表示兩個版本皆有。

20240216_CMSIS6_Fig02
Fig. 2 CMSIS v5和v6版 DSP 差異比較表。(OmniXRI整理製作,2024/02/16)[6][7]

20240216_CMSIS6_Fig03
Fig. 3 CMSIS v5和v6版 NN 差異比較表。(OmniXRI整理製作,2024/02/16)[8][9]

在CMSIS-NN v6版對於卷積(Convolution)函式有很大變化,以下就把其差異單獨列表。

20240216_CMSIS6_Fig04
Fig. 4 CMSIS v5和v6版 NN Covolution 差異比較表。(OmniXRI整理製作,2024/02/16)[8][9]

小結

採用Arm Cortex-M 系列MCU來玩AI,加速矩陣運算是少不了的,透過Arm CMSIS DSP及NN模組來統一開發介面更是不可或缺的。未來再加上像Ethos U55之類的NPU,就能發揮更大的算力,屆時低成本、低功耗的TinyML就能普及到大家的身邊了。以上只是拋磚引玉,歡迎大家多多交流。

參考文獻

[1] Github, ARM-software, CMSIS_5
https://github.com/ARM-software/CMSIS_5

[2] Github, ARM-software, CMSIS_6
https://github.com/ARM-software/CMSIS_6

[3] Github, ARM-software, CMSIS-DSP
https://github.com/ARM-software/CMSIS-DSP

[4] Github, ARM-software, CMSIS-NN
https://github.com/ARM-software/CMSIS-NN

[5] Github, ARM-software, CMSIS_6 Releases Note
https://github.com/ARM-software/CMSIS_6/releases/tag/v6.0.0

[6] Github, ARM-software, CMSIS-DSP Software Library Reference (ver 1.10.0)
https://arm-software.github.io/CMSIS_5/DSP/html/index.html

[7] Github, ARM-software, CMSIS-DSP Software Library Reference (ver 1.15.0)
https://arm-software.github.io/CMSIS-DSP/latest/index.html

[8] Github, ARM-software, CMSIS-NN Software Library Reference (ver 3.1.0)
https://arm-software.github.io/CMSIS_5/NN/html/index.html

[9] Github, ARM-software, CMSIS-NN Software Library Reference (ver 5.0.0)
https://arm-software.github.io/CMSIS-NN/latest/index.html

延伸閱讀

[A] 許哲豪,歐尼克斯實境互動工作室【系列發文】- TinyML (MCU AI)系列
https://hackmd.io/@OmniXRI-Jack/series_articles#TinyMLMCU-AI系列

沒有留言:

張貼留言

【頂置】簡報、源碼、系列文快速連結區

常有人反應用手機瀏覽本部落格時常要捲很多頁才能找到系列發文、開源專案、課程及活動簡報,為了方便大家快速查詢,特整理連結如下,敬請參考! Edge AI Taiwan 邊緣智能交流區 全像顯示與互動交流區 台科大(NTUST) 人工智慧與邊緣運算實務 開南大學...