TW202230225A - 用於執行神經網路計算的類比電路的校準方法及裝置 - Google Patents
用於執行神經網路計算的類比電路的校準方法及裝置 Download PDFInfo
- Publication number
- TW202230225A TW202230225A TW111102245A TW111102245A TW202230225A TW 202230225 A TW202230225 A TW 202230225A TW 111102245 A TW111102245 A TW 111102245A TW 111102245 A TW111102245 A TW 111102245A TW 202230225 A TW202230225 A TW 202230225A
- Authority
- TW
- Taiwan
- Prior art keywords
- calibration
- normalization
- layer
- neural network
- analog circuit
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/544—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
- G06F7/5443—Sum of products
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
- G06N3/065—Analogue means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/04—Inference or reasoning models
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Biophysics (AREA)
- Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Mathematical Physics (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Neurology (AREA)
- Nonlinear Science (AREA)
- Image Analysis (AREA)
- Analogue/Digital Conversion (AREA)
Abstract
本發明公開一種用於執行神經網路計算的類比電路的校準方法 ,包括:向預訓練神經網路提供校準輸入,該神經網路至少包括一個給定層,該給定層具有存儲在類比電路中的預訓練權重;計算來自該類比電路的校準輸出的統計資料,該類比電路使用該預訓練權重執行該給定層的張量運算;在該給定層之後的歸一化層確定在神經網路推理期間要執行的歸一化運算,其中該歸一化運算結合該校準輸出的統計資料;以及將該歸一化運算的配置寫入記憶體,同時保持該預訓練權重不變。
Description
本發明涉及電路技術領域,尤其涉及一種用於執行神經網路計算的類比電路的校準方法及裝置。
深度神經網路(deep neural network ,DNN)是具有輸入層、輸出層以及在輸入層和輸出層之間的一個或複數個隱藏層的神經網路。每一層對一個或複數個張量(tensor)執行操作或運算(operation)。張量是一個數學對象(mathematical object),它可以是零維(又名定標器(scaler))、一維(又名向量)、二維(又名矩陣)或多維(multi-dimensional)的。這些層(layer)執行的操作是數值計算,包括但不限於:卷積(convolution)、反卷積(deconvolution)、全連接操作(fully-connected operation)、標準化或歸一化(normalization)、啟動(activation)、池化(pooling)、調整大小(resizing)、逐元素算術(element-wise arithmetic)、連接(concatenation)、切片(slicing)等。一些層將過濾器(濾波器)權重應用於張量,例如在卷積操作中。
神經網路計算是計算密集型的並且經常導致高功耗。因此,邊緣裝置(edge device)上的神經網路推理(inference)需要快速且低功耗。與數位電路相比,設計良好的類比電路可以加快推理速度並提高能效(energy efficiency)。然而,類比計算比數位計算更容易受到電路非理想性(non-ideality)的影響,例如製程變化。電路非理想性降低了神經網路計算的準確性。然而,重新訓練適合每個製造晶片的神經網路既昂貴又不可行。因此,提高類比神經網路計算的準確性是一個挑戰。
有鑑於此,本發明提供一種用於執行神經網路計算的類比電路的校準方法及裝置,以解決上述問題。
根據本發明的第一方面,公開一種用於執行神經網路計算的類比電路的校準方法,包括:
向預訓練神經網路提供校準輸入,該神經網路至少包括一個給定層,該給定層具有存儲在類比電路中的預訓練權重;
計算來自該類比電路的校準輸出的統計資料,該類比電路使用該預訓練權重執行該給定層的張量運算;
在該給定層之後的歸一化層確定在神經網路推理期間要執行的歸一化運算,其中該歸一化運算結合該校準輸出的統計資料;以及
將該歸一化運算的配置寫入記憶體,同時保持該預訓練權重不變。
根據本發明的第二方面,公開一種用於執行神經網路計算的類比電路的校準方法,包括:
由類比電路使用存儲在該類比電路中的預訓練權重對校準輸入執行張量運算,以生成神經網路的給定層的校準輸出;
接收在該給定層之後的歸一化層的配置,其中該歸一化層由歸一化運算定義,該歸一化運算結合該校準輸出的統計資訊;以及
執行神經網路推理,包括使用該預訓練權重的給定層的給張量運算和給歸一化層的給歸一化運算。
根據本發明的第三方面,公開一種用於執行神經網路計算的裝置,包括:
類比電路,用於存儲神經網路的至少給定層的預訓練權重,其中該類比電路用於:透過在校準期間使用該預訓練權重對校準輸入執行張量運算,從該給定層生成校準輸出;以及使用該預訓練權重執行神經網路推理,包括該給定層的該張量運算;以及
數位電路,用於接收該給定層之後的歸一化層的配置,其中該歸一化層由包含該校準輸出的統計資料的歸一化運算定義,並在該神經網路推理期間執行該歸一化層的該歸一化運算。
本發明的用於執行神經網路計算的類比電路的校準方法由於包括:向預訓練神經網路提供校準輸入,該神經網路至少包括一個給定層,該給定層具有存儲在類比電路中的預訓練權重;計算來自該類比電路的校準輸出的統計資料,該類比電路使用該預訓練權重執行該給定層的張量運算;在該給定層之後的歸一化層確定在神經網路推理期間要執行的歸一化運算,其中該歸一化運算結合該校準輸出的統計資料;以及將該歸一化運算的配置寫入記憶體,同時保持該預訓練權重不變。本發明透過實施對類比電路的校準,從而使得類比電路在執行神經網路計算的結果更加精確。因此本發明提出的方案避免了因為電路非理想性而降低神經網路計算的準確性,並且無需針對每個製造晶片進行重新訓練以適合神經網路計算。
在下面對本發明的實施例的詳細描述中,參考了附圖,這些附圖構成了本發明的一部分,並且在附圖中透過圖示的方式示出了可以實踐本發明的特定的優選實施例。對這些實施例進行了足夠詳細的描述,以使所屬技術領域具有通常知識者能夠實踐它們,並且應當理解,在不脫離本發明的精神和範圍的情況下,可以利用其他實施例,並且可以進行機械,結構和程式上的改變。本發明。因此,以下詳細描述不應被理解為限制性的,並且本發明的實施例的範圍僅由所附申請專利範圍限定。
將理解的是,儘管術語“第一”、“第二”、“第三”、“主要”、“次要”等在本文中可用於描述各種元件、组件、區域、層和/或部分,但是這些元件、组件、區域、這些層和/或部分不應受到這些術語的限制。這些術語僅用於區分一個元件、组件、區域、層或部分與另一區域、層或部分。因此,在不脫離本發明構思的教導的情況下,下面討論的第一或主要元件、组件、區域、層或部分可以稱為第二或次要元件、组件、區域、層或部分。
此外,為了便於描述,本文中可以使用諸如“在...下方”、“在...之下”、“在...下”、“在...上方”、“在...之上”之類的空間相對術語,以便於描述一個元件或特徵與之的關係。如圖所示的另一元件或特徵。除了在圖中描述的方位之外,空間相對術語還意圖涵蓋設備在使用或運行中的不同方位。該裝置可以以其他方式定向(旋轉90度或以其他定向),並且在此使用的空間相對描述語可以同樣地被相應地解釋。另外,還將理解的是,當“層”被稱為在兩層“之間”時,它可以是兩層之間的唯一層,或者也可以存在一個或複數個中間層。
術語“大約”、“大致”和“約”通常表示規定值的±20%、或所述規定值的±10%、或所述規定值的±5%、或所述規定值的±3%、或規定值的±2%、或規定值的±1%、或規定值的±0.5%的範圍內。本發明的規定值是近似值。當沒有具體描述時,所述規定值包括“大約”、“大致”和“約”的含義。本文所使用的術語僅出於描述特定實施例的目的,並不旨在限制本發明。如本文所使用的,單數術語“一”,“一個”和“該”也旨在包括複數形式,除非上下文另外明確指出。本文所使用的術語僅出於描述特定實施例的目的,並不旨在限制本發明構思。如本文所使用的,單數形式“一個”、“一種”和“該”也旨在包括複數形式,除非上下文另外明確指出。
將理解的是,當將“元件”或“層”稱為在另一元件或層“上”、“連接至”、“耦接至”或“鄰近”時,它可以直接在其他元件或層上、與其連接、耦接或相鄰、或者可以存在中間元件或層。相反,當元件稱為“直接在”另一元件或層“上”、“直接連接至”、“直接耦接至”或“緊鄰”另一元件或層時,則不存在中間元件或層。
注意:(i)在整個附圖中相同的特徵將由相同的附圖標記表示,並且不一定在它們出現的每個附圖中都進行詳細描述,並且(ii)一系列附圖可能顯示單個專案的不同方面,每個方面都與各種參考標籤相關聯,這些參考標籤可能會出現在整個序列中,或者可能只出現在序列的選定圖中。
本發明的實施例提供了一種用於校準類比電路以提高類比神經網路計算的準確性的裝置和方法。該裝置可以包括用於根據深度神經網路(DNN)模型執行神經網路計算的類比電路和數位電路。 DNN 模型包括映射到類比電路的第一組層(“A 層”)和映射到數位電路的第二組層(“D 層”)。每一層都由相應的操作(或運算)定義。例如,卷積層由相應的濾波器權重和用於執行卷積的參數定義。 DNN 模型在載入到裝置之前進行了預訓練(pre-trained)。然而,在不同晶片上製作的類比電路可能具有不同的非理想特性。因此,同一組預訓練的濾波器權重和參數可能會導致不同的類比電路產生不同的輸出。本文所述的校準消除或減少了不同晶片之間的差異。
在對每個 A 層的輸出進行 DNN 訓練後離線執行校準。在校準過程中,校準輸入被饋送到 DNN 並收集每個 A 層的校準輸出的統計資訊。校準輸入可以是用於 DNN 訓練的訓練資料的子集。校準不同於重新訓練,因為在訓練中學習到的參數和權重在校準期間和之後保持不變。
在一些實施例中,每個 A 層的校準輸出的統計資料用於修改或替換 DNN 模型中定義的一些操作。統計資料可用於修改位元於 DNN 模型中 A 層之後的批歸一化 (batch normalization,BN) 層。或者,統計資料可用於定義一組適用於 A 層輸出的乘加運算(multiply-and-add operation)。在下面的描述中,術語“歸一化層”是指緊接在A層之後並且對A層的輸出應用歸一化操作的層。歸一化操作是根據 A 層的校準輸出的統計資訊確定的。在校準和配置歸一化層之後,裝置根據校準後的包含歸一化層的 DNN 模型進行推理。
在一個實施例中,由A層和D層執行的張量運算可以是卷積運算。 A層和D層執行的卷積可以是相同類型的卷積,也可以是不同類型的卷積。例如,A 層可以執行普通卷積,D 層可以執行深度卷積,反之亦然。通道(channel)尺寸與深度尺寸相同。在進行深度卷積時,輸入的通道尺寸與輸出的通道尺寸相同。假設一個卷積層接收 M 個通道的輸入張量並產生 N 個通道的輸出張量,其中 M 和 N 可以是相同的數字,也可以是不同的數字。在使用 N 個濾波器的“普通卷積”中,每個濾波器與輸入張量的 M 個通道進行卷積以產生 M 個輸出。將 M 個輸出相加以生成輸出張量的 N 個通道之一。在“深度卷積”中,M = N,並且在卷積中使用的 M 個濾波器與輸入張量的 M 個通道之間存在一一對應關係,其中每個濾波器與輸入張量的一個通道進行卷積以得到產生輸出張量的一個通道。普通卷積又可稱為正常卷積。在先前的方案中,均未有校準的方法。本發明的發明人創造性的提出校準的方案以解決先前技術的問題,而不是忽略該問題。本發明透過實施對類比電路的校準,從而使得類比電路在執行神經網路計算的結果更加精確。因此本發明提出的方案避免了因為電路非理想性而降低神經網路計算的準確性,並且無需針對每個製造晶片進行重新訓練以適合神經網路計算。
圖1是圖示根據一個實施例的可操作(可運算)以執行神經網路計算的裝置100的框圖。裝置100包括一個或複數個通用和/或專用數位電路110,例如中央處理單元(central processing unit,CPU)、圖形處理單元(graphics processing unit,GPU)、數位處理單元(digital processing unit,DSP)、現場可程式設計閘陣列(field-programmable gate array,FPGA) 、神經處理單元 (neural processing unit,NPU)、算術和邏輯單元 (arithmetic and logic unit,ALU)、專用積體電路 (application-specific integrated circuit ,ASIC) 和其他數位電路。裝置100還包括一個或複數個執行數學運算的類比電路120;數學運算例如是張量運算(或操作)。在一個實施例中,類比電路120可以是類比記憶體計算(analog compute-in-memory ,ACIM)裝置,其包括具有存儲和嵌入式計算能力的單元陣列。例如,ACIM 裝置的單元陣列可以存儲卷積層的濾波器權重。當輸入資料到達單元陣列時,單元陣列透過產生對應於濾波器權重和輸入資料的卷積的輸出電壓位準(voltage level)來執行卷積。
在一個實施例中,數位電路110耦合到記憶體130,記憶體130可以包括諸如動態隨機存取記憶體(dynamic random-access memory ,DRAM)、靜態隨機存取記憶體(static random access memory ,SRAM)、快閃記憶體和其他非瞬態機器讀取的記憶體裝置存儲介質;例如,揮發性或非揮發性存儲裝置。為了簡化說明,記憶體130被表示為一個塊;然而,應當理解,記憶體130可以表示記憶體组件的層次結構,例如高速緩衝記憶體、系統記憶體、固態或磁存儲裝置等。數位電路110執行存儲在記憶體130中的指令以對一個或複數個神經網路層執行諸如張量操作(或運算)和歸一化之類的操作(或運算)。
在一個實施例中,裝置(或設備)100還包括控制器140,用於調度和分配在DNN模型中定義的操作給數位電路110和類比電路120。在一個實施例中,控制器140可以是數位電路110的一部分。在一個實施例中,裝置100還包括校準電路150,用於執行類比電路120的校準。校準電路150以虛線輪廓示出,以顯示它可以位於替代位置。校準電路150可以與類比電路120在同一晶片上;或者,校準電路150可以在與類比電路120不同的晶片上,但是在相同的裝置100中。在又一個實施例中,校準電路150可以在另一個系統或裝置中,例如電腦或伺服器。
裝置100還可以包括用於透過有線和/或無線網路與另一個系統或裝置通訊的網路介面(網路接口)160。可以理解,為了簡化說明,裝置100可以包括圖1中未示出的附加组件。在一個實施例中,數位電路110可以執行存儲在記憶體130中的指令以執行控制器140和/或校準電路150的操作。
圖2是圖示根據一個實施例的DNN模型200和硬體電路之間的映射的圖。術語“映射”是指將 DNN 模型中定義的張量操作(或運算)分配給執行操作的硬體電路。在這個例子中,DNN 模型包括複數個卷積層(例如,CONV1-CONV5)。還參照圖1,CONV1、CONV2和CONV3(“A層”)的操作可以分配給類比電路120,而CONV4和CONV5(“D層”)的操作可以分配給數位電路110。卷積層到類比電路120或數位電路110的分配可以由諸如計算複雜度、功耗、精度要求等標準來指導。CONV1、CONV2和CONV3的濾波器權重存儲在類比電路120,以及CONV3和CONV3的濾波器權重存儲在可由數位電路110存取(accessible)的記憶體裝置(例如,圖1中的記憶體130)中。DNN模型(DNN Model)200可以包括附加層(例如,池化、ReLU(Rectified Linear Unit,線性整流函數)等),為了簡化說明,圖 2 中省略了這些內容。
圖 2 中的 DNN 模型 200 是經過校準的 DNN;也就是說,它包括由校準產生的歸一化層(N1、N2 和 N3)。每個歸一化層都放置在相應 A 層的輸出處。在第一實施例中,歸一化層可以是由前一A層的校準輸出的統計資料修改的修改後的BN層。在第二實施例中,歸一化層可以將深度卷積應用於前一A層的輸出,其中濾波器權重至少部分地從前一A層的校準輸出的統計中獲得的。從訓練中學習到的與 CONV1-CONV5 相關聯的濾波器權重存儲在裝置 100 (例如,類比電路 120 和記憶體 130) 中,並且在校準期間和校準之後它們不會改變。
圖3是說明根據一個實施例的類比電路120的框圖。類比電路120可以是包括用於資料存儲和記憶體計算的單元陣列的ACIM裝置。存在各種 ACIM 裝置的設計和實現;可以理解,類比電路120不限於特定類型的ACIM裝置。在該示例中,類比電路120的單元陣列包括分別存儲卷積層CONV1、CONV2和CONV3的濾波器權重的複數個單元陣列部分(例如,單元陣列部分310、320和330)。例如單元陣列部分310存儲卷積層CONV1的濾波器權重,單元陣列部分320存儲卷積層CONV2的濾波器權重,單元陣列部分320存儲卷積層CONV2的濾波器權重。類比電路120耦接輸入電路350及輸出電路360,輸入電路350及輸出電路360分別緩衝卷積運算的輸入資料及輸出資料。輸入電路350和輸出電路360還可以包括用於在模擬和數位資料格式之間進行轉換的轉換電路。
圖4是說明根據一個實施例的校準過程400的流程圖。校準過程400開始於訓練步驟410,此時DNN(例如,圖2中的DNN模型200)透過數位電路使用一組訓練資料進行訓練;數位電路例如是電腦中的 CPU 等。訓練產生卷積的濾波器權重(或過濾器權重)和批量歸一化(或標準化)(例如,β和γ)的參數。數值ε用於避免除以零值。卷積和批量歸一化(batch normalization)的訓練方法在神經網路計算領域是已知的。在步驟420,濾波器權重和參數被載入到包括用於執行DNN推理的類比和數位電路的裝置(例如,圖1中的裝置100)。第一組濾波器權重存儲在數位電路可存取(或訪問)的記憶體中,而第二組濾波器權重存儲在類比電路中。步驟430-450是校準步驟。在步驟430,向DNN提供校準輸入,此時DNN被訓練且未校準。在一個實施例中,校準輸入可以是在步驟410使用的訓練資料的子集。在步驟440,收集每個A層的校準輸出,並且收集和計算校準輸出的統計資料。在一個實施例中,統計資料可以包括校準輸出的平均值和/或標準差。可以為每個校準輸出啟動計算統計資料(例如,平均值和/或標準差),包括所有維度(即高度、寬度和深度)。或者,對於跨高度和寬度維度的每個校準輸出啟動,可以按深度(即,每個通道)計算統計資訊。在步驟440執行的動作也可以描述為,收集映射到類比電路的每一層(“A層”)的校準輸出,並計算校準輸出的統計資料。
統計資料的計算可以由晶片上(on-chip)處理器或電路執行;或者,可以透過晶片外(off-chip)硬體或諸如電腦或伺服器的其他裝置來執行計算。在針對每個 A 層的步驟 450,將統計資料合併到歸一化操作(normalization operation)或運算中,歸一化操作或運算定義了 DNN 中 A 層之後的歸一化層。步驟 450中,對於每個 A 層,確定 A 層之後的相應歸一化層的歸一化運算,其中歸一化運算包含校準輸出的統計資訊。將參考圖5和6提供歸一化操作的非限制性示例。包括在步驟450確定的歸一化層的DNN被稱為校準的DNN(校準DNN)。在步驟460,校準的DNN被存儲在裝置中,其中校準的DNN包括每個A層的對應歸一化層(存儲校準後的 DNN,校準後的 DNN包括設備(或裝置)中每個 A 層的相應歸一化層)。在推理步驟470(步驟470是推理的步驟),裝置根據校準的DNN執行神經網路推理(根據校準後的 DNN 進行 DNN 推理)。從步驟 410 的訓練獲得的濾波器權重保持不變並用於神經網路推理。
圖5圖示了根據第一實施例的歸一化層500。還參考圖2中的示例,歸一化層500可以是N1、N2和N3中的任何一個。歸一化層500可以是修改後的BN層。在經過訓練的 DNN 中,未修改的 BN 層緊跟在 A 層 510 (例如,CONV1、CONV2 和 CONV3 中的任何一個)之後。在訓練期間,學習未修改後的 BN 層的參數(例如,β、γ和ε)。在將訓練的 DNN 載入到裝置 100(圖 1)之後,執行校準過程 400(圖 4)以校準映射到類比電路 120 的層,類比電路 120 的層包括 A 層 510。
歸一化層500由應用於從A層510輸出的張量(由實線立方體550表示)輸出的歸一化操作定義。在校準期間,該張量被稱為校準輸出或校準輸出啟動。張量具有高度尺寸 (H)、寬度尺寸 (W) 和深度尺寸 (C),深度尺寸 (C)也稱為通道尺寸。歸一化操作將每個
(由虛線輪廓中的細長立方體表示)轉換為
,A層510輸出的張量(由實線立方體550表示)經過歸一化操作或運算之後,然後傳送給下一層520。
和
都延伸到整個深度尺寸或深度維度 C。在圖 5 的示例中,歸一化層 500 將平均值μ和標準差(標準偏差)σ合併到歸一化操作(或運算)中(也即歸一化運算使用了包括平均值μ和標準差σ的參數)。在另一個實施例中,歸一化層500可以將μ和σ中之一合併到歸一化操作(或運算)中。平均值μ和標準差σ由 A 層 510 的校準輸出計算得出,A 層 510包括所有維度(H、W 和 C)上的資料點(data point)。此外,歸一化層 500 還結合了在訓練中學習到的未修改的 BN 層的參數(例如,β和γ)。因此,歸一化層500也被稱為修改的BN層,其被修改為至少包含(或結合、合併)在校準輸出的所有維度上計算的平均值。也即計算統計資料以包括校準輸出所有維度的平均值。
圖6圖示了由根據第二實施例的歸一化層600執行的操作。還參考圖2中的示例,歸一化層600可以是N1、N2和N3中的任何一個。歸一化層600可以替代未校準的DNN中位於A層610(例如,CONV1、CONV2和CONV3中的任何一個)之後的BN層。在訓練期間,學習了跨深度維度(depth-wise)的每個通道的深度參數(例如,β
k、γ
k和ε),其中運行索引 k 標識特定通道。將經過訓練的 DNN被載入到裝置100(圖1)之後,執行校準過程400(圖4)以校準映射到類比電路120的層,類比電路120的層包括A層610。
歸一化層600由應用於來自A層610的張量(由實線中的每個立方體650表示)輸出的歸一化操作定義。在校準期間,該張量被稱為校準輸出或校準輸出啟動。張量具有高度尺寸 (H)、寬度尺寸 (W) 和深度尺寸 (C),深度尺寸 (C)也稱為通道尺寸。歸一化操作(或運算)將每個
(由虛線輪廓的細長立方體的一個切片表示)轉換為
,其中運行索引 k 標識特定通道。
和
都是每通道張量(per-channel tensor)。來自A層610的張量(由實線中的每個立方體650表示)經過歸一化操作或運算之後,然後傳送給下一層620。在圖 6 的示例中,歸一化層 600 將每通道平均值(per-channel mean value)
和每通道標準差(per-channel standard deviation)
合併到歸一化操作(或運算)中。在另一個實施例中,歸一化層600可以將每通道平均值和每通道標準差中的一個合併(或包含、結合)到歸一化操作中。每個通道平均值和每個通道標準差是根據 A 層 610 在 C 維度中每個通道的 H 和 W 維度的校準輸出計算的。此外,歸一化層 500 還結合(或包含)了在訓練中學習的深度參數(例如,β
k、γ
k和ε)。如圖 6 所示,歸一化操作包括深度乘加(depth-wise multiply-and-add)操作(或運算),該操作(或運算)至少包含(或結合)從校準輸出的每個通道計算的深度(即每通道)平均值。也即計算統計資料以包括深度維度中複數個通道中的每一個的校準輸出的深度平均值。由於歸一化層600中所示的乘法矩陣是對角矩陣(diagonal matrix),因此本示例中的深度方向(或深度維度)乘加運算也稱為1x1深度方向(或深度維度)卷積運算(depth-wise convolution operation)。
圖7是圖示根據一個實施例的用於校準類比電路以執行神經網路計算的方法700的流程圖。方法700可以由校準電路(例如,圖1的校準電路150)執行,該校準電路可以與類比電路在同一晶片上、在不同晶片上或在類比電路所在的不同裝置中。
方法700開始於步驟710,此時校準電路將校準輸入發送到預訓練神經網路,該預訓練神經網路至少包括具有存儲在類比電路中的預訓練權重的給定層(given layer)(向預訓練的神經網路提供校準輸入,該神經網路包括至少具有存儲在類比電路中的預訓練權重值(預訓練權重)的給定層)。在步驟720,校準電路計算來自類比電路的校準輸出的統計資料,類比電路使用預訓練的權重(預訓練權重)在校準輸入上執行給定層的張量操作(或運算)(計算來自類比電路的校準輸出的統計資訊,該類比電路使用預訓練權重對校準輸入執行給定層的張量運算)。在步驟730,校準電路確定要在神經網路推理期間在給定層之後的歸一化層處執行的歸一化操作(或運算)。歸一化操作(或運算)包含(或結合)校準輸出的統計資料(確定在給定層之後的歸一層的神經網路推理期間要執行的歸一化運算,其中,歸一化運算包含校準輸出的統計資訊 )。在步驟740,校準電路將歸一化操作的配置寫入記憶體。校準後預訓練的權重(預訓練權重)保持不變(將歸一化運算的配置寫入記憶體,同時保持預訓練權不變 )。
圖8是圖示根據一個實施例的用於神經網路計算的類比電路校準方法800的流程圖。方法800可以由包括用於神經網路計算的類比電路的裝置執行;例如,圖 1 的裝置 100。
方法800開始於步驟810,此時類比電路使用存儲在類比電路和校準輸入中的預訓練權重對校準輸入執行張量操作(運算)。透過執行張量運算,類比電路生成神經網路給定層的校準輸出(類比電路使用存儲在類比電路中的預訓練權重對校準輸入執行張量運算,生成神經網路給定層的校準輸出)。在步驟820,裝置接收在給定層之後的歸一化層的配置。歸一化層由歸一化操作(運算)定義,該操作(運算)包含(或結合)校準輸出的統計資訊(接收給定層之後的歸一化層的配置,其中,歸一化層由包含校準輸出的統計資訊的歸一化運算定義)。在步驟830,裝置使用預訓練的權重和歸一化層的歸一化操作執行神經網路推理,神經網路推理包括給定層的張量操作(或運算)(使用預訓練權重和歸一化層的歸一化運算執行神經網路推理,神經網路推理包括給定層的張量運算)。
在一個實施例中,在神經網路推理期間,分配類比電路以使用預訓練的權重執行給定層的張量操作(或運算),並且分配裝置中的數位電路執行歸一化層的歸一化操作。換句話說,將給定層的張量運算分配給類比電路執行;以及將歸一化層的歸一化運算分配給數位電路以在神經網路推理期間執行。
這裡已經描述了各種功能组件或塊。如所屬技術領域具有通常知識者將理解的,功能塊將優選地透過電路(專用電路或通用電路,其在一個或複數個處理器和編碼指令的控制下操作)實現,其通常包括電晶體,這些電晶體被配置為根據本文所述的功能和操作來控制電路的操作。
圖 4、7 和 8 的流程圖的操作已經參照圖 1 的示例性實施例進行了描述。然而,應該理解,圖 4、7 和 8 的流程圖的操作可以由除圖1的實施例之外的本發明的實施例來執行,並且圖1的實施例可以執行與參考流程圖討論的那些不同的操作。 雖然圖 4、7 和 8 的流程圖顯示了由本發明的某些實施例執行的操作的特定順序,但應該理解這種順序是示例性的(例如,替代實施例可以以不同的循序執行操作、組合某些操作、重疊某些操作等)。
儘管已經對本發明實施例及其優點進行了詳細說明,但應當理解的是,在不脫離本發明的精神以及申請專利範圍所定義的範圍內,可以對本發明進行各種改變、替換和變更。所描述的實施例在所有方面僅用於說明的目的而並非用於限制本發明。本發明的保護範圍當視所附的申請專利範圍所界定者為准。本領域技術人員皆在不脫離本發明之精神以及範圍內做些許更動與潤飾。
100:裝置
110:數位電路
120:類比電路
130:記憶體
140:控制器
150:校準電路
160:網路介面
200:DNN模型
310,320,330:單元陣列部分
350:輸入電路
360:輸出電路
400,700,800:方法
410,420,430,440,450,460,470,710,720,730,740,810,820,830:步驟
500,600:歸一化層
510,610:A層
520,620:下一層
550, 650:實線立方體
透過閱讀後續的詳細描述和實施例可以更全面地理解本發明,本實施例參照附圖給出,其中:
圖1是說明根據一個實施例可操作(或可運算)以執行神經網路計算的系統的框圖。
圖2是圖示根據一個實施例的DNN層和硬體電路之間的映射的圖。
圖3是說明根據一個實施例的類比電路的框圖。
圖4是說明根據一個實施例的校準過程的流程圖。
圖5圖示了根據第一實施例由歸一化層(normalization layer)執行的操作。
圖6示出了根據第二實施例的歸一化層執行的操作。
圖7是圖示根據一個實施例的用於校準用於神經網路計算的類比電路的方法的流程圖。
圖8是圖示根據另一實施例的用於神經網路計算的類比電路校準方法的流程圖。
100:裝置
110:數位電路
120:類比電路
130:記憶體
140:控制器
150:校準電路
160:網路介面
Claims (11)
- 一種用於執行神經網路計算的類比電路的校準方法,包括: 向預訓練神經網路提供校準輸入,該神經網路至少包括一個給定層,該給定層具有存儲在類比電路中的預訓練權重; 計算來自該類比電路的校準輸出的統計資料,該類比電路使用該預訓練權重執行該給定層的張量運算; 在該給定層之後的歸一化層確定在神經網路推理期間要執行的歸一化運算,其中該歸一化運算結合該校準輸出的統計資料;以及 將該歸一化運算的配置寫入記憶體,同時保持該預訓練權重不變。
- 如請求項1之校準方法,其中,該類比電路是類比記憶體計算裝置。
- 如請求項1之校準方法,其中計算來自該類比電路的校準輸出的統計資料進一步包括: 計算該統計資料以包括該校準輸出的標準差和平均值中的至少一個。
- 如請求項1之校準方法,其中,該校準輸出具有高度尺寸、寬度尺寸和深度尺寸,並且計算來自該類比電路的該校準輸出的統計資料進一步包括: 計算該統計資料以包括該校準輸出所有維度的平均值。
- 如請求項4之校準方法,其中,其中該歸一化層是修改為至少包含該平均值的批量歸一化。
- 如請求項1之校準方法,其中,該校準輸出具有高度尺寸、寬度尺寸和深度尺寸,並且計算來自該類比電路的該校準輸出的統計資料還包括: 計算該統計資料以包括深度維度中複數個通道中的每一個的校準輸出的深度平均值。
- 如請求項6之校準方法,其中,該歸一化運算包括深度方向的乘加運算,該運算至少結合每個通道的深度方向的平均值。
- 如請求項1之校準方法,其中,該類比電路的校準是在與該類比電路相同的晶片上執行的;或者,該類比電路的校準在與該類比電路所在的不同晶片或不同裝置上執行的。
- 一種用於執行神經網路計算的類比電路的校準方法,包括: 由類比電路使用存儲在該類比電路中的預訓練權重對校準輸入執行張量運算,以生成神經網路的給定層的校準輸出; 接收在該給定層之後的歸一化層的配置,其中該歸一化層由歸一化運算定義,該歸一化運算結合該校準輸出的統計資訊;以及 執行神經網路推理,包括使用該預訓練權重的給定層的給張量運算和給歸一化層的給歸一化運算。
- 如請求項9之校準方法,還包括: 將該給定層的該張量運算分配給該類比電路執行;以及 將該歸一化層的該歸一化運算分配給數位電路以在神經網路推理期間執行。
- 一種用於執行神經網路計算的裝置,包括: 類比電路,用於存儲神經網路的至少給定層的預訓練權重,其中該類比電路用於:透過在校準期間使用該預訓練權重對校準輸入執行張量運算,從該給定層生成校準輸出;以及使用該預訓練權重執行神經網路推理,包括該給定層的該張量運算;以及 數位電路,用於接收該給定層之後的歸一化層的配置,其中該歸一化層由包含該校準輸出的統計資料的歸一化運算定義,並在該神經網路推理期間執行該歸一化層的該歸一化運算。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202163139463P | 2021-01-20 | 2021-01-20 | |
US63/139,463 | 2021-01-20 | ||
US17/569,771 | 2022-01-06 | ||
US17/569,771 US20220230064A1 (en) | 2021-01-20 | 2022-01-06 | Calibration of analog circuits for neural network computing |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202230225A true TW202230225A (zh) | 2022-08-01 |
TWI800226B TWI800226B (zh) | 2023-04-21 |
Family
ID=82405228
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW111102245A TWI800226B (zh) | 2021-01-20 | 2022-01-19 | 用於執行神經網路計算的類比電路的校準方法及裝置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20220230064A1 (zh) |
CN (1) | CN114819051A (zh) |
TW (1) | TWI800226B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024068298A1 (en) * | 2022-09-26 | 2024-04-04 | Interdigital Ce Patent Holdings, Sas | Mixing analog and digital neural networks implementations in video coding processes |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9542645B2 (en) * | 2014-03-27 | 2017-01-10 | Qualcomm Incorporated | Plastic synapse management |
US11348002B2 (en) * | 2017-10-24 | 2022-05-31 | International Business Machines Corporation | Training of artificial neural networks |
US11599782B2 (en) * | 2019-03-25 | 2023-03-07 | Northeastern University | Self-powered analog computing architecture with energy monitoring to enable machine-learning vision at the edge |
US20200349422A1 (en) * | 2019-05-02 | 2020-11-05 | Silicon Storage Technology, Inc. | Output array neuron conversion and calibration for analog neural memory in deep learning artificial neural network |
CN112101539B (zh) * | 2020-11-18 | 2021-07-20 | 南京优存科技有限公司 | 一种存算一体电路及人工智能芯片 |
-
2022
- 2022-01-06 US US17/569,771 patent/US20220230064A1/en active Pending
- 2022-01-19 TW TW111102245A patent/TWI800226B/zh active
- 2022-01-19 CN CN202210062183.4A patent/CN114819051A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
TWI800226B (zh) | 2023-04-21 |
US20220230064A1 (en) | 2022-07-21 |
CN114819051A (zh) | 2022-07-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11816045B2 (en) | Exploiting input data sparsity in neural network compute units | |
JP7439149B2 (ja) | ニューラルネットワーク処理のスケジューリング | |
US20220043886A1 (en) | Hardware Implementation of Convolutional Layer of Deep Neural Network | |
Kang | Accelerator-aware pruning for convolutional neural networks | |
US11373087B2 (en) | Method and apparatus for generating fixed-point type neural network | |
WO2021036904A1 (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
KR102415576B1 (ko) | 컨벌루션 뉴럴 네트워크의 계산 복잡성을 감소시키기 위한 방법 및 시스템 | |
WO2021036905A1 (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
US20210374511A1 (en) | Data processing method, device, computer equipment and storage medium | |
US20200202218A1 (en) | Methods and systems for selecting quantisation parameters for deep neural networks using back-propagation | |
CN110009092A (zh) | 用于深度神经网络的激活函数 | |
US11880768B2 (en) | Method and apparatus with bit-serial data processing of a neural network | |
WO2020119318A1 (zh) | 一种自适应卷积层硬件加速器设计方法 | |
KR20190066473A (ko) | 뉴럴 네트워크에서 컨볼루션 연산을 처리하는 방법 및 장치 | |
US20210103820A1 (en) | Pipelined backpropagation with minibatch emulation | |
WO2020001401A1 (zh) | 深度神经网络中的网络层运算方法及装置 | |
US20190236436A1 (en) | Hierarchical Mantissa Bit Length Selection for Hardware Implementation of Deep Neural Network | |
CN114677548A (zh) | 基于阻变存储器的神经网络图像分类系统及方法 | |
TW202230225A (zh) | 用於執行神經網路計算的類比電路的校準方法及裝置 | |
Wang et al. | FPAP: A folded architecture for energy-quality scalable convolutional neural networks | |
US20240127044A1 (en) | Hardware implementation of an attention-based neural network | |
US11568243B2 (en) | Method and apparatus with neural network convolution operations | |
Hadnagy et al. | Efficient implementation of convolutional neural networks on FPGA | |
TW202324205A (zh) | 用於分階段逐深度迴旋的記憶體內計算架構 | |
US20210397935A1 (en) | Method, accelerator, and electronic device with tensor processing |