模擬內(nèi)存計算如何解決邊緣AI推理的功耗挑戰(zhàn)

翻譯自——embedded

機器學習和深度學習已經(jīng)成為我們生活中不可或缺的一部分。通過自然語言處理(NLP)、圖像分類和對象檢測的人工智能(AI)應(yīng)用已經(jīng)深入到我們許多設(shè)備中。大多數(shù)人工智能應(yīng)用程序都是通過基于云的引擎提供服務(wù),這些引擎可以很好地為它們的用途提供基礎(chǔ)支持,比如在Gmail中輸入電子郵件回復時獲得單詞預測。

盡管我們很享受這些人工智能應(yīng)用所帶來的好處,但這種方法也帶來了隱私、功耗、延遲和成本方面的挑戰(zhàn)。如果在數(shù)據(jù)起源處有一個本地處理引擎能夠執(zhí)行部分或全部計算(推理),則可以解決這些挑戰(zhàn)。這在傳統(tǒng)的數(shù)字神經(jīng)網(wǎng)絡(luò)實現(xiàn)中是很難做到的,在這種情況下,內(nèi)存成為了耗電的瓶頸。這個問題可以通過多層內(nèi)存和使用模擬內(nèi)存計算方法來解決,這些計算方法可讓處理引擎能夠滿足在網(wǎng)絡(luò)邊緣執(zhí)行人工智能推斷所需的更低的毫瓦到微瓦的功率要求。

云計算的挑戰(zhàn)

當人工智能應(yīng)用程序通過基于云的引擎提供服務(wù)時,用戶必須上傳一些數(shù)據(jù)到云中,由計算引擎處理數(shù)據(jù),提供預測,并將預測發(fā)送到下游,供用戶使用。

在這一進程中也有一些困難:

1.隱私和安全問題:對于始終在線的、感知的設(shè)備,人們擔心個人數(shù)據(jù)在上傳期間或在數(shù)據(jù)中心的存儲期間被濫用。

2.不必要的功耗:如果每個數(shù)據(jù)位都被云計算占用,那么它就會消耗來自硬件、無線電、傳輸和云計算的能量。

3.小批量推理的延遲:如果數(shù)據(jù)來自邊緣,則從基于云的系統(tǒng)獲得響應(yīng)可能需要一秒或更長的時間。對于人類的感官來說,任何超過100毫秒的延遲都是顯而易見的。

4.數(shù)據(jù)經(jīng)濟:傳感器無處不在,而且它們非常便宜;然而,他們產(chǎn)生了大量的數(shù)據(jù)。將所有數(shù)據(jù)上傳到云端并進行處理似乎毫無經(jīng)濟可言。

通過使用本地處理引擎來解決這些挑戰(zhàn),執(zhí)行推理操作的神經(jīng)網(wǎng)絡(luò)模型,首先要針對所需用例使用給定的數(shù)據(jù)集進行培訓。通常,這需要高計算資源和浮點算術(shù)運算。因此,機器學習解決方案的訓練部分仍然需要在公共或私有云(或本地GPU、CPU、FPGA場)上使用數(shù)據(jù)集完成,以生成最優(yōu)的神經(jīng)網(wǎng)絡(luò)模型。一旦神經(jīng)網(wǎng)絡(luò)模型準備就緒,神經(jīng)網(wǎng)絡(luò)模型就不需要反向傳播進行推理操作,因此該模型可以進一步針對具有小型計算引擎的本地硬件進行優(yōu)化。一個推理引擎通常需要大量的多重累加(MAC)單元,然后是一個激活層,如整流線性單元(ReLU)、sigmoid或tanh,這取決于神經(jīng)網(wǎng)絡(luò)模型的復雜性和層之間的池化層。

大多數(shù)神經(jīng)網(wǎng)絡(luò)模型需要大量的MAC操作。例如,即使一個相對較小的“1.0 MobileNet-224”模型也有420萬個參數(shù)(權(quán)重),需要5.69億個MAC操作來執(zhí)行推斷。由于大多數(shù)模型由MAC操作主導,這里的重點將放在機器學習計算的這一部分,并探索創(chuàng)建更好的解決方案的機會。圖2顯示了簡單的、完全連通的兩層網(wǎng)絡(luò)。

輸入神經(jīng)元(數(shù)據(jù))使用第一層權(quán)值進行處理。第一層的輸出神經(jīng)元然后與第二層的權(quán)重進行處理,并提供預測(比如,該模型是否能夠在給定的圖像中找到一張貓臉)。這些神經(jīng)網(wǎng)絡(luò)模型使用“點積”來計算每一層的每一個神經(jīng)元,如下式所示(為了簡化,在方程中省略“偏差”項):

數(shù)字計算的內(nèi)存瓶頸

在數(shù)字神經(jīng)網(wǎng)絡(luò)實現(xiàn)中,權(quán)值和輸入的數(shù)據(jù)存儲在DRAM/SRAM中。權(quán)重和輸入數(shù)據(jù)需要移動到MAC引擎進行推理。如下圖所示,這種方法在獲取模型參數(shù)和將數(shù)據(jù)輸入到實際MAC操作發(fā)生的算術(shù)邏輯單元(ALU)時消耗了大部分能量。

從能量的角度來看——一個典型的MAC操作使用數(shù)字邏輯門消耗大約250飛托焦耳(fJ,或10 - 15焦耳)的能量,但在數(shù)據(jù)傳輸過程中消耗的能量比計算本身要多兩個數(shù)量級,大概在50皮焦耳(pJ,或10 - 12焦耳)到100pJ之間。

公平地說,有許多設(shè)計技術(shù)從內(nèi)存到ALU的數(shù)據(jù)傳輸可以最小化;然而,整個數(shù)字方案仍然受到馮·諾依曼架構(gòu)的限制——因此這為減少能源浪費提供了巨大的機會。如果執(zhí)行MAC操作的能量可以從~100pJ降低到pJ的一個分數(shù)會是什么結(jié)果?

使用內(nèi)存中的模擬計算消除內(nèi)存瓶頸

當內(nèi)存本身可以用來減少計算所需的功耗時,在邊緣執(zhí)行推理操作就變得非常省電。使用內(nèi)存中的計算方法可以將必須移動的數(shù)據(jù)量最小化。這反過來又消除了數(shù)據(jù)傳輸過程中所浪費的能量。采用超低有功功率耗散、待機狀態(tài)下幾乎無能量耗散的閃速電池,也會進一步降低了系統(tǒng)的能量耗散。

這種方法的一個案例是來自Microchip公司的Silicon Storage Technology (SST) ——memBrain?技術(shù)?;赟ST的SuperFlash?內(nèi)存技術(shù),解決方案包括一個內(nèi)存計算架構(gòu),可以在存儲推理模型的權(quán)重的地方進行計算。這消除了MAC計算中的內(nèi)存瓶頸,因為權(quán)重沒有數(shù)據(jù)移動——只有輸入數(shù)據(jù)需要從輸入傳感器(如攝像頭或麥克風)移動到內(nèi)存陣列。

這個內(nèi)存的概念基于兩個因素:(a)模擬電流響應(yīng)從一個晶體管是基于其閾值電壓(Vt)和輸入數(shù)據(jù),和(b)基爾霍夫電流定律,即導體網(wǎng)絡(luò)中在一點相接的電流的代數(shù)和為零。

理解基本的非易失性內(nèi)存(NVM)位元組(bitcell)同等很重要,它被用在這種多層內(nèi)存架構(gòu)中。下圖(圖4)是兩個ESF3(嵌入式SuperFlash第三代)位元的橫截面,它們具有共享擦除門(EG)和源線(SL)。每個位元有五個終端:控制門(CG)、工作線(WL)、擦除門(EG)、源線(SL)和位線(BL)。擦除操作是通過在EG上施加高壓來完成的。對WL、CG、BL、SL施加高/低電壓偏置信號進行編程操作,對WL、CG、BL、SL施加低電壓偏置信號進行讀操作。

使用這種內(nèi)存架構(gòu),用戶可以通過細粒度的編程操作在不同的Vt級別上對內(nèi)存位單元進行編程。該存儲技術(shù)利用一種智能算法來調(diào)整存儲單元的浮動門(FG) Vt,以實現(xiàn)輸入電壓的一定電流響應(yīng)。根據(jù)最終應(yīng)用的需要,我們可以在線性或閾下工作區(qū)域?qū)卧M行編程。

下圖演示了在內(nèi)存單元上存儲和讀取多個級別的功能。假設(shè)我們試圖在內(nèi)存單元中存儲一個2位整數(shù)值。對于這個場景,我們需要用2位整數(shù)值(00、01、10、11)的四個可能值中的一個對內(nèi)存數(shù)組中的每個單元進行編程。下面的四條曲線是四種可能狀態(tài)的IV曲線,電池的電流響應(yīng)取決于施加在CG上的電壓。

使用內(nèi)存計算的乘法累加操作

每個ESF3單元都可以建模為可變電導(gm)。電導的ESF3細胞取決于浮動柵Vt的編程細胞。將訓練模型的權(quán)值編程為記憶單元的浮動門Vt,因此,單元的gm表示訓練模型的權(quán)值。當輸入電壓(Vin)作用于ESF3電池時,輸出電流(Iout)由公式Iout = gm * Vin給出,它是輸入電壓與儲存在ESF3電池上的重量之間的乘法運算。

圖6演示了一個小數(shù)組配置(2×2數(shù)組)中的乘法累加概念,其中累加操作是通過添加連接到同一列(例如I1 = I11 + I21)的輸出電流來執(zhí)行的。激活功能可以在ADC塊內(nèi)執(zhí)行,也可以在內(nèi)存塊外的數(shù)字實現(xiàn)中執(zhí)行,具體取決于應(yīng)用程序。

我們在更高的層次上進一步闡明這一概念——來自訓練模型的單個權(quán)值被編程為內(nèi)存單元的浮動門Vt,因此來自訓練模型的每一層(假設(shè)是一個全連接層)的所有權(quán)值都可以在一個物理上看起來像權(quán)值矩陣的內(nèi)存陣列上編程。

對于推理操作,我們首先使用數(shù)模轉(zhuǎn)換器(DAC)將數(shù)字輸入(比如圖像像素)轉(zhuǎn)換為模擬信號,并應(yīng)用于內(nèi)存陣列。然后,該陣列對給定的輸入向量并行執(zhí)行數(shù)千次MAC操作,并產(chǎn)生可進入相應(yīng)神經(jīng)元激活階段的輸出,然后使用模數(shù)轉(zhuǎn)換器(ADC)將其轉(zhuǎn)換回數(shù)字信號。數(shù)字信號在進入下一層之前被處理成池。

這種類型的內(nèi)存架構(gòu)非常模塊化和靈活。許多memBrain塊可以被拼接在一起,用混合權(quán)重矩陣和神經(jīng)元構(gòu)建各種大型模型,如下圖所示。在本例中,一個3×4的拼接配置是與各個拼接之間的模擬和數(shù)字結(jié)構(gòu)縫合在一起的,數(shù)據(jù)可以通過共享總線從一個tile移動到另一個tile。

到目前為止,我們主要討論了該體系結(jié)構(gòu)的硅實現(xiàn)過程。軟件開發(fā)工具包(SDK)的可用性(圖9)有助于解決方案的部署。除了硅之外,SDK還促進了推理引擎的部署。

SDK與培訓框架無關(guān)。用戶可以在任何可用的框架(如TensorFlow、PyTorch或其他框架)中使用浮點計算創(chuàng)建神經(jīng)網(wǎng)絡(luò)模型。一旦創(chuàng)建,SDK幫助量化訓練過的神經(jīng)網(wǎng)絡(luò)模型,并將其映射到內(nèi)存數(shù)組中,在內(nèi)存數(shù)組中,向量-矩陣乘法可以用來自傳感器或計算機的輸入向量進行。

結(jié)論

這種具有內(nèi)存計算能力的多級內(nèi)存方法的優(yōu)點:

1.超低功耗:該技術(shù)專為低功耗應(yīng)用而設(shè)計。

第一級的功耗優(yōu)勢來自于內(nèi)存計算,因此在計算期間不會在數(shù)據(jù)和從SRAM/DRAM傳輸?shù)臋?quán)值中浪費能量。

第二個能量優(yōu)勢來自于閃存單元在亞閾值模式下運行,電流值非常低,所以有源功耗非常低。

第三個優(yōu)點,由于非易失性存儲單元不需要任何能量來保存數(shù)據(jù),所以在待機模式下幾乎沒有能量消耗。該方法也非常適合于利用權(quán)值和輸入數(shù)據(jù)的稀疏性。如果輸入數(shù)據(jù)或權(quán)值為零,則不會激活內(nèi)存位單元。

2.更低的封裝引腳

該技術(shù)使用分裂門(1.5T)單元架構(gòu),而數(shù)字實現(xiàn)中的SRAM單元基于6T架構(gòu)。此外,與6T SRAM單元相比,該單元要小得多。另外,一個電池可以存儲4位整數(shù)值,而SRAM電池需要4*6 = 24個晶體管才能存儲整數(shù)值。這提供了更小的芯片占用空間。

3.更低的開發(fā)成本

由于內(nèi)存性能瓶頸和馮諾依曼架構(gòu)的限制,許多專用設(shè)備(如Nvidia的Jetsen或谷歌的TPU)傾向于使用更小的幾何圖形來獲得每瓦的性能,這是解決邊緣AI計算挑戰(zhàn)的一種昂貴方式。隨著多級存儲器方法使用模擬存儲器上的計算方法,計算在閃存芯片上完成,因此可以使用更大的幾何圖形,并減少掩模成本和前置時間。

由此可看,邊緣計算應(yīng)用程序顯示了巨大的潛力。然而,在邊緣計算能夠騰飛之前,還有一些功率和成本方面的挑戰(zhàn)需要解決。通過使用在閃存單元中執(zhí)行芯片上計算的內(nèi)存方法,可以消除其中的主要障礙。這種方法利用了經(jīng)過生產(chǎn)驗證的、事實上標準類型的多級內(nèi)存技術(shù)解決方案,該解決方案針對機器學習應(yīng)用程序進行了優(yōu)化。

Vipin Tiwari

延伸閱讀——Microchip-SST神經(jīng)形態(tài)存儲解決方案memBrain

Microchip公司通過其硅存儲技術(shù)(SST)子公司,通過其模擬存儲器技術(shù)memBrain神經(jīng)形態(tài)存儲器解決方案降低功耗,從而應(yīng)對這一挑戰(zhàn)。

該公司的模擬閃存解決方案基于其Superflash技術(shù)并針對神經(jīng)網(wǎng)絡(luò)進行了優(yōu)化以執(zhí)行矢量矩陣乘法(VMM),通過模擬內(nèi)存計算方法改善了VMM的系統(tǒng)架構(gòu)實現(xiàn),增強了邊緣的AI推理。

由于當前的神經(jīng)網(wǎng)絡(luò)模型可能需要50M或更多的突觸(權(quán)重)進行處理,因此為片外DRAM提供足夠的帶寬變得具有挑戰(zhàn)性,從而造成神經(jīng)網(wǎng)絡(luò)計算的瓶頸和整體計算能力的提高。相比之下,memBrain解決方案將突觸權(quán)重存儲在片上浮動門中,從而顯著改善系統(tǒng)延遲。與傳統(tǒng)的基于數(shù)字DSP和SRAM / DRAM的方法相比,它可以降低10到20倍的功耗并降低整體BOM。

“ 隨著汽車,工業(yè)和消費者市場的技術(shù)提供商繼續(xù)為神經(jīng)網(wǎng)絡(luò)實施VMM,我們的架構(gòu)可幫助這些前向解決方案實現(xiàn)功耗,成本和延遲優(yōu)勢, ”SST許可部門副總裁Mark Reiten表示。“ Microchip將繼續(xù)為AI應(yīng)用提供高度可靠和多功能的Superflash內(nèi)存解決方案?!?/p>

今天的公司正在采用memBrain解決方案來提高邊緣設(shè)備的ML容量。由于具有降低功耗的能力,這種模擬內(nèi)存計算解決方案非常適合任何AI應(yīng)用。

“ Microchip的memBrain解決方案為我們即將推出的模擬神經(jīng)網(wǎng)絡(luò)處理器提供超低功耗的內(nèi)存計算, ” Syntiant公司首席執(zhí)行官Kurt Busch 說道。 “ 我們與Microchip的合作繼續(xù)為Syntiant提供許多關(guān)鍵優(yōu)勢,因為我們支持普遍的ML邊緣設(shè)備中語音,圖像和其他傳感器模式的永遠在線應(yīng)用?!?/p>

SST展示了這種模擬存儲器解決方案,并在FMS上展示了Microchip的基于memBrain產(chǎn)品區(qū)塊陣列的架構(gòu)。

池化層理解

池化層夾在連續(xù)的卷積層中間, 用于壓縮數(shù)據(jù)和參數(shù)的量,減小過擬合。簡而言之,如果輸入是圖像的話,那么池化層的最主要作用就是壓縮圖像。

池化層的作用:

1. invariance(不變性),這種不變性包括translation(平移),rotation(旋轉(zhuǎn)),scale(尺度)

2. 保留主要的特征同時減少參數(shù)(降維,效果類似PCA)和計算量,防止過擬合,提高模型泛化能力

(免責聲明:本網(wǎng)站內(nèi)容主要來自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網(wǎng)站出現(xiàn)的信息,均僅供參考。本網(wǎng)站將盡力確保所提供信息的準確性及可靠性,但不保證有關(guān)資料的準確性及可靠性,讀者在使用前請進一步核實,并對任何自主決定的行為負責。本網(wǎng)站對有關(guān)資料所引致的錯誤、不確或遺漏,概不負任何法律責任。
任何單位或個人認為本網(wǎng)站中的網(wǎng)頁或鏈接內(nèi)容可能涉嫌侵犯其知識產(chǎn)權(quán)或存在不實內(nèi)容時,應(yīng)及時向本網(wǎng)站提出書面權(quán)利通知或不實情況說明,并提供身份證明、權(quán)屬證明及詳細侵權(quán)或不實情況證明。本網(wǎng)站在收到上述法律文件后,將會依法盡快聯(lián)系相關(guān)文章源頭核實,溝通刪除相關(guān)內(nèi)容或斷開相關(guān)鏈接。 )

贊助商
2020-03-06
模擬內(nèi)存計算如何解決邊緣AI推理的功耗挑戰(zhàn)
翻譯自——embedded機器學習和深度學習已經(jīng)成為我們生活中不可或缺的一部分。通過自然語言處理(NLP)、圖像分類和對象檢測的人工智能(AI)應(yīng)用已經(jīng)深入到我們許多設(shè)備中。

長按掃碼 閱讀全文