全新CMSIS-NN神經(jīng)網(wǎng)絡內(nèi)核讓微控制器效率提升5倍
目前,在許多需要在本地進行數(shù)據(jù)分析的“永遠在線”的物聯(lián)網(wǎng)邊緣設備中,神經(jīng)網(wǎng)絡正在變得越來越普及,主要是因為可以有效地同時減少數(shù)據(jù)傳輸導致的延時和功耗。 而談到針對物聯(lián)網(wǎng)邊緣設備上的神經(jīng)網(wǎng)絡,我們自然會想到Arm Cortex-M系列處理器內(nèi)核,那么如果您想要強化它的性能并且減少內(nèi)存消耗,CMSIS-NN就是您最好的選擇?;贑MSIS-NN內(nèi)核的神經(jīng)網(wǎng)絡推理運算,對于運行時間/吞吐量將會有4.6X的提升,而對于能效將有4.9X的提升。
本文引用地址:http://www.ex-cimer.com/article/201801/375170.htmCMSIS-NN庫包含兩個部分: NNFunction和NNSupportFunctions。 NNFunction包含實現(xiàn)通常神經(jīng)網(wǎng)絡層類型的函數(shù),比如卷積(convolution),深度可分離卷積(depthwise separable convolution),全連接(即內(nèi)積inner-product), 池化(pooling)和激活(activation)這些函數(shù)被應用程序代碼用來實現(xiàn)神經(jīng)網(wǎng)絡推理應用。 內(nèi)核API也保持簡單,因此可以輕松地重定向到任何機器學習框架。NNSupport函數(shù)包括不同的實用函數(shù),如NNFunctions中使用的數(shù)據(jù)轉(zhuǎn)換和激活功能表。 這些實用函數(shù)也可以被應用代碼用來構(gòu)造更復雜的NN模塊,例如, 長期短時記憶(LSTM)或門控循環(huán)單元(GRU)。
對于某些內(nèi)核(例如全連接和卷積),會使用到不同版本的內(nèi)核函數(shù)。 我們提供了一個基本的版本,可以為任何圖層參數(shù)“按原樣”通用。 我們還部署了其他版本,包括進一步的優(yōu)化技術(shù),但會對輸入進行轉(zhuǎn)換或?qū)訁?shù)有一些限制。 理想情況下,可以使用簡單的腳本來分析網(wǎng)絡拓撲,并自動確定要使用的相應函數(shù)。
我們在卷積神經(jīng)網(wǎng)絡(CNN)上測試了CMSIS-NN內(nèi)核,在CIFAR-10數(shù)據(jù)集上進行訓練,包括60,000個32x32彩色圖像,分為10個輸出類。 網(wǎng)絡拓撲結(jié)構(gòu)基于Caffe中提供的內(nèi)置示例,具有三個卷積層和一個完全連接層。 下表顯示了使用CMSIS-NN內(nèi)核的層參數(shù)和詳細運行時結(jié)果。 測試在運行頻率為216 MHz的ARM Cortex-M7內(nèi)核STMichelectronics NUCLEO-F746ZG mbed開發(fā)板上進行。
整個圖像分類每張圖像大約需要99.1毫秒(相當于每秒10.1張圖像)。 運行此網(wǎng)絡的CPU的計算吞吐量約為每秒249 MOps。 預量化的網(wǎng)絡在CIFAR-10測試集上達到了80.3%的精度。 在ARM Cortex-M7內(nèi)核上運行的8位量化網(wǎng)絡達到了79.9%的精度。 使用CMSIS-NN內(nèi)核的最大內(nèi)存占用空間為?133 KB,其中使用局部im2col來實現(xiàn)卷積以節(jié)省內(nèi)存,然后進行矩陣乘法。 沒有使用局部im2col的內(nèi)存占用將是?332 KB,這樣的話神經(jīng)網(wǎng)絡將無法在板上運行。
為了量化CMSIS-NN內(nèi)核相對于現(xiàn)有解決方案的好處,我們還使用一維卷積函數(shù)(來自CMSIS-DSP的arm_conv),類似Caffe的pooling和ReLU來實現(xiàn)了一個基準版本。 對于CNN應用,下表總結(jié)了基準函數(shù)和CMSIS-NN內(nèi)核的比較結(jié)果。 CMSIS-NN內(nèi)核的運行時間/吞吐量比基準函數(shù)提高2.6至5.4倍。 能效提高也與吞吐量的提高相一致。
高效的NN內(nèi)核是充分發(fā)揮ARM Cortex-M CPU能力的關(guān)鍵。 CMSIS-NN提供了優(yōu)化的函數(shù)來加速關(guān)鍵的NN層,如卷積,池化和激活。 此外,非常關(guān)鍵的是CMSIS-NN還有助于減少對于內(nèi)存有限的微控制器而言至關(guān)重要的內(nèi)存占用。 更多細節(jié)在我們的白皮書中您可以讀到,您可以使用下面的按鈕從康奈爾大學圖書館網(wǎng)站下載。
CMSIS-NN內(nèi)核可在github.com/ARM-software/CMSIS_5上找到。 應用 代碼可以直接使用這些內(nèi)核來實現(xiàn)Arm Cortex-M CPU上的神經(jīng)網(wǎng)絡算法。 或者,這些內(nèi)核可以被機器學習框架用作原語函數(shù)(primitives)來部署訓練過的模型。
如需進一步資源,更詳細的產(chǎn)品信息和教程,幫助您解決來自邊緣ML的挑戰(zhàn),請訪問我們的新機器學習開發(fā)者網(wǎng)站。
參考:CMSIS-NN: Efficient Neural Network Kernels for Arm Cortex-M CPUs White Paper
評論