完全硬件实现的忆阻器卷积神经网络
完全硬件實現的憶阻器卷積神經網絡(CNNs)
原文標題:Fully hardware-implemented memristor convolutional neural network
作者:Peng Yao.et al.
期刊:Nature
這篇是2020年初清華大學發表在nature上的文章,當時就看見很多媒體報道,這篇文章也是去年WOS(Web of Science)上憶阻器方面被引次數最多的三篇文章之一(被引45次)。以下只翻譯了摘要,后續翻譯會更新。
摘要:
憶阻器實現的神經形態計算系統,提供了一種訓練神經網絡的高速、低功耗的方法。然而,作為圖像識別最重要的的模型之一——卷積神經網絡(CNNs),還沒有用憶阻器交叉開關陣列——一種憶阻器在交點處的交叉點陣列,實現完全硬件化。而且,由于良率低、變化大和器件的其他不理想特性,實現堪比軟件CNNs的處理結果是非常有挑戰性的。這里,我們報告了高良率、高性能和統一的憶阻器交叉陣列的制造方法,這些陣列是用于實現CNNs的,它們集成了8塊2048個單元的憶阻器陣列來提高并行計算的能力。除此之外,我們提出了一種高效的混合訓練方法來適應器件的不完美之處,并且提高系統的總體性能。我們建立了一個5層憶阻器CNN網絡來實現MNIST圖像識別,實現了96%以上的正確率。除了用共享輸入的不同內核做并行卷積計算,憶阻器陣列中多個相同內核的復制被證明可以并行處理不同的輸入。在能量效率方面,基于憶阻器的CNN神經形態系統比最先進的圖像處理單元(GPU)高兩個數量級,而且表現出可以拓展為更大的網絡,例如殘差神經網絡。我們的結果有望提供一種可行的用于深度神經網絡和邊緣計算的硬件解決方案,這種基于憶阻器的方案將沒有"馮諾依曼瓶頸"。
正文:
CNNs已經成為最重要的深度神經網路之一,在圖像處理相關的任務中扮演著重要的角色,例如圖像識別、圖像分割和物體識別。一個典型的CNN計算過程包括大量的滑動卷積操作。在這方面,非常需要能夠支持并行乘累加運算(MAC)的計算單元。這種需求已經導致了傳統計算系統的重新設計以在更高的性能和更低的功耗下執行CNN,重新設計的范圍從總體的應用平臺,例如圖像處理單元(GPUs),到特定應用的加速器。然而,在計算效率方面更進一步的改進將最終受限于這些體系的馮諾依曼架構,在這種架構中,內存和處理單元在物理上的分離導致了大量的能量消耗和單元間數據交換的巨大時間延遲。相比之下,基于憶阻器的神經形態計算提供了富有前景的無馮諾依曼計算模式,因此消除了數據傳輸的代價。通過直接使用歐姆定律來做乘法和基爾霍夫電流定律來做加法,一個憶阻器陣列能夠實現并行存內MAC操作,造就了速度和能量效率顯著提升的模擬存內計算。
基于憶阻器的神經形態計算方面的研究涵蓋了大量的主題,從器件優化到系統實現。一些有關存內計算的實際應用的試驗性證明也被報道了。最近的研究報道證實了對于MNIST手寫數字數據庫應用圖像識別的二層和三層憶阻器多層感知器。然而,一個完整的、對于更加復雜的圖像識別任務更加必要的CNN,還沒有在一個基于全憶阻器的硬件系統中實現。原因主要存在于缺乏實現憶阻器CNN的高效解決方法:首先,生產的憶阻器CNN經常有低良率和憶阻器陣列不統一的問題。第二,很難實現和軟件結果相媲美的表現(例如,圖像識別正確率),原因是器件的不完美,例如工藝偏差、電導漂移和器件狀態死鎖。第三,由于需要在不同的輸入批次之間滑動,CNN中的關鍵卷積操作是需要時間的,這通常是一系列過程,并且對于全連接向量-矩陣乘法(VMM)將導致憶阻器卷積器和憶阻器陣列之間的速度不匹配。
在本研究中,一個用于MNIST數字圖像識別的完全5層憶阻器CNN被成功地證實。優化的材料堆棧使得2048個1T1R構成的陣列中有著可靠的和統一的模擬開關特性。通過(我們所)建議使用的混合訓練策略,對于整個測試數據集的識別準確率達到了96.19%。更進一步地,將卷積核復制到三個并行的憶阻器卷機器將憶阻器CNN的延遲大約減少了1/3。我們的高集成度的神經形態系統提供了一種可行的方案來顯著提升CNN的效率,方法是通過消除基于憶阻器的卷積計算和全連接VMM的吞吐量差距。
實現具有實用價值的憶阻器神經計算系統通常需要集成多個憶阻器交叉開關陣列。通常,將權重分散到不同的陣列對于并行計算是有利的,在(神經)網絡的規模逐漸增加的情況下,這逐漸變得必需。然而,之前關于神經網絡的驗證依賴于單個陣列,主要是由于生產高度可重復陣列的挑戰。憶阻器陣列的偏差和不理想特性被視為實現神經形態計算的巨大障礙。
這里我們提出一種用于神經網絡的通用憶阻器計算架構。憶阻器單元使用TiN/TaO_x/HfO_x/TiN構成的材料堆棧,在增強(置位)和抑制(復位)過程中通過調節電場和熱量,表現出連續的電導調控能力。材料和制造過程和傳統的CMOS過程相兼容,所以憶阻器陣列可以方便地在晶圓代工廠中的后道工序中生產,來達到減少過程偏差和實現高重復率的目的。在相同的編程條件下,生產的交叉陣列表現出統一的模擬開關特性。因此,一個多憶阻器陣列硬件系統就用一塊定制的PCB板和一塊FPGA評估板搭建好了。正如系統原理圖所展現的,這個系統主要由8個憶阻器處理單元構成。每個處理單元有其自己的集成2048個單元的憶阻器陣列。每個憶阻器連接到一個晶體管的漏極,即形成一種1T1R的配置方式。每個憶阻器陣列有著128*161T1R個單元構成的集合。其中有著128條平行的字線和128條水平的電源線,并且有著16條垂直的位線。這個陣列表現出出人意料地可重復的多級電導狀態。圖中展現出在32種不同的電導狀態中,1024個憶阻器的分布,其中所有的曲線都是無重疊地分離著的。沖擊脈寬50ns、相同的置位和復位沖擊串用于閉環編程操作,來達到一個特定的電導狀態。測量流程在方法部分闡述。
正如圖2所展示的,一個5層CNN建立在一個憶阻器硬件系統上來識別MNIST手寫數字圖像。CNN中詳細的數據流和相應的憶阻器映射在方法部分描述。
實現基于憶阻器的卷積操作需要執行在不同的核之間的滑動操作。憶阻器陣列在共享不同核的輸入的條件下,可以很高效的實現并行MAC。圖2b展示了一個典型的卷積示例在滑動過程中的示意圖,圖2c揭示了在1T1R憶阻器陣列中的相關操作。輸入值依據它被量化的位碼、通過脈沖的數量來編碼。一個有符號的核權重,被映射到一對憶阻器的電導的差分。在這種方法下,一個核中的所有權重都被映射到兩行電導上:一行通過正的脈沖輸入來表示正的權重,另一行通過大小相等的負脈沖來表示負的權重。在將編碼脈沖輸入到位線之后,通過兩條差分電源線上的輸出電流被探測和求和。差分電流是相應于輸入批量(數據)和選中核的加權和。有著不同權重的不同核被映射到不同對的差分行,并且整個憶阻器陣列在相同的輸入下并行地執行MAC。所有想要的加權和結果可以同時得到。
在典型的CNN訓練中,有必要根據最后的輸出反向傳播目標梯度,來達到更新所有權重的目的。這項任務要求相當復雜的操作,來將編碼讀脈沖從后向前、一層一層地應用于電源線。而且,由于器件的不理想特性,例如非線性和非對稱的電導調節,訓練一個復雜的深度神經網路是有挑戰性的。相比于純粹的原位訓練方案,異位訓練看起來像是一條利用了已有的高性能參數的捷徑。然而,不可避免的硬件缺陷,例如器件缺陷和導線的寄生電阻與電容,將使得在把異地學習到的權重轉移到憶阻器電導時,權重變得模糊并且使系統的性能下降。因此,異位訓練在正常情況下需要提前了解硬件的情況,并且基于這種代價高昂的認識,使用軟件來學習權重。
為了避免各種不理想的器件特性,我們提出一種混合訓練方法來實現憶阻器卷積神經網絡。在圖3a中展示的整個流程表包含兩個階段。首先,一個CNN模型進行異位訓練,之后所有被確定的權重通過一種閉合回路寫入的方法傳輸到憶阻器處理單元。
總結
以上是生活随笔為你收集整理的完全硬件实现的忆阻器卷积神经网络的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数模笔记_多变量最优化计算之牛顿法
- 下一篇: 文献检索实践