新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 新品快遞 > 全新CMSIS-NN神經(jīng)網(wǎng)絡(luò)內(nèi)核讓微控制器效率提升5倍

全新CMSIS-NN神經(jīng)網(wǎng)絡(luò)內(nèi)核讓微控制器效率提升5倍

作者: 時間:2018-01-31 來源:電子產(chǎn)品世界 收藏

  目前,在許多需要在本地進(jìn)行數(shù)據(jù)分析的“永遠(yuǎn)在線”的邊緣設(shè)備中,正在變得越來越普及,主要是因為可以有效地同時減少數(shù)據(jù)傳輸導(dǎo)致的延時和功耗。 而談到針對邊緣設(shè)備上的,我們自然會想到Arm Cortex-M系列處理器內(nèi)核,那么如果您想要強化它的性能并且減少內(nèi)存消耗,CMSIS-NN就是您最好的選擇?;贑MSIS-NN內(nèi)核的推理運算,對于運行時間/吞吐量將會有4.6X的提升,而對于能效將有4.9X的提升。

本文引用地址:http://www.butianyuan.cn/article/201801/375170.htm

  CMSIS-NN庫包含兩個部分: NNFunction和NNSupportFunctions。 NNFunction包含實現(xiàn)通常神經(jīng)網(wǎng)絡(luò)層類型的函數(shù),比如卷積(convolution),深度可分離卷積(depthwise separable convolution),全連接(即內(nèi)積inner-product), 池化(pooling)和激活(activation)這些函數(shù)被應(yīng)用程序代碼用來實現(xiàn)神經(jīng)網(wǎng)絡(luò)推理應(yīng)用。 內(nèi)核API也保持簡單,因此可以輕松地重定向到任何機器學(xué)習(xí)框架。NNSupport函數(shù)包括不同的實用函數(shù),如NNFunctions中使用的數(shù)據(jù)轉(zhuǎn)換和激活功能表。 這些實用函數(shù)也可以被應(yīng)用代碼用來構(gòu)造更復(fù)雜的NN模塊,例如, 長期短時記憶(LSTM)或門控循環(huán)單元(GRU)。

  對于某些內(nèi)核(例如全連接和卷積),會使用到不同版本的內(nèi)核函數(shù)。 我們提供了一個基本的版本,可以為任何圖層參數(shù)“按原樣”通用。 我們還部署了其他版本,包括進(jìn)一步的優(yōu)化技術(shù),但會對輸入進(jìn)行轉(zhuǎn)換或?qū)訁?shù)有一些限制。 理想情況下,可以使用簡單的腳本來分析網(wǎng)絡(luò)拓?fù)?,并自動確定要使用的相應(yīng)函數(shù)。

  我們在卷積神經(jīng)網(wǎng)絡(luò)(CNN)上測試了CMSIS-NN內(nèi)核,在CIFAR-10數(shù)據(jù)集上進(jìn)行訓(xùn)練,包括60,000個32x32彩色圖像,分為10個輸出類。 網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)基于Caffe中提供的內(nèi)置示例,具有三個卷積層和一個完全連接層。 下表顯示了使用CMSIS-NN內(nèi)核的層參數(shù)和詳細(xì)運行時結(jié)果。 測試在運行頻率為216 MHz的ARM Cortex-M7內(nèi)核STMichelectronics NUCLEO-F746ZG mbed開發(fā)板上進(jìn)行。

  整個圖像分類每張圖像大約需要99.1毫秒(相當(dāng)于每秒10.1張圖像)。 運行此網(wǎng)絡(luò)的CPU的計算吞吐量約為每秒249 MOps。 預(yù)量化的網(wǎng)絡(luò)在CIFAR-10測試集上達(dá)到了80.3%的精度。 在ARM Cortex-M7內(nèi)核上運行的8位量化網(wǎng)絡(luò)達(dá)到了79.9%的精度。 使用CMSIS-NN內(nèi)核的最大內(nèi)存占用空間為?133 KB,其中使用局部im2col來實現(xiàn)卷積以節(jié)省內(nèi)存,然后進(jìn)行矩陣乘法。 沒有使用局部im2col的內(nèi)存占用將是?332 KB,這樣的話神經(jīng)網(wǎng)絡(luò)將無法在板上運行。

  為了量化CMSIS-NN內(nèi)核相對于現(xiàn)有解決方案的好處,我們還使用一維卷積函數(shù)(來自CMSIS-DSP的arm_conv),類似Caffe的pooling和ReLU來實現(xiàn)了一個基準(zhǔn)版本。 對于CNN應(yīng)用,下表總結(jié)了基準(zhǔn)函數(shù)和CMSIS-NN內(nèi)核的比較結(jié)果。 CMSIS-NN內(nèi)核的運行時間/吞吐量比基準(zhǔn)函數(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)存占用。 更多細(xì)節(jié)在我們的白皮書中您可以讀到,您可以使用下面的按鈕從康奈爾大學(xué)圖書館網(wǎng)站下載。

  CMSIS-NN內(nèi)核可在github.com/ARM-software/CMSIS_5上找到。 應(yīng)用 代碼可以直接使用這些內(nèi)核來實現(xiàn)Arm Cortex-M CPU上的神經(jīng)網(wǎng)絡(luò)算法。 或者,這些內(nèi)核可以被機器學(xué)習(xí)框架用作原語函數(shù)(primitives)來部署訓(xùn)練過的模型。

  如需進(jìn)一步資源,更詳細(xì)的產(chǎn)品信息和教程,幫助您解決來自邊緣ML的挑戰(zhàn),請訪問我們的新機器學(xué)習(xí)開發(fā)者網(wǎng)站。

  參考:CMSIS-NN: Efficient Neural Network Kernels for Arm Cortex-M CPUs White Paper



評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉