TWI739225B - 用於執行神經網路運算之方法及電腦儲存媒體、及神經網路系統 - Google Patents
用於執行神經網路運算之方法及電腦儲存媒體、及神經網路系統 Download PDFInfo
- Publication number
- TWI739225B TWI739225B TW108143734A TW108143734A TWI739225B TW I739225 B TWI739225 B TW I739225B TW 108143734 A TW108143734 A TW 108143734A TW 108143734 A TW108143734 A TW 108143734A TW I739225 B TWI739225 B TW I739225B
- Authority
- TW
- Taiwan
- Prior art keywords
- depth
- vector
- input
- neural network
- matrix
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/044—Recurrent networks, e.g. Hopfield networks
- G06N3/0442—Recurrent networks, e.g. Hopfield networks characterised by memory or gating, e.g. long short-term memory [LSTM] or gated recurrent units [GRU]
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/0464—Convolutional networks [CNN, ConvNet]
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; 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
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computing Systems (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Optimization (AREA)
- Computational Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Artificial Intelligence (AREA)
- Molecular Biology (AREA)
- Computational Linguistics (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Neurology (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Complex Calculations (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
- Image Analysis (AREA)
- Image Processing (AREA)
- Length Measuring Devices With Unspecified Measuring Means (AREA)
Abstract
本發明揭示用於使用一矩陣運算單元進行深度串接之方法、系統及設備,其等包含在電腦儲存媒體上編碼之電腦程式。該等方法之一者包含:使用一積體電路接收用以處理一神經網路之網路輸入之一請求,該神經網路包括一深度串接神經網路層;及產生當由該積體電路執行時導致該積體電路執行包括以下步驟之操作的指令:對於該深度串接層之一第一輸入張量及該深度串接層之一第二輸入張量中的各空間位置:使用該矩陣運算單元,使該空間位置之一第二深度向量與該深度串接層之一移位權重矩陣相乘,以產生一移位第二深度向量;及使該移位第二深度向量與該空間位置之一第一輸入深度向量相加,以產生一串接深度向量。
Description
本說明書係關於在硬體中執行神經網路運算。
神經網路係採用一或多個模型層以針對一所接收輸入產生一輸出(例如,一分類)之機器學習模型。除一輸出層以外,一些神經網路亦包含一或多個隱藏層。各隱藏層之輸出被用作網路中之一或多個其他層(即,網路之一或多個其他隱藏層或輸出層)之輸入。網路之各層根據一各自參數集之當前值自一所接收輸入產生一輸出。
一些神經網路包含一深度串接層,該深度串接層接收作為輸入之兩個或兩個以上張量(即,多維矩陣,其等係神經網路中之其他層之輸出)且沿著深度維度串接輸入張量。特定言之,各輸入張量具有兩個空間維度x及y以及一深度維度z。藉由沿著深度維度z串接兩個輸入張量(一個輸入張量具有維度x1×y1×z1且另一輸入張量具有維度x1×y1×z2),深度串接層產生具有維度x1×y1×(z1+z2)之一輸出張量。可接著將深度串接層之輸出作為輸入提供至神經網路中之一或多個其他層或用作神經網路之輸出。
本說明書描述用於使用一矩陣運算單元沿著深度維度執行兩個張量之一串接之技術。此等技術大體上涉及在用於執行神經網路運算之一積體電路上接收用以處理包含一深度串接層之一神經網路之網路輸入之一請求。該積體電路包含一矩陣運算單元,該矩陣運算單元在硬體中執行向量-矩陣乘法但無法直接在硬體中執行一深度串接運算。替代地,一神經網路處理系統產生指令,當由該積體電路執行該等指令時導致該積體電路使用該矩陣運算單元在硬體中執行產生滿足該深度串接層之規格之一輸出之操作。
可在特定實施例中實施本說明書中描述之標的物,以實現以下優點之一或多者。可藉由一專用積體電路在硬體中產生滿足一深度串接層之規格之一輸出,即使該積體電路無法直接在硬體中執行一深度串接運算。藉由在該積體電路上之硬體中產生滿意輸出,可在未將資料傳送回至主機(即,未在晶片外執行運算之部分)之情況下執行包含一深度串接層之一神經網路之一推理之處理,即使該積體電路無法直接支援該深度串接運算。換言之,關於運算該深度串接層之該輸出之所有運算發生在該專用積體電路上。特定言之,藉由使用如本說明書中描述之移位矩陣對來自兩個輸入張量之深度向量執行矩陣乘法,該積體電路能夠在晶片上硬體中運算該深度串接層之該輸出。此允許在未修改該積體電路之硬體架構之情況下有效執行此一神經網路之一推理之該處理。特定言之,該系統可在未將深度串接硬體新增至該專用電路或未將移位支援新增至該專用電路之向量單元之情況下有效處理一神經網路推理。即,避免歸因於需在晶片外、軟體中或兩者執行該運算之部分之處理延遲。
在下文之附圖及描述中提出本說明書之標的物之一或多項實施例之
細節。自描述、圖式及發明申請專利範圍將變得明白標的物之其他特徵、態樣及優點。
100:神經網路處理系統
110:專用積體電路
120:矩陣運算單元
150:神經網路實施引擎
200:積體電路
202:主機介面
204:直接記憶體存取引擎
206:定序器
208:統一緩衝器
210:動態記憶體
212:矩陣乘法單元
214:向量運算單元
300:程序
302:步驟
304:步驟
306:步驟
308:步驟
400:程序
402:步驟
404:步驟
406:步驟
408:步驟
410:步驟
412:步驟
500:程序
502:步驟
504:步驟
506:步驟
508:步驟
600:程序
602:步驟
604:步驟
606:步驟
608:步驟
610:步驟
612:步驟
700:深度串接運算
800:深度串接運算
圖1展示一例示性神經網路處理系統。
圖2展示一例示性專用積體電路。
圖3係用於產生導致一專用積體電路針對一深度串接層產生一輸出張量之指令之一例示性程序之一流程圖。
圖4係用於沿著深度維度串接兩個張量之一例示性程序之一流程圖。
圖5係用於沿著深度維度串接兩個張量之另一例示性程序之一流程圖。
圖6係用於沿著深度維度串接兩個張量之又一例示性程序之一流程圖。
圖7展示需要一單一移位矩陣之一深度串接運算之一實例。
圖8展示需要兩個移位矩陣之一深度串接運算之一實例。
各種圖式中之相同元件符號及命名指示相同元件。
圖1展示一例示性神經網路處理系統100。
神經網路處理系統100係實施為其中可實施下文描述之系統、組件及技術之一或多個位置中之一或多個電腦之一系統之一實例。
神經網路處理系統100係使用一專用積體電路110執行神經網路運算之一系統。積體電路110係用於執行神經網路運算之一專用積體電路且包含在硬體中執行向量-矩陣乘法之一矩陣運算單元120。在下文參考圖2更詳細描述此一專用積體電路之一實例。
特定言之,神經網路處理系統100在專用積體電路110上接收用以實施神經網路之請求,在專用積體電路110上實施神經網路,且一旦實施一給定神經網路,則使用專用積體電路110處理神經網路之輸入以產生神經網路推理。
即,神經網路處理系統100可接收規定用於處理輸入之一神經網路之一神經網路架構之一請求。神經網路架構界定神經網路中之層之數目及組態以及具有參數之各層之參數值。
為了在專用積體電路110上實施一神經網路,神經網路處理系統100包含一神經網路實施引擎150,其經實施為一或多個實體位置中之一或多個電腦上之一或多個電腦程式。
神經網路實施引擎150產生指令,當由積體電路110執行該等指令時導致積體電路110執行由神經網路規定之操作以自一所接收神經網路輸入產生一神經網路輸出。
一旦指令已由神經網路實施引擎150產生且提供至積體電路110,則神經網路處理系統100可接收神經網路輸入且可藉由導致積體電路110執行所產生指令而使用神經網路處理神經網路輸入。
然而,一些神經網路包含一或多個不相容神經網路層。如本說明書中使用之術語不相容神經網路層係指規定無法藉由積體電路110直接在硬體中執行之一操作之一神經網路層。為在積體電路上實施此等神經網路,神經網路實施引擎150產生指令,當由積體電路110執行該等指令時導致積體電路110藉由在硬體中執行操作而針對不相容神經網路層產生一輸出,該等操作與由神經網路層規定之操作不同但導致產生滿足不相容神經網路層之規格之一層輸出,即,與藉由直接執行由該層規定之操作而產生
之一輸出相同之一層輸出。
特定言之,一些神經網路包含一深度串接層。一深度串接層係接收作為輸入之兩個或兩個以上張量(即,兩個或兩個以上多維矩陣,其等係神經網路中之其他層之輸出)且沿著深度維度串接輸入張量之一層。特定言之,各輸入張量具有兩個空間維度x及y以及一深度維度z。藉由沿著深度維度z串接兩個輸入張量(一個輸入張量具有維度x1×y1×z1且另一輸入張量具有維度x1×y1×z2),深度串接層產生具有維度x1×y1×(z1+z2)之一輸出張量。可接著藉由神經網路之另一層將輸出張量用作輸入。
可在積體電路110上實施且包含一或多個深度串接層之神經網路之實例係在獲得於https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/45169.pdf之Christian Szegedy、Sergey Ioffe、Vincent Vanhoucke之「Inception-v4,Inception-ResNet and the Impact of Residual Connections on Learning」中描述之影像辨識神經網路。
包含深度串接層之神經網路之其他實例係長短期記憶體(LSTM)神經網路,如在獲得於http://193.6.4.39/~czap/letoltes/is14/is2014/pdf/author/is141304.pdf之Hasim Sak、Andrew Senior、Francoise Beaufays之Long Short-Term Memory Recurrent Neural Network Architectures for Large Scale Acoustic Modeling中描述之神經網路。
由於在積體電路110上執行矩陣運算之主硬體單元係矩陣運算單元120,故積體電路無法直接在硬體中執行一深度串接運算。
為了在積體電路110上實施包含一深度串接層之一神經網路,神經網路實施引擎150產生指令,當在藉由神經網路處理一神經網路輸入期間由
積體電路110執行該等指令時導致積體電路110在硬體中執行其他操作以使用矩陣運算單元120產生滿足深度串接神經網路層之規格之一輸出張量。在下文參考圖3至圖8更詳細描述此等指令及其他操作。
雖然本說明書將用於執行神經網路之電路描述為一專用積體電路,但本說明書中描述之技術可在任何電路上執行,例如擴充有一矩陣運算單元之一FPGA、一ASIC、一GPU等等。
圖2展示用於執行神經網路運算之一例示性積體電路200。
積體電路200包含一主機介面202。主機介面202可接收包含一神經網路運算之參數之指令。參數可包含以下之至少一或多者:應處理多少個層、識別各層之對應權重輸入集之資料、一初始啟動輸入集(即,自其運算推理之神經網路之輸入)、各層之對應輸入及輸出大小等等。當所處理之神經網路包含一深度串接層時,參數包含深度串接層之一或多個移位權重矩陣及深度串接層之一或多個經修改識別權重矩陣。在下文參考圖3至圖5更詳細描述移位權重矩陣及經修改識別權重矩陣。
主機介面202可將指令發送至一定序器206,定序器206將指令轉換成控制電路執行神經網路運算之低階控制信號。在一些實施方案中,控制信號調節積體電路200中之資料流,例如權重輸入集及啟動輸入集如何流動通過積體電路200。定序器206可將控制信號發送至一統一緩衝器208、一矩陣乘法單元212及一向量運算單元214。在一些實施方案中,定序器206亦將控制信號發送至一直接記憶體存取引擎204及一動態記憶體210。
主機介面202可將權重輸入集及初始啟動輸入集發送至直接記憶體存取引擎204。直接記憶體存取引擎204可將啟動輸入集儲存於統一緩衝器208處。
在一些實施方案中,直接記憶體存取引擎204將權重集儲存至動態記憶體210,動態記憶體210可為一記憶體單元。在一些實施方案中,動態記憶體經定位於電路外。當所處理之神經網路包含一深度串接層時,直接記憶體存取引擎204將深度串接層之一或多個移位權重矩陣及(在一些實施方案中)深度串接層之經修改識別權重矩陣儲存於動態記憶體210中。
統一緩衝器208係一記憶體緩衝器。其可用於儲存來自直接記憶體存取引擎204之啟動輸入集及向量運算單元214之輸出。直接記憶體存取引擎204亦可自統一緩衝器208讀取向量運算單元214之輸出。
當被指示如此做時,動態記憶體210及統一緩衝器208可分別將權重輸入集及啟動輸入集發送至矩陣乘法單元212。
一般言之,矩陣乘法單元212可為在硬體中執行一向量與一矩陣之乘法之任何單元。在一些實施方案中,矩陣乘法單元212係二維脈動陣列(systolic array)。在此情況中,矩陣乘法單元212可並行執行多個向量-矩陣乘法或執行矩陣-矩陣乘法。矩陣乘法單元212亦可為一維脈動陣列或可執行數學運算(例如乘法及加法)之其他電路。
矩陣乘法單元212可處理權重輸入及啟動輸入,且將一輸出向量提供至向量運算單元214。在一些情況中,矩陣乘法單元212將輸出向量發送至統一緩衝器208,統一緩衝器208將輸出向量發送至向量運算單元214,或在當前神經網路層未應用一啟動功能時,將輸出向量發送回至矩陣乘法單元212。例如,一旦已產生一深度串接層之深度串接輸出,則矩陣乘法單元212可將輸出發送至統一緩衝器208而非向量運算單元214,此係因為深度串接層未應用一啟動功能。在一些其他情況中,即使深度串接層未應用一啟動功能,矩陣乘法單元212仍將輸出發送至向量運算單元214,向
量運算單元214在將輸出路由回至統一緩衝器208之前,將一識別啟動功能應用至輸出,即,未修改輸出。
向量運算單元214可處理輸出向量,且將一經處理輸出向量儲存至統一緩衝器208。例如,向量運算單元214可將一非線性功能應用至矩陣運算單元之輸出(例如一累積值向量),以產生啟動值。在一些實施方案中,向量運算單元214產生正規化值、合併值,或兩者。經處理輸出向量可被用作矩陣乘法單元212之啟動輸入,例如用於神經網路中之一後續層中。
在2015年9月3日申請之標題為「Neural Network Processor」之美國專利申請案第14/844,524號中更詳細描述積體電路200,且特定言之,描述允許矩陣乘法單元212在硬體中執行向量-矩陣乘法之矩陣乘法單元212之一例示性實施方案,該案之全部內容係以引用的方式全部併入本文中。
圖3係用於產生導致一專用積體電路針對一深度串接層產生一輸出張量之指令之一例示性程序300之一流程圖。為方便起見,程序300將被描述為由經定位於一或多個位置中之一或多個電腦之一系統執行且根據本說明書被適當程式化。例如,適當程式化之一神經網路處理系統(例如圖1之神經網路處理系統100)可執行程序300。
系統接收用以在一專用積體電路上實施一神經網路之一請求,即,使用專用積體電路處理神經網路之輸入以產生輸出(步驟302)。
特定言之,在積體電路上實施之神經網路包含規定兩個張量沿著深度維度之一串接之一深度串接層。例如,深度串接層可規定沿著具有維度x1×y1×z1之一第一輸入張量及具有維度x1×y1×z2之一第二輸入張量之深度維度之一串接以產生具有維度x1×y1×(z1+z2)之一輸出張量。
系統產生用於執行由深度串接層規定之串接之一或多個移位權重矩
陣(步驟304)。
一移位矩陣係在與一輸入向量相乘時產生其中輸入向量之項之一或多者之位置移位而輸入向量之一或多個其他項已被零取代之一輸出向量之一矩陣。一般言之,本說明書中描述之移位矩陣係用作一矩陣乘法運算之右側上之矩陣之矩陣以將輸入向量值移動至一輸出向量中之所要位置。然而,在一些其他實施方案中,以不同方式建構之移位矩陣可被用作矩陣乘法運算之左側上之矩陣以達成相同結果。
特定言之,由於積體電路之矩陣運算單元在硬體中執行矩陣乘法,故矩陣運算單元具有一最大向量長度(max)。最大向量長度係可藉由矩陣運算單元在一個過程中與一矩陣相乘之一向量之最大長度,即,未將向量劃分為矩陣運算單元之多個輸入。例如,若矩陣運算單元係一維或二維脈動陣列,則最大向量長度等於單元中之行數或單元中之列數。
對於具有小於或等於max之一深度之張量,系統將張量儲存為具有輸入張量中之每一空間位置之長度max之各自深度向量之一集合。
一空間位置係一對(x,y)空間座標,即,使得一張量中之在共用相同(x,y)空間座標之所有深度維度處之所有項處於相同空間位置。一給定空間位置之深度向量係包含張量中之處於給定空間位置之所有項之一向量。若張量具有小於max之一深度z,則各深度向量之最後max-z項經填補有零或垃圾值,即,可用於其他目的但無關於且不應影響深度串接運算之值。
對於具有超過max之一深度之張量,系統將各深度向量表示為max個長度向量。組成一深度向量之部分之此等max個長度向量之各者在本說明書中將被稱為一塊向量(chunk vector)。
對於具有一深度z之一張量中之一給定空間位置,該位置之深度向量
經表示為ceiling(z/max)個塊向量,其中ceiling(x)係大於或等於x之最小整數。前floor(z/max)個塊向量(其中floor(x)係小於或等於x之最大整數)各儲存來自空間位置之深度向量中之對應維度之值,即,其中第一塊向量儲存第一最大深度維度中之空間位置處之項,第二塊向量儲存第二最大深度維度中之空間位置處之項,以此類推。最後塊向量之前floor(z/max)*max項係最後floor(z/max)*最大深度維度處之項且任何其餘項經填補有零或垃圾值。
在一些情況中,輸出張量之深度維度數(z1+z2)將不超過最大向量長度且輸出張量之深度向量係單一塊向量。在此等情況中,系統針對深度串接運算產生一單一移位權重矩陣。
若輸出張量之深度維度數超過最大向量長度且深度向量由多個塊向量表示,則系統可需要針對深度串接運算產生一個以上移位權重矩陣。
系統亦針對深度串接層產生一或多個經修改識別權重矩陣。一經修改識別權重矩陣係沿著主對角線之一部分具有1且針對所有其他項具有0之一矩陣。
一般言之,使在一輸入向量之第j個位置開始之項移位至在輸入向量之第i個位置開始之一移位矩陣係除在矩陣之第i個行之第j個值開始之一對角線列的項1以外皆為0之一max×max矩陣。
將在下文參考圖4至圖8更詳細描述移位矩陣及經修改識別權重矩陣。
系統將深度串接層之一或多個移位權重矩陣及一或多個經修改識別權重矩陣儲存於可供專用積體電路存取之一記憶體中(步驟306)。例如,系統可將所產生矩陣或若干矩陣發送至專用積體電路之一主機介面以儲存
於可供電路存取之一動態記憶體中。
系統產生指令,當在藉由神經網路處理一神經網路輸入期間由積體電路執行該等指令時導致積體電路使用所產生矩陣產生滿足深度串接神經網路層之規格之一輸出張量(步驟308)。特定言之,系統產生指令,當執行該等指令時導致積體電路執行在下文分別參考圖4至圖6描述之程序400、500或600。
圖4係用於串接兩個輸入向量之另一例示性程序400之一流程圖。藉由包含一硬體矩陣運算單元之一專用積體電路(例如圖1之專用積體電路110)在硬體中執行程序400。
積體電路接收待串接之兩個輸入(步驟402)。各輸入係來自待進行深度串接之一各自張量之一給定空間位置處之一深度向量且各輸入由一或多個max大小之塊向量組成。即,一個輸入係來自一個輸入張量之空間位置處之深度向量且另一輸入係來自另一輸入張量之空間位置處之深度向量。
在一些情況中,即,當任一或兩個張量中之深度維度數不係max之一倍數時,任一或兩個張量中之各空間位置之最後塊向量包含填補值,即,零或垃圾值已經新增至塊向量但不係輸入張量之部分。一塊向量中之除填補項以外的項將被稱為非填補項。
積體電路例如基於一控制信號將第一輸入或第二輸入中之塊向量(即,需要修改之第一塊向量)識別為深度串接之部分(稱為「第一經修改塊向量」)(步驟404)。需要修改之第一塊向量係包含一或多個填補項之第一塊向量。
對於在需要修改之第一塊向量之前的各塊向量,積體電路在未修改之情況下將塊向量移動至矩陣運算單元之輸出且接著將塊向量作為串接運
算之輸出塊向量移出輸出(步驟406)。將在下文參考圖5至圖8描述將向量移動至矩陣運算單元之輸出。
積體電路將需要修改之第一塊向量之非填補項移動至矩陣運算單元之輸出中(步驟408)。
即,積體電路使第一經修改塊向量與一經修改識別矩陣相乘以將具有第一塊向量之非填補項及其餘項零之一塊向量移動至矩陣運算單元之輸出。將在下文參考圖5至圖8描述使向量與部分識別矩陣相乘。
積體電路使用一適當移位矩陣將一移位塊向量移動至輸出中以加總移位塊向量與當前在輸出中之塊向量且接著將塊向量之總和作為串接運算之一輸出塊向量移出輸出(步驟410)。
對於在一深度串接期間執行之步驟410之第一反覆,當前在輸出中之塊向量係需要修改之第一塊向量。
移位塊向量係將零作為其前(max-n)項且將下一塊向量之前n項作為其其餘項之一塊向量,其中n係當前在輸出中之塊向量中之填補項數且下一塊向量係在輸入中之塊向量經配置成自第一輸入中之第一塊向量開始且以第二輸入中之最後塊向量結束之序列時待運算之下一塊向量。
在下文參考圖5至圖8更詳細描述使用移位矩陣產生移位塊向量及加總向量。
積體電路使用另一適當移位矩陣將另一移位塊向量移動至輸出(步驟412)。
另一移位塊向量係將下一塊向量中之任何額外非填補項作為其前幾項且將填補項作為其其餘項之一塊向量。
積體電路繼續執行步驟410及412直至不存在其餘下一塊向量,即,
直至已對所有輸入塊向量進行運算。
系統可針對輸入張量中之各空間位置執行程序400以使兩個輸入張量進行深度串接。
圖5係用於沿著深度維度串接兩個張量之另一例示性程序500之一流程圖。藉由包含一硬體矩陣運算單元之一專用積體電路(例如圖1之專用積體電路110)在硬體中執行程序500。
特定言之,程序500係待執行以在串接張量具有未超過矩陣運算單元之最大向量長度之一深度維度數(即,各輸出深度向量可經儲存為一單一塊)時串接兩個張量之一程序之一實例。
積體電路自可供積體電路存取之一記憶體(例如自圖2之動態記憶體210)存取深度串接之一移位權重矩陣(步驟502)。在一些實施方案中,積體電路亦自記憶體存取深度串接之一經修改識別權重矩陣。
積體電路將第一輸入張量中之一給定空間位置之一第一深度向量移動至矩陣運算單元之輸出(步驟504)。給定空間位置之第一深度向量係包含第一輸入張量中之處於給定空間位置之所有項且具有如第一深度向量之任何其餘值之填補值之一向量。
例如,積體電路可將第一深度向量之各項移動至儲存由矩陣運算單元執行之乘法之輸出之一組暫存器之一各自加總暫存器。
為了將第一深度向量移動至輸出,積體電路可使用矩陣運算單元使第一深度向量與深度串接之一經修改識別權重矩陣相乘,從而導致第一深度向量儲存於矩陣運算單元之輸出中。經修改識別權重矩陣係除主對角線之前z1項中的1以外皆為0之一max×max矩陣。
積體電路使第二輸入張量中之給定空間位置之一第二深度向量與深
度串接之移位權重矩陣相乘(步驟506)以產生一移位第二深度向量。給定空間位置之第二深度向量係包含第二輸入張量中之處於給定空間位置之所有項且具有如第二深度向量之任何其餘值之填補值之一向量。
憑藉移位權重矩陣之結構,所得移位第二深度向量係具有max個項之一向量,其中前z1項係零,接下來的z2項係該空間位置之第二深度向量的項,且任何其餘項係零。
積體電路加總第一深度向量與移位第二深度向量以產生一串接深度向量(步驟508)。例如,系統可藉由將第二深度向量之項移動至儲存第一深度向量之對應項之加總暫存器中來使第二深度向量之各項與第一深度向量之對應項相加。
積體電路可針對輸入張量中之各空間位置執行步驟504至508,以產生深度串接層之輸出。
圖6係用於沿著深度維度串接兩個張量之另一例示性程序600之一流程圖。藉由包含一硬體矩陣運算單元之一專用積體電路(例如圖1之專用積體電路110)而在硬體中執行程序600。
特定言之,程序600係待執行以在第一張量具有小於矩陣運算單元之最大向量長度之一深度維度數但串接張量具有超過最大向量長度之一深度維度數時串接兩個張量之一程序之一實例。即,第一深度向量係需要在圖4之程序400中修改之第一塊向量。
積體電路自可供積體電路存取之一記憶體(例如自圖2之統一緩衝器208)存取深度串接之移位權重矩陣(步驟602)。在一些實施方案中,積體電路亦自記憶體存取深度串接之一經修改識別權重矩陣。
積體電路將第一輸入張量中之一給定空間位置之一第一深度向量移
動至矩陣運算單元之輸出(步驟604)。在此實例中,第一深度向量係具有max個項之一向量,其中前z1項係該空間位置之第一深度向量的項,且其餘項係零。
例如,積體電路可藉由使第一深度向量與具有維度(max)×(max)且包含沿著主對角線之零直至第z1行之第z1項(包含端值)之一經修改識別權重矩陣相乘,而將第一深度向量之各項移動至儲存由矩陣運算單元執行之乘法之輸出之一組暫存器之一各自加總暫存器。
積體電路使第二輸入張量中之給定空間位置之第二深度向量之第一塊向量與深度串接之第一移位矩陣相乘(步驟606)以產生一第一部分移位塊。
憑藉第一移位矩陣之結構,一給定空間位置之第一部分移位深度向量係具有(max)個項之一向量,其中前z1項係零且接下來的(max-z1)個項係該空間位置之第二深度向量之第一塊向量之前(max-z1)個項。
積體電路加總第一深度向量與第一部分移位深度向量以產生一中間串接深度向量(步驟608)。例如,系統可藉由將第一部分移位深度向量之項移動至儲存第一深度向量之對應項之加總暫存器中而使第一部分移位深度向量之各項與第一深度向量之對應項相加。中間串接深度向量係具有(max)個項之一向量,其中前z1項係第一深度向量之項且接下來的(max-z1)個項係該空間位置之第二深度向量之前(max-z1)個項。
積體電路使第二輸入張量中之給定空間位置之深度向量與深度串接之第二移位矩陣相乘(步驟610)以產生一第二部分移位深度向量。
憑藉第二移位矩陣之結構,一給定空間位置之第二部分移位深度向量係具有(max)個項之一向量,其中前(z1+z2-max)個項係該空間位置之
第二深度向量之最後(z1+z2-max)個且其餘項係零或垃圾值。
積體電路將第二部分移位深度向量及中間串接深度向量儲存為該空間位置之一串接深度向量之一表示(步驟612)。例如,積體電路可將第二部分移位深度向量及中間串接深度向量儲存於統一緩衝器中之預定位置中,該等預定位置在指令中識別為其中待儲存表示該空間位置之串接深度向量之兩個向量之位置。
積體電路可針對輸入張量中之各空間位置執行程序600以產生深度串接層之輸出。
圖7展示需要一單一移位矩陣之一深度串接運算700之一實例。
在圖7之簡化實例中,具有維度3×3×3之一第一輸入張量與具有維度3×3×4之一第二輸入張量進行深度串接以產生一3×3×7輸出張量且可藉由矩陣運算單元在一個過程中處理之最大向量長度係八,使得串接輸出張量之深度小於最大向量長度。
在運算之部分(a)中,積體電路對來自第一張量之一第一深度向量及來自第二張量之一對應第二深度向量進行運算。特定言之,第一深度向量將第一輸入張量中之一給定空間位置處之3項作為其前3項且將零作為其其餘項,而第二深度向量將第二輸入張量中之給定空間位置處之4項作為其前4項且將零作為其其餘項。
在圖7之實例中,第一深度向量及第二深度向量已經填補有零,但在其他實例中,深度向量之一者或兩者可替代地填補有垃圾資料。
為了執行運算之部分(a),積體電路使用矩陣運算單元使第一深度向量與一經修改識別權重矩陣相乘以在矩陣運算單元之輸出中產生第一深度向量之另一例項(即,將第一深度向量移動至輸出)。在圖7之實例中,經
修改識別矩陣沿著主對角線之前三項具有1且針對主對角線之最後四項具有0。然而,由於深度向量經填補有零而非垃圾值,故經修改識別權重矩陣可替代地針對主對角線之最後四項及在乘法期間僅與第一深度向量之填補項相乘之其他項具有其他值。
積體電路接著使第二深度向量與一移位矩陣相乘以產生一移位深度向量。移位矩陣係一7×7矩陣,其具有除在第四行之第一項開始且在第七行之第四項結束之一對角線列的1以外皆為0之項。憑藉與移位矩陣相乘,移位深度向量將零作為其前3項且將第二深度向量之4項作為其隨後4項。正如經修改識別矩陣,由於深度向量經填補有零而非垃圾值,故移位矩陣可替代地針對在乘法期間僅與第二深度向量之填補項相乘之項具有除0以外的值。
在運算之部分(b)中,積體電路使第一深度向量與移位第二深度向量相加(即,藉由在第一深度向量在輸出中時將移位第二深度向量移動至輸出中)以產生將第一深度向量之項作為其前3項且將第二深度向量之項作為其最後4項之一串接深度向量。
積體電路可針對輸入張量中之各空間位置執行例示性運算以產生各空間位置之一各自串接深度向量。
圖8展示需要兩個移位矩陣之一深度串接運算800之一實例。
在圖8之簡化實例中,具有維度3×3×3之一第一輸入張量與具有維度3×3×4之一第二輸入張量進行深度串接以產生一3×3×7輸出張量,但可藉由矩陣運算單元在一個過程中處理之最大向量長度係5,使得深度串接輸出張量之深度大於最大向量長度。
在運算之部分(a)及(c)中,積體電路對來自第一輸入張量之一第一深
度向量及來自第二輸入張量之一對應第二深度向量之兩個例項進行運算。特定言之,第一深度向量將第一輸入張量中之一給定空間位置處之3項作為其前3項且將零作為其其餘項,而第二深度向量將第二輸入張量中之給定空間位置處之4項作為其前4項且將零作為其其餘項。在圖8之實例中,第一深度向量及第二深度向量已經填補有零,但在其他實例中,一些或所有深度向量可替代地填補有垃圾資料。
為了執行運算之部分(a),積體電路使用矩陣運算單元使第一深度向量與一經修改識別權重矩陣相乘以在矩陣運算單元之輸出中產生第一深度向量之另一例項(即,將第一深度向量移動至輸出)。
積體電路接著使第二深度向量與一第一移位矩陣相乘以產生一第一部分移位深度向量。第一移位矩陣係一5×5矩陣,其具有除在第四行之第一項開始且在第五行之第二項結束之一對角線列的1以外皆為0之項。憑藉與移位矩陣相乘,第一部分移位深度向量將零作為其前3項且將第二深度向量之前2項作為隨後2項。
為了執行運算之部分(b),積體電路接著藉由使第一深度向量與第一部分移位深度向量相加(即,在第一深度向量在輸出中時將第一部分移位深度向量移動至輸出中)以產生輸出深度向量之第一塊,其將第一深度向量之項作為其前3項且將第二深度向量之前2項作為其最後2項。
為了執行運算之部分(c),即,為產生輸出深度向量之第二塊,積體電路使第二深度向量與一第二移位矩陣相乘以產生一第二部分移位深度向量。第二移位矩陣係一5×5矩陣,其具有除在第一行之第四項開始且在第二行之第五項結束之一對角線列的1以外皆為0之項。憑藉與移位矩陣相乘,第二部分移位深度向量將第二深度向量之最後兩項作為其前兩項且將
零作為其餘項。
為了執行運算之部分(d),積體電路例如藉由將第一塊向量及第二塊向量儲存於統一緩衝器中之預定位置中而將兩個向量儲存為該空間位置之串接深度向量之一表示,該等預定位置在指令中識別為其中待儲存表示該空間位置之串接深度向量之兩個向量之位置。
積體電路可針對輸入張量中之各空間位置執行例示性運算以產生各空間位置之一各自串接深度向量。
本說明書中描述之標的物及功能操作之實施例可依以下各者實施:數位電子電路、有形體現之電腦軟體或韌體、電腦硬體(包含本說明書中揭示之結構及其等結構等效物),或其等之一或多者之組合。本說明書中描述之標的物之實施例可實施為一或多個電腦程式,即,在一有形非暫時性儲存媒體上編碼以供資料處理設備執行或控制該資料處理設備之操作之電腦程式指令之一或多個模組。電腦儲存媒體可為一機器可讀儲存裝置、一機器可讀儲存基板、一隨機或串列存取記憶體裝置或其等之一或多者之一組合。替代地或另外,程式指令可在一人工產生的傳播信號(例如,一機器產生電、光學或電磁信號)上編碼,產生該信號以編碼資訊以供傳輸至適當接收器設備從而供一資料處理設備執行。
術語「資料處理設備」係指資料處理硬體且涵蓋用於處理資料之各種設備、裝置及機器,包含例如一可程式化處理器、一電腦或多個處理器或電腦。設備亦可為或進一步包含專用邏輯電路,例如一FPGA(場可程式化閘極陣列)或一ASIC(特定應用積體電路)。設備除包含硬體之外,亦可視情況包含產生電腦程式之一執行環境之程式碼,例如構成處理器韌體、一協定堆疊、一資料庫管理系統、一作業系統或其等之一或多者之一
組合之程式碼。
可用任何形式之程式設計語言撰寫一電腦程式(其亦可被稱為或描述為一程式、軟體、一軟體應用程式、一應用程式、一模組、一軟體模組、一指令檔或程式碼),包含編譯或解譯語言或宣告或程序語言;且其可用任何形式予以部署,包含作為一獨立程式或作為一模組、組件、副常式或適用於一運算環境中之其他單元。一程式可(但無需)對應於一檔案系統中之一檔案。一程式可儲存於保存其他程式或資料(例如儲存於一標記語言文件中之一或多個指令檔)之一檔案之一部分中、儲存於專用於所述程式之一單一檔案中或儲存於多個協同檔案(例如儲存一或多個模組、副程式或程式碼之部分之檔案)中。一電腦程式可經部署以在一個電腦上或在定位於一個位置處或跨多個位置分佈且由一資料通信網路互連之多個電腦上執行。
本說明書中描述之程序及邏輯流程可由一或多個可程式化電腦執行,該一或多個可程式化電腦執行一或多個電腦程式以藉由對輸入資料進行操作及產生輸出而執行功能。程序及邏輯流程亦可由專用邏輯電路(例如一FPGA或一ASIC)或由專用邏輯電路與一或多個可程式化電腦之一組合執行。
適用於執行一電腦程式之電腦可基於通用或專用微處理器或兩者或任何其他類型之中央處理單元。通常,一中央處理單元自一唯讀記憶體或一隨機存取記憶體或兩者接收指令及資料。一電腦之基本元件係用於執行(perform或execute)指令之一中央處理單元及用於儲存指令及資料之一或多個記憶體裝置。中央處理單元及記憶體可藉由專用邏輯電路補充或併入至專用邏輯電路中。通常,一電腦亦將包含用於儲存資料之一或多個大容
量儲存裝置(例如,磁碟、磁光碟或光碟),或可操作地耦合以自該大容量儲存裝置接收資料或傳送資料至該大容量儲存裝置,或既自該大容量儲存裝置接收資料亦傳送資料至該大容量儲存裝置。然而,一電腦未必具有此等裝置。而且,一電腦可嵌入另一裝置中,例如一行動電話、一個人數位助理(PDA)、一移動音訊或視訊播放機、一遊戲控制台、一全球定位系統(GPS)接收器或一可擕式儲存裝置(例如一通用串列匯流排(USB)快閃隨身碟)(此處僅列舉一些)。
適用於儲存電腦程式指令及資料之電腦可讀媒體包含所有形式之非揮發性記憶體、媒體及記憶體裝置,包含例如半導體記憶體裝置,例如EPROM、EEPROM及快閃記憶體裝置;磁碟,例如內部硬碟或可卸除式磁碟;磁光碟;及CD-ROM及DVD-ROM磁碟。
為提供與一使用者之互動,本說明書中描述之標的物之實施例可在具有用於顯示資訊給使用者之一顯示裝置(例如一CRT(陰極射線管)或LCD(液晶顯示器)監視器)及一鍵盤及一指標裝置(例如一滑鼠或一軌跡球,使用者可藉由其等提供輸入至電腦)之一電腦上實施。其他類型之裝置亦可用於提供與一使用者之互動;例如,提供至使用者之回饋可為任何形式之感測回饋,例如視覺回饋、聽覺回饋或觸覺回饋;且來自使用者之輸入可經接收為任何形式,包含聲學、言語或觸覺輸入。另外,一電腦可藉由將文件發送至供一使用者使用之一裝置及自該裝置接收文件(例如藉由回應於自一使用者之裝置上之一網頁瀏覽器接收之請求而將網頁發送至網頁瀏覽器)而與使用者互動。而且,一電腦可藉由發送文字訊息或其他形式之訊息至一個人裝置(例如一智慧型電話)、運行一傳訊應用程式及繼而自使用者接收回應訊息而與使用者互動。
可在一運算系統中實施本說明書中描述之標的物之實施例,該運算系統包含一後端組件(例如作為一資料伺服器),或包含一中介軟體組件(例如一應用程式伺服器),或包含一前端組件(例如一用戶端電腦,其具有一圖形使用者介面、一網頁瀏覽器或一應用程式,一使用者可透過其等與本說明書中描述之標的物之一實施方案互動)或一或多個此後端組件、中介軟體組件或前端組件之任何組合。系統之組件可藉由數位資料通信之任何形式或媒體(例如一通信網路)互連。通信網路之實例包含一區域網路(LAN)及一廣域網路(WAN)(例如網際網路)。
運算系統可包含用戶端及伺服器。一用戶端及伺服器通常彼此遠離且通常透過一通信網路而互動。用戶端與伺服器之關係憑藉在各自電腦上運行且彼此具有一用戶端-伺服器關係之電腦程式而引起。在一些實施例中,一伺服器將資料(例如一HTML網頁)傳輸至一使用者裝置以用於例如將資料顯示給與裝置互動之一使用者(其充當一用戶端)且自該使用者接收使用者輸入。在使用者裝置處產生之資料(例如使用者互動之一結果)可在來自裝置之伺服器處接收。
雖然本說明書含有許多特定實施方案細節,但此等不應被解釋為對本發明之範疇或者可主張之內容之範疇之限制,而應當解釋為可特定於本發明之特定實施例之特徵之描述。本說明書中在單獨實施例之內容脈絡中描述之某些特徵亦可在一單一實施例中組合實施。相反地,在一單一實施例之內容脈絡中描述之各種特徵亦可以單獨地或者以任何合適之子組合在多個實施例中實施。而且,儘管上文可將特徵描述為以特定組合起作用且甚至最初如此主張,但在一些情況中,來自所主張組合之一或多個特徵可自組合中免除,且所主張組合可係關於一子組合或一子組合之變動。
類似地,雖然在圖式中按一特定順序描繪操作,但此不應被理解為要求按所展示之特定順序或循序順序執行此等操作,或執行所有繪示之操作以達成所要結果。在特定境況中,多任務處理及平行處理可為有利的。而且,在上文中描述之實施例中之各種系統模組及組件之分離不應被理解為在所有實施例中皆需要此分離,且應理解所描述之程式組件及系統可大體上一起整合於一單一軟體產品中或封裝至多個軟體產品中。
進一步實例包含用於使用一矩陣運算單元進行深度串接之方法、系統及設備,其等包含在電腦儲存媒體上編碼之電腦程式,其中該等方法之一者包含:使用一積體電路接收用以處理一神經網路之網路輸入之一請求,該神經網路包括一深度串接神經網路層;及產生當由該積體電路執行時導致該積體電路執行包括以下步驟之操作之指令:對於該深度串接層之一第一輸入張量及該深度串接層之一第二輸入張量中之各空間位置:使用該矩陣運算單元使該空間位置之一第二深度向量與該深度串接層之一移位權重矩陣相乘以產生一移位第二深度向量;及使該移位第二深度向量與該空間位置之一第一輸入深度向量相加以產生一串接深度向量。
已描述標的物之特定實施例。其他實施例在下列發明申請專利範圍之範疇內。例如,在發明申請專利範圍中敘述之動作可按一不同順序執行且仍達成所要結果。作為一個實例,在附圖中描繪之程序不必要求所展示之特定順序或連續順序來達成所要結果。在一些情況中,多任務處理及平行處理可為有利的。
100:神經網路處理系統
110:專用積體電路
120:矩陣運算單元
150:神經網路實施引擎
Claims (20)
- 一種用於實施神經網路運算之方法,該方法包括:使用一積體電路接收對一神經(neural)網路處理網路輸入之一請求,該積體電路使用一矩陣運算單元在硬體中實施神經網路運算,該神經網路包括一深度串接(depth concatenation)神經網路層,該深度串接神經網路層指定具有維度x1×y1×z1之一輸入張量及具有維度x1×y1×z2之一輸入張量沿著一深度維度之一串接,以產生具有維度x1×y1×(z1+z2)之一輸出張量;及產生指令,當在由該積體電路執行該等指令時,藉由該神經網路處理一網路輸入期間,導致該積體電路藉由實施包括以下步驟之操作來產生滿足該深度串接神經網路層之規格之一層輸出張量:對於該深度串接層之一第一輸入張量及該深度串接層之一第二輸入張量中的各空間位置:使用該矩陣運算單元,將該第二輸入張量中之空間位置之一第二深度向量與該深度串接層之一移位權重矩陣相乘,以產生將零作為前z1項(first z1 entries)且將該第二深度向量之多個項作為最後z2項(last z2 entries)之一移位第二深度向量;及使該移位第二深度向量與該第一輸入張量中之空間位置之一第一輸入深度向量相加,以產生一串接深度向量,該第一輸入深度向量將該第一輸入深度向量之多個項作為該第一輸入深度向量之前z1項且將零作為該第一輸入深度向量之最後z2項。
- 如請求項1之方法,該等操作進一步包括: 將該第一輸入深度向量移動至該矩陣運算單元之一組輸出加總暫存器;及其中使該移位第二深度向量與該第一輸入深度向量相加包括:在該第一輸入深度向量儲存於該矩陣運算單元之該組輸出加總暫存器中時,將該移位第二深度向量移動至該矩陣運算單元之該組輸出加總暫存器中。
- 如請求項2之方法,其中移動該第一輸入深度向量包括:使用該矩陣運算單元,使該第一輸入深度向量與該深度串接層之一經修改識別權重矩陣相乘。
- 如請求項3之方法,進一步包括:針對該深度串接層,產生該經修改識別權重矩陣;及將該深度串接層之該經修改識別權重矩陣儲存於可供專用積體電路存取之一記憶體中。
- 如請求項1之方法,進一步包括:針對該深度串接層,產生該移位權重矩陣;及將該深度串接層之該移位權重矩陣儲存於可供該專用積體電路存取之一記憶體中。
- 如請求項5之方法,進一步包括:判定該輸出張量中之深度維度數未超過該矩陣運算單元之一最大向 量長度;及回應於判定該輸出張量中之該深度維度數未超過該矩陣運算單元之該最大向量長度,而針對該深度串接產生該移位權重矩陣。
- 如請求項1之方法,其中該深度串接層之該移位權重矩陣係除在矩陣之第z2行之第一項開始之一對角線列之1以外所有項皆為0之一(z1+z2)×(z1+z2)矩陣。
- 一種神經網路系統,其包括一或多個電腦及儲存第一指令之一或多個儲存裝置,當由該一或多個電腦執行該等第一指令時,導致該一或多個電腦執行包括以下步驟之第一操作:使用一積體電路接收對一神經網路處理網路輸入之一請求,該積體電路使用一矩陣運算單元在硬體中實施神經網路運算,該神經網路包括一深度串接神經網路層,該深度串接神經網路層指定具有維度x1×y1×z1之一輸入張量及具有維度x1×y1×z2之一輸入張量沿著一深度維度之一串接,以產生具有維度x1×y1×(z1+z2)之一輸出張量;及產生第二指令,當在由該積體電路執行該等指令時,藉由該神經網路處理一網路輸入期間,導致該積體電路藉由實施包括以下步驟之第二操作來產生滿足該深度串接神經網路層之規格之一層輸出張量:對於該深度串接層之一第一輸入張量及該深度串接層之一第二輸入張量中之各空間位置:使用該矩陣運算單元,將該第二輸入張量中之空間位置之一第二深度向量與該深度串接層之一移位權重矩陣相乘以產生將零作 為前z1項其後接著該第二深度向量之多個項之一移位第二深度向量;及使該移位第二深度向量與該第一輸入張量中之空間位置之一第一輸入深度向量相加,以產生一串接深度向量,該第一輸入深度向量將該第一輸入深度向量之多個項作為該第一輸入深度向量之前z1項且將零作為該第一輸入深度向量之最後z2項。
- 如請求項8之系統,該等第二操作進一步包括:將該第一輸入深度向量移動至該矩陣運算單元之一組輸出加總暫存器;及其中使該移位第二深度向量與該第一輸入深度向量相加包括:在該第一輸入深度向量儲存於該矩陣運算單元之該組輸出加總暫存器中時,將該移位第二深度向量移動至該矩陣運算單元之該組輸出加總暫存器中。
- 如請求項9之系統,其中移動該第一輸入深度向量包括:使用該矩陣運算單元,使該第一輸入深度向量與該深度串接層之一經修改識別權重矩陣相乘。
- 如請求項10之系統,該等第一操作進一步包括:針對該深度串接層,產生該經修改識別權重矩陣;及將該深度串接層之該經修改識別權重矩陣儲存於可供專用積體電路存取之一記憶體中。
- 如請求項8之系統,該等第一操作進一步包括:針對該深度串接層,產生該移位權重矩陣;及將該深度串接層之該移位權重矩陣儲存於可供該專用積體電路存取之一記憶體中。
- 如請求項12之系統,該等第一操作進一步包括:判定該輸出張量中之深度維度數未超過該矩陣運算單元之一最大向量長度;及回應於判定該輸出張量中之該深度維度數未超過該矩陣運算單元之該最大向量長度,而針對該深度串接產生該移位權重矩陣。
- 如請求項8之系統,其中該深度串接層之該移位權重矩陣係除在矩陣之第z2行之第一項開始之一對角線列之1以外所有項皆為0之一矩陣。
- 一種電腦儲存媒體,其等編碼有第一指令,當由一或多個電腦執行該等第一指令時,導致該一或多個電腦執行包括以下步驟之第一操作:使用一積體電路接收對一神經網路處理網路輸入之一請求,該積體電路使用一矩陣運算單元在硬體中執行神經網路運算,該神經網路包括一深度串接神經網路層,該深度串接神經網路層指定具有維度x1×y1×z1之一輸入張量及具有維度x1×y1×z2之一輸入張量沿著一深度維度之一串接,以產生具有維度x1×y1×(z1+z2)之一輸出張量;及產生第二指令,當在由該積體電路執行該等第二指令時,藉由該神 經網路處理一網路輸入期間導致該積體電路藉由實施包括以下步驟之第二操作來產生滿足該深度串接神經網路層之規格之一層輸出張量:對於該深度串接層之一第一輸入張量及該深度串接層之一第二輸入張量中之各空間位置:使用該矩陣運算單元,將該第二輸入張量中之空間位置之一第二深度向量與該深度串接層之一移位權重矩陣相乘,以產生將零作為前z1項其後接著該第二深度向量之多個項之一移位第二深度向量;及使該移位第二深度向量與該第一輸入張量中之空間位置之一第一輸入深度向量相加,以產生一串接深度向量,該第一輸入深度向量將該第一輸入深度向量之多個項作為該第一輸入深度向量之前z1項且將零作為該第一輸入深度向量之最後z2項。
- 如請求項15之電腦儲存媒體,該等第二操作進一步包括:將該第一輸入深度向量移動至該矩陣運算單元之一組輸出加總暫存器;及其中使該移位第二深度向量與該第一輸入深度向量相加包括:在該第一輸入深度向量儲存於該矩陣運算單元之該組輸出加總暫存器中時,將該移位第二深度向量移動至該矩陣運算單元之該組輸出加總暫存器中。
- 如請求項16之電腦儲存媒體,其中移動該第一輸入深度向量包括:使用該矩陣運算單元,使該第一輸入深度向量與該深度串接層之一 經修改識別權重矩陣相乘。
- 如請求項17之電腦儲存媒體,該等第一操作進一步包括:針對該深度串接層,產生該經修改識別權重矩陣;及將該深度串接層之該經修改識別權重矩陣儲存於可供專用積體電路存取之一記憶體中。
- 如請求項15之電腦儲存媒體,該等第一操作進一步包括:針對該深度串接層產生該移位權重矩陣;及將該深度串接層之該移位權重矩陣儲存於可供該專用積體電路存取之一記憶體中。
- 如請求項15之電腦儲存媒體,其中該深度串接層之該移位權重矩陣係除在矩陣之第z2行之第一項開始之一對角線列之1以外所有項皆為0之一矩陣。
Applications Claiming Priority (4)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US15/452,624 | 2017-03-07 | ||
| US15/452,624 US9691019B1 (en) | 2017-03-07 | 2017-03-07 | Depth concatenation using a matrix computation unit |
| US15/624,629 | 2017-06-15 | ||
| US15/624,629 US10896367B2 (en) | 2017-03-07 | 2017-06-15 | Depth concatenation using a matrix computation unit |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| TW202020856A TW202020856A (zh) | 2020-06-01 |
| TWI739225B true TWI739225B (zh) | 2021-09-11 |
Family
ID=61873899
Family Applications (2)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| TW107107502A TWI686711B (zh) | 2017-03-07 | 2018-03-06 | 用於執行神經網路運算之方法及電腦儲存媒體、及神經網路系統 |
| TW108143734A TWI739225B (zh) | 2017-03-07 | 2018-03-06 | 用於執行神經網路運算之方法及電腦儲存媒體、及神經網路系統 |
Family Applications Before (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| TW107107502A TWI686711B (zh) | 2017-03-07 | 2018-03-06 | 用於執行神經網路運算之方法及電腦儲存媒體、及神經網路系統 |
Country Status (9)
| Country | Link |
|---|---|
| US (3) | US10896367B2 (zh) |
| EP (2) | EP3373209B1 (zh) |
| CN (1) | CN108572940B (zh) |
| DE (2) | DE102018105198A1 (zh) |
| DK (1) | DK3373209T3 (zh) |
| FI (1) | FI3373209T3 (zh) |
| GB (1) | GB2562826A (zh) |
| TW (2) | TWI686711B (zh) |
| WO (1) | WO2018165209A1 (zh) |
Families Citing this family (20)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US10896367B2 (en) | 2017-03-07 | 2021-01-19 | Google Llc | Depth concatenation using a matrix computation unit |
| US11144316B1 (en) | 2018-04-17 | 2021-10-12 | Ali Tasdighi Far | Current-mode mixed-signal SRAM based compute-in-memory for low power machine learning |
| US10867399B2 (en) | 2018-12-02 | 2020-12-15 | Himax Technologies Limited | Image processing circuit for convolutional neural network |
| TWI694413B (zh) * | 2018-12-12 | 2020-05-21 | 奇景光電股份有限公司 | 影像處理電路 |
| CN110033091B (zh) * | 2018-12-13 | 2020-09-01 | 阿里巴巴集团控股有限公司 | 一种基于模型进行预测的方法和装置 |
| JP6832329B2 (ja) * | 2018-12-18 | 2021-02-24 | 富士通株式会社 | データ構造 |
| US11928582B1 (en) * | 2018-12-31 | 2024-03-12 | Cadence Design Systems, Inc. | System, media, and method for deep learning |
| US12353503B2 (en) * | 2019-05-02 | 2025-07-08 | Silicon Storage Technology, Inc. | Output array neuron conversion and calibration for analog neural memory in deep learning artificial neural network |
| US11537939B2 (en) * | 2019-05-03 | 2022-12-27 | Google Llc | Reshape and broadcast optimizations to avoid unnecessary data movement |
| JP2020205003A (ja) * | 2019-06-19 | 2020-12-24 | キオクシア株式会社 | メモリシステム、メモリコントローラ、及び半導体記憶装置 |
| US10915298B1 (en) | 2019-10-08 | 2021-02-09 | Ali Tasdighi Far | Current mode multiply-accumulate for compute in memory binarized neural networks |
| US11615256B1 (en) | 2019-12-30 | 2023-03-28 | Ali Tasdighi Far | Hybrid accumulation method in multiply-accumulate for machine learning |
| US11610104B1 (en) | 2019-12-30 | 2023-03-21 | Ali Tasdighi Far | Asynchronous analog accelerator for fully connected artificial neural networks |
| US11314674B2 (en) * | 2020-02-14 | 2022-04-26 | Google Llc | Direct memory access architecture with multi-level multi-striding |
| KR20220027500A (ko) | 2020-08-27 | 2022-03-08 | 에스케이하이닉스 주식회사 | 가속 장치, 데이터 저장 장치, 데이터 처리 시스템 및 가속 장치의 동작방법 |
| US12536427B2 (en) * | 2020-11-06 | 2026-01-27 | Micron Technology, Inc. | Compiler configurable to generate instructions executable by different deep learning accelerators from a description of an artificial neural network |
| CN114764489A (zh) * | 2021-01-13 | 2022-07-19 | 华为技术有限公司 | 张量处理方法、装置、设备及计算机可读存储介质 |
| US20220374689A1 (en) * | 2021-05-11 | 2022-11-24 | Xinlin LI | Methods and systems for computing an output of a neural network layer |
| US20220405598A1 (en) * | 2021-06-17 | 2022-12-22 | International Business Machines Corporation | Concatenated input/output tensors for use in recurrent neural networks |
| CN114547286B (zh) * | 2022-02-21 | 2025-03-18 | 京东科技控股股份有限公司 | 一种信息搜索方法、装置及电子设备 |
Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| TW305998B (en) * | 1996-06-14 | 1997-05-21 | Ind Tech Res Inst | Weighted sum type of artificial neural network with reconfigurable structure and bit-serial I/O mode |
| US20160350652A1 (en) * | 2015-05-29 | 2016-12-01 | North Carolina State University | Determining edit operations for normalizing electronic communications using a neural network |
| TW201706873A (zh) * | 2015-05-21 | 2017-02-16 | 咕果公司 | 類神經網路處理器中之向量運算單元 |
| US20170061279A1 (en) * | 2015-01-14 | 2017-03-02 | Intel Corporation | Updating an artificial neural network using flexible fixed point representation |
Family Cites Families (30)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5682441A (en) | 1995-11-08 | 1997-10-28 | Storm Technology, Inc. | Method and format for storing and selectively retrieving image data |
| US6240485B1 (en) * | 1998-05-11 | 2001-05-29 | Netlogic Microsystems, Inc. | Method and apparatus for implementing a learn instruction in a depth cascaded content addressable memory system |
| US6889293B1 (en) | 2000-06-09 | 2005-05-03 | Agere Systems Inc. | Directory-based prediction methods and apparatus for shared-memory multiprocessor systems |
| US9552047B2 (en) | 2001-03-05 | 2017-01-24 | Pact Xpp Technologies Ag | Multiprocessor having runtime adjustable clock and clock dependent power supply |
| US8269727B2 (en) | 2007-01-03 | 2012-09-18 | Apple Inc. | Irregular input identification |
| TW201034441A (en) | 2009-03-13 | 2010-09-16 | Chunghwa Picture Tubes Ltd | Method of establishing the depth of filed data for three-dimensional (3D) image and a system thereof |
| US9489176B2 (en) * | 2011-09-15 | 2016-11-08 | Exxonmobil Upstream Research Company | Optimized matrix and vector operations in instruction limited algorithms that perform EOS calculations |
| JP5780089B2 (ja) | 2011-09-28 | 2015-09-16 | 富士通株式会社 | 計算方法、計算プログラムおよび計算装置 |
| CN107545066B (zh) * | 2011-12-08 | 2021-01-15 | 甲骨文国际公司 | 用于在易失性存储器内保持关系型数据的列向量的技术 |
| US9292787B2 (en) * | 2012-08-29 | 2016-03-22 | Microsoft Technology Licensing, Llc | Computer-implemented deep tensor neural network |
| US20140181171A1 (en) * | 2012-12-24 | 2014-06-26 | Pavel Dourbal | Method and system for fast tensor-vector multiplication |
| CN103019656B (zh) * | 2012-12-04 | 2016-04-27 | 中国科学院半导体研究所 | 可动态重构的多级并行单指令多数据阵列处理系统 |
| US9384168B2 (en) | 2013-06-11 | 2016-07-05 | Analog Devices Global | Vector matrix product accelerator for microprocessor integration |
| CN110110843B (zh) | 2014-08-29 | 2020-09-25 | 谷歌有限责任公司 | 用于处理图像的方法和系统 |
| US9524461B1 (en) | 2014-09-30 | 2016-12-20 | Steven T. Huynh | Conceptual computation system using a hierarchical network of modules |
| US10049322B2 (en) | 2015-05-21 | 2018-08-14 | Google Llc | Prefetching weights for use in a neural network processor |
| US10083395B2 (en) | 2015-05-21 | 2018-09-25 | Google Llc | Batch processing in a neural network processor |
| US9805303B2 (en) * | 2015-05-21 | 2017-10-31 | Google Inc. | Rotating data for neural network computations |
| US9747546B2 (en) * | 2015-05-21 | 2017-08-29 | Google Inc. | Neural network processor |
| US10410119B2 (en) * | 2015-06-05 | 2019-09-10 | Deepmind Technologies Limited | Augmented recurrent neural network with external memory |
| US9614699B2 (en) | 2015-08-12 | 2017-04-04 | King Fahd University Of Petroleum And Minerals | Apparatuses and methodologies for decision feedback equalization using particle swarm optimization |
| AU2016308097B2 (en) * | 2015-08-15 | 2018-08-02 | Salesforce.Com, Inc. | Three-dimensional (3D) convolution with 3D batch normalization |
| CN106503797B (zh) * | 2015-10-08 | 2019-03-15 | 上海兆芯集成电路有限公司 | 具有神经存储器的神经网络单元以及集体将接收自神经存储器的数据列进行移位的神经处理单元阵列 |
| US10977547B2 (en) * | 2015-11-12 | 2021-04-13 | Google Llc | Convolutional gated recurrent neural networks |
| US11170294B2 (en) * | 2016-01-07 | 2021-11-09 | Intel Corporation | Hardware accelerated machine learning |
| US9875104B2 (en) * | 2016-02-03 | 2018-01-23 | Google Llc | Accessing data in multi-dimensional tensors |
| CN105844279B (zh) | 2016-03-22 | 2019-04-23 | 西安电子科技大学 | 基于深度学习和sift特征的sar图像变化检测方法 |
| US10706348B2 (en) * | 2016-07-13 | 2020-07-07 | Google Llc | Superpixel methods for convolutional neural networks |
| US9691019B1 (en) | 2017-03-07 | 2017-06-27 | Google Inc. | Depth concatenation using a matrix computation unit |
| US10896367B2 (en) | 2017-03-07 | 2021-01-19 | Google Llc | Depth concatenation using a matrix computation unit |
-
2017
- 2017-06-15 US US15/624,629 patent/US10896367B2/en active Active
-
2018
- 2018-03-06 TW TW107107502A patent/TWI686711B/zh active
- 2018-03-06 TW TW108143734A patent/TWI739225B/zh active
- 2018-03-06 WO PCT/US2018/021221 patent/WO2018165209A1/en not_active Ceased
- 2018-03-07 EP EP18160441.4A patent/EP3373209B1/en active Active
- 2018-03-07 GB GB1803653.3A patent/GB2562826A/en not_active Withdrawn
- 2018-03-07 DK DK18160441.4T patent/DK3373209T3/da active
- 2018-03-07 DE DE102018105198.0A patent/DE102018105198A1/de not_active Withdrawn
- 2018-03-07 FI FIEP18160441.4T patent/FI3373209T3/fi active
- 2018-03-07 DE DE202018101275.4U patent/DE202018101275U1/de active Active
- 2018-03-07 CN CN201810188352.2A patent/CN108572940B/zh active Active
- 2018-03-07 EP EP23176027.3A patent/EP4235462A3/en active Pending
-
2019
- 2019-08-05 US US16/531,774 patent/US10699182B2/en active Active
-
2021
- 2021-01-14 US US17/149,321 patent/US20210209444A1/en not_active Abandoned
Patent Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| TW305998B (en) * | 1996-06-14 | 1997-05-21 | Ind Tech Res Inst | Weighted sum type of artificial neural network with reconfigurable structure and bit-serial I/O mode |
| US20170061279A1 (en) * | 2015-01-14 | 2017-03-02 | Intel Corporation | Updating an artificial neural network using flexible fixed point representation |
| TW201706873A (zh) * | 2015-05-21 | 2017-02-16 | 咕果公司 | 類神經網路處理器中之向量運算單元 |
| US20160350652A1 (en) * | 2015-05-29 | 2016-12-01 | North Carolina State University | Determining edit operations for normalizing electronic communications using a neural network |
Also Published As
| Publication number | Publication date |
|---|---|
| US20180260683A1 (en) | 2018-09-13 |
| WO2018165209A1 (en) | 2018-09-13 |
| US20190354834A1 (en) | 2019-11-21 |
| US10699182B2 (en) | 2020-06-30 |
| TWI686711B (zh) | 2020-03-01 |
| EP3373209A1 (en) | 2018-09-12 |
| GB201803653D0 (en) | 2018-04-25 |
| FI3373209T3 (fi) | 2023-09-15 |
| EP4235462A2 (en) | 2023-08-30 |
| TW201837737A (zh) | 2018-10-16 |
| CN108572940A (zh) | 2018-09-25 |
| EP3373209B1 (en) | 2023-07-05 |
| US20210209444A1 (en) | 2021-07-08 |
| DK3373209T3 (da) | 2023-10-02 |
| DE102018105198A1 (de) | 2018-09-13 |
| TW202020856A (zh) | 2020-06-01 |
| US10896367B2 (en) | 2021-01-19 |
| EP4235462A3 (en) | 2023-09-06 |
| DE202018101275U1 (de) | 2018-06-22 |
| CN108572940B (zh) | 2022-08-12 |
| GB2562826A (en) | 2018-11-28 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| TWI739225B (zh) | 用於執行神經網路運算之方法及電腦儲存媒體、及神經網路系統 | |
| US12205018B2 (en) | Transposing neural network matrices in hardware | |
| JP7566105B2 (ja) | ニューラルネットワークプロセッサにおけるベクトル計算ユニット | |
| US9721203B1 (en) | Performing kernel striding in hardware | |
| TWI825596B (zh) | 用於執行類神經網路計算之電路、方法及非暫時性機器可讀儲存裝置 | |
| US10956500B2 (en) | Dynamic-length stateful tensor array | |
| EP3555814B1 (en) | Performing average pooling in hardware | |
| KR20220092642A (ko) | 신경망 프로세서에서 사용하기 위한 가중치들의 프리페칭 | |
| WO2024239971A1 (zh) | 神经网络模型的编译方法、推理方法、装置、设备和介质 | |
| HK40096150A (zh) | 使用矩阵计算单元的深度级联 | |
| HK1261499A1 (zh) | 使用矩阵计算单元的深度级联 | |
| HK1261499B (zh) | 使用矩阵计算单元的深度级联 | |
| KR102859457B1 (ko) | 다이나믹 컨볼루션 연산 수행 방법 및 장치 | |
| KR102718583B1 (ko) | 뉴럴 네트워크를 위한 데이터 처리 방법 및 장치 | |
| HK40043994B (zh) | 硬件中转置神经网络矩阵 | |
| HK40043994A (zh) | 硬件中转置神经网络矩阵 | |
| HK1261292B (zh) | 硬件中转置神经网络矩阵 |