模拟内存计算如何解决边缘人工智能推理的功耗挑战
模擬內存計算如何解決邊緣人工智能推理的功耗挑戰
How analog in-memory computing can solve power challenges of edge AI inference
機器學習和深度學習已經成為我們生活中不可或缺的一部分。人工智能(AI)應用通過自然語言處理(NLP)、圖像分類和目標檢測深深地嵌入到我們使用的許多設備中。大多數人工智能應用程序都是通過基于云的引擎提供服務的,這些引擎對它們的用途很好,比如在Gmail中輸入電子郵件響應時,可以得到單詞預測。
雖然我們很享受這些人工智能應用的好處,但這種方法帶來了隱私、功耗、延遲和成本挑戰。如果有一個本地處理引擎能夠在數據本身的原點執行部分或全部計算(推斷),那么這些挑戰就可以得到解決。這在傳統的數字神經網絡實現中很難做到,在傳統的數字神經網絡中,內存成為一個耗電的瓶頸。這個問題可以通過多級存儲器和使用模擬內存計算方法來解決,這種方法使處理引擎能夠滿足在網絡邊緣執行人工智能推理所需的低得多的毫瓦到微瓦的功率要求。
云計算的挑戰
當人工智能應用程序通過基于云的引擎提供服務時,用戶必須(自愿或不情愿地)上傳一些數據到云,在那里計算引擎處理數據,提供預測,并將預測發送到下游用戶消費。
圖1:從邊緣到云的數據傳輸。
與此過程相關的挑戰概述如下:
隱私和安全問題:對于始終在線、隨時感知的設備,人們擔心個人數據(和/或機密信息)在上傳過程中或在數據中心的有效期內被濫用。
不必要的功耗:如果每一個數據位都將被云化,那么它將消耗來自硬件、無線電、傳輸以及可能在云中不需要的計算中消耗的能量。
小批量推斷的延遲:如果數據源于邊緣,有時可能需要一秒鐘或更長時間才能從基于云的系統獲得響應。對于人類的感官來說,任何超過100毫秒(ms)的延遲都是顯而易見的,并且可能是令人討厭的。
數據經濟需要有意義:傳感器無處不在,而且價格低廉;然而,它們產生了大量數據。將每一位數據上傳到云端并進行處理是不經濟的。
為了使用本地處理引擎解決這些挑戰,執行推理操作的神經網絡模型必須首先使用給定的數據集針對所需的用例進行訓練。通常,這需要高計算(和內存)資源和浮點運算。因此,機器學習解決方案的訓練部分仍然需要在公共或私有云(或本地GPU、CPU、FPGA場)上使用數據集來生成最優的神經網絡模型。一旦神經網絡模型準備好了,由于神經網絡模型不需要反向傳播來進行推理操作,因此可以用小型計算引擎進一步優化模型。推理機通常需要大量的乘法累加(MAC)引擎,然后是一個激活層,如整流線性單元(ReLU)、sigmoid或tanh,這取決于神經網絡模型的復雜度,以及層與層之間的池層。
大多數神經網絡模型需要大量的MAC操作。例如,即使是一個相對較小的“1.0 MobileNet-224”模型也有420萬個參數(權重),并且需要5.69億個MAC操作來執行推理。由于大多數模型都是由MAC操作控制的,這里的重點將放在機器學習計算的這一部分,并探索創建更好解決方案的機會。一個簡單的,完全連接的兩層網絡如下圖2所示。
圖2:完全連接的兩層神經網絡。
輸入神經元(數據)用第一層權值進行處理。第一層的輸出神經元然后用第二層權重進行處理,并提供預測(比如,模型是否能夠在給定的圖像中找到貓的臉)。這些神經網絡模型使用“a點積”來計算每一層中的每個神經元,如下式所示(為了簡化,省略方程中的“偏差”項):
數字計算中的存儲瓶頸
在數字神經網絡實現中,權值和輸入數據存儲在DRAM/SRAM中。權重和輸入數據需要轉移到MAC引擎進行推理。如下面的圖3所示,這種方法在獲取模型參數和將數據輸入到發生實際MAC操作的ALU時會消耗掉大部分的能量。
圖3:機器學習計算中的內存瓶頸。(來源:Y.-H.Chen、J.Emer和V.Sze,“Eyeriss:卷積神經網絡節能數據流的空間架構”,ISCA,2016年)
從能量的角度來看,一個典型的使用數字邏輯門的MAC操作消耗大約250飛秒焦耳(fJ,或10-15焦耳)的能量,但在數據傳輸過程中消耗的能量比計算本身多出兩個數量級,并且在50微微焦耳(pJ,或10-12焦耳)到100pJ的范圍內。公平地說,有許多設計技術可以最大限度地減少從內存到ALU的數據傳輸;但是,整個數字方案仍然受到Von Neumann架構的限制,因此這為減少功耗提供了很大的機會。如果執行MAC操作的能量可以從~100pJ減少到pJ的一小部分呢?
用模擬內存計算消除內存瓶頸
當內存本身可用于減少計算所需的功耗時,在邊緣執行推理操作變得省電。使用內存計算方法可以最大限度地減少必須移動的數據量。這反過來又消除了數據傳輸過程中的能量浪費。能量消耗被進一步最小化使用閃光燈電池,它可以以超低的活動功耗工作,并且在待機模式下幾乎沒有能量消耗。
這種方法的一個例子就是memBrain?
技術來自硅存儲技術公司,一家微芯片技術公司?;赟ST的SuperFlash?內存技術,該解決方案包括內存計算架構,可在存儲推理模型權重的位置進行計算。這消除了MAC計算中的內存瓶頸,因為權重沒有數據移動,只有輸入數據需要從輸入傳感器(如攝像機或麥克風)移動到內存陣列。
這種存儲器的概念基于兩個基本原理:(a)晶體管的模擬電流響應基于其閾值電壓(Vt)和輸入數據,以及(b)基爾霍夫電流定律,即在一個點上相遇的導體網絡中電流的代數和為零。
同樣重要的是要了解基本的非易失性存儲器(NVM)位單元,它在這種多級存儲器體系結構中使用。下圖(圖4)是帶有共享擦除門(EG)和源線(SL)的兩個ESF3(嵌入式超級閃存第三代)位單元的橫截面。每個位單元有五個終端:控制門(CG)、工作線(WL)、擦除門(EG)、源線(SL)和位線(BL)。位單元上的擦除操作是通過在例如上施加高壓來完成的。編程操作是通過在WL、CG、BL和SL上施加高/低壓偏置信號來完成的。讀取操作是通過在WL、CG、BL和SL上施加低壓偏置信號來完成的。
圖4:SuperFlash ESF3單元。
利用這種存儲器結構,用戶可以通過細粒度編程操作在不同的Vt級別上對存儲器位單元進行編程。該存儲技術利用一種智能算法來調整存儲單元的浮柵(FG)Vt,以實現輸入電壓的特定電流響應。根據終端應用的要求,電池可編程為線性或亞閾值工作區。
圖5演示了在內存單元上存儲和讀取多個級別的能力。假設我們試圖在內存單元中存儲2位整數值。對于這個場景,我們需要用2位整數值(00、01、10、11)中的四個可能值之一對內存數組中的每個單元進行編程。下面的四條曲線是四種可能狀態中的每一種的IV曲線,電池的電流響應取決于施加在CG上的電壓。
圖5:ESF3單元中的Vt電平編程。
帶內存計算的乘法累加運算
每個ESF3細胞都可以被建模為可變電導(gm)。ESF3電池的電導取決于編程單元的浮柵電壓。將訓練模型的權值編程為存儲單元的浮柵Vt,因此,單元的gm表示訓練模型的權重。當輸入電壓(Vin)施加在ESF3電池上時,輸出電流(Iout)將由方程式Iout=gm*Vin給出,這是輸入電壓與存儲在ESF3電池上的重量之間的乘法運算。
在下面的圖中,從陣列i2(例如)中,通過累加(i)列的方式(例如,i 2)將從陣列中進行的乘法運算(i 2)被連接到一個小的陣列中(例如)進行乘法運算(i 2)。根據應用,激活功能可以在ADC塊內執行,也可以在存儲器塊外部用數字實現來實現。
圖6:使用ESF3數組(2×2)進行乘法累加運算。
為了在更高的層次上進一步說明這一概念,來自訓練模型的單個權重被編程為存儲單元的浮柵Vt,因此來自訓練模型每一層的所有權重(假設一個完全連接的層)都可以被編程到一個物理上看起來像權重矩陣的內存陣列上,如圖7所示。
圖7. 用于推理的權重矩陣內存數組。
對于推理操作,首先使用數模轉換器(DAC)將數字輸入(比如圖像像素)轉換為模擬信號并應用于存儲器陣列。然后,該陣列對給定的輸入向量并行執行數千個MAC操作,并產生輸出,這些輸出可以進入各個神經元的激活階段,然后可以使用模數轉換器(ADC)將其轉換回數字信號。然后,數字信號在進入下一層之前被處理為池。
這種類型的內存結構非常模塊化和靈活。許多memBrain瓦片可以縫合在一起,用權重矩陣和神經元混合構建各種大模型,如圖8所示。在這個例子中,一個3×4的磁貼配置被縫合在一起,并且數據可以通過共享總線從一個磁貼移動到另一個磁貼。
圖8:memBrain? 是模塊化的。
到目前為止,我們主要討論了這種架構的硅實現。軟件開發工具包(SDK)(圖9)的可用性有助于解決方案的部署。除了硅之外,SDK還有助于推理引擎的部署。
SDK流與培訓框架無關。用戶可以在任何可用的框架中創建神經網絡模型,如TensorFlow、Pythorch或其他框架,根據需要使用浮點計算。一旦建立了一個模型,SDK將幫助量化訓練過的神經網絡模型,并將其映射到內存陣列中,在那里可以使用來自傳感器或計算機的輸入向量執行向量矩陣乘法。
結論
這種多級內存方法及其內存計算能力的優點包括:
極低功耗:該技術專為低功耗應用而設計。第一級功耗優勢來自于這樣一個事實,即解決方案是內存計算,因此在計算過程中,SRAM/DRAM的數據和權重傳輸不會浪費能量。第二個能量優勢源于這樣一個事實:閃光電池在亞閾值模式下工作,電流值非常低,所以有源功耗非常低。第三個優點是,在待機模式下幾乎沒有能量消耗,因為非易失性存儲單元不需要任何電源來保存數據,以備永遠在線。該方法也非常適合于利用權重和輸入數據的稀疏性。如果輸入數據或權重為零,則內存位單元不會被激活。
較低的封裝尺寸:該技術使用分離門(1.5T)單元架構,而數字實現中的SRAM單元基于6T架構。此外,與6T SRAM單元相比,該單元是更小的比特單元。另外,一個單元單元可以存儲整個4位整數值,而SRAM單元需要4×6=24個晶體管來存儲。這提供了一個大大更小的片上占用空間。
較低的開發成本:由于內存性能瓶頸和von Neumann架構的限制,許多專用設備(如Nvidia的Jetsen或Google的TPU)傾向于使用更小的幾何結構來獲得每瓦的性能,這是解決邊緣人工智能計算挑戰的一種昂貴方法。隨著使用模擬內存計算方法的多級存儲器方法,計算在閃存單元中在芯片上進行,因此可以使用更大的幾何結構,并減少掩模成本和交付周期。
邊緣計算應用前景廣闊。然而,在邊緣計算能夠起飛之前,還需要解決電力和成本方面的挑戰。一個主要的障礙可以通過使用在flash單元中執行片上計算的存儲器方法來消除。這種方法利用了一種經過生產驗證、事實上是標準類型的多級內存技術解決方案,該解決方案針對機器學習應用程序進行了優化。
總結
以上是生活随笔為你收集整理的模拟内存计算如何解决边缘人工智能推理的功耗挑战的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何为嵌入式应用选择适当的SSD
- 下一篇: 关键任务应用程序依赖于故障保护存储器