TWI819937B - 應用於類神經網路的記憶內運算的加速器 - Google Patents
應用於類神經網路的記憶內運算的加速器 Download PDFInfo
- Publication number
- TWI819937B TWI819937B TW111150294A TW111150294A TWI819937B TW I819937 B TWI819937 B TW I819937B TW 111150294 A TW111150294 A TW 111150294A TW 111150294 A TW111150294 A TW 111150294A TW I819937 B TWI819937 B TW I819937B
- Authority
- TW
- Taiwan
- Prior art keywords
- unit
- input terminal
- macro
- information
- output
- Prior art date
Links
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 30
- 238000011176 pooling Methods 0.000 claims abstract description 20
- 238000004364 calculation method Methods 0.000 claims description 78
- 230000008859 change Effects 0.000 claims description 33
- 239000013598 vector Substances 0.000 claims description 27
- 238000010586 diagram Methods 0.000 description 20
- 230000006870 function Effects 0.000 description 18
- 230000004913 activation Effects 0.000 description 13
- 210000002569 neuron Anatomy 0.000 description 8
- 238000012549 training Methods 0.000 description 6
- 210000001787 dendrite Anatomy 0.000 description 5
- 238000013473 artificial intelligence Methods 0.000 description 4
- 239000011159 matrix material Substances 0.000 description 4
- 238000013506 data mapping Methods 0.000 description 3
- 238000010801 machine learning Methods 0.000 description 3
- 238000011161 development Methods 0.000 description 2
- 238000012886 linear function Methods 0.000 description 2
- 238000003062 neural network model Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 210000003050 axon Anatomy 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 210000004556 brain Anatomy 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000000034 method Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0613—Improving I/O performance in relation to throughput
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- 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/04—Architecture, e.g. interconnection topology
- G06N3/048—Activation functions
-
- 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/08—Learning methods
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Human Computer Interaction (AREA)
- Computing Systems (AREA)
- Software Systems (AREA)
- Mathematical Optimization (AREA)
- Computational Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Molecular Biology (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Databases & Information Systems (AREA)
- Algebra (AREA)
- Neurology (AREA)
- Control Of Throttle Valves Provided In The Intake System Or In The Exhaust System (AREA)
- Feedback Control In General (AREA)
- Complex Calculations (AREA)
- Memory System (AREA)
Abstract
應用於類神經網路的記憶內運算的加速器包含記憶體、資料緩存單元、池化單元、損失計算單元、第一巨集電路、第二巨集電路、第三巨集電路、及多工器。記憶體用以儲存輸入資料。資料緩存單元耦接於記憶體,用以緩存記憶體的輸出資料。池化單元耦接於記憶體,用以將記憶體的輸出資料池化,以得到最大池化值。損失計算單元耦接於記憶體,用以計算輸出損失。第一巨集電路、第二巨集電路以及第三巨集電路,耦接於資料緩存單元。多工器耦接於池化單元、第一巨集電路、第二巨集電路及第三巨集電路,用以產生輸出資料。
Description
本發明描述了一種應用於類神經網路的記憶內運算的加速器,尤指一種利用多個巨集電路以實現神經網路推論以及訓練的功能之記憶內運算的加速器。
人造神經網路應用於機器學習的概念存在已久,但先前受限於處理器運算能力,相關研究始終無法順利推進。然而,近十年來,隨著處理器運算速度、記憶體存取速度以及機器學習演算法等各方面技術的長足進步,讓產生複雜判斷結果的人造神經網路正逐漸被實現中。因此,人造神經網路在自動駕駛、影像辨識、自然語言辨識、資料探勘等領域中重新受到高度重視。
大腦中最基本的運算單位為神經元,是透過多個樹突(Dendrite)收集多個輸入訊號,並透過軸突(Axon)傳遞輸出訊號(通常是傳遞至另一個神經元的樹突做為輸入訊號)。人造神經元模仿生物神經元的架構,典型運作的模式可以數學式表示如下:
符號
x
i 表示第i個輸入訊號,
y表示輸出訊號;每一個樹突各自加諸於其輸入訊號
x
i 的權重
w
i ,以模擬樹突所連接的前一個神經元對於此神經元的影響程度。符號
b表示此神經元本身貢獻的偏移量(Bias)。在進行機器學習的過程中,每一個神經元的權重
w
i 與偏移量
b可被不斷地修改與調整。符號
f代表轉移函數,在人造神經網路中常用Σ函數(Sigmoid Function)、雙曲正切(Hyperbolic Tangent)函數或整流後線性函數(Rectified Linear Function)來進行運算。
並且,由於近年來人工智慧蓬勃發展,人工智慧與聯網裝置結合,使得具有人工智慧運算能力的邊緣裝置需求逐年遞增。在雲端訓練好的神經網路模型佈署到邊緣裝置後,為了能貼近使用者的應用情境,勢必要基於這些資料進一步訓練。考量到資料透過網路在邊緣裝置與雲端間傳輸,造成的時間延遲,和使用者隱私資料可能被駭客竊取的風險下,邊緣裝置具備晶片內訓練功能就不可或缺。因此對人工智慧硬體發展而言,在功率消耗的限制下設計一個具有訓練功能的神經網路加速器,即成為一個重要議題。
本發明一實施例提出一種應用於類神經網路的記憶內運算的加速器。應用於類神經網路的記憶內運算的加速器包含記憶體、資料緩存單元、池化單元、損失計算單元、第一巨集電路、第二巨集電路、第三巨集電路、及多工器。記憶體用以儲存輸入資料。資料緩存單元耦接於記憶體,用以緩存記憶體的輸出資料。池化單元耦接於記憶體,用以將記憶體的輸出資料池化,以得到最大池化值。損失計算單元耦接於記憶體,用以計算輸出損失。第一巨集電路、第二巨集電路以及第三巨集電路,耦接於資料緩存單元。多工器耦接於池化單元、第一巨集電路、第二巨集電路及第三巨集電路,用以產生輸出資料。多工器的輸出端耦接於記憶體的輸入端。
第1圖係為本發明之應用於類神經網路的記憶內運算的加速器100之實施例的方塊圖。為了描述簡化,應用於類神經網路的記憶內運算的加速器100,在後文簡稱為加速器100。加速器100為記憶內運算(Computing in Memory,CIM)的加速器,可以優化傳統加速器花費大量時間搬移資料的問題。加速器100可應用於類神經網路的增量學習運算,並以電子系統層級方式實現,細節如下。加速器100包含記憶體10、資料緩存單元11、池化單元12、損失計算單元13、第一巨集電路14、第二巨集電路15、第三巨集電路16以及多工器17。記憶體10用以儲存輸入資料。記憶體10可為靜態隨機存取記體(Static Random Access Memory,SRAM)。資料緩存單元11耦接於記憶體10,用以緩存記憶體10的輸出資料。池化單元12耦接於記憶體10,用以將記憶體10的輸出資料池化,以得到最大池化值(Max Pooling)。例如,池化單元12可以挑出每組資料矩陣當中的最大值,以提取比較重要的特徵,加速收斂並縮小矩陣尺寸。損失計算單元13耦接於記憶體10,用以計算輸出損失(Output loss)。第一巨集電路14耦接於資料緩存單元11。第二巨集電路15耦接於該資料緩存單元11。第三巨集電路16耦接於資料緩存單元11及損失計算單元13。多工器17耦接於池化單元12、第一巨集電路14、第二巨集電路15及該第三巨集電路16,用以產生輸出資料。多工器17的輸出端耦接於記憶體10的輸入端。在加速器100中,由於可以實現增量學習的應用,故也需要實現前向傳播、權重更新以及反向傳播運算。因此,在加速器100中,可以引入第一巨集電路14、第二巨集電路15及該第三巨集電路16。最後,多工器17可選擇一種巨集電路的輸出,並回授至記憶體10儲存,以進行下次迴圈的訓練。後文將針對加速器100所引入的三種巨集功能以及電路(第一巨集電路14、第二巨集電路15及該第三巨集電路16)進行詳細地描述。
第2A圖係為應用於類神經網路的記憶內運算的加速器100中,第一巨集電路14的方塊圖。第一巨集電路14包含第一巨集單元14a以及計算啟動單元14b。第一巨集單元14a包含第一輸入端、第二輸入端、第三輸入端、第四輸入端、第五輸入端及輸出端。第一輸入端用以接收位址資訊14P1。第二輸入端用以接收讀寫控制資訊14P2。第三輸入端用以接收輸入特徵資訊14P3。第四輸入端用以接收啟動資訊14P4。第五輸入端用以接收權重資訊14P5。輸出端用以傳送輸出訊號14P6。於此說明,第一巨集電路14可以應用於前向傳播(Forward Propagation)的運算。第一巨集電路14還包含計算啟動單元(Calculate Activation)14b。計算啟動單元14b包含第一輸入端、第二輸入端及輸出端。第一輸入端耦接於第一巨集單元14a的輸出端,用以接收第一巨集單元14a所產生的輸出訊號14P6。第二輸入端用以接收計算啟動模式資訊14P7。輸出端用以傳送輸出訊號14P8。並且,第一巨集電路14可為Calculate Convolution(MAC)電路。第一巨集單元14a與計算啟動單元14b結合後,即可實現前向傳播的運算。
第2B圖係為第一巨集電路14中,第一巨集單元14a的輸入/輸出接腳示意圖。如前述提及,第一巨集單元14a的第三輸入端可用以接收輸入特徵資訊14P3。例如,第一巨集單元14a的第三輸入端接收的輸入特徵資訊14P3可包含M+1個維度的輸入特徵向量資訊,在第2B圖中表示為輸入特徵14in_0至輸入特徵14in_M。並且,第一巨集單元14a的輸出端可用以傳送輸出訊號14P6。例如,第一巨集單元14a的輸出端可用以輸出N+1個維度的輸出向量。在第2B圖中表示為輸出訊號14out_0至輸出訊號14out_N。再者,第一巨集單元14a可另包含時脈控制端clk以及重置端rst,且M及N係為兩正整數。第一巨集單元14a其餘的輸入/輸出端如第2A圖所示,故此將不再贅述。
第2C圖係為第一巨集電路14中,第一巨集單元14a的輸入經過線性運算後產生輸出的示意圖。如前提及,第一巨集單元14a的第三輸入端接收的輸入特徵資訊14P3可包含輸入特徵14in_0至輸入特徵14in_M。在第一巨集單元14a通過第五輸入端接收權重資訊後14P5後,可以產生(M+1)×(N+1)個權重,表示為W
0 0至W
M N。並且,每一行的M+1個權重與M+1個維度的輸入特徵向量線性組合後,可以產生第一巨集單元14a的輸出。例如,第14out_n的輸出,可以表示為下:
如前述,由於第一巨集單元14a是以行(Column)為基礎,將每一行的M+1個權重與M+1個維度的輸入特徵向量進行線性組合。因此,(M+1)×(N+1)的資料映射(Data Mapping)矩陣中,每一行的運算可視為濾波器(Filter),在第2C圖可表示為F0至FN。在第一巨集單元14a輸出N+1個維度的輸出向量後,N+1個維度的輸出向量可傳送至計算啟動單元14b,以計算其激活函數(Activation Function)的參數,以供後續使用。
第3A圖係為應用於類神經網路的記憶內運算的加速器100中,第二巨集電路15的方塊圖。第二巨集電路15包含第二巨集單元15a、計算啟動及計算啟動導數單元(Calculate Activation and Activation Derivative)15b、權重梯度計算單元15c以及輸入多工器15d。第二巨集單元15a包含第一輸入端、第二輸入端、第三輸入端、第四輸入端、第五輸入端、第六輸入端及輸出端。第一輸入端用以接收位址資訊15P1。第二輸入端用以接收讀寫控制資訊15P2。第三輸入端用以接收輸入特徵資訊15P3。第四輸入端用以接收啟動資訊15P4。第五輸入端用以接收權重更新資訊15P5。第六輸入端用以接收權重資訊15P6。輸出端用以傳送輸出訊號15P7。於此說明,第二巨集電路15可以應用於權重更新(Weight Update)的運算。第二巨集電路15還包含計算啟動及計算啟動導數單元15b。計算啟動及計算啟動導數單元15b包含第一輸入端、第二輸入端、第三輸入端、第一輸出端及第二輸出端。第一輸入端耦接於第二巨集單元15P7的輸出端。第二輸入端用以接收計算啟動模式資訊15P8。第三輸入端用以接收第一變化資訊15P9。第一輸出端用以傳送輸出訊號15P10。第二輸出端用以輸出第二變化資訊15P11。於此說明,第一變化資訊15P9可為層輸出梯度(Layer Output Gradient)資訊,可表示為𝜕C/ 𝜕A。第二變化資訊15P11可為預激活梯度(Pre-Activation Gradient)的導數資訊,可表示為𝜕C/ 𝜕Z。並且,𝜕C/ 𝜕A以及𝜕C/ 𝜕Z的關係可表示為下:
其中C為第
l層的輸出,
l為正整數。W為權重。第二巨集電路15還包含權重梯度計算單元15c。權重梯度計算單元15c包含第一輸入端、第二輸入端、第三輸入端、第四輸入端及輸出端。第一輸入端耦接於計算啟動及計算啟動導數單元15b的輸出端,用以接收輸出訊號15P11。第二輸入端用以接收輸入特徵資訊15P12。第三輸入端用以接收輸出控制訊號15P13。第四輸入端用以接收計算控制訊號15P14。輸出端用以輸出第三變化資訊15P15。於此說明,第三變化資訊15P15可為偏微分的導數資訊,可表示為𝜕L/ 𝜕W。並且,𝜕L/ 𝜕W與前述提及之𝜕C/ 𝜕Z的關係可表示如下:
第二巨集電路15還包含輸入多工器15d。輸入多工器15d包含第一輸入端、第二輸入端、輸出端以及控制端。第一輸入端用以接收輸入特徵資訊15P16。第二輸入端耦接於權重梯度計算單元15c的輸出端。輸出端耦接於第二巨集單元15a的第三輸入端。控制端用以接收選擇訊號15P17。並且,第二巨集電路15可為Calculate Convolution(MAC)結合權重更新的電路。第二巨集單元15a再與計算啟動及計算啟動導數單元15b以及權重梯度計算單元15c結合後,即可實現前向傳播以及權重更新的運算。
第3B圖係為第二巨集電路15中,第二巨集單元15a的輸入/輸出接腳示意圖。如前述提及,第二巨集單元15a的第三輸入端可用以接收輸入特徵資訊15P3。例如,第二巨集單元15a的第三輸入端接收的輸入特徵資訊15P3可包含M+1個維度的輸入特徵向量資訊,在第3B圖中表示為輸入特徵15in_0至輸入特徵15in_M。並且,第二巨集單元15a的輸出端可用以傳送輸出訊號15P7。例如,第二巨集單元15a的輸出端可用以輸出N+1個維度的輸出向量。在第3B圖中表示為輸出訊號15out_0至輸出訊號15out_N。再者,第二巨集單元15a可另包含時脈控制端clk以及重置端rst,且M及N係為兩正整數。第二巨集單元15a其餘的輸入/輸出端如第3A圖所示,故此將不再贅述。
第3C圖係為第二巨集電路15中,第二巨集單元15a的輸入經過線性運算後產生輸出的示意圖。如前提及,第二巨集單元15a的第三輸入端接收的輸入特徵資訊15P3可包含輸入特徵15in_0至輸入特徵15in_M。並且,第二巨集單元15a的第三輸入端還用以接收M+1個權重差資訊,可用dw
0至dw
M表示。在第二巨集單元15a通過第五輸入端接收權重資訊後15P6後,可以產生(M+1)×(N+1)個權重,表示為W
0 0至W
M N。並且,每一行的M+1個權重與M+1個維度的輸入特徵向量線性組合後,可以產生第二巨集單元15a的輸出。例如,第15out_n的輸出,可以表示為下:
如前述提及,第二巨集電路15具有權重更新的功能。因此,在第二巨集單元15a的第三輸入端接收M+1個權重差資訊dw
0至dw
M後,對於第n行第i個更新後的權重W
i n’,可表示為下:
換句話說,在第二巨集電路15中的(M+1)×(N+1)個權重中,每一行的M+1個權重依據該M+1個權重差資訊而更新。並且,由於第二巨集單元15a是以行(Column)為基礎,將每一行的M+1個權重與M+1個維度的輸入特徵向量進行線性組合。因此,(M+1)×(N+1)的資料映射(Data Mapping)矩陣中,每一行的運算可視為濾波器(Filter),在第3C圖可表示為F0至FN。相較於第一巨集電路14,第二巨集電路15除了具有第一巨集電路14所有的功能外,還具備權重更新的功能。因此,當類神經網路需要使用權重更新功能的巨集時,可以使用第二巨集電路15實現。
第4A圖係為第1圖之應用於類神經網路的記憶內運算的加速器100中,第三巨集電路16的方塊圖。第三巨集電路16包含第三巨集單元16a、計算啟動及計算啟動導數單元16b、權重梯度計算單元16c、導數輸入多工器16d以及輸入多工器16e。第三巨集單元16a包含第一輸入端、第二輸入端、第三輸入端、第四輸入端、第五輸入端、第六輸入端、第七輸入端、第八輸入端、第一輸出端及第二輸出端。第一輸入端用以接收位址資訊16P1。第二輸入端用以接收讀寫控制資訊16P2。第三輸入端用以接收輸入特徵資訊16P3。第四輸入端用以接收第一啟動資訊16P4。第五輸入端用以接收第二啟動資訊16P5。第六輸入端用以接收來自導數輸入多工器16d的輸出訊號16P9。第七輸入端用以接收權重更新資訊16P7。第八輸入端用以接收權重資訊16P8。第一輸出端用以輸出第一變化資訊16P6。第二輸出端用以傳送輸出訊號16P10。於此說明,第三巨集電路16可以應用於計算前一層輸出梯度(Gradient)的運算。第三巨集電路16還包含計算啟動及計算啟動導數單元16b。計算啟動及計算啟動導數單元16b包含第一輸入端、第二輸入端、第三輸入端、第一輸出端及第二輸出端。第一輸入端耦接於第三巨集單元16a的第二輸出端。第二輸入端用以接收計算啟動模式資訊16P11。第三輸入端用以接收第一變化資訊16P12。第一輸出端用以傳送輸出訊號16P13。第二輸出端用以輸出第二變化資訊16P14。於此說明,第一變化資訊16P12可為層輸出梯度(Layer Output Gradient)資訊,可表示為𝜕C/𝜕A。第二變化資訊16P14可為預激活梯度(Pre-Activation Gradient)的導數資訊,可表示為𝜕C/𝜕Z。並且,𝜕C/𝜕A以及𝜕C/𝜕Z的關係可表示為下:
其中C為第
l層的輸出,
l為正整數。W為權重。第三巨集電路16還包含權重梯度計算單元16c。權重梯度計算單元16c包含第一輸入端、第二輸入端、第三輸入端、第四輸入端及輸出端。第一輸入端耦接於計算啟動及計算啟動導數單元16b的第二輸出端。第二輸入端用以接收輸入特徵資訊16P15。第三輸入端用以接收輸出控制訊號16P16。第四輸入端用以接收計算控制訊號16P17。輸出端用以輸出第三變化資訊16P18。於此說明,第三變化資訊16P18可為偏微分的導數資訊,可表示為𝜕L/𝜕W。並且,𝜕L/𝜕W與前述提及之𝜕C/𝜕Z的關係可表示如下:
第三巨集電路16還包含輸入多工器16e。輸入多工器16e包含第一輸入端、第二輸入端、輸出端及控制端。第一輸入端用以接收輸入特徵資訊16P19。第二輸入端耦接於權重梯度計算單元16c的輸出端。輸出端耦接於第三巨集單元16a的該第三輸入端16P3。控制端用以接收選擇訊號16P20。第三巨集電路16還包含導數輸入多工器16d。導數輸入多工器16d包含第一輸入端、第二輸入端、控制端及輸出端。第一輸入端用以接收由損失計算單元13輸出的第二變化資訊16P21。第二輸入端耦接於計算啟動及計算啟動導數單元16b的第二輸出端。控制端用以接收選擇訊號16P22。輸出端耦接於第三巨集單元16a的第六輸入端。並且,第三巨集電路16可為Calculate Convolution(MAC)結合權重更新及梯度運算的電路。第三巨集單元16a再與計算啟動及計算啟動導數單元16b、權重梯度計算單元16c、導數輸入多工器16d以及輸入多工器16e結合後,即可實現前向傳播、權重更新以及梯度運算。
第4B圖係為第三巨集電路16中,第三巨集單元16a的輸入/輸出接腳示意圖。如前述提及,第三巨集單元16a的第三輸入端可用以接收輸入特徵資訊16P3。例如,第三巨集單元16a的第三輸入端接收的輸入特徵資訊16P3可包含M+1個維度的輸入特徵向量資訊,在第4B圖中表示為輸入特徵16in_0至輸入特徵16in_M。並且,第三巨集單元16a的輸出端可用以傳送輸出訊號16P10。例如,第三巨集單元16a的輸出端可用以輸出N+1個維度的輸出向量。在第4B圖中表示為輸出訊號16out_0至輸出訊號16out_N。並且,第三巨集單元16a的第一輸出端用以輸出第一變化資訊16P6。第一變化資訊16P6可包含M+1個第一導數,在第4B圖中表示為𝜕C/𝜕a
0至𝜕C/𝜕a
M。並且,𝜕C/𝜕A的定義即為層輸出梯度(Layer Output Gradient)資訊,如前述提及,故於此將不再贅述。第三巨集單元16a的第六輸入端用以接收由導數輸入多工器16d所輸出的第二變化資訊。第二變化資訊可包含N+1個第二導數,在第4B圖中表示為𝜕C/𝜕z
0至𝜕C/𝜕z
N。並且,𝜕C/𝜕Z的定義即為預激活梯度(Pre-Activation Gradient)的導數資訊,如前述提及,故於此將不再贅述。再者,第三巨集單元16a可另包含時脈控制端clk以及重置端rst,且M及N係為兩正整數。第三巨集單元16a其餘的輸入/輸出端如第4A圖所示,故此將不再贅述。
第4C圖係為第三巨集電路16中,第三巨集單元16a的輸入經過線性運算後產生輸出的示意圖。如前提及,第三巨集單元16a的第三輸入端接收的輸入特徵資訊16P3可包含輸入特徵16in_0至輸入特徵16in_M。並且,第三巨集單元16a的第三輸入端還用以接收M+1個權重差資訊,可用dw
0至dw
M表示。在第三巨集單元16a通過第八輸入端接收權重資訊後16P8後,可以產生(M+1)×(N+1)個權重,表示為W
0 0至W
M N。並且,每一行的M+1個權重與M+1個維度的輸入特徵向量線性組合後,可以產生第三巨集單元16a的輸出。例如,第16out_n的輸出,可以表示為下:
如前述提及,第三巨集電路16具有權重更新的功能。因此,在第三巨集單元16a的第三輸入端接收M+1個權重差資訊dw
0至dw
M後,對於第n行第i個更新後的權重W
i n’,可表示為下:
換句話說,在第三巨集電路16中的(M+1)×(N+1)個權重中,每一行的M+1個權重依據該M+1個權重差資訊而更新。並且,由於第三巨集單元16a是以行(Column)為基礎,將每一行的M+1個權重與M+1個維度的輸入特徵向量進行線性組合。因此,(M+1)×(N+1)的資料映射(Data Mapping)矩陣中,每一行的運算可視為濾波器(Filter)。並且,如前述提及,第三巨集單元16a可輸出M+1個第一導數GV1,為𝜕C/𝜕a
0至𝜕C/𝜕a
M。第三巨集單元16a可輸入N+1個第二導數GV2,為𝜕C/𝜕z
0至𝜕C/𝜕z
N。並且,𝜕C/𝜕a
0至𝜕C/𝜕a
M,與𝜕C/𝜕z
0至𝜕C/𝜕z
N的關係可表示為下:
換句話說,該第三巨集單元16a可將N+1個第二導數與每一列的N+1個權重線性組合後,產生第三巨集單元16a的第一輸出端的M+1個第一導數。相較於第二巨集電路15,第三巨集電路16除了具有第二巨集電路15所有的功能外,還具備梯度運算的功能。因此,當類神經網路需要使用梯度運算功能的巨集時,可以使用第三巨集電路16實現。
綜上所述,本發明描述一種應用於類神經網路的記憶內運算的加速器。可以實現增量學習。為了實現增量學習,本發明的加速器使用了三種不同的巨集電路,以實現前向傳播、權重更新以及梯度運算的功能。並且三種不同的巨集電路使用不同的記憶體內運算以及數位電路設計完成。因此,本發明的加速器具有下列優勢:1. 本發明的加速器使用記憶體內運算當作主要計算單元,可以降低從記憶體搬運資料到運算單元的時間,進而提升運算速度。2. 本發明的加速器除了支援神經網路推論外,也同時支援神經網路訓練的運算,使得神經網路模型的表現可以在加速器上持續改善。3. 本發明的加速器因使用記憶體內運算,故使得進行神經網路的訓練運算變得可行且有效率。
以上所述僅為本發明之較佳實施例,凡依本發明申請專利範圍所做之均等變化與修飾,皆應屬本發明之涵蓋範圍。
100:應用於類神經網路的記憶內運算的加速器
10:記憶體
11:資料緩存單元
12:池化單元
13:損失計算單元
14:第一巨集電路
15:第二巨集電路
16:第三巨集電路
17:多工器
14a:第一巨集單元
14b:計算啟動單元
14P1:位址資訊
14P2:讀寫控制資訊
14P3:輸入特徵資訊
14P4:啟動資訊
14P5:權重資訊
14P6:輸出訊號
14P7:計算啟動模式資訊
14P8:輸出訊號
clk:時脈控制端
rst:重置端
14in_0至14in_M:輸入特徵向量
14out_0至14out_N:輸出向量
F0至FN:濾波器
15a:第二巨集單元
15b:計算啟動及計算啟動導數單元
15c:權重梯度計算單元
15d:輸入多工器
15P1:位址資訊
15P2:讀寫控制資訊
15P3:輸入特徵資訊
15P4:啟動資訊
15P5:權重更新資訊
15P6:權重資訊
15P7:輸出訊號
15P8:計算啟動模式資訊
15P9:第一變化資訊
15P10:輸出訊號
15P11:第二變化資訊
15P12:輸入特徵資訊
15P13:輸出控制訊號
15P14:計算控制訊號
15P15:第三變化資訊
15P16:輸入特徵資訊
15P17:選擇訊號
15in_0至15in_M:輸入特徵向量
15out_0至15out_N:輸出向量
16a:第三巨集單元
16b:計算啟動及計算啟動導數單元
16c:權重梯度計算單元
16d:導數輸入多工器
16e:輸入多工器
16P1:位址資訊
16P2:讀寫控制資訊
16P3:輸入特徵資訊
16P4:第一啟動資訊
16P5:第二啟動資訊
16P6:第一變化資訊
16P7:權重更新資訊
16P8:權重資訊
16P9:輸入訊號
16P10:輸出訊號;
16P11:計算啟動模式資訊
16P12:第一變化資訊
16P13:輸出訊號
16P14:第二變化資訊
16P15:輸入特徵資訊
16P16:輸出控制訊號
16P17:計算控制訊號
16P18:第三變化資訊
16P19:輸入特徵資訊
16P20:選擇訊號
16in_0至16in_M:輸入特徵向量
16out_0至16out_N:輸出向量
GV1:第一導數
GV2:第二導數
第1圖係為本發明之應用於類神經網路的記憶內運算的加速器之實施例的方塊圖。
第2A圖係為第1圖之應用於類神經網路的記憶內運算的加速器中,第一巨集電路的方塊圖。
第2B圖係為第2A圖之第一巨集電路中,第一巨集單元的輸入/輸出接腳示意圖。
第2C圖係為第2A圖之第一巨集電路中,第一巨集單元的輸入經過線性運算後產生輸出的示意圖。
第3A圖係為第1圖之應用於類神經網路的記憶內運算的加速器中,第二巨集電路的方塊圖。
第3B圖係為第3A圖之第二巨集電路中,第二巨集單元的輸入/輸出接腳示意圖。
第3C圖係為第3A圖之第二巨集電路中,第二巨集單元的輸入經過線性運算後產生輸出的示意圖。
第4A圖係為第1圖之應用於類神經網路的記憶內運算的加速器中,第三巨集電路的方塊圖。
第4B圖係為第4A圖之第三巨集電路中,第三巨集單元的輸入/輸出接腳示意圖。
第4C圖係為第4A圖之第三巨集電路中,第三巨集單元的輸入經過線性運算後產生輸出的示意圖。
100:應用於類神經網路的記憶內運算的加速器
10:記憶體
11:資料緩存單元
12:池化單元
13:損失計算單元
14:第一巨集電路
15:第二巨集電路
16:第三巨集電路
17:多工器
Claims (10)
- 一種應用於類神經網路的記憶內運算的加速器,包含: 一記憶體,用以儲存輸入資料; 一資料緩存單元,耦接於該記憶體,用以緩存該記憶體的輸出資料; 一池化單元,耦接於該記憶體,用以將該記憶體的該輸出資料池化,以得到一最大池化值(Max Pooling); 一損失計算單元,耦接於該記憶體,用以計算輸出損失; 一第一巨集電路,耦接於該資料緩存單元; 一第二巨集電路,耦接於該資料緩存單元; 一第三巨集電路,耦接於該資料緩存單元及該損失計算單元;及 一多工器,耦接於該池化單元、該第一巨集電路、該第二巨集電路、及該第三巨集電路,用以產生輸出資料; 其中該多工器的一輸出端耦接於該記憶體的一輸入端。
- 如請求項1所述的加速器,其中該第一巨集電路包含: 一第一巨集單元,包含: 一第一輸入端,用以接收位址資訊; 一第二輸入端,用以接收讀寫控制資訊; 一第三輸入端,用以接收輸入特徵資訊; 一第四輸入端,用以接收啟動資訊; 一第五輸入端,用以接收權重資訊;及 一輸出端; 一計算啟動單元,包含: 一第一輸入端,耦接於該第一巨集單元的該輸出端; 一第二輸入端,用以接收計算啟動模式資訊;及 一輸出端。
- 如請求項2所述的加速器,其中該第一巨集單元的該輸入特徵資訊包含M+1個維度的輸入特徵向量資訊,該第一巨集單元的該輸出端用以輸出N+1個維度的輸出向量,該第一巨集單元另包含一時脈控制端以及一重置端,且M及N係為兩正整數。
- 如請求項3所述的加速器,其中該第一巨集單元接收該權重資訊後,產生(M+1)×(N+1)個權重,該每一行的M+1個權重與該M+1個維度的輸入特徵向量線性組合後,產生該第一巨集單元的一輸出。
- 如請求項1所述的加速器,其中該第二巨集電路包含: 一第二巨集單元,包含: 一第一輸入端,用以接收位址資訊; 一第二輸入端,用以接收讀寫控制資訊; 一第三輸入端,用以接收輸入特徵資訊; 一第四輸入端,用以接收啟動資訊; 一第五輸入端,用以接收權重更新資訊; 一第六輸入端,用以接收權重資訊;及 一輸出端; 一計算啟動及計算啟動導數單元,包含: 一第一輸入端,耦接於該第二巨集單元的該輸出端; 一第二輸入端,用以接收計算啟動模式資訊; 一第三輸入端,用以接收第一變化資訊; 一第一輸出端;及 一第二輸出端,用以輸出第二變化資訊; 一權重梯度計算單元,包含: 一第一輸入端,耦接於該計算啟動及計算啟動導數單元的該第二輸出端; 一第二輸入端,用以接收該輸入特徵資訊; 一第三輸入端,用以接收一輸出控制訊號; 一第四輸入端,用以接收一計算控制訊號;及 一輸出端,用以輸出第三變化資訊;及 一輸入多工器,包含: 一第一輸入端,用以接收該輸入特徵資訊; 一第二輸入端,耦接於該權重梯度計算單元的該輸出端; 一輸出端,耦接於該第二巨集單元的該第三輸入端;及 一控制端,用以接收一選擇訊號。
- 如請求項5所述的加速器,其中該第二巨集單元的該輸入特徵資訊包含M+1個維度的輸入特徵向量資訊,該第二巨集單元的該輸出端用以輸出N+1個維度的輸出向量,該第一巨集單元另包含一時脈控制端以及一重置端,且M及N係為兩正整數。
- 如請求項6所述的加速器,其中該第二巨集單元的該第三輸入端還用以接收M+1個權重差資訊,且該第二巨集單元接收該權重資訊後,產生(M+1)×(N+1)個權重,該每一行的M+1個權重與該M+1個維度的輸入特徵向量線性組合後,產生該第二巨集單元的一輸出,且該(M+1)×(N+1)個權重中,每一行的M+1個權重依據該M+1個權重差資訊而更新。
- 如請求項1所述的加速器,其中該第三巨集電路包含: 一第三巨集單元,包含: 一第一輸入端,用以接收位址資訊; 一第二輸入端,用以接收讀寫控制資訊; 一第三輸入端,用以接收輸入特徵資訊; 一第四輸入端,用以接收第一啟動資訊; 一第五輸入端,用以接收第二啟動資訊; 一第六輸入端; 一第七輸入端,用以接收權重更新資訊; 一第八輸入端,用以接收權重資訊; 一第一輸出端,用以輸出第一變化資訊;及 一第二輸出端; 一計算啟動及計算啟動導數單元,包含: 一第一輸入端,耦接於該第三巨集單元的該第二輸出端; 一第二輸入端,用以接收計算啟動模式資訊; 一第三輸入端,用以接收第一變化資訊; 一第一輸出端;及 一第二輸出端,用以輸出第二變化資訊; 一權重梯度計算單元,包含: 一第一輸入端,耦接於該計算啟動及計算啟動導數單元的該第二輸出端; 一第二輸入端,用以接收該輸入特徵資訊; 一第三輸入端,用以接收一輸出控制訊號; 一第四輸入端,用以接收一計算控制訊號;及 一輸出端,用以輸出第三變化資訊; 一輸入多工器,包含: 一第一輸入端,用以接收該輸入特徵資訊; 一第二輸入端,耦接於該權重梯度計算單元的該輸出端; 一輸出端,耦接於該第三巨集單元的該第三輸入端;及 一控制端,用以接收一選擇訊號;及 一導數輸入多工器,包含: 一第一輸入端,用以接收由該損失計算單元輸出的該第二變化資訊; 一第二輸入端,耦接於該計算啟動及計算啟動導數單元的該第二輸出端; 一控制端,用以接收一選擇訊號;及 一輸出端,耦接於該第三巨集單元的該第六輸入端。
- 如請求項8所述的加速器,其中該第三巨集單元的該輸入特徵資訊包含M+1個維度的輸入特徵向量資訊,該第三巨集單元的該第二輸出端用以輸出N+1個維度的輸出向量,該第三巨集單元的該第一輸出端用以輸出M+1個第一導數,該第三巨集單元的該第六輸入端用以接收由該導數輸入多工器所輸出的N+1個第二導數,該第三巨集單元另包含一時脈控制端以及一重置端,且M及N係為兩正整數。
- 如請求項9所述的加速器,其中該第三巨集單元的該第三輸入端還用以接收M+1個權重差資訊,且該第三巨集單元接收該權重資訊後,產生(M+1)×(N+1)個權重,該每一行的M+1個權重與該M+1個維度的輸入特徵向量線性組合後,產生該第三巨集單元的一輸出,且該(M+1)×(N+1)個權重中,每一行的M+1個權重依據該M+1個權重差資訊而更新,該第三巨集單元將該N+1個第二導數與每一列的N+1個權重線性組合後,產生該第三巨集單元的該第一輸出端的該M+1個第一導數。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW111150294A TWI819937B (zh) | 2022-12-28 | 2022-12-28 | 應用於類神經網路的記憶內運算的加速器 |
US18/118,153 US20240220573A1 (en) | 2022-12-28 | 2023-03-07 | Computing in Memory Accelerator for Applying to a Neural Network |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW111150294A TWI819937B (zh) | 2022-12-28 | 2022-12-28 | 應用於類神經網路的記憶內運算的加速器 |
Publications (2)
Publication Number | Publication Date |
---|---|
TWI819937B true TWI819937B (zh) | 2023-10-21 |
TW202427266A TW202427266A (zh) | 2024-07-01 |
Family
ID=89857999
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW111150294A TWI819937B (zh) | 2022-12-28 | 2022-12-28 | 應用於類神經網路的記憶內運算的加速器 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20240220573A1 (zh) |
TW (1) | TWI819937B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111767080A (zh) * | 2019-03-30 | 2020-10-13 | 英特尔公司 | 用于可配置空间加速器中的操作的设备、方法和系统 |
CN112069459A (zh) * | 2018-03-28 | 2020-12-11 | 英特尔公司 | 用于稀疏-密集矩阵乘法的加速器 |
TW202125287A (zh) * | 2019-12-28 | 2021-07-01 | 美商英特爾股份有限公司 | 用於矩陣運算加速器之指令的裝置,方法和系統 |
TW202143067A (zh) * | 2020-02-05 | 2021-11-16 | 美國普林斯頓大學信託會 | 用於記憶體內運算的可縮擴陣列架構 |
US20220366968A1 (en) * | 2022-08-01 | 2022-11-17 | Intel Corporation | Sram-based in-memory computing macro using analog computation scheme |
-
2022
- 2022-12-28 TW TW111150294A patent/TWI819937B/zh active
-
2023
- 2023-03-07 US US18/118,153 patent/US20240220573A1/en active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112069459A (zh) * | 2018-03-28 | 2020-12-11 | 英特尔公司 | 用于稀疏-密集矩阵乘法的加速器 |
CN111767080A (zh) * | 2019-03-30 | 2020-10-13 | 英特尔公司 | 用于可配置空间加速器中的操作的设备、方法和系统 |
TW202125287A (zh) * | 2019-12-28 | 2021-07-01 | 美商英特爾股份有限公司 | 用於矩陣運算加速器之指令的裝置,方法和系統 |
TW202143067A (zh) * | 2020-02-05 | 2021-11-16 | 美國普林斯頓大學信託會 | 用於記憶體內運算的可縮擴陣列架構 |
US20220366968A1 (en) * | 2022-08-01 | 2022-11-17 | Intel Corporation | Sram-based in-memory computing macro using analog computation scheme |
Also Published As
Publication number | Publication date |
---|---|
TW202427266A (zh) | 2024-07-01 |
US20240220573A1 (en) | 2024-07-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11307865B2 (en) | Data processing apparatus and method | |
EP3710995B1 (en) | Deep neural network processor with interleaved backpropagation | |
US20190042915A1 (en) | Procedural neural network synaptic connection modes | |
KR20190107766A (ko) | 계산 장치 및 방법 | |
TW201807621A (zh) | 人造神經網路、人造神經元及其控制方法 | |
CN112789627B (zh) | 一种神经网络处理器、数据处理方法及相关设备 | |
CN111353598B (zh) | 一种神经网络压缩方法、电子设备及计算机可读介质 | |
WO2018120016A1 (zh) | 用于执行lstm神经网络运算的装置和运算方法 | |
US11475305B2 (en) | Activation function functional block for electronic devices | |
US20210056427A1 (en) | Apparatus and method for training deep neural network | |
WO2020061924A1 (zh) | 运算加速器和数据处理方法 | |
WO2021082725A1 (zh) | Winograd卷积运算方法及相关产品 | |
WO2021036362A1 (zh) | 用于处理数据的方法、装置以及相关产品 | |
CN116187430A (zh) | 一种联邦学习方法及相关装置 | |
CN115879530A (zh) | 一种面向rram存内计算系统阵列结构优化的方法 | |
WO2018058452A1 (zh) | 一种执行人工神经网络运算的装置和方法 | |
WO2022133623A1 (en) | Accelerated scale-out performance of deep learning training workload with embedding tables | |
TWI819937B (zh) | 應用於類神經網路的記憶內運算的加速器 | |
Paulin et al. | Vau da muntanialas: Energy-efficient multi-die scalable acceleration of RNN inference | |
Ahn | Computation of deep belief networks using special-purpose hardware architecture | |
WO2019085378A1 (zh) | 高速全连接计算的硬件实现装置与方法 | |
TW202319964A (zh) | 用於訓練神經網路的系統以及方法 | |
US11307866B2 (en) | Data processing apparatus and method | |
CN111198714B (zh) | 重训练方法及相关产品 | |
US20200110635A1 (en) | Data processing apparatus and method |