TWI832000B - 用於神經網路之方法及系統 - Google Patents
用於神經網路之方法及系統 Download PDFInfo
- Publication number
- TWI832000B TWI832000B TW109129829A TW109129829A TWI832000B TW I832000 B TWI832000 B TW I832000B TW 109129829 A TW109129829 A TW 109129829A TW 109129829 A TW109129829 A TW 109129829A TW I832000 B TWI832000 B TW I832000B
- Authority
- TW
- Taiwan
- Prior art keywords
- neural network
- parameters
- memory
- subset
- computing unit
- Prior art date
Links
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 268
- 238000000034 method Methods 0.000 title claims abstract description 30
- 230000015654 memory Effects 0.000 claims abstract description 224
- 238000012545 processing Methods 0.000 claims abstract description 54
- 238000005192 partition Methods 0.000 claims description 4
- 238000004590 computer program Methods 0.000 abstract description 12
- 238000012546 transfer Methods 0.000 description 9
- 238000004891 communication Methods 0.000 description 8
- 238000013527 convolutional neural network Methods 0.000 description 8
- 230000004913 activation Effects 0.000 description 7
- 238000001994 activation Methods 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 238000012856 packing Methods 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 238000000638 solvent extraction Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000003062 neural network model Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 238000011176 pooling Methods 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- 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
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- 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/08—Learning methods
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Neurology (AREA)
- Advance Control (AREA)
Abstract
本發明揭示包含編碼於一電腦儲存媒體上之電腦程式之方法及系統。在一個態樣中,一種方法包含:獲得指定待部署於一神經網路硬體加速器上的一或多個神經網路之資料,該一或多個神經網路之各者具有一各自參數集,且該神經網路硬體加速器具有擁有一記憶體容量的一或多個記憶體;判定在由該神經網路硬體加速器對該一或多個神經網路之任一者的一處理期間之任何一個時間將使用之該記憶體容量之一最大量;識別該一或多個神經網路之該等參數之一子集,其消耗之記憶體之一量小於該記憶體容量與該記憶體容量之該所判定最大量之間的一差異;及儲存該等參數之該所識別子集。
Description
本說明書係關於一種對神經網路硬體加速器進行神經網路層運算之參數快取技術。
神經網路係採用一或多個層以針對一所接收輸入產生一輸出(例如,一分類)之機器學習模型。除一輸出層以外,一些神經網路亦包含一或多個隱藏層。各隱藏層之輸出被用作至網路中之另一層(例如,網路之下一隱藏層或輸出層)之輸入。網路之各層根據一各自參數集之當前值從一所接收輸入產生一輸出。
一各自參數集經儲存於神經網路硬體加速器之記憶體中。在完成至神經網路硬體加速器之運算單元之參數轉移之後,透過使一輸入張量與神經網路硬體加速器之運算單元上之所儲存參數集相乘而執行一神經網路層運算(例如,一迴旋層運算)。
本說明書描述一種在一神經網路硬體加速器中進行神經網路運算之參數快取技術。神經網路處理系統在執行神經網路層之前將神經網路參數快取至該神經網路加速器。特定言之,該神經網路處理系統將該
神經網路之參數預快取至該神經網路加速器中之運算單元之可用寬記憶體以利用該神經網路加速器之大量記憶體且因此改良神經網路系統效率。
更特定言之,此技術包含判定該神經網路加速器中之運算單元之一可用記憶體容量。該系統識別小於該等運算單元之一可用記憶體容量之該神經網路參數之一子集。接著,將該神經網路參數之該所識別子集從資料記憶體傳送至該等運算單元且儲存於該硬體加速器中之該等運算單元之該等寬記憶體中以進行神經網路層運算。在此技術中,根據該等神經網路層之該等屬性區分該參數預快取。針對全連接神經網路層,此技術基於對應運算單元之一量及該等對應運算單元之該可用記憶體容量而分割該等參數。針對迴旋神經網路層,此技術基於與該等迴旋層之對應性而區分該等參數,且將該等所區分參數逐一從一資料記憶體傳輸至該硬體加速器中之該等運算單元之該等寬記憶體。
在本說明書中描述之標的物之一個創新態樣可體現在一種方法中,其包括:獲得指定待部署於一神經網路硬體加速器上的一或多個神經網路之資料,該一或多個神經網路之各者具有一各自參數集,且該神經網路硬體加速器具有擁有一記憶體容量的一或多個記憶體;判定在由該神經網路硬體加速器對該一或多個神經網路之任一者的一處理期間之任何一個時間將使用之該記憶體容量之一最大量;識別該一或多個神經網路之該等參數之一子集,其消耗之記憶體之一量小於該記憶體容量與該記憶體容量之該所判定最大量之間的一差異;及將該等參數之該所識別子集儲存於該神經網路硬體加速器的該一或多個記憶體之至少一者中。
在本說明書中描述之標的物之另一創新態樣可體現在一種神經網路硬體加速器中,其包括複數個硬體運算單元,其等之各者係具有
一或多個記憶體且經組態以執行神經網路運算之一處理元件。該硬體運算單元經組態以執行包括以下項之操作:藉由該硬體運算單元之一處理器執行來自該神經網路硬體加速器之複數個指令;存取該硬體運算單元的一或多個記憶體以擷取參數之所識別子集;透過一環狀匯流排將該等參數之該所識別子集發送至該神經網路硬體加速器之其他硬體運算單元的一或多個記憶體;及透過該環狀匯流排將該等參數之該所識別子集從該神經網路硬體之其他硬體運算單元儲存至該硬體運算單元的該一或多個記憶體。
在本說明書中描述之標的物之另一創新態樣可為該一或多個神經網路包括一全連接層,其中該全連接層之參數處於該所識別子集中,其中該加速器經組態以跨該等硬體運算單元之一第一子集分佈該全連接層之處理,且其中儲存該所識別子集包括:將該全連接層之該等參數之一各自分區儲存於該第一子集中之各硬體運算單元的該一或多個記憶體中。
在本說明書中描述之標的物之另一創新態樣可為該一或多個神經網路包括一迴旋層,其中該迴旋層之參數處於該所識別子集中,其中該加速器經組態以跨該等硬體運算單元之一第二子集分佈該迴旋層之處理,且其中儲存該所識別子集包括:將該迴旋層之該等參數之一各自複本儲存於該第二子集中之各硬體運算單元的該一或多個記憶體中。
在下文之附圖及描述中闡述本說明書之標的物之一或多項實施例之細節。從描述、圖式及發明申請專利範圍將變得明白標的物之其他特徵、態樣及優點。
100:神經網路處理系統
110:神經網路硬體加速器
120:主機介面
130:主記憶體
140:神經網路實施引擎
150:輸出
204:資料記憶體
206:指令記憶體
208:運算單元組
212:指令匯流排
214:網狀匯流排
216:環狀匯流排
302:步驟
304:步驟
306:步驟
308:步驟
310:步驟
402:步驟
404:步驟
406:步驟
408:步驟
410:步驟
502:步驟
504:步驟
506:步驟
508:步驟
510:步驟
圖1係一例示性神經網路處理系統之一方塊圖。
圖2係用於神經網路運算之一例示性神經網路硬體加速器之一圖。
圖3係用於對神經網路硬體加速器執行參數快取之程序之一例示性流程圖。
圖4係用於對神經網路硬體加速器執行參數快取以進行全連接神經網路層運算之程序之一例示性流程圖。
圖5係用於對神經網路硬體加速器執行參數快取以進行迴旋神經網路層運算之程序之一例示性流程圖。
在各個圖式中,相似參考數字及符號指示相似元件。
神經網路硬體加速器通常用於針對神經網路層運算更高效地執行操作或運算。
一高效能硬體加速器(例如,一張量處理單元(TPU))具有定位於加速器之運算單元上之一或多個寬記憶體。各寬記憶體可具有本端儲存容量(例如,8MB記憶體)以快取用於神經網路層運算之指令及參數資料。一般言之,首先將運算單元上之寬記憶體之容量之一小部分保留用於模型之推斷可執行檔,且接著將參數資料儲存於任何剩餘空間中。例如,在一神經網路運算執行之前,神經網路模型參數需要被儲存於運算單元之寬記憶體中。在許多境況中,模型參數從神經網路處理系統之一主機介面載入至對應運算單元(例如,運算單元)之本端記憶體。在執行需要對應模型參數之一神經網路層之後,神經網路處理系統將發出一指令以透過一環狀匯流排將模型參數從參數記憶體傳輸至硬體加速器之一接收器運算單元。接著,接收器運算單元將基於一所發出操作指令而將模型參數從環
狀匯流排複製至其寬記憶體。
前述參數轉移無法提供最佳神經網路處理系統效率及神經網路硬體加速器記憶體利用。在神經網路層運算期間可存在加速器之運算單元之大量寬記憶體容量利用不足。此外,外部參數記憶體可具有較運算單元上之寬記憶體之頻寬更低之頻寬,此可在等待資料轉移時導致一運算暫停。
在本說明書中,描述用於硬體加速器上之高效能神經網路層運算之一參數快取技術。此參數快取技術包含:獲得指定待部署於神經網路加速器之一或多個運算單元上的一或多個神經網路層之資料;判定在一或多個神經網路層之任一者的一處理期間之任何一個時間將使用之寬記憶體容量之一最大量;及識別消耗較運算單元上之可用寬記憶體容量更少之記憶體之參數之一子集。在神經網路運算執行之前,將模型參數儲存於神經網路硬體加速器之硬體運算單元之寬記憶體中。更特定言之,定位於加速器之運算單元上之寬記憶體可為編譯器分配之高速暫存記憶體。加速器編譯器可經組態以在模型內部添加少量可執行檔,該模型在運行一推斷之前將特定量之參數資料寫入至加速器上之運算單元之寬記憶體。與從外部參數記憶體提取參數資料(此在先前描述)相比,此參數快取技術實現更快推斷速度。
圖1展示一例示性神經網路處理系統100之一方塊圖。如圖1中展示,神經網路處理系統100包含一神經網路加速器110、一主機介面120、一主記憶體130、一神經網路實施引擎140及一輸出150。神經網路處理系統100可包含兩個或兩個以上記憶體以儲存用於神經網路運算之資料及指令。
在神經網路處理系統100中,主機介面120將參數及指令接收且遞送至神經網路硬體加速器110及主記憶體130。參數可包含神經網路層之權重及偏差值。主機介面120亦可將指令發送至神經網路硬體加速器110,該神經網路硬體加速器110執行控制神經網路硬體加速器110執行神經網路運算之指令。在一些實施方案中,所傳送指令調節神經網路硬體加速器中之資料流(例如,特徵輸入集及濾波輸入集如何流動通過電路)。
神經網路處理系統100係使用一神經網路硬體加速器110執行神經網路運算之一系統。神經網路硬體加速器110係用於執行神經網路運算之一積體電路且包含在硬體加速器中執行矩陣乘法之一或多個運算單元。神經網路硬體加速器110之運算單元(例如,硬體處理單元)亦可經組態以執行向量乘法。在一些實施方案中,神經網路加速器110接收任務指令且執行乘法運算,該等乘法運算可包含使一啟動與一權重或其他參數相乘以產生輸出(例如,一部分和或一輸出啟動)至輸出150。在一些其他實施方案中,神經網路硬體加速器110處理一張量運算指令或一直接記憶體存取操作指令之至少一者。在此實例中,神經網路硬體加速器110可經組態以執行至少一個張量運算指令及至少一個直接記憶體存取操作指令以執行包含多個線性代數運算之張量運算。下文參考圖2更詳細描述一例示性神經網路硬體加速器110及硬體運算單元。
在神經網路處理系統100中,神經網路加速器110經組態以藉由執行從主機介面120傳送或儲存於主記憶體130中之指令或參數而處理神經網路運算(例如,矩陣乘法或向量運算)。主記憶體130可包含一或多個記憶體庫或單元,其或其等用於儲存用於針對一給定神經網路層處
理神經網路運算之參數、啟動及權重。在一些實施方案中,主記憶體130係一或多個揮發性記憶體單元。在一些其他實施方案中,主記憶體130係一或多個非揮發性單元記憶體單元,諸如例如唯讀記憶體(ROM)及/或電可擦除可程式化唯讀記憶體(EEPROM)。主記憶體130亦可為另一形式之電腦可讀媒體,諸如一軟碟裝置、一硬碟裝置、一光碟裝置、一磁帶裝置、一快閃記憶體或其他類似固態記憶體裝置或一裝置陣列(包含一儲存區域網路或其他組態中之裝置)。在主記憶體130中,可將參數或啟動預載入至對應於一輸入張量之元素之各自記憶體位址位置以執行一神經網路層之運算。同樣地,可在對應於一權重張量或其他之元素之各自記憶體位址位置中將權重及其他參數預載入至主記憶體130。
一般言之,當神經網路加速器110執行用於存取一張量之一特定元素之一或多個指令時,其判定該元素之記憶體位址,使得神經網路硬體加速器110可存取主記憶體130以讀取表示特定元素之值之資料。例如,儲存於主記憶體130中之參數可包含用於一全連接神經網路層運算之參數或用於一迴旋神經網路層運算之參數。為在神經網路硬體加速器110上實施一神經網路,神經網路處理系統100包含一神經網路實施引擎140,該神經網路實施引擎140經實施為一或多個實體位置中之一或多個電腦上之一或多個電腦程式。神經網路實施引擎140產生指令,該等指令在由神經網路硬體加速器110執行時導致神經網路硬體加速器110執行由神經網路指定之操作以產生一神經網路輸出150。
圖2展示用於神經網路運算之一例示性神經網路硬體加速器110之一方塊圖。神經網路硬體加速器110通常包含用於神經網路運算之分佈式硬體運算單元。運算單元組208中之分佈式運算單元之各者具有
一或多個寬記憶體210。神經網路硬體加速器亦包含分別用於將指令及參數轉移至硬體運算單元組208之指令匯流排212、網狀匯流排214及環狀匯流排216。如圖2中展示,主記憶體130包含一資料記憶體204及一指令記憶體206以儲存從主機介面120傳輸之參數及指令。主記憶體130經組態以在神經網路硬體加速器110中執行與神經網路層運算相關之一或多個指令,包含儲存於指令記憶體206中之指令。指令記憶體206可儲存可由主記憶體130之一或多個處理器執行之一或多個機器可讀指令。資料記憶體204可為用於儲存且隨後存取與發生在神經網路硬體加速器110內之運算相關之各種資料之各種資料儲存媒體之任一者。
如先前在圖1上描述,主機介面120連接至主記憶體130且經組態以將運算單元指令及參數提供至主記憶體130。在一些實施方案中,可透過指令匯流排212將運算指令提供至神經網路運算硬體加速器110中之一或多個硬體運算單元,且可透過環狀匯流排216將模型參數提供至神經網路硬體加速器110中之一或多個硬體運算單元。在一些實施方案中,在一初始時間由主記憶體130從主機介面120接收運算指令及模型參數且將其等分別儲存於指令記憶體206及資料記憶體204中以在一隨後時間由神經網路硬體加速器110執行。
一般言之,運算單元組208中之一硬體運算單元係神經網路硬體加速器110內之一分佈式運算核心且係神經網路運算(例如,張量運算)之焦點。各運算單元係與運算單元組208中之其他運算單元協作以使跨一或多個神經網路層之神經網路運算加速之一個別運算硬體。儘管運算單元可共用與一給定運算單元指令相關聯之張量運算之執行,然一個別運算單元係經組態以相對於運算單元組208中之其他對應運算單元獨立地
執行張量運算之一子集之一自含型運算組件。圖2呈現一例示性Nx2運算單元佈局,其中2N-4個邊緣運算單元係僅具有三個鄰近運算單元之運算單元且4個邊角運算單元係具有兩個鄰近運算單元之運算單元。關於經由網狀匯流排214之資料流方法,一般言之,經由網狀匯流排214到達一特定運算單元之每一輸入啟動必須致力於運算單元之一或多個寬記憶體210。
指令匯流排212源於主記憶體130且透過將運算單元組208中之運算單元以一環連接回至主記憶體130之一匯流排資料路徑提供通信耦合。在一些實施方案中,主記憶體130經由指令匯流排212廣播一或多個運算指令。
在運算單元組208內,可存在與指令匯流排212相關聯之一匯流排站(bus stop),該匯流排站經組態以檢查一標頭位元映像以判定指令類型。在由運算單元執行運算指令之前,可由運算單元接收運算指令且隨後將其寫入至運算單元之一指令緩衝器。指令緩衝器可包含確定一或多個相關運算指令之消耗的優先級之一先進先出(FIFO)控制方案。因此,在此FIFO控制方案下,將始終以運算單元指令到達指令匯流排之順序執行相同類型/子類型之運算指令。
網狀匯流排214在橫向及垂直維度兩者上提供運算單元組208中之相鄰運算單元之間的一資料通信路徑。在各種實施方案中,網狀匯流排214可用於在相鄰運算單元中之一或多個寬記憶體210之間運送輸入參數(例如,啟動數量)。如圖2中展示,網狀匯流排214未經組態以容許將輸入資料直接轉發至非相鄰運算單元。
環狀匯流排216源於主記憶體130且透過將運算單元組
208以一環連接回至主記憶體130之一匯流排資料路徑提供通信耦合。在各種實施方案中,環狀匯流排216通常連接或耦合運算單元組208中之全部運算單元之寬記憶體210單元。因此,環狀匯流排216之一酬載寬度對應於安置於各運算單元內之寬記憶體210之寬度。此外,環狀匯流排216可包含一位元映像標頭,該位元映像標頭指示需要消耗經由環狀匯流排216傳遞之運算指令及模型參數之運算單元。
在一些實施方案中,主記憶體130可用於從環狀匯流排站取出資料且將資料轉發至環中之下一運算單元之一環狀匯流排站。在各種實施方案中,神經網路硬體加速器110中之各運算單元之寬記憶體210係運算單元組208之各運算單元內之一單埠單庫記憶體。主記憶體130可導致資料致力於運算單元之一或多個寬記憶體210單元(若位元映像標頭中之指令要求此動作)。需要寫入資料之一或多個寬記憶體210單元之位址可由特定運算單元內之直接記憶體存取操作指令產生。
在各種實施方案中,運算單元組208中之各運算單元可為資料之一產生者或資料之一消耗者。當一運算單元係資料之一產生者時,運算單元從其寬記憶體210之一或多者讀取資料且透過環狀匯流排216多播資料以由一或多個相鄰運算單元消耗。當一運算單元係資料之一消耗者時,運算單元將資料接收及寫入至運算單元之一或多個寬記憶體210且轉發資料以由一或多個其他運算單元消耗。關於經由環狀匯流排216之資料移動,在任何給定時間,環狀匯流排216上通常將僅存在一個產生者/主資料轉移。全部運算單元中之直接記憶體存取操作指令執行順序(例如,FIFO控制方案)將確保在一給定時間在環狀匯流排216上僅存在一個產生者/主資料轉移以避免資料轉移衝突。
在各種實施方案中,當存在在環狀匯流排216上不具有一重疊區域之經由環狀匯流排216連接之本端多播群組時,需要確保在一給定時間在環狀匯流排216上僅存在一個產生者/主資料。此雙主多播方法之一重要要求係必須不容許不同多播群組看見彼此之資料封包,此係因為封包重疊可發生且導致一或多個資料運算錯誤。
在各種實施方案中,神經網路處理系統100執行如下操作。主機介面120將一或多個指令提供至主記憶體130且定義針對一給定神經網路運算所發生之一或多個直接記憶體存取操作。與饋送至主記憶體130之指令相關聯之描述符包含促進與硬體運算單元組208相關聯之大規模神經網路運算所需之資訊。一般言之,主記憶體130從主機介面120接收運算單元指令或模型參數(即,輸入啟動、運算單元指令及模型權重)以用於針對一神經網路之一特定層執行神經網路運算。接著,主記憶體130可導致指令或模型參數以由指令定義之一資料流方式多播至運算單元。如上文論述,接著,消耗一指令之運算單元可基於指令標頭中之位元映像資料而起始將一新/後續指令廣播至另一運算單元。
在各種實施方案中,在一神經網路運算可在神經網路硬體加速器110中操作之前,可將模型參數儲存於運算單元之一或多個寬記憶體210中。在一些實施方案中,當主機介面120將參數傳送至神經網路硬體加速器110時,主記憶體130將參數接收及寫入至其資料記憶體204。在針對一特定神經網路層執行神經網路運算之後,主機介面120將提供一所發出指令,例如一RingInfeed指令。所發出指令起始操作以經由環狀匯流排216及網狀匯流排214將參數從資料記憶體204傳送至運算單元組208內之特定運算單元。接著,特定接收器運算單元發出一直接記憶體
存取操作指令以將所傳送參數從環狀匯流排216接收及寫入至接收器運算單元之其一或多個寬記憶體。
關於神經網路硬體加速器110中之資料儲存,運算單元組208之各運算單元可儲存運算指派至特定運算單元之輸出啟動之子集所需之輸入指令及參數之一子集。當所需輸入啟動、參數/權重及運算指令在運算單元中可用時,一神經網路運算開始。當完成由指令集定義之全部運算操作且將預啟動函數應用於神經網路運算之結果(即,輸出啟動)時,運算在運算單元中結束。
一般言之,如先前描述,在執行一神經網路運算指令之前,需要將參數傳輸及儲存於運算單元之一或多個寬記憶體210中。可透過主機介面120將參數載入至主記憶體130內之資料記憶體204。在執行需要該等參數之一神經網路層之後,神經網路層發出一指令以透過環狀匯流排216將模型參數從資料記憶體204傳輸至一或多個特定運算單元。
本申請案呈現在執行任何輸入神經網路層之前將參數快取至神經網路硬體加速器110之一方法。此參數快取利用寬記憶體210之大量頻寬以改良高效能神經網路運算之系統效率及利用且在下圖中更詳細介紹。
圖3係用於對神經網路硬體加速器執行參數快取之程序之一例示性流程圖。此實例可使用圖1及圖2之神經網路硬體加速器110執行。
神經網路硬體加速器110獲得指定待部署於神經網路硬體加速器110之一或多個運算單元上的一或多個神經網路層之資料(步驟302)。一或多個神經網路層之各者具有一各自參數集,且神經網路硬體加
速器110具有擁有一記憶體容量的一或多個記憶體。參數集可為神經網路之權重及偏差值。神經網路硬體加速器之記憶體可為運算單元組208之運算單元上之一或多個寬記憶體210。在一些實施方案中,主機介面120接收在神經網路硬體加速器110上執行一特定神經網路層及模型參數之指令。將運算指令及模型參數傳輸至主記憶體130且分別儲存於指令記憶體206及資料記憶體204中。
在下一步驟中,神經網路處理系統100判定在藉由神經網路硬體加速器110對一或多個神經網路層之任一者的一處理期間之任何一個時間將使用之寬記憶體210容量之一最大量(步驟304)。特定言之,主記憶體130可在一或多個神經網路層的一處理期間判定運算單元組208中之各運算單元之寬記憶體210之可用容量之量。在各種實施方案中,運算單元可具有大量寬記憶體210(例如,8MB記憶體),其在神經網路運算期間利用不足。另外,運算單元之寬記憶體210可提供高於主記憶體130之頻寬之頻寬。
在一些實施方案中,神經網路處理系統100識別一或多個神經網路層之參數之一子集,其消耗之記憶體之一量小於記憶體容量與記憶體容量之所判定最大量之間的一差異(步驟306)。在此圖解中,神經網路處理系統100藉由基於一或多個運算單元之量及一或多個運算單元之寬記憶體210之可用容量分割參數而識別運算單元組208中之一或多個運算單元中之神經網路運算之參數之一子集。神經網路處理系統100亦可識別對應於一或多個特定神經網路層之參數之一子集,且將參數之子集發送至運算單元組208之一或多個運算單元以執行神經網路運算(例如,迴旋運算)。
在下一步驟中,神經網路硬體加速器110將參數之所識別子集儲存於硬體運算單元之一或多個寬記憶體210之至少一者中(步驟308)。在一些實施方案中,經由環狀匯流排216將參數從資料記憶體204傳輸至運算單元組208之一或多個特定運算單元。如先前描述,環狀匯流排216可包含一位元映像標頭,該位元映像標頭指示需要消耗包括運算單元指令及模型參數之資料之一或多個運算單元。在接收到指令之後,在將參數資料轉發至其他相鄰運算單元上之前,一或多個接收運算單元將使接收運算單元所特有之位元映像標頭中指示之位置資料歸零(即,清零)。在各種實施方案中,環狀匯流排216之頻寬對應於安置於運算單元組208上之寬記憶體210之頻寬。
在一些實施方案中,當執行神經網路運算指令時,神經網路處理系統100可將直接記憶體存取操作指令發出至運算單元組208中之一或多個主機運算單元,以便透過環狀匯流排216或網狀匯流排214將儲存於主機運算單元中之參數發送至其他接收器運算單元。作為一回應,接收器運算單元可發出直接記憶體存取操作指令以將從環狀匯流排216傳輸之參數複製至其寬記憶體210。在將參數之所識別子集儲存至對應運算單元之後,神經網路硬體加速器開始執行對應於特定神經網路層之神經網路運算(步驟310)。
在此圖解中,神經網路可由多個迴旋層組成,該多個迴旋層由濾波器、非線性臨限值及池化運算構成。一旦組態所要數目個迴旋層,輸出接著便被向量化且被傳遞通過一全連接層,此後產生所要輸出。一迴旋層通常具有較一全連接層之參數更少之參數。一全連接層產生一相同輸出大小且未將一偏差值用於神經網路運算。在各種實施方案中,一神
經網路可含有共用一參數量以在神經網路硬體加速器110之一或多個運算單元處進行運算之一或多個全連接層。
在一些實施方案中,可產生及部署一參數快取類別以支援神經網路硬體加速器系統110中之所描述參數快取任務。例如,鑑於各運算單元中之一可用寬記憶體210,參數快取類別可遍歷各神經網路層,且判定各運算單元中用於參數快取之寬記憶體210使用。參數快取之實施係以先進先服務(first-come-first-serve)方式。在一些其他實例中,參數快取之實施針對更複雜任務進行微調。
針對一給定神經網路層,較佳地將其模型參數分配於一單一運算單元中。此組態將減少執行對應神經網路運算之指令計數且簡化神經網路硬體加速器110之同步旗標之管理。
在神經網路處理系統100中,啟用對參數快取之編譯器支援。例如,一程式碼產生器可產生兩個程式:一個程式,其將參數從主機介面120載入至運算單元之寬記憶體210;及另一程式,其執行一神經網路層之一現有模型。運行時間可使用各種函數來獲得此兩個程式之對應二進位數。在一些實施方案中,所需參數快取未連續排序。例如,可存在具有用於神經網路運算之對應模型參數之五個神經網路層。此五個層之執行順序係:A→B→C→D→E若層A、C及E具有快取參數,則需要產生五個直接記憶體存取描述符以快取該等參數。以一替代方式,參數包裝可排序為A→C→E→B→D其中以A→C→E之一序列之參數包裝僅需一個直接記憶體存取描述符,
且另一直接記憶體存取描述符用於以B→D之一序列對非快取參數進行參數包裝。
如先前描述,僅容許一個主機運算單元透過環狀匯流排216發送參數。在兩個或兩個以上主機運算單元透過環狀匯流排216同時將參數發送至一相同接收器運算單元之一情況中,接收器運算單元可獲得錯誤參數,且不具有作用中的接收器運算單元之資料封裝將浮動在環狀匯流排216中且導致系統掛起(system hang)。
圖4係用於對神經網路硬體加速器110執行參數快取以進行全連接神經網路層運算之程序之一例示性流程圖。
神經網路硬體加速器110獲得指定待部署於神經網路硬體加速器110之一或多個運算單元上之神經網路之一或多個全連接層之資料,其中全連接神經網路層之各者共用一各自參數集。主機介面120接收執行一或多個全連接神經網路層及模型參數之指令。將指令及模型參數傳輸至主記憶體130且分別儲存於指令記憶體206及資料記憶體204中。
神經網路處理系統100在神經網路硬體加速器110上劃分用於全連接層之運算之參數集(步驟402)。在各種實施方案中,神經網路處理系統100藉由基於對應運算單元之量及對應運算單元之可用寬記憶體210容量分割參數而識別對應於運算單元組208中之一運算單元之全連接層運算之設定參數之一子集。神經網路處理系統100可具有對應於神經網路層及模型之參數之一全域視圖。其將判定各運算單元中之寬記憶體210之可用容量,且調用參數快取方法以為參數快取分配寬記憶體210。
在一些實施方案中,基於沒有任何運算單元可用於將參數集儲存於其寬記憶體210中,參數可以Zout區塊粒度分割且跨各種運算
單元分佈。可藉由在寬記憶體210之容量方面最大化參數快取效率而達成一最終最佳化。例如,一特定模型可具有擁有1MB參數之一全連接層。然而,各運算單元之可用寬記憶體210小於1MB,因此模型參數不符合神經網路硬體加速器110之一單一運算單元。因此,全連接層之參數將被劃分且快取至不同運算單元。在一些實施方案中,將所劃分參數分佈至特定運算單元以改良張量運算效率,且無需跨硬體運算單元組208單播所劃分參數。
在下一步驟中,神經網路處理系統100將全連接層參數之所劃分子集指派至神經網路硬體加速器110上之一或多個運算單元之一或多個寬記憶體210(步驟404)。
神經網路硬體加速器110經由環狀匯流排216將所劃分參數逐一從資料記憶體204發送至所識別一或多個運算單元之一或多個寬記憶體210(步驟406)。在各種實施方案中,全連接神經網路層發出一RingInfeed指令以透過環狀匯流排216將參數之子集從資料記憶體204傳輸至一或多個特定運算單元以執行對應神經網路運算。
在下一步驟中,運算單元組208之接收器運算單元接收參數之子集且將參數寫入至運算單元之一或多個寬記憶體210(步驟408)。神經網路處理系統100可將直接記憶體存取操作指令發出至一或多個主機運算單元以透過環狀匯流排216或網狀匯流排214將來自主機運算單元之參數儲存至其他相鄰接收器運算單元。作為一回應,接收器運算單元可發出一直接記憶體存取操作指令以將從主機運算單元傳輸之參數複製至其寬記憶體210(步驟410)。
在將參數之所識別子集儲存至對應運算單元之後,神經網
路硬體加速器110開始執行對應於一或多個全連接神經網路層之神經網路運算。在各種實施方案中,一特定神經網路層可具有一個以上模型等待參數快取。可透過主機介面120將以遞減優先級順序指示模型之一清單之指令發送至硬體運算單元之主記憶體130以供執行。回應於該等指令,可在先前處理較重要模型以具有在一或多個運算單元之寬記憶體210中快取之對應參數。
圖5係用於對神經網路硬體加速器110執行參數快取以進行迴旋神經網路層運算之程序之一例示性流程圖。迴旋層係適於對二維資料(諸如影像)進行操作及運算之前饋神經網路層之一類別。一迴旋係涉及模型參數(例如,輸入資料之一陣列及權重之二維陣列)相乘之一線性運算。神經網路硬體加速器110將模型參數遞送至一或多個運算單元之一或多個寬記憶體210以進行一特定迴旋神經網路層運算。
在接收到指令之後,主記憶體130為一或多個迴旋神經網路層指定一模型參數集(步驟502)。模型參數可從主機介面120傳輸且儲存於資料記憶體204中。
神經網路處理系統100可基於與一或多個迴旋層之對應性而將參數區分為子集參數(步驟504)。在一些實施方案中,對應於一特定迴旋神經網路層之子集參數不符合對應運算單元之寬記憶體。因此,子集參數被進一步分割且傳輸至更多運算單元以進行迴旋運算。
在下一步驟中,經由環狀匯流排216將所劃分子集參數逐一從資料記憶體204發送至運算單元之寬記憶體210(步驟506)。在一些實施方案中,參數快取實施係以簡單先進先服務方式。在一些其他實施方案中,參數快取實施演算法針對更複雜任務進行微調。
運算單元可複製所傳輸子集參數且將參數之子集寫入至其寬記憶體210(步驟508)。在一些實施方案中,基於子集參數不符合運算單元之寬記憶體210,運算單元從相鄰主機運算單元接收參數且將參數儲存至其寬記憶體210以完成迴旋運算之一部分。
在將所區分子集參數儲存至對應運算單元之後,在接收到張量運算指令之後,運算單元開始執行對應於一或多個迴旋神經網路層之神經網路運算(步驟510)。
本說明書中描述之標的物及功能操作之實施例可在以下項中實施:數位電子電路、有形體現之電腦軟體或韌體、電腦硬體(包含本說明書中揭示之結構及其等結構等效物),或其等之一或多者之組合。本說明書中描述之標的物之實施例可被實施為一或多個電腦程式,即,編碼於一有形非暫時性程式載體上以由資料處理設備執行或控制資料處理設備之操作的電腦程式指令之一或多個模組。替代地或另外,可將程式指令編碼於一入上產生之傳播信號(例如,一機器產生之電信號、光學信號或電磁信號)上,該傳播信號經產生以編碼用於傳輸至適合接收器設備之資訊以由一資料處理設備執行。電腦儲存媒體可為一機器可讀儲存裝置、一機器可讀儲存基板、一隨機或串列存取記憶體裝置或其等之一或多者之一組合。
術語「資料處理設備」涵蓋用於處理資料之所有種類之設備、裝置及機器,包含舉例而言一可程式化處理器、一電腦或多個處理器或電腦。設備可包含專用邏輯電路,例如一FPGA(場可程式化閘陣列)或一ASIC(特定應用積體電路)。除硬體之外,設備亦可包含產生所述電腦程式之一執行環境之程式碼,例如構成處理器韌體、一協定堆疊、一資料
庫管理系統、一作業系統或其等之一或多者之一組合之程式碼。
一電腦程式(其亦可被稱為或描述為一程式、軟體、一軟體應用程式、一模組、一軟體模組、一指令檔或程式碼)可以任何形式之程式設計語言(包含編譯或解譯語言或宣告或程序語言)撰寫,且其可部署為任何形式,包含作為一獨立程式或作為一模組、組件、副常式或適用於一運算環境中之其他單元。一電腦程式可(但無需)對應於一檔案系統中之一檔案。一程式可儲存於保存其他程式或資料(例如,儲存於一標記語言文件中之一或多個指令檔)之一檔案之一部分中、儲存於專用於所述程式之一單一檔案中,或儲存於多個協同檔案(例如,儲存程式碼之一或多個模組、子程式或部分之檔案)中。一電腦程式可經部署以在一個電腦上或在定位於一個位點處或跨多個位點分佈且由一通信網路互連之多個電腦上執行。
本說明書中描述之程序及邏輯流程可由一或多個可程式化電腦執行,該一或多個可程式化電腦執行一或多個電腦程式以藉由對輸入資料進行操作且產生輸出而執行功能。程序及邏輯流程亦可藉由專用邏輯電路(例如,一FPGA(場可程式化閘陣列)或一ASIC(特定應用積體電路))執行,且設備亦可實施為專用邏輯電路(例如,一FPGA(場可程式化閘陣列)或一ASIC(特定應用積體電路))。
舉例而言,適於執行一電腦程式之電腦包含、可基於通用或專用微處理器或兩者或任何其他種類之中央處理單元。一般言之,一中央處理單元將從一唯讀記憶體或一隨機存取記憶體或兩者接收指令及資料。一電腦之基本元件係用於執行(performing或executing)指令之一中央處理單元及用於儲存指令及資料的一或多個記憶體裝置。一般言之,一
電腦亦將包含用於儲存資料之一或多個大容量儲存裝置(例如,磁碟、磁光碟或光碟),或可操作地耦合以自用於儲存資料之一或多個大容量儲存裝置(例如,磁碟、磁光碟或光碟)接收資料或將資料傳送至用於儲存資料之該一或多個大容量儲存裝置(例如,磁碟、磁光碟或光碟)或兩者。然而,一電腦無需具有此等裝置。此外,一電腦可嵌入於另一裝置中,例如(僅列舉幾個)一行動電話、一個人數位助理(PDA)、一行動音訊或視訊播放機、一遊戲控制台、一全球定位系統(GPS)接收器或一可攜式儲存裝置(例如,一通用串列匯流排(USB)快閃隨身碟)。
適於儲存電腦程式指令及資料之電腦可讀媒體包含全部形式之非揮發性記憶體、媒體及記憶體裝置,包含舉例而言:半導體記憶體裝置,例如EPROM、EEPROM及快閃記憶體裝置;磁碟,例如內部硬碟或可抽換式磁碟;磁光碟;及CD ROM及DVD-ROM碟。處理器及記憶體可由專用邏輯電路補充或併入於專用邏輯電路中。
為發送與一使用者之互動,本說明書中描述之標的物之實施例可在具有用於顯示資訊給使用者之一顯示裝置(例如一CRT(陰極射線管)或LCD(液晶顯示器)監視器)及一鍵盤及一指向裝置(例如一滑鼠或一軌跡球,使用者可藉由其發送輸入至電腦)之一電腦上實施。其他類型之裝置亦可用於發送與一使用者之互動;例如,提供至使用者之回饋可為任何形式之感測回饋,例如視覺回饋、聽覺回饋或觸覺回饋;且來自使用者之輸入可經接收為任何形式,包含聲學、語音或觸覺輸入。另外,一電腦可藉由將文件發送至由一使用者使用之一裝置及自該裝置接收文件;例如藉由回應於自一使用者之用戶端裝置上之一網頁瀏覽器接收之請求而將網頁發送至網頁瀏覽器而與使用者互動。
可在一運算系統中實施本說明書中描述之標的物之實施例,該運算系統包含一後端組件(例如作為一資料伺服器),或包含一中介軟體組件(例如一應用程式伺服器),或包含一前端組件(例如一用戶端電腦,其具有一圖形使用者介面或一網頁瀏覽器,一使用者可透過其與本說明書中描述之標的物之一實施方案互動)或一或多個此後端組件、中介軟體組件或前端組件之任何組合。系統之組件可藉由任何形式或媒體之數位資料通信(例如,一通信網路)互連。通信網路之實例包含一區域網路(「LAN」)及一廣域網路(「WAN」),例如網際網路。
運算系統可包含用戶端及伺服器。一用戶端及伺服器通常彼此遠離且通常透過一通信網路互動。用戶端與伺服器之關係憑藉運行於各自電腦上且彼此具有一用戶端-伺服器關係之電腦程式而產生。
雖然本說明書含有許多特定實施方案細節,但此等細節不應被解釋為限制任何發明或可主張內容之範疇,而應當被解釋為可特定於特定發明之特定實施例之特徵之描述。本說明書中在單獨實施例之內容脈絡中描述之某些特徵亦可在一單一實施例中組合實施。相反地,在一單一實施例之內容脈絡中描述之各種特徵亦可單獨地或者以任何適合子組合在多項實施例中實施。而且,儘管上文可將特徵描述為以特定組合起作用且甚至最初如此主張,然在一些情況中,來自所主張組合之一或多個特徵可從組合中免除,且所主張組合可係關於一子組合或一子組合之變動。
類似地,雖然在圖式中按一特定順序描繪操作,但此不應被理解為要求按所展示之特定順序或循序順序執行此等操作,或執行所有繪示之操作以達成所要結果。在某些境況中,多任務處理及並行處理可為有利的。再者,在上文中描述之實施例中之各種系統模組及組件之分離不
應被理解為在所有實施例中皆需要此分離,且應理解所描述之程式組件及系統通常可一起整合於一單一軟體產品中或封裝至多個軟體產品中。
已描述標的物之特定實施例。其他實施例在以下發明申請專利範圍之範疇內。例如,在發明申請專利範圍中敘述之動作可按一不同順序執行且仍達成所要結果。作為一個實例,在附圖中描繪之程序不必要求所展示之特定順序或循序順序來達成所要結果。在某些實施方案中,多任務處理及並行處理可為有利的。
302:步驟
304:步驟
306:步驟
308:步驟
310:步驟
Claims (14)
- 一種用於神經網路之方法,其包括:獲得指定(specify)待部署於一神經網路硬體加速器上的一或多個神經網路之資料,該一或多個神經網路之各者具有一各自參數集,且該神經網路硬體加速器包括一參數記憶體及複數個硬體運算單元,該複數個硬體運算單元之各者係經組態以執行神經網路運算之一處理元件,各硬體運算單元包括擁有一記憶體容量的一或多個本端記憶體;將該參數集儲存於該參數記憶體中;判定在由該神經網路硬體加速器將在該一或多個神經網路之任一者的一處理期間之任何一個時間使用之該記憶體容量之一最大量;識別該一或多個神經網路之該等參數之一子集,其消耗之記憶體之一量小於該記憶體容量與該記憶體容量之該所判定最大量之間的一差異;將該等參數之該所識別子集儲存於該神經網路硬體加速器的該一或多個本端記憶體之至少一者中,其中該等參數之該所識別子集係自該參數記憶體傳輸至該一或多個本端記憶體;及在儲存該等參數之該所識別子集之後,使該神經網路硬體加速器執行該一或多個神經網路之該處理。
- 如請求項1之方法,其進一步包括:判定該等參數之該所識別子集在該神經網路硬體加速器的該一或多個本端記憶體中之儲存位置,及將各參數儲存於用於該參數之該所識別儲存位置中。
- 如請求項1之方法,其中該神經網路硬體加速器的該一或多個本端記憶體提供高於儲存該等神經網路之該等參數的該參數記憶體之頻寬。
- 如請求項1之方法,其中該複數個硬體運算單元經進一步組態以執行包括以下項之操作:藉由一第一硬體運算單元之一處理器執行來自該神經網路硬體加速器之複數個指令;存取該第一硬體運算單元的一或多個本端記憶體以擷取該等參數之該所識別子集;透過一環狀匯流排將該等參數之該所識別子集發送至該神經網路硬體加速器之一第二硬體運算單元的一或多個本端記憶體;及透過該環狀匯流排將該等參數之該所識別子集儲存至該第二硬體運算單元的該一或多個本端記憶體以用於由該第二硬體運算單元使用該等參數之該所識別子集之神經網路運算之執行。
- 如請求項1之方法,其進一步包括:根據一優先級對該一或多個神經網路之層進行排名;及將該等神經網路之一最高排名層之該各自參數集識別為該一或多個神經網路之該等參數之該子集。
- 如請求項1之方法,其中該一或多個神經網路包括一全連接層,其中該全連接層之參數處於該所識別子集中,其中該加速器經組態以跨該等硬 體運算單元之一第一子集分佈該全連接層之處理,且其中儲存該所識別子集包括:將該全連接層之該等參數之一各自分區儲存於該第一子集中之各硬體運算單元的該一或多個本端記憶體中。
- 如請求項1之方法,其中該一或多個神經網路包括一迴旋層,其中該迴旋層之參數處於該所識別子集中,其中該加速器經組態以跨該等硬體運算單元之一第二子集分佈該迴旋層之處理,且其中儲存該所識別子集包括:將該迴旋層之該等參數之一各自複本儲存於該第二子集中之各硬體運算單元的該一或多個本端記憶體中。
- 一種用於神經網路之系統,該系統包括一神經網路硬體加速器、一或多個電腦及儲存可操作之指令之一或多個儲存裝置,該等指令在由該一或多個電腦及該神經網路硬體加速器執行時導致該一或多個電腦及該神經網路硬體加速器執行包括以下項之操作:獲得指定待部署於一神經網路硬體加速器上的一或多個神經網路之資料,該一或多個神經網路之各者具有一各自參數集,且該神經網路硬體加速器包括一參數記憶體及複數個硬體運算單元,該複數個硬體運算單元之各者係經組態以執行神經網路運算之一處理元件,各硬體運算單元包括擁有一記憶體容量的一或多個本端記憶體;將該參數集儲存於該參數記憶體中;判定在由該神經網路硬體加速器將在該一或多個神經網路之任一者 的一處理期間之任何一個時間使用之該記憶體容量之一最大量;識別該一或多個神經網路之該等參數之一子集,其消耗之記憶體之一量小於該記憶體容量與該記憶體容量之該所判定最大量之間的一差異;將該等參數之該所識別子集儲存於該神經網路硬體加速器的該一或多個本端記憶體之至少一者中,其中該等參數之該所識別子集係自該參數記憶體傳輸至該一或多個本端記憶體;及在儲存該等參數之該所識別子集之後,使該神經網路硬體加速器執行該一或多個神經網路之該處理。
- 如請求項8之系統,其進一步包括:判定該等參數之該所識別子集在該神經網路硬體加速器的該一或多個本端記憶體中之儲存位置,及將各參數儲存於用於該參數之該所識別儲存位置中。
- 如請求項8之系統,其中該神經網路硬體加速器的該一或多個本端記憶體提供高於儲存該等神經網路之該等參數的該參數記憶體之頻寬。
- 如請求項8之系統,其中該複數個硬體運算單元經進一步組態以執行包括以下項之操作:藉由一第一硬體運算單元之一處理器執行來自該神經網路硬體加速器之複數個指令;存取該第一硬體運算單元的一或多個本端記憶體以擷取該等參數之該所識別子集; 透過一環狀匯流排將該等參數之該所識別子集發送至該神經網路硬體加速器之一第二硬體運算單元的一或多個本端記憶體;及透過該環狀匯流排將該等參數之該所識別子集儲存至該第二硬體運算單元的該一或多個本端記憶體以用於由該第二硬體運算單元使用該等參數之該所識別子集之神經網路運算之執行。
- 如請求項8之系統,其進一步包括:根據一優先級對該一或多個神經網路之層進行排名;及將該等神經網路之一最高排名層之該各自參數集識別為該一或多個神經網路之該等參數之該子集。
- 如請求項8之系統,其中該一或多個神經網路包括一全連接層,其中該全連接層之參數處於該所識別子集中,其中該加速器經組態以跨該等硬體運算單元之一第一子集分佈該全連接層之處理,且其中儲存該所識別子集包括:將該全連接層之該等參數之一各自分區儲存於該第一子集中之各硬體運算單元的該一或多個本端記憶體中。
- 如請求項8之系統,其中該一或多個神經網路包括一迴旋層,其中該迴旋層之參數處於該所識別子集中, 其中該加速器經組態以跨該等硬體運算單元之一第二子集分佈該迴旋層之處理,且其中儲存該所識別子集包括:將該迴旋層之該等參數之一各自複本儲存於該第二子集中之各硬體運算單元的該一或多個本端記憶體中。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2019/067289 WO2021126194A1 (en) | 2019-12-18 | 2019-12-18 | Parameter caching for neural network accelerators |
WOPCT/US19/67289 | 2019-12-18 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202125306A TW202125306A (zh) | 2021-07-01 |
TWI832000B true TWI832000B (zh) | 2024-02-11 |
Family
ID=69740515
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW109129829A TWI832000B (zh) | 2019-12-18 | 2020-09-01 | 用於神經網路之方法及系統 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20220414437A1 (zh) |
EP (1) | EP4010848A1 (zh) |
CN (1) | CN114424174A (zh) |
TW (1) | TWI832000B (zh) |
WO (1) | WO2021126194A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11875247B1 (en) * | 2020-06-18 | 2024-01-16 | Amazon Technologies, Inc. | Input batching with serial dynamic memory access |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170344882A1 (en) * | 2016-05-31 | 2017-11-30 | Canon Kabushiki Kaisha | Layer-based operations scheduling to optimise memory for CNN applications |
TW201901534A (zh) * | 2017-05-19 | 2019-01-01 | 美商谷歌有限責任公司 | 排程神經網路處理 |
TW201911140A (zh) * | 2017-08-11 | 2019-03-16 | 美商谷歌有限責任公司 | 具有常駐在晶片上之參數的神經網路加速器 |
-
2019
- 2019-12-18 WO PCT/US2019/067289 patent/WO2021126194A1/en unknown
- 2019-12-18 US US16/971,595 patent/US20220414437A1/en active Pending
- 2019-12-18 CN CN201980100459.XA patent/CN114424174A/zh active Pending
- 2019-12-18 EP EP19858654.7A patent/EP4010848A1/en active Pending
-
2020
- 2020-09-01 TW TW109129829A patent/TWI832000B/zh active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170344882A1 (en) * | 2016-05-31 | 2017-11-30 | Canon Kabushiki Kaisha | Layer-based operations scheduling to optimise memory for CNN applications |
TW201901534A (zh) * | 2017-05-19 | 2019-01-01 | 美商谷歌有限責任公司 | 排程神經網路處理 |
TW201911140A (zh) * | 2017-08-11 | 2019-03-16 | 美商谷歌有限責任公司 | 具有常駐在晶片上之參數的神經網路加速器 |
Also Published As
Publication number | Publication date |
---|---|
EP4010848A1 (en) | 2022-06-15 |
CN114424174A (zh) | 2022-04-29 |
TW202125306A (zh) | 2021-07-01 |
US20220414437A1 (en) | 2022-12-29 |
WO2021126194A1 (en) | 2021-06-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI679590B (zh) | 具有常駐在晶片上之參數的神經網路加速器 | |
JP6995851B2 (ja) | ニューラルネットワーク計算タイル | |
US20220129302A1 (en) | Data processing system and method for heterogeneous architecture | |
Chowdhury et al. | Coflow: A networking abstraction for cluster applications | |
US8381230B2 (en) | Message passing with queues and channels | |
CN103853618B (zh) | 基于截止日期驱动的云系统代价最小化资源分配方法 | |
US20130212594A1 (en) | Method of optimizing performance of hierarchical multi-core processor and multi-core processor system for performing the method | |
US20220129408A1 (en) | Data actor and data processing method thereof | |
CN109684074A (zh) | 物理机资源分配方法及终端设备 | |
CN106502782A (zh) | 异构计算系统及其方法 | |
US9471387B2 (en) | Scheduling in job execution | |
CN110795226B (zh) | 利用计算机系统处理任务的方法、电子设备和存储介质 | |
US20210303978A1 (en) | Load balancing for memory channel controllers | |
CN114270319A (zh) | 在机器学习计算单元之间重新分配张量元素 | |
TWI832000B (zh) | 用於神經網路之方法及系統 | |
KR20220136426A (ko) | 머신 학습 가속기들에서의 큐 할당 | |
CN107273527A (zh) | 一种Hadoop集群和分布式系统 | |
KR20220045026A (ko) | 신경망 계산 가속화를 위한 하드웨어 회로 | |
JP2023512195A (ja) | 並列ロードストアを有する共有スクラッチパッドメモリ | |
WO2022139795A1 (en) | Preemption in a machine learning hardware accelerator | |
KR20210021262A (ko) | 다수의 비동기 소비자들을 위한 방법들 및 장치들 | |
Zhao et al. | Multitask oriented GPU resource sharing and virtualization in cloud environment | |
US12001893B1 (en) | Distributed synchronization scheme | |
CN117112145B (zh) | 训练模型分配方法、装置、计算机设备和存储介质 | |
CN113704681B (zh) | 一种数据处理方法、装置及超算系统 |