? ? 人工智能應(yīng)用需要大量的能源消耗,通常以服務(wù)器群或昂貴的現(xiàn)場(chǎng)可編程門陣列(FPGA)的形式出現(xiàn)。挑戰(zhàn)在于提高計(jì)算能力,同時(shí)保持較低的能耗和成本?,F(xiàn)在,人工智能應(yīng)用正在經(jīng)歷由強(qiáng)大的智能邊緣計(jì)算實(shí)現(xiàn)的巨大轉(zhuǎn)變。與傳統(tǒng)的基于固件的計(jì)算相比,基于硬件的卷積神經(jīng)網(wǎng)絡(luò)加速現(xiàn)在以其令人印象深刻的速度和功能開創(chuàng)了計(jì)算性能的新時(shí)代。通過使傳感器節(jié)點(diǎn)能夠做出自己的決策,智能邊緣技術(shù)大大降低了 5G 和 Wi-Fi 網(wǎng)絡(luò)上的數(shù)據(jù)傳輸速率。這為以前不可能實(shí)現(xiàn)的新興技術(shù)和獨(dú)特應(yīng)用提供了動(dòng)力。例如,遠(yuǎn)程位置的煙霧/火災(zāi)探測(cè)器或傳感器級(jí)別的環(huán)境數(shù)據(jù)分析成為現(xiàn)實(shí),所有這些都需要使用電池電源多年。為了研究這些功能是如何實(shí)現(xiàn)的,本文探討了使用專用 AI 微控制器對(duì) CNN 進(jìn)行硬件轉(zhuǎn)換。
具有超低功耗卷積神經(jīng)網(wǎng)絡(luò)加速器的人工智能微控制器
MAX78000是一款具有超低功耗CNN加速器的AI微控制器,這是一種先進(jìn)的片上系統(tǒng)。它能夠以超低功耗為資源受限的邊緣設(shè)備或物聯(lián)網(wǎng)應(yīng)用提供神經(jīng)網(wǎng)絡(luò)。此類應(yīng)用包括物體檢測(cè)和分類、音頻處理、聲音分類、降噪、面部識(shí)別、用于心率/健康信號(hào)分析的時(shí)間序列數(shù)據(jù)處理、多傳感器分析和預(yù)測(cè)性維護(hù)。
圖 1 顯示了該MAX78000的框圖,該器件由帶有浮點(diǎn)單元的 Arm Cortex-M100F 內(nèi)核提供高達(dá) 4 MHz 的電源。為了給應(yīng)用提供足夠的內(nèi)存資源,此版本的微控制器配備了 512 kB 閃存和 128 kB SRAM。該器件包括多個(gè)外部接口,如I2C、SPI和UART,以及I2S,這些接口對(duì)于音頻應(yīng)用非常重要。此外,還集成了一個(gè) 60 MHz RISC-V 內(nèi)核。RISC-V將數(shù)據(jù)從各個(gè)外設(shè)模塊和存儲(chǔ)器(閃存和SRAM)復(fù)制到/復(fù)制到各個(gè)外設(shè)模塊和存儲(chǔ)器,使其成為智能直接存儲(chǔ)器訪問(DMA)引擎。RISC-V 內(nèi)核為 AI 加速器預(yù)處理傳感器數(shù)據(jù),因此 Arm 內(nèi)核在此期間可以處于深度睡眠模式。如有必要,推理結(jié)果可以通過中斷觸發(fā) Arm 內(nèi)核,然后 Arm CPU 在主應(yīng)用程序中執(zhí)行操作,以無(wú)線方式傳遞傳感器數(shù)據(jù)或通知用戶。??

.A MAX78000模塊原理圖。
MAX7800x系列微控制器具有獨(dú)特的功能,用于卷積神經(jīng)網(wǎng)絡(luò)的推理,有別于標(biāo)準(zhǔn)微控制器架構(gòu)和外設(shè)。該硬件加速器可以支持完整的 CNN 模型架構(gòu)以及所有必需的參數(shù)(權(quán)重和偏差)。CNN 加速器配備 64 個(gè)并行處理器和一個(gè)集成存儲(chǔ)器,其中 442 kB 用于存儲(chǔ)參數(shù),896 kB 用于輸入數(shù)據(jù)。由于模型和參數(shù)存儲(chǔ)在SRAM存儲(chǔ)器中,因此可以通過固件進(jìn)行調(diào)整,并且可以實(shí)時(shí)調(diào)整網(wǎng)絡(luò)。根據(jù)模型中使用的是 1 位、2 位、4 位還是 8 位權(quán)重,此內(nèi)存足以容納多達(dá) 3 萬(wàn)個(gè)參數(shù)。由于存儲(chǔ)器功能是加速器不可或缺的一部分,因此每次連續(xù)的數(shù)學(xué)運(yùn)算都不必通過微控制器總線結(jié)構(gòu)獲取參數(shù)。由于高延遲和高功耗,此活動(dòng)成本高昂。神經(jīng)網(wǎng)絡(luò)加速器可以支持 5 或 32 層,具體取決于池化功能。每層可編程圖像輸入/輸出尺寸高達(dá) 64 × 1024 像素。
CNN 硬件轉(zhuǎn)換:能耗和推理速度比較
CNN 推理是一項(xiàng)復(fù)雜的計(jì)算任務(wù),由矩陣形式的大型線性方程組成。利用 Arm Cortex-M4F 微控制器的強(qiáng)大功能,可以對(duì)嵌入式系統(tǒng)的固件進(jìn)行 CNN 推理;但是,有一些缺點(diǎn)需要考慮。在微控制器上運(yùn)行基于固件的推理時(shí),需要從內(nèi)存中檢索計(jì)算所需的命令以及相關(guān)的參數(shù)數(shù)據(jù),然后才能寫回中間結(jié)果,因此會(huì)消耗大量能源和時(shí)間。
表 1 比較了使用三種不同解決方案的 CNN 推理速度和能耗。此示例模型是使用 MNIST 開發(fā)的,MNIST 是一種手寫數(shù)字識(shí)別訓(xùn)練集,它對(duì)視覺輸入數(shù)據(jù)中的數(shù)字和字母進(jìn)行分類,以得出準(zhǔn)確的輸出結(jié)果。測(cè)量每種處理器類型所需的推理時(shí)間,以確定能耗和速度之間的差異。
表 1.利用MNIST數(shù)據(jù)集進(jìn)行手寫數(shù)字識(shí)別的三種不同場(chǎng)景的CNN推理時(shí)間和每次推理的能量

在第一種場(chǎng)景中,集成在MAX4中的 Arm Cortex-M32630F 處理器(運(yùn)行頻率為 96 MHz)用于計(jì)算推理。在第二個(gè)場(chǎng)景中,為了處理計(jì)算,使用了MAX78000基于硬件的CNN加速器。當(dāng)使用帶有基于硬件的加速器 (MAX400) 的微控制器時(shí),推理速度(即在網(wǎng)絡(luò)輸入和結(jié)果輸出時(shí)呈現(xiàn)視覺數(shù)據(jù)之間的時(shí)間)會(huì)降低 78000 倍。此外,每次推理所需的能量要低 1100 倍。在第三次比較中,MNIST網(wǎng)絡(luò)經(jīng)過優(yōu)化,每次推理的能耗最小。在這種情況下,結(jié)果的準(zhǔn)確度從 99.6% 下降到 95.6%。但是,該網(wǎng)絡(luò)的速度要快得多,每次推理只需要 0.36 毫秒。每次推理的能耗降低到僅 1.1 μWs。在使用兩節(jié) AA 堿性電池(總能量為 6 Wh)的應(yīng)用中,可以進(jìn)行 《》 萬(wàn)次推斷(省略電路其余部分消耗的功率)。
這些數(shù)據(jù)說明了硬件加速計(jì)算的強(qiáng)大功能。硬件加速計(jì)算對(duì)于無(wú)法利用連接或持續(xù)電源的應(yīng)用來說是一種非常寶貴的工具。該MAX78000支持邊緣處理,無(wú)需大量能源、寬帶互聯(lián)網(wǎng)接入或延長(zhǎng)推理時(shí)間。
MAX78000 AI 微控制器的示例用例
該MAX78000支持多種潛在應(yīng)用,但讓我們以以下用例為例。要求是設(shè)計(jì)一個(gè)電池供電的攝像頭,該攝像頭可以檢測(cè)貓何時(shí)在其圖像傳感器的視野中,從而能夠通過貓門的數(shù)字輸出進(jìn)入房屋。
圖 2 描繪了此類設(shè)計(jì)的示例框圖。在這種情況下,RISC-V內(nèi)核會(huì)定期打開圖像傳感器,并將圖像數(shù)據(jù)加載到由MAX78000供電的CNN中。如果貓識(shí)別的概率高于先前定義的閾值,則啟用貓門。然后系統(tǒng)返回待機(jī)模式。

圖2.智能寵物門的框圖。
開發(fā)環(huán)境和評(píng)估套件
開發(fā)邊緣 AI 應(yīng)用程序的過程可分為以下幾個(gè)階段:
第 1 階段:人工智能——網(wǎng)絡(luò)的定義、訓(xùn)練和量化
第 2 階段:Arm 固件 – 將第 1 階段生成的網(wǎng)絡(luò)和參數(shù)包含在 C/C++ 應(yīng)用程序中,并創(chuàng)建和測(cè)試應(yīng)用程序固件
開發(fā)過程的第一部分涉及對(duì) AI 模型進(jìn)行建模、訓(xùn)練和評(píng)估。在此階段,開發(fā)人員可以利用 PyTorch 和 TensorFlow 等開源工具。GitHub 存儲(chǔ)庫(kù)提供了全面的資源,可幫助用戶規(guī)劃使用 PyTorch 開發(fā)環(huán)境構(gòu)建和訓(xùn)練 AI 網(wǎng)絡(luò)的旅程,同時(shí)考慮MAX78000的硬件規(guī)格。存儲(chǔ)庫(kù)中包含一些簡(jiǎn)單的 AI 網(wǎng)絡(luò)和應(yīng)用程序,例如面部識(shí)別 (Face ID)。
圖 3 顯示了 PyTorch 中的典型 AI 開發(fā)過程。首先,對(duì)網(wǎng)絡(luò)進(jìn)行建模。必須注意的是,并非所有MAX7800x微控制器的硬件都支持PyTorch環(huán)境中的所有數(shù)據(jù)操作。因此,ADI公司提供的文件 ai8x.py 必須首先包含在項(xiàng)目中。此文件包含使用MAX78000所需的 PyTorch 模塊和運(yùn)算符?;诖嗽O(shè)置,可以構(gòu)建網(wǎng)絡(luò),然后使用訓(xùn)練數(shù)據(jù)進(jìn)行訓(xùn)練、評(píng)估和量化。此步驟的結(jié)果是一個(gè)檢查點(diǎn)文件,其中包含最終合成過程的輸入數(shù)據(jù)。在最后的流程步驟中,網(wǎng)絡(luò)及其參數(shù)被轉(zhuǎn)換為適合硬件 CNN 加速器的形式。這里應(yīng)該提到的是,網(wǎng)絡(luò)訓(xùn)練可以在任何PC(筆記本電腦、服務(wù)器等)上完成。但是,如果沒有 CUDA 顯卡支持,這可能需要花費(fèi)大量時(shí)間——即使對(duì)于小型網(wǎng)絡(luò),幾天甚至幾周也是完全現(xiàn)實(shí)的。

3.AI 開發(fā)過程。
在開發(fā)過程的第 2 階段,使用將數(shù)據(jù)寫入 CNN 加速器并讀取結(jié)果的機(jī)制創(chuàng)建應(yīng)用程序固件。在第一階段創(chuàng)建的文件通過 #include 指令集成到 C/C++ 項(xiàng)目中。Eclipse IDE 和 GNU 工具鏈等開源工具也用于微控制器的開發(fā)環(huán)境。ADI公司提供軟件開發(fā)套件(Maxim Micros SDK (Windows))作為安裝程序,已包含所有必要的元件和配置。軟件開發(fā)套件還包含外設(shè)驅(qū)動(dòng)程序以及示例和說明,以簡(jiǎn)化應(yīng)用程序開發(fā)過程。
一旦項(xiàng)目被編譯和鏈接而沒有任何錯(cuò)誤,就可以在目標(biāo)硬件上對(duì)其進(jìn)行評(píng)估。為此,ADI公司開發(fā)了兩種不同的硬件平臺(tái)。圖 4 顯示了MAX78000EVKIT,圖 5 顯示了 MAX78000FTHR,這是一個(gè)稍小的羽毛外形板。每個(gè)板都配有一個(gè) VGA 攝像頭和一個(gè)麥克風(fēng)。

圖4.MAX78000評(píng)估套件。

圖5.MAX78000FTHR評(píng)估套件。
結(jié)論
以前,人工智能應(yīng)用需要以服務(wù)器群或昂貴的FPGA的形式消耗大量能源。現(xiàn)在,借助具有專用 CNN 加速器的 MAX78000 系列微控制器,可以使用單個(gè)電池長(zhǎng)時(shí)間為 AI 應(yīng)用供電。這一在能源效率和功耗方面的突破使邊緣人工智能比以往任何時(shí)候都更容易獲得,并釋放了以前不可能實(shí)現(xiàn)的令人興奮的新的邊緣人工智能應(yīng)用的潛力。
審核編輯:黃飛
評(píng)論