目前,在許多需要在本地進行數據分析的“永遠在線”的物聯網邊緣設備中,神經網絡正在變得越來越普及,主要是因為可以有效地同時減少數據傳輸導致的延時和功耗。而談到針對物聯網邊緣設備上的神經網絡,我們自然會想到Arm Cortex-M系列處理器內核,那么如果您想要強化它的性能并且減少內存消耗,CMSIS-NN就是您最好的選擇。基于CMSIS-NN內核的神經網絡推理運算,對于運行時間/吞吐量將會有4.6X的提升,而對于能效將有4.9X的提升。
CMSIS-NN庫包含兩個部分:NNFunction和NNSupportFunctions。NNFunction包含實現通常神經網絡層類型的函數,比如卷積(convolution),深度可分離卷積(depthwise separable convolution),全連接(即內積inner-product),池化(pooling)和激活(activation)這些函數被應用程序代碼用來實現神經網絡推理應用。內核API也保持簡單,因此可以輕松地重定向到任何機器學習框架。NNSupport函數包括不同的實用函數,如NNFunctions中使用的數據轉換和激活功能表。這些實用函數也可以被應用代碼用來構造更復雜的NN模塊,例如,長期短時記憶(LSTM)或門控循環單元(GRU)。
對于某些內核(例如全連接和卷積),會使用到不同版本的內核函數。Arm提供了一個基本的版本,可以為任何圖層參數“按原樣”通用。我們還部署了其他版本,包括進一步的優化技術,但會對輸入進行轉換或對層參數有一些限制。理想情況下,可以使用簡單的腳本來分析網絡拓撲,并自動確定要使用的相應函數。
我們在卷積神經網絡(CNN)上測試了CMSIS-NN內核,在CIFAR-10數據集上進行訓練,包括60,000個32x32彩色圖像,分為10個輸出類。網絡拓撲結構基于Caffe中提供的內置示例,具有三個卷積層和一個完全連接層。下表顯示了使用CMSIS-NN內核的層參數和詳細運行時結果。測試在運行頻率為216 MHz的ARM Cortex-M7內核STMichelectronics NUCLEO-F746ZG mbed開發板上進行。
整個圖像分類每張圖像大約需要99.1毫秒(相當于每秒10.1張圖像)。運行此網絡的CPU的計算吞吐量約為每秒249 MOps。預量化的網絡在CIFAR-10測試集上達到了80.3%的精度。在ARM Cortex-M7內核上運行的8位量化網絡達到了79.9%的精度。使用CMSIS-NN內核的最大內存占用空間為?133 KB,其中使用局部im2col來實現卷積以節省內存,然后進行矩陣乘法。沒有使用局部im2col的內存占用將是?332 KB,這樣的話神經網絡將無法在板上運行。
為了量化CMSIS-NN內核相對于現有解決方案的好處,我們還使用一維卷積函數(來自CMSIS-DSP的arm_conv),類似Caffe的pooling和ReLU來實現了一個基準版本。對于CNN應用,下表總結了基準函數和CMSIS-NN內核的比較結果。CMSIS-NN內核的運行時間/吞吐量比基準函數提高2.6至5.4倍,能效提高也與吞吐量的提高相一致。
高效的NN內核是充分發揮Arm Cortex-M CPU能力的關鍵。CMSIS-NN提供了優化的函數來加速關鍵的NN層,如卷積,池化和激活。此外,非常關鍵的是CMSIS-NN還有助于減少對于內存有限的微控制器而言至關重要的內存占用。
-
內核
+關注
關注
3文章
1376瀏覽量
40319 -
神經網絡
+關注
關注
42文章
4774瀏覽量
100898 -
物聯網
+關注
關注
2910文章
44752瀏覽量
374587
原文標題:想讓你的微控制器效率提升5倍嗎?
文章出處:【微信號:arm_china,微信公眾號:Arm芯聞】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論