MAX78000卷積神經(jīng)網(wǎng)絡(luò)的硬件轉(zhuǎn)換
掃描二維碼
隨時(shí)隨地手機(jī)看文章
AI應(yīng)用程序需要大量的能源消耗,通常是以服務(wù)器儲(chǔ)存所或昂貴的現(xiàn)場(chǎng)可編程門陣列的形式出現(xiàn)。挑戰(zhàn)在于提高計(jì)算能力,同時(shí)保持低能耗和低成本?,F(xiàn)在,人工智能的應(yīng)用正在看到強(qiáng)大的智能邊緣計(jì)算帶來(lái)的巨大變化。與傳統(tǒng)的基于硬件的計(jì)算方法相比,基于硬件的卷積神經(jīng)網(wǎng)絡(luò)加速度正以其令人印象深刻的速度和功率,為計(jì)算性能開(kāi)創(chuàng)一個(gè)新的時(shí)代。通過(guò)使傳感器節(jié)點(diǎn)能夠自己做出決定,智能邊緣技術(shù)極大地降低了5G和Wi-Fi網(wǎng)絡(luò)的數(shù)據(jù)傳輸速率。這正在為以前不可能的新興技術(shù)和獨(dú)特應(yīng)用提供動(dòng)力。例如,偏遠(yuǎn)地區(qū)的煙霧/火災(zāi)探測(cè)器或傳感器層面的環(huán)境數(shù)據(jù)分析都已成為現(xiàn)實(shí)--所有這些都隨著電池的使用年限而發(fā)生變化。為了檢驗(yàn)這些功能是如何實(shí)現(xiàn)的,本文探索了一個(gè)CNN的硬件轉(zhuǎn)換,一個(gè)專用的人工智能微控制器。
人工智能微控制器與超低功率卷繞神經(jīng)網(wǎng)絡(luò)加速器
MAX78000 是一個(gè)人工智能微控制器與超低功率CNN加速器,在芯片上的先進(jìn)系統(tǒng)。它使神經(jīng)網(wǎng)絡(luò)能夠在資源受限的邊緣設(shè)備或iot應(yīng)用超低功率。這些應(yīng)用包括目標(biāo)檢測(cè)和分類、音頻處理、聲音分類、噪聲消除、面部識(shí)別、心率/健康信號(hào)分析的時(shí)序數(shù)據(jù)處理、多傳感器分析和預(yù)測(cè)維護(hù)。
MAX78000由一個(gè)ARM提供高達(dá)100兆赫的動(dòng)力。 帶有浮點(diǎn)單元的M4F芯。為了給應(yīng)用程序提供足夠的內(nèi)存資源,這個(gè)版本的微控制器配備了512kb的閃存和128kb的SRAM。包括多個(gè)外部接口,例如,對(duì)音頻應(yīng)用來(lái)說(shuō)很重要的ICS,SPIS,UART,以及IVOS。此外,還有一個(gè)集成的60兆赫RSCV核心。RSCS-V從/向單個(gè)外圍塊和內(nèi)存(閃存和SRAM)復(fù)制數(shù)據(jù),使其成為一個(gè)智能的直接內(nèi)存訪問(wèn)(DMA)引擎。RSCS-V核心為人工智能加速器預(yù)處理傳感器數(shù)據(jù),因此ARM核心在此期間可以處于深度睡眠模式。必要時(shí),推理結(jié)果可以通過(guò)中斷觸發(fā)ARM核心,ARMCPU隨后在主應(yīng)用程序中執(zhí)行操作,無(wú)線傳遞傳感器數(shù)據(jù),或通知用戶。
用于執(zhí)行卷繞神經(jīng)網(wǎng)絡(luò)推理的硬件加速器單元是MAX7800X系列微控制器的一個(gè)顯著特點(diǎn),它使它與標(biāo)準(zhǔn)微控制器體系結(jié)構(gòu)和外圍設(shè)備不同。這個(gè)硬件加速器可以支持完整的CNN模型架構(gòu)以及所有所需的參數(shù)(權(quán)重和偏差)。CNN加速器配備了64個(gè)并行處理器和一個(gè)集成存儲(chǔ)器,該存儲(chǔ)器有442kb,用于存儲(chǔ)參數(shù),并用于輸入數(shù)據(jù)。由于模型和參數(shù)存儲(chǔ)在SRAM內(nèi)存中,可以通過(guò)固件進(jìn)行調(diào)整,網(wǎng)絡(luò)可以實(shí)時(shí)適應(yīng)。根據(jù)模型中是否使用1-、2-、4-或8位權(quán)重,這個(gè)內(nèi)存足以容納350萬(wàn)個(gè)參數(shù)。由于存儲(chǔ)能力是加速器不可或缺的一部分,因此不需要在每次連續(xù)的數(shù)學(xué)操作中通過(guò)微控制器總線結(jié)構(gòu)提取參數(shù)。由于延遲時(shí)間長(zhǎng)和耗電量高,這項(xiàng)活動(dòng)成本高昂。神經(jīng)網(wǎng)絡(luò)加速器可以支持32或64層,取決于池功能。每層可編程圖像的輸入/輸出尺寸可達(dá)1024x1024像素。
CNN硬件轉(zhuǎn)換:能耗和推理速度比較
CNN推理是一個(gè)復(fù)雜的計(jì)算任務(wù),它包含了矩陣形式的大型線性方程組.利用ARM cortex-M4F微控制器的力量,CNN在嵌入式系統(tǒng)固件上的推理是可能的;然而,有一些缺點(diǎn)需要考慮。由于基于固守器的推理運(yùn)行在微控制器上,能量和時(shí)間被大量消耗,因?yàn)橛?jì)算所需的命令,以及相關(guān)的參數(shù)數(shù)據(jù),需要從內(nèi)存中檢索,然后才能將中間的結(jié)果寫(xiě)回去。
表1給出了使用三種不同解決方案的CNN推理速度和能耗的比較。這個(gè)例子模型是利用一個(gè)手寫(xiě)的數(shù)字識(shí)別訓(xùn)練集MPERE開(kāi)發(fā)的,它將數(shù)字和字母從視覺(jué)輸入數(shù)據(jù)中分類,以獲得一個(gè)準(zhǔn)確的輸出結(jié)果。測(cè)量了每種處理器類型所需的推理時(shí)間,以確定能耗和速度之間的差異。
在第一個(gè)方案中,使用了一個(gè)ARM皮質(zhì)M4F處理器集成到以96兆赫運(yùn)行的MAX32630,用于計(jì)算推理。在第二種情況下,為了處理計(jì)算,使用了MAX78000的基于硬件的CNN加速器。推理速度--即在網(wǎng)絡(luò)輸入中顯示視覺(jué)數(shù)據(jù)與結(jié)果輸出之間的時(shí)間--在使用帶有硬件加速器的微控制器(MAX78000)時(shí)降低了400倍。此外,每個(gè)推論所需的能量是一個(gè)低1100系數(shù)。在第三個(gè)比較中,每個(gè)推理的最小能耗優(yōu)化了MPERE網(wǎng)絡(luò)。結(jié)果的準(zhǔn)確性從99.6%下降到95.6%.然而,網(wǎng)絡(luò)速度要快得多,每次推斷只需要0.36MS。每一個(gè)推論的能量消耗量減少到只有1.1秒。在使用兩個(gè)AA堿性電池(共6小時(shí)能量)的應(yīng)用中,500萬(wàn)推論是可能的(省去電路其余部分的電源)。
這些數(shù)據(jù)說(shuō)明了硬件加速計(jì)算的力量。硬件加速計(jì)算是無(wú)法利用連接或連續(xù)電源的應(yīng)用程序的寶貴工具。MAX78000支持邊緣處理,不需要大量的能源、寬帶互聯(lián)網(wǎng)接入或長(zhǎng)時(shí)間的推理。
MAX78000人工智能微控制器用例
MAX78000支持大量潛在的應(yīng)用程序,但是讓我們以下面的用例為例來(lái)研究。要求是設(shè)計(jì)一個(gè)電池驅(qū)動(dòng)的相機(jī),它可以檢測(cè)到貓?jiān)趫D像傳感器的視野中,從而能夠通過(guò)貓門的數(shù)字輸出進(jìn)入房子。
發(fā)展環(huán)境和評(píng)價(jià)包
開(kāi)發(fā)邊緣應(yīng)用程序的過(guò)程可分為以下幾個(gè)階段:
第一階段:人工智能-網(wǎng)絡(luò)的定義、培訓(xùn)和量化
第2階段:ARM固件--將第1階段生成的網(wǎng)絡(luò)和參數(shù)納入C/C++應(yīng)用程序,并創(chuàng)建和測(cè)試應(yīng)用程序固件
開(kāi)發(fā)過(guò)程的第一部分涉及建模、培訓(xùn)和評(píng)估AI模型。在這個(gè)階段,開(kāi)發(fā)者可以利用開(kāi)源工具.該數(shù)據(jù)庫(kù)提供了全面的資源,以幫助用戶在考慮到該系統(tǒng)硬件規(guī)格的情況下,在使用PYOTUB開(kāi)發(fā)環(huán)境建立和培訓(xùn)AI網(wǎng)絡(luò)方面規(guī)劃自己的旅程。?MAX78000 .存儲(chǔ)庫(kù)中包含了一些簡(jiǎn)單的AI網(wǎng)絡(luò)和應(yīng)用程序,如面部識(shí)別(AMAXID)。
首先,對(duì)網(wǎng)絡(luò)進(jìn)行建模。必須注意的是,并非所有MAX7800X微控制器都有硬件,支持在PIOTO環(huán)境中可用的所有數(shù)據(jù)操作。由于這個(gè)原因,由模擬設(shè)備提供的文件像8X.PY必須首先包括在項(xiàng)目中。這個(gè)文件包含使用MAX78000所需的PUTR模塊和操作員?;诖嗽O(shè)置,可以建立網(wǎng)絡(luò),然后使用培訓(xùn)數(shù)據(jù)進(jìn)行培訓(xùn)、評(píng)估和量化。這個(gè)步驟的結(jié)果是一個(gè)檢查點(diǎn)文件,其中包含最終合成過(guò)程的輸入數(shù)據(jù)。在這個(gè)最后的過(guò)程中,網(wǎng)絡(luò)及其參數(shù)被轉(zhuǎn)換成適合于CNN硬件加速器的形式。這里應(yīng)該提到的是,網(wǎng)絡(luò)訓(xùn)練可以用任何個(gè)人電腦完成(筆記本電腦,服務(wù)器等)。然而,如果不支持海關(guān)數(shù)據(jù)自動(dòng)化系統(tǒng)的圖形卡,這可能需要很多時(shí)間--即使對(duì)于小型網(wǎng)絡(luò),幾天甚至幾周都是完全現(xiàn)實(shí)的。
在開(kāi)發(fā)過(guò)程的第二階段,利用將數(shù)據(jù)寫(xiě)入CNN加速器并讀取結(jié)果的機(jī)制創(chuàng)建了應(yīng)用固件。在第一階段創(chuàng)建的文件通過(guò)#包含指令被集成到C/C++項(xiàng)目中。開(kāi)源工具,如EXEXESTI和GNU工具鏈也被用于微控制器的開(kāi)發(fā)環(huán)境。工業(yè)發(fā)展署提供一套軟件開(kāi)發(fā)工具包作為已經(jīng)包含所有必要組件和配置的安裝程序。軟件開(kāi)發(fā)包還包括外圍驅(qū)動(dòng)程序以及示例和指令,以方便開(kāi)發(fā)應(yīng)用程序的過(guò)程。
結(jié)論
以前,人工智能的應(yīng)用程序需要大量的能源消耗,如服務(wù)器儲(chǔ)存所或昂貴的FPGA?,F(xiàn)在,有了MAX78000,它有可能從單個(gè)電池上為AI應(yīng)用程序提供長(zhǎng)時(shí)間的動(dòng)力。在能源效率和電力方面的這種突破使得Edge AI比以往任何時(shí)候都更容易獲得,并釋放出以前不可能的新的和令人興奮的Edge AI應(yīng)用的潛力。