TWI864227B - 用於記憶體通道控制器之負載平衡 - Google Patents
用於記憶體通道控制器之負載平衡 Download PDFInfo
- Publication number
- TWI864227B TWI864227B TW110103229A TW110103229A TWI864227B TW I864227 B TWI864227 B TW I864227B TW 110103229 A TW110103229 A TW 110103229A TW 110103229 A TW110103229 A TW 110103229A TW I864227 B TWI864227 B TW I864227B
- Authority
- TW
- Taiwan
- Prior art keywords
- memory
- neural network
- channel
- request
- data
- Prior art date
Links
- 238000013528 artificial neural network Methods 0.000 claims abstract description 109
- 238000012545 processing Methods 0.000 claims abstract description 101
- 238000000034 method Methods 0.000 claims abstract description 81
- 230000008569 process Effects 0.000 claims abstract description 31
- 230000004044 response Effects 0.000 claims abstract description 16
- 239000000872 buffer Substances 0.000 claims description 92
- 239000013598 vector Substances 0.000 claims description 64
- 238000004422 calculation algorithm Methods 0.000 claims description 43
- 238000003860 storage Methods 0.000 claims description 12
- 238000013468 resource allocation Methods 0.000 claims description 3
- 239000011159 matrix material Substances 0.000 description 18
- 238000004590 computer program Methods 0.000 description 12
- 238000004891 communication Methods 0.000 description 10
- 238000012549 training Methods 0.000 description 10
- 238000010586 diagram Methods 0.000 description 9
- 230000004913 activation Effects 0.000 description 7
- 238000010801 machine learning Methods 0.000 description 7
- 238000013459 approach Methods 0.000 description 5
- 238000013507 mapping Methods 0.000 description 5
- 238000009826 distribution Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 230000001575 pathological effect Effects 0.000 description 4
- 230000001934 delay Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 101001121408 Homo sapiens L-amino-acid oxidase Proteins 0.000 description 2
- 102100026388 L-amino-acid oxidase Human genes 0.000 description 2
- 238000013527 convolutional neural network Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000000306 recurrent effect Effects 0.000 description 2
- 238000013515 script Methods 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000012464 large buffer Substances 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 238000004513 sizing Methods 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
- 238000013519 translation Methods 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/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0646—Configuration or reconfiguration
- G06F12/0653—Configuration or reconfiguration with centralised address assignment
-
- 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
-
- 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/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
-
- 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/5061—Partitioning or combining of resources
- G06F9/5066—Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
-
- 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
-
- 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
-
- 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
- G06N3/084—Backpropagation, e.g. using gradient descent
-
- 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/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Biophysics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Neurology (AREA)
- Human Computer Interaction (AREA)
- Advance Control (AREA)
- Multi Processors (AREA)
Abstract
本發明描述用於使用經組態以在一硬體電路上實施一神經網路之一系統執行神經網路運算之包含電腦可讀媒體之方法、系統及設備。該系統包含接收自一記憶體獲得資料之請求之一程序ID單元,該記憶體包含各由一位址識別之記憶體位置。對於各請求,該程序ID單元選擇一通道控制器以接收該請求,提供該請求以由該選定通道控制器處理,且回應於使用該選定通道控制器處理該請求而自記憶體獲得該資料。該通道控制器係經組態以存取該記憶體之任何記憶體位置之多個通道控制器之一者。該系統使用自記憶體獲得之該資料及自該硬體電路之一共用記憶體分配之資源來執行該等神經網路運算。
Description
本說明書大體上係關於使用電路系統來執行神經網路運算。
神經網路係採用節點之一或多層以針對一經接收輸入產生一輸出(例如,一分類)的機器學習模型。一些神經網路除了一輸出層之外亦包含一或多個隱藏層。各隱藏層之輸出係用作至該網路中之一或多個其他層(例如,該網路之其他隱藏層或該輸出層)之輸入。該網路之一些層根據一各自參數集之當前值自一經接收輸入產生一輸出。
一些神經網路係廻旋神經網路(CNN) (例如,用於影像處理)或遞歸神經網路(RNN) (例如,用於語音及語言處理)。此等神經網路之各者包含廻旋或遞歸神經網路層之各自集合。一神經網路層可具有一相關聯內核集合以及用於處理輸入以產生用於訓練一神經網路之向量集合之一嵌入層。內核可表示為權重之一張量,即,一多維陣列。作為一實例,嵌入層可處理一輸入集合,諸如藉由一神經網路層產生之影像像素資料或啟動值之輸入。該輸入集合或啟動值集合亦可表示為一張量。
描述用於使用經組態以在一硬體電路上實施一神經網路之一系統執行神經網路運算之包含電腦可讀媒體之方法、系統及設備。該系統包含接收自一記憶體獲得資料之請求之一程序ID單元,該記憶體包含各由一位址識別之記憶體位置。對於各請求,該程序ID單元選擇一通道控制器以接收該請求,提供該請求以由該選定通道控制器處理,且回應於使用該選定通道控制器處理該請求而自記憶體獲得該資料。該系統使用自記憶體獲得之該資料及自該硬體電路之一共用記憶體分配之資源來執行該等神經網路運算。
特定言之,本文件描述用於平衡一分佈式處理系統中之通道控制器所經歷之處理負載的技術。該等技術可用於一實例性運算系統中,諸如一大規模分佈式系統或處理資料之其他系統。該等技術利用經組態以將請求分發給通道控制器之電路系統,該等通道控制器處理該等請求以擷取儲存於該分佈式系統之不同記憶體位置處之資料。接收一請求之一通道控制器係包含於該分佈式系統中之多個通道控制器之一者。各通道控制器經組態以存取該分佈式系統中之一實例性高頻寬記憶體之任何記憶體位置。
經擷取資料可表示至一神經網路層之輸入。參考經選擇以處理請求之一通道控制器分發該等請求之各者。將擷取輸入之請求分發給通道控制器以依減少或消除跨通道控制器之負載不平衡之一方式進行處理。在此實例中,處理經擷取資料以執行神經網路運算。在一些例項中,處理資料作為加速一人工神經網路之一嵌入層之運算之一步驟。
本說明書中所描述之標的物之一態樣可體現於用於使用經組態以在一硬體電路上實施一神經網路之一系統執行神經網路運算之一方法中。該方法包含:接收自包含多個記憶體位置之一記憶體獲得資料之請求,各記憶體位置由一各自位址識別。對於自該記憶體獲得該資料之各請求,該方法包含:選擇一通道控制器以接收該請求,其中該通道控制器係各經組態以存取該記憶體之任何記憶體位置之多個通道控制器之一者;提供該請求以由經選擇以接收該請求之該通道控制器來處理;及回應於使用經選擇以接收該請求之該通道控制器處理該請求而自記憶體獲得該資料。該方法亦包含使用自記憶體獲得之該資料及自該硬體電路之一共用記憶體分配之資源來執行該等神經網路運算。
此等及其他實施方案可各視需要包含以下特徵之一或多者。例如,在一些實施方案中,選擇該通道控制器以接收該請求包含:基於一調度演算法來選擇該通道控制器,該調度演算法用於將記憶體位置之各自位址分發給該多個通道控制器之經選擇以接收該請求之任一者。
該方法進一步包含:接收自該記憶體獲得不同輸入之多個請求,該多個請求之各請求指定儲存該輸入之一記憶體位置之一位址;基於該調度演算法判定對應於該多個請求之各者之一位址分配;及基於該經判定之位址分配將該多個請求分發給該多個通道控制器。判定該位址分配可包含:判定該位址分配使得經分配及分發給一對應通道控制器之位址之一各自數量在該多個通道控制器之各者中實質上相等。
在一些實施方案中,該系統包含經組態以容許任何通道控制器存取分配給該記憶體中之多個通道之任何通道之記憶體位置之一共用晶片上互連件。該記憶體中之該多個通道之各通道可包含一記憶體位置集合且該方法包含:使用任何通道控制器基於該晶片上互連件來存取分配給任何通道之任何記憶體位置。
執行該等神經網路運算可包含:判定該共用記憶體中之共用資源之一分配;及基於共用資源之該經判定分配來執行該等神經網路運算。在一些實施方案中,判定該共用記憶體中之共用資源之一分配包含:判定待由該選定通道控制器及該系統之執行該等神經網路運算之一部分之一向量處理單元使用之高速暫存(scratchpad)記憶體之一量。在一些實施方案中,該共用記憶體之一共用資源係該共用記憶體之一記憶體庫,該記憶體庫經組態為該共用記憶體之與該向量處理單元通信之一循環緩衝器。
該方法可進一步包含:回應於處理該請求而獲得至一神經網路層之一批次輸入。該批次輸入對應於自記憶體獲得之該資料;且該批次輸入中之各輸入係用於將一特徵集合映射至一數字向量。在一些實施方案中,該神經網路層係由一可訓練查找表表示之一嵌入層,該可訓練查找表將該特徵集合中之各特徵映射至一各自數字向量。該方法可進一步包含透過該神經網路層處理該批次輸入中之各輸入以學習值向量,其中該等值向量對應於該各自數字向量之各者;及基於該值向量來更新儲存於用於該神經網路之該嵌入層之該可訓練查找表處之嵌入項。
在一些實施方案中,執行該等神經網路運算包含自該獲得之批次輸入產生該神經網路層之一嵌入輸出;且更新該等嵌入項包含回應於基於該嵌入輸出運算之反向傳播梯度來更新該可訓練查找表之值。
此態樣及其他態樣之其他實施方案包含經組態以執行方法之動作之對應系統、設備及編碼於電腦儲存裝置上之電腦程式。一或多個電腦之一系統可憑藉安裝於該系統上之在操作中引起該系統執行該等動作之軟體、韌體、硬體或其等之組合而如此組態。一或多個電腦程式可憑藉具有在藉由資料處理設備實行時引起該設備執行該等動作之指令而如此組態。
本說明書中所描述之標的物可實施於特定實施例中以實現以下優點之一或多者。
用於一交叉開關/晶片上互連件之電路系統可在一專用硬體電路(諸如一分佈式系統中所使用之一硬體加速器)處實施。該交叉開關容許各通道控制器自與一處理器核心或加速器晶片通信之一高頻寬記憶體系統之任何通道中之一記憶體胞元之任何位址位置讀取資料及將資料寫入至任何位址位置。此無需將通道控制器映射至特定記憶體通道,此可引起導致效能損失之負載不平衡。
交叉開關減輕在一特定通道控制器相對於一集合中之其他通道控制器接收實質上大量位址以進行處理時可能發生之效能降級。實施交叉開關以藉由將位址指派給任何通道控制器以跨所有記憶體通道進行處理來使一位址分配負載平衡。因此,交叉開關可相對於先前方法改良一分佈式系統中之效能。
技術包含基於一經修改循環(round-robin)調度方案之一調度演算法。該調度演算法容許系統之一程序控制單元跨一通道控制器集合調度位址,其中接收位址之各個別通道控制器之選擇跨該集合實質上相同。調度演算法適於減輕原始或未修改循環方案之一叢發性質,當經組態以存取任何記憶體位置之通道控制器與一共用高速暫存記憶體之一循環緩衝器結合使用時,此可能會出現問題。
循環緩衝器係與不取決於經寫入至緩衝器之資料之大小及順序之一分配方案一起使用,當被指派空間之通道控制器未使用經分配空間之大部分時,此可導致共用緩衝空間之浪費的過度分配。為改良共用緩衝器之效率及利用率,可實施該等技術以至少部分基於在各通道控制器之一實例性處理管線中所觀察之記憶體存取之延時來最佳化共用高速暫存記憶體之循環緩衝器中之空間分配。
本說明書中所描述之標的物之一或多項實施方案之細節係在附圖及下文描述中闡述。將自描述、圖式及發明申請專利範圍明白標的物之其他潛在特徵、態樣及優點。
相關申請案之交叉參考
本申請案主張於2020年5月4日申請之美國實用申請案第16/865,539號之優先權,該案主張於2020年5月27日申請之美國臨時申請案第63/001,216號之權利。該等案之內容以引用的方式併入本文中。
一分佈式系統可包含用於儲存經存取且用於執行一操作或運算一值之值之記憶體。各值可儲存於記憶體中之由一位址識別之一各自位置處。記憶體可經配置以包含不同記憶體通道,其中各通道包含由一對應位址集合識別之一記憶體位置集合。一通道控制器係用於控制及管理對一給定記憶體通道之特定記憶體位置之存取以擷取由一請求指定之資料。更明確言之,通道控制器使用分佈式系統之通信通道以管理往返於記憶體之資料流。
本說明書描述用於平衡跨一通道控制器群組之負載以減輕可歸因於一分佈式運算系統中之通道控制器負載不平衡而發生之處理延遲的技術。例如,延遲可發生在用於產生一多層神經網路之一嵌入層之一輸出之處理器運算期間。明確言之,當需要一分佈式系統之一特定通道控制器執行大量資料擷取及運算/處理操作(例如,經擷取值之縮減或串接)以執行一神經網路運算時,此特定通道控制器可經歷對應於一負載不平衡之處理延遲。
不平衡可在接收大量請求或一請求中之位址/ID之一第一通道控制器與一第二、不同通道控制器之間。通道控制器經組態以處理請求以擷取用於一神經網路運算之資料,諸如用於待透過一神經網路層處理之一輸入值之資料。在一些實施方案中,資料表示一嵌入表之嵌入項(例如,權重)且一通道控制器可被分配任務以處理傳回用於該輸入值之嵌入項之請求。例如,在一嵌入層之一正向傳遞運算操作中,各通道控制器處理指定記憶體中之位置之位址之請求,此引起該通道控制器擷取儲存於記憶體位置處之資料且使用經擷取資料執行運算。
在先前分佈式架構中,各通道控制器經映射至大型系統記憶體中之一特定記憶體庫或通道,使得各通道控制器可僅處理該通道控制器經映射至之記憶體位置之彼等位址。例如,各通道控制器僅能夠存取一特定記憶體子集。因此,若該記憶體子集包含儲存「硬」資料(例如,緻密或大資料值)或針對一給定任務較頻繁地存取之資料之位置及位址,則映射至該子集之通道控制器相對於經映射至其他記憶體子集之其他通道控制器將經歷其處理負載之不平衡。
一個別通道控制器各可被分配任務以擷取一較大工作負載中之一運算或任務所需之資料之一部分。個別通道控制器之間的不平衡可引起一個通道控制器相對於另一通道控制器需要額外處理時間來獲得其用於該運算之資料部分。由於該任務可能需要全部資料部分,故一個通道控制器所需之額外處理時間導致在執行較大工作負載之任務時之整體處理延遲。
相關地,可自一共用高速暫存記憶體空間為各通道控制器分配資源(諸如一緩衝器)之一部分以使用經擷取資料執行特定操作。由於各通道控制器所處理之位址(或請求)之數目係不同的,故各通道控制器所使用之高速暫存記憶體/緩衝器位置之數目亦將完全不同。相對於跨通道分配不同量之記憶體,用以管理跨通道控制器之共用資源之分配之先前方法受到限制。因此,此等先前方法傾向於針對一給定通道過度分配共用資源,此導致跨通道浪費之高速暫存空間。當其他有用高速暫存緩衝空間經分配但仍未由一通道控制器使用時,此等方法亦引起效能損失。
基於上文所論述之背景內容,本說明書描述可在一專用處理器中實施以平衡一分佈式處理系統中之通道控制器所經歷之處理負載的資料處理技術及對應硬體電路系統。例如,包含一大記憶體單元(例如,一高頻寬記憶體)及一專用硬體電路之一分佈式系統可產生引起任何通道控制器自任何記憶體位置及針對該記憶體單元之任何資料分片獲得資料之指令。更明確言之,此特徵係基於整合於硬體電路處以容許各通道控制器自一高頻寬記憶體系統之任何通道讀取資料及將資料寫入至一高頻寬記憶體系統之任何通道之一晶片上互連件(或交叉開關)來實現。交叉開關特徵消除以對哪些位址分配經映射至特定通道控制器敏感之一方式來儲存資料之約束且容許簡化可在記憶體系統中佈置資料集合。系統可操作以將請求或一請求中所指定之位址發送至任何通道控制器,此係因為任何通道控制器經組態以自任何記憶體位置或資料分片獲得值。
本說明書亦描述用於結合使用任何通道控制器自一系統記憶體之任何記憶體位置獲得資料之上述方法來實施一循環緩衝器的技術。該循環緩衝器係基於包含於一共用高速暫存記憶體中之個別資源之一分配。循環緩衝器之實施方案適於解決在需要一系統以跨一通道控制器集合處理可變數目個ID標頭(例如,位址)時出現之負載不平衡問題。該系統包含實行用於定義及管理各循環緩衝器之指令之一實例性硬體管理器。代替將固定大小量之共用記憶體緩衝器分配給各通道控制器,該硬體管理器可操作以基於完全實行對自系統記憶體之記憶體位置提取之資料之運算所需之一經觀察延時來定義各緩衝器分配之大小。
圖1展示一實例性運算系統100之一方塊圖,運算系統100經組態以擷取儲存於系統100之一記憶體中之資料元素。該等資料元素可經擷取且用以執行用於一實例性機器學習工作負載之神經網路運算。例如,可處理資料元素以運算用於一神經網路層之一輸出或執行嵌入層操作以產生用於訓練一神經網路之嵌入項集合。
當訓練系統100之一神經網路以執行特定運算功能(諸如與機器轉譯、自然語言理解、排名模型或內容推薦模型有關之運算)時,產生嵌入輸出。在一些實施方案中,訓練該神經網路涉及更新先前儲存於神經網路之一嵌入表中之一嵌入項集合(諸如在訓練神經網路之一先前階段期間)。例如,一神經網路之一嵌入層之嵌入項可與將使用嵌入項之神經網路聯合地訓練。因此,本說明書中所描述之技術可用於以相對於先前方法改良之效率在訓練一神經網路期間更新嵌入項。
一般而言,一神經網路之一嵌入層係用於將特徵嵌入於對應於該嵌入層之一特徵/嵌入空間中。一嵌入向量可為經映射至表示一嵌入層之一查找表之一特徵集合中之一對應特徵之一各自數字向量。一特徵可為由將在其上執行分析或預測之獨立單元共用之一屬性或性質。例如,獨立單元可為詞彙表中之字詞或形成諸如影像及其他文件之項目之部分之影像像素之群組。可藉由一神經網路處理器實行用於訓練一嵌入層之嵌入項之一演算法以將特徵映射至嵌入向量。在一些實施方案中,與神經網路之將使用嵌入項之其他層聯合地學習一嵌入表之嵌入項。此類型之學習藉由反向傳播梯度以更新嵌入表而發生。
在其他實施方案中,獨立於神經網路之將使用嵌入項之其他層學習嵌入項(諸如在預訓練嵌入項時)。例如,可由神經網路處理器使用演算法以藉由處理關於離散輸入特徵之資訊來運算嵌入項以判定類似輸入至嵌入空間中幾何上接近之嵌入向量之一映射或放置。在一些情況中,運算嵌入項之程序可表示用於特徵學習或特徵工程設計之一技術,該技術容許一系統自原始輸入資料自動地發現特徵偵測所需之表示。
在一些實施方案中,一給定「輸入」可具有一或多種類型之一或多個特徵,且嵌入層針對該等類型之各者產生一各自嵌入項。例如,一輸入可用於具有幾種不同特徵類型之一搜尋查詢。特徵類型可包含一使用者或使用者裝置之性質(例如,位置、偏好、裝置類型等)、查詢符記、先前提交之查詢或可對應於一搜尋查詢之屬性之其他相關類型。對於一給定輸入具有一個以上特徵之任何特徵類型,一運算系統可操作以擷取針對該等特徵之各者之個別嵌入項。該系統亦可操作以(例如)藉由運算嵌入值之平均值來組合經擷取之嵌入項以產生針對該特徵類型之一最終嵌入項。
運算系統100包含一主機102、一多核心處理單元104及一記憶體單元105 (「記憶體105」)。記憶體105包含資料分片106a至106k,其中k係大於1之一整數。記憶體105係在下文更詳細描述。一般而言,主機102可為一處理單元,諸如一處理器、多個處理器或多個處理器核心。因此,主機102可包含一或多個處理器,且可操作以產生或處理用於存取一目標緻密矩陣之一指令及將一指令110發送至多核心處理單元104以產生該目標緻密矩陣。如下文更詳細描述,執行嵌入層操作可包含自一或多個矩陣變換稀疏元素以產生一緻密矩陣。
多核心處理單元104自記憶體105中之資料分片106a至106k之一或多者存取對應元素108a至108n,其中n
係大於1之一整數。多核心處理單元104使用對應元素108a至108n產生目標緻密矩陣112,且將目標緻密矩陣112提供至主機102以進行進一步處理。多核心處理單元104可藉由將元素108a至108n之各者變換為一向量及將n個向量串接為一單一向量而產生目標緻密矩陣112。
通常,在嵌入項之背景內容中,對應於稀疏元素之「稀疏」資訊可為識別一特徵值之一獨熱(one-hot)向量。例如,若對於一給定特徵有五個可能值(例如,A、B、C、D、E),則稀疏向量將特徵值「A」識別為(1, 0, 0, 0, 0)且嵌入層會將(1, 0, 0, 0, 0)映射至用於該特徵值「A」之一緻密嵌入向量。在一些實施方案中,在訓練一嵌入層以學習嵌入項期間,元素108a至108n可為一嵌入表之經變換為一向量(諸如用於特徵值「B」或「C」之一嵌入向量)之權重值。可使用多核心處理單元104之一神經網路處理器變換該等權重值,該神經網路處理器實行一訓練演算法以至少基於特徵至嵌入向量之一映射運算嵌入項。
主機102可處理用於更新一目標緻密矩陣之一指令且將一經更新緻密矩陣發送至多核心處理單元104。例如,一目標緻密矩陣可對應於一神經網路之一嵌入項。因此,主機102可處理更新嵌入項之一指令以產生一經更新緻密矩陣。例如,在訓練一神經網路以更新嵌入項之一後續迭代期間,可執行一反向傳遞以藉由判定輸入特徵至嵌入向量之一新映射及基於該新映射產生一經更新緻密矩陣來更新嵌入項。在一些實施方案中,多核心處理單元104可操作以將該經更新緻密矩陣變換為對應稀疏元素且相應地更新儲存於資料分片106a至106k中之一或多個稀疏元素(例如,權重)。
如上文所指示,主機102經組態以處理用於在運算系統100內實行之指令。在一些實施方案中,主機102經組態以處理藉由多核心處理單元104產生之目標緻密矩陣112。在一些其他實施方案中,主機102可經組態以請求多核心處理單元104產生目標緻密矩陣112,且另一處理單元可經組態以處理目標緻密矩陣112。
多核心處理單元104之各處理器經組態以擷取儲存於系統100之一記憶體中之資料元素。該記憶體可包含儲存包含元素108a至108n之資料之多個資料分片106a至106k。該資料可包含輸入、啟動、增益值或對應於權重之一矩陣結構之參數或內核之權重值。在一些實施方案中,資料分片106a至106k可為一或若干揮發性記憶體單元。在一些其他實施方案中,資料分片106a至106k可為一或若干非揮發性記憶體單元。資料分片106a至106k亦可為另一形式之電腦可讀媒體,諸如一儲存區域網路或其他組態中之裝置。資料分片106a至106k可使用電連接件、光學連接件或無線連接件耦合至多核心處理單元104。在一些實施方案中,資料分片106a至106k可為多核心處理單元104之部分且基於一記憶體中處理器(PIM)架構。
多核心處理單元104經組態以基於稀疏元素判定一緻密矩陣。多核心處理單元104包含多個經互連處理器或處理器核心。例如,多核心處理單元104可為包含多個經互連處理器核心之一分佈式處理系統。一般而言,術語「處理器」及「處理器核心」可互換使用以描述多核心處理單元104之離散經互連處理資源。
系統100亦包含一程序ID控制單元114 (「控制單元114」)。控制單元114接收一ID標頭集合且執行操作以調度該等ID標頭或調度包含於ID標頭中之資訊之部分。將ID標頭調度給通道控制器,此在下文參考圖2更詳細描述。在一些實施方案中,系統100包含多個控制單元114。例如,系統100可包含用於系統100處之各處理器或處理器核心之一控制單元114。耦合至多核心處理單元104之一處理器/核心之控制單元114之各者自一來源接收一ID標頭集合。該來源可為主機102或多核心處理單元104之另一處理器。
一ID標頭可表示包含指定用於記憶體105中之記憶體位置之位址之資訊之一請求。記憶體105可表示與包含於系統100處之一實例性硬體電路之一處理器核心中之一控制單元114交換資料通信之一高頻寬記憶體(HBM)或一輸入/輸出(I/O)裝置。例如,記憶體105可與多核心處理單元104之一處理器核心交換資料通信以將輸入傳遞至該核心且接收藉由該核心之一或多個運算資源產生之輸出。儲存於記憶體105之記憶體位置中或寫入至記憶體105之記憶體位置之輸入及資料值可表示向量元素或向量值陣列。
記憶體105可為系統100之動態隨機存取記憶體(DRAM)資產。在一些實施方案中,記憶體105係相對於包含一或多個處理器或處理器核心之一實例性硬體電路之一外部或晶片外記憶體。記憶體105經組態以與該硬體電路之晶片上資源(諸如一向量處理單元(VPU)或該VPU之向量記憶體庫(下文所描述))交換資料通信。例如,記憶體105可安置於在表示系統100之一硬體電路之一積體電路晶粒之外部之一實體位置處。因此,相對於安置於該積體電路晶粒內之運算資源,記憶體105可為遠端或非本端。替代性地,記憶體105或其資源之部分可安置於表示一專用硬體電路之積體電路晶粒內,使得記憶體105係在該電路之運算資源本端或與電路之運算資源共置。
圖2係包含通道控制器202及記憶體105之記憶體通道204以及上文所描述之控制單元114之實例之一架構200之一方塊圖。記憶體通道204之各者可表示記憶體105之一記憶體庫、記憶體105之記憶體庫之一集合、記憶體105之記憶體位置之一集合或此等之組合。
一通道控制器集合202包含至少指示為C0、C1、C2及C15之多個各自通道控制器。在圖2之實例中,架構200可包含16個通道控制器。在一些實施方案中,架構200包含更多或更少通道控制器。例如,架構200可包含N
數目個通道控制器以及N
數目個記憶體通道204。架構200之此等態樣相對於一個別通道控制器由元件符號202-n
指示,且相對於一個別記憶體通道由元件符號204-n
指示。
圖2之實施方案展示其中將諸如通道控制器202-0 (C0)及202-2 (C2)之個別通道控制器分別硬映射至諸如記憶體通道204-0 (C0)及204-2 (C2)之特定對應記憶體通道之一實例。如上文所論述,具有經硬映射至特定記憶體通道之通道控制器202之一系統記憶體105可經歷負載不平衡。此等負載不平衡可使用於在系統100處執行之神經網路運算之操作(諸如用於產生用於一嵌入層之一輸出之操作)暫緩或實質上延遲。
將特定通道控制器202映射至一特定記憶體通道之此先前方法可具有其他挑戰。例如,該方法可具有要求以對位址及資料如何映射至特定通道控制器202敏感之一方式儲存資料之約束。此外,當需要一系統執行大量隨機化查找以自記憶體中之一大空間擷取向量時,該方法可效率低。為解決此等挑戰,將一晶片上互連件(OCI)或交叉開關(下文所描述)整合於一專用硬體電路處。交叉開關可整合於晶片之電路系統之一處理管線中以使各通道控制器能夠自一高頻寬記憶體系統之任何通道讀取資料且將資料寫入至該高頻寬記憶體系統之任何通道。
在一些實施方案中,專用電路係一多核心硬體加速器且OCI係至少基於該硬體加速器之多核心結構唯一組態之一通道控制器介面。例如,該通道控制器介面經組態以容許多核心硬體加速器之各核心與記憶體105之各記憶體通道(包含對應於記憶體通道之不同類型之記憶體結構)之間的通信。
通道控制器介面可經設定大小為32B x 4而非128B x1。基於此實例性設定大小,通道控制器介面可包含記憶體105與通道控制器202之間的多個獨立交易執行緒,而無需用於OCI硬體之外部埠。在一些實施方案中,通道控制器介面經組態以有效地處置各通道處及針對不同運算階段之動態頻寬要求。例如,對於不同存取大小(例如,32位元組存取、64位元組存取、128位元組存取)之不同運算,每秒十億位元組(GBps)頻寬要求可改變。階段可包含正向傳遞運算、反向傳遞運算,及實施最佳化演算法(諸如Adagrad)以基於自對一些訓練資料評估一神經網路而產生之梯度來更新一特定向量之經學習值之反向傳遞運算。
通道控制器介面可經唯一組態以包含多個節點介面。例如,交叉開關可包含:i)可操作以攜載直接記憶體存取(DMA)描述符及控制訊息之一客戶端內節點介面;ii)可操作以攜載用於記憶體系統之各種記憶體結構(例如,緩衝記憶體、指令記憶體、共用記憶體、向量記憶體、主機記憶體)之讀取/寫入命令及資料之一記憶體內節點介面;iii)可操作以將負載/儲存訊務自通道控制器202之一第一/下部集合攜載至記憶體105之一處理器內節點介面(下部);及iv)可操作以將負載/儲存訊務自通道控制器202之一第二/上部集合攜載至記憶體105之一處理器內節點介面(上部)。
如上文所闡釋,OCI或通道控制器介面係容許通道控制器集合存取記憶體105之任何記憶體通道/位址之一交叉開關之一實施方案。但,即使在將請求中指定之位址散佈在一通道控制器集合202中時,特定機器學習工作負載之大規模實行仍可展現導致一特定通道控制器相對於其他通道控制器接收大量資料處理負載之資料存取型樣。在圖2之實例中,通道控制器202-0演示一不平衡,其中通道相對於其他通道控制器(例如,C1、C2)接收大量資料處理負載。為解決此挑戰,使用交叉開關來實施一特定控制方案以控制位址或請求至各通道控制器202之分配。該控制方案引起在通道控制器202中實質上相等地分配位址。此在下文參考圖3更詳細描述。
圖3繪示用於實施用於記憶體通道控制器202之負載平衡之一實例性演算法300。
如上文所指示,用於一實例性機器學習工作負載之資料存取可展現特定病理型樣。例如,即使通常可跨通道控制器202散佈請求及位址之一集合,但可存在特定型樣,其中需要一特定通道控制器對大量較大特徵或較大向量進行操作。此等型樣可引起控制單元114調度仍導致通道控制器202處之負載不平衡之一處理任務或ID標頭集合。例如,該等型樣可具有引起其等在處理之特定短時間窗內(諸如在20個循環與100個循環之間)出現之一叢發性質。即使通道控制器202之任一者經組態以存取記憶體105之任何記憶體位置及任何記憶體通道204,仍可能發生負載不平衡。
演算法300對應於上文所提及之控制方案且係用於實施用於系統100之記憶體通道控制器202之負載平衡之一實例性調度演算法。演算法300可包含如圖3之實例中所展示之偽碼,該偽碼表示調度演算法300之指令步驟之一或多者。在一些實施方案中,演算法300係一經修改循環調度演算法。調度演算法300之經修改循環屬性容許剖析一ID標頭集合並將其調度給通道控制器202。
例如,經修改循環調度演算法300經組態以破壞或抑制在用於一機器學習工作負載之資料存取期間可能發生之潛在病理序列。由於此,經修改循環調度演算法300經組態而容許以跨一通道控制器集合350中之各通道控制器202負載平衡之一方式分配ID標頭(例如,啟動或梯度之位址)。用於為一程序進行排程之一標準循環方法指示以其中在無優先級之情況下執行選擇之一簡單、循環順序來選擇一通道控制器。
為解決上文所論述之叢發型樣,可調適或修改循環方法以首先偵測一第一循環選擇順序之一初始完成。回應於偵測該初始完成,控制單元114接著可調整一增量參數以修改針對一第二或後續循環選擇回合而選擇之初始通道控制器。
例如,系統100可包含16個通道控制器(例如,C0至C15)。控制單元114可在一初始回合期間選擇各通道控制器202且基於指示在該回合期間已選擇C15之一計數參數來偵測該初始回合之完成。該計數參數可對應於通道控制器之總數(16),使得在初始回合期間選擇C15指示選擇16個通道控制器之各者。控制單元114接著可調整一增量參數之值以略過一特定通道控制器之選擇。
例如,控制單元114可增加增量參數以略過C0之選擇且在一後續通道選擇回合開始時選擇C1。同樣地,控制單元114可再次增加增量參數以略過C1之選擇且在另一後續通道選擇回合開始時選擇C2。在一些實施方案中,控制單元114可週期性地調整增量參數之值以基於一或多個所觀察資料存取型樣來增加(或減小)通道計數之一增量,如下文參考圖4更詳細描述。
圖4繪示一表400,其展示用於選擇通道控制器202以實現請求至不同通道控制器202之一平衡分配之一實例性序列410。
如上文簡要描述,一原生循環方案可遭受經存取以用於一運算之輸入資料之病理型樣。例如,一型樣可為,每第16個ID標頭將屬於具有最長嵌入向量及最運算密集型最佳化器之一嵌入表。甚至在原生循環方案中,該實例性型樣亦可引起負載不平衡。控制單元114可為實行對應於調度演算法300之指令以實施一經修改循環ID標頭調度方案之一處理器核心之一硬體組件。
基於演算法300,此調度方案可操作以減少歸因於一輸入資料集合中之病理型樣之負載不平衡之可能性。演算法300可用於產生用於選擇通道控制器202之實例性序列410。該序列中之各數字指示待選擇之一通道控制器。在一些實施方案中,序列410可最初基於一初始未修改循環流而迭代通過一集合中之各通道控制器(例如,0至15)。
在其中選擇各通道控制器之一初始迭代之後,可修改循環流以選擇通道控制器C1而非再次以選擇通道控制器C0開始。同樣地,在其中選擇各通道控制器之一第二迭代之後,可修改循環流以選擇通道控制器C2而非再次以選擇通道控制器C1開始。此經修改選擇方案提供可如何由控制單元114選擇一集合中之各通道控制器以容許在該集合中進行相等或實質上相等之位址分發的一實例。在一些實施方案中,系統100監測用於各通道控制器之資料存取型樣且基於所觀察型樣動態地調整或修改調度方案。
控制單元114使用經修改調度方案以針對一通道控制器集合202產生一通道號碼集合。在控制單元114處處理通道號碼之所產生集合以將ID標頭轉送至對應通道控制器204。在一些實施方案中,控制單元114基於自經修改調度方案導出之實例性序列410將ID標頭轉送至對應通道控制器204。為確保跨通道控制器202之ID標頭之處理工作負載之足夠負載平衡,演算法300引起控制單元114實施用於選擇通道號碼之特定性質。在一些實施方案中,演算法300係用於基於圖3處所展示之偽碼之實例性步驟之通道選擇。
例如,通道選擇性質要求通道號碼之產生為公平且非叢發的。用於產生通道號碼之「公平」性質引起(或要求)針對一給定機器學習任務相等或實質上相等地選擇所有通道控制器。用於產生通道號碼之「非叢發」性質引起(或要求)針對一給定機器學習任務在不間歇性增加一特定通道控制器之重複選擇之情況下選擇通道控制器。例如,「0, 1, 0, 1, 4, 5 , 0, ....」之一通道號碼序列並非一所要型樣且不滿足用於產生通道號碼之「非叢發」性質。
一實例性度量集合可用於判定是否滿足上述性質(例如,公平及非叢發)之各者。該等度量包含相對於一通道號碼出現以供選擇之次數判定一計數、一平均數(平均值)及一中值。對於「計數」度量,系統100可操作以判定每處理迭代包含一通道或通道號碼之次數之一計數。對於所有通道202或通道控制器202,次數應相同。若系統100判定次數不相同,則系統100可偵測針對一給定操作集合,通道控制器選擇之一特定型樣經偏壓且未經負載平衡。
對於「平均數」度量,系統100可操作以針對各通道號碼判定在臨限數目個迭代之後一通道號碼出現以供選擇之次數是否收斂至N
,其中N
係大於或等於1之一整數。例如,若系統100包含16個通道控制器,則系統100可操作以針對各通道號碼判定在臨限數目個迭代或ID標頭之後一通道號碼出現以供選擇之次數是否收斂至16。在一些實施方案中,迭代之該臨限數目基於經擷取及操作之資料之大小及複雜性而改變。
「中值」度量指示一特定通道控制器之一叢發性。例如,若系統100判定一通道控制器204-n具有一低中值選擇值,則其相對於其他通道控制器將在一叢發中接收更多ID標頭,此可指示不平衡。表400包含針對一實例性處理迭代(其針對臨限2048個ID標頭運行)用於各通道號碼之樣本度量值。如先前所提及,系統100可相對於上文所論述之度量及性質監測用於各通道控制器之資料存取型樣,且基於所觀察之型樣動態地調整或修改調度/控制方案。例如,控制單元114可基於資料存取型樣週期性地調整增量參數之值以增加(或減小)通道計數之一增量。
圖5係系統100之一架構500之一方塊圖且包含一共用高速暫存記憶體506 (「共用記憶體506」)及共用記憶體506之一或多個共用緩衝器508之實例。共用記憶體506係跨系統100之所有記憶體通道204全域共用之一軟體管理之記憶體單元。更明確言之,各通道控制器202經組態以共用共用記憶體506之由共用緩衝器508表示之高速暫存緩衝空間。
在圖5之實例中,共用緩衝器508包含各自記憶體庫,諸如記憶體庫510-0、510-3及510-n
。各記憶體庫510可經組態為一循環緩衝器且架構500可包含N
個循環緩衝器,其中N
係大於或等於1之一整數。因此,各記憶體庫510可替代性地被稱為一循環緩衝器508。各循環緩衝器508係與不取決於經寫入至該緩衝器之資料之大小及/或順序之一分配方案一起使用。例如,當被指派空間之通道控制器未使用經分配空間之大部分時,取決於至此共用空間以將緩衝空間分配給通道控制器202之資料流之大小/順序之先前方法可導致緩衝空間之浪費的過度分配。
此浪費的過度分配在系統100處產生一記憶體不平衡問題。在圖5之實例中,相對於其他記憶體庫510 (諸如對應於記憶體庫1及記憶體庫2之緩衝器),至記憶體庫510-n (例如,針對一特定通道控制器202)之資料流之順序及大小觸發一大緩衝空間分配要求。在先前方法中,在記憶體庫510-n處分配之緩衝空間將驅動用於其他個別記憶體庫510之大小分配且觸發導致過度分配之不平衡。圖5處所展示之實質上不均勻緩衝器使用亦可限制可針對一給定工作負載處理之批次大小。
圖6係系統100之一架構600之一方塊圖。架構600包含一處理器核心602、一向量處理單元604 (「VPU 604」)及一各自通道控制器202之組件之實例。通道控制器202之該等組件之一或多者可用於分配共用記憶體緩衝器506之資源。通道控制器202之組件包含一位址處理機單元606、一共用晶片上互連件608 (「共用互連件608」)及一循環緩衝器單元610。
通道控制器202之組件可表示通道控制器202之一實例性處理管線。每當完成ID資料處理時,位址處理機單元606產生一「解除分配」信號。通道ID資料對應於由控制單元114產生以供一通道控制器202處理之一描述符且係在下文描述。位址處理機單元606可對應於可用於執行通常與一實例性向量處理器相關聯之算術及運算操作之VPU 604。在一些實施方案中,一通道控制器202之處理管線係用於相對於一神經網路之一嵌入層執行反向傳遞及正向傳遞操作。下文描述解除分配信號以及反向傳遞及正向傳遞操作。
共用互連件608係可操作以容許任何通道控制器202與系統100之一晶片或硬體電路上之記憶體通道204之任一者通信之一交叉開關裝置。例如,共用互連件608可表示一晶片上互連件(OCI)介面。如上文所指示,共用互連件608可替代性地被稱為一OCI介面、一通道控制器介面或一交叉開關。在一些實施方案中,通道控制器202透過此OCI介面連接至記憶體105之實例性HBM通道。OCI介面容許任何通道控制器202與一專用晶片、硬體電路或硬體加速器內之任何HBM通道進行對話。在一些實例中,共用互連件608容許通道控制器202之各者自用於記憶體105中之任何通道之任何位址位置讀取資料及將資料寫入至用於記憶體105中之任何通道之任何位址位置。共用互連件608提供容許系統100將請求分配給個別通道控制器202以跨所有記憶體通道204處理之一負載平衡類型。
循環緩衝器單元610負責管理各經分配緩衝器508。循環緩衝器單元610經組態以追蹤緩衝器508 (例如,一循環緩衝器)之一頭部、尾部及空狀態。在一些實施方案中,若循環緩衝器單元610判定經指派給一選定通道控制器202之一共用循環緩衝器508不具有足以儲存對應於待使用通道控制器202處理之一請求之資料之空間,則可暫緩通道控制器202之一實行執行緒。
如上文所描述,耦合至多核心處理單元104之一處理器/核心602之控制單元114之各者自一來源接收一ID標頭集合。此等控制單元114之各者可操作以執行與剖析自主機102或自系統100中之其他處理器核心接收之ID標頭有關之操作。例如,在用於一神經網路之一嵌入層之一正向傳遞操作期間,控制單元114可剖析自其他處理器核心(或自主機102)接收之ID標頭且將屬於同一樣本及特徵之ID標頭調度給通道控制器202之一者。在一些實施方案中,各控制單元114可操作以產生及調度對應於一ID標頭之一描述符(「一請求」)。該請求包含待由一通道控制器處理以自記憶體105中之一通道之位置擷取一樣本及特徵值之定址及緩衝器資訊。
在用於嵌入層之一實例性反向傳遞操作期間,控制單元114可剖析自其他處理器核心(或自主機102)接收之{位址、梯度向量}之一元組。系統100可執行此功能以用一對應梯度向量更新嵌入向量。控制單元114將位址調度給通道控制器202之任一者。例如,控制單元114可將儲存於記憶體通道204-0之一位置處之一嵌入向量之一位址調度給通道控制器202-2。在將對應梯度向量複製至經映射至選定通道控制器202-2之共用記憶體506之一記憶體庫(或緩衝器)中之後,控制單元114可調度該位址。在一些實施方案中,系統100引起在將用於嵌入向量之位址轉送至選定通道控制器之前將梯度向量之緩衝器位址儲存於用於嵌入向量之位址中。
再次參考圖6,如上文所論述,由各通道控制器202使用之共用記憶體506之緩衝空間量可非常不同且可導致高速暫存記憶體緩衝器508之利用不足。利用不足導致可針對一給定工作負載處理之較低批次大小,從而導致系統100處之經降級或較低之效能。為解決記憶體不平衡且改良共用緩衝器之效率及利用率,系統100經組態以至少基於在各通道控制器之一實例性處理管線中所觀察之記憶體存取之延時來分配循環緩衝器510中之空間。
換言之,可藉由在高速暫存記憶體506中實施一或多個軟體組態、硬體管理之循環緩衝器510來解決記憶體不平衡問題。循環緩衝器508之設定大小獨立於藉由一選定通道控制器202處理之位址之數目。代替性地,循環緩衝器508之設定大小依據運算管線之整體延時而改變。
圖7係包含一個別緩衝器之狀態資訊之一實例性循環緩衝器架構700之一方塊圖。選定通道控制器202之各者(包含其循環緩衝器單元610)可操作以判定共用記憶體506中之共用資源之一分配。選定通道控制器202基於共用資源之該經判定分配來執行實例性神經網路運算。共用資源可為共用記憶體506之經組態為共用記憶體之一循環緩衝器且與處理器604之一實例性向量處理器通信之一記憶體庫/緩衝器704。
循環緩衝器單元610可藉由判定待由選定通道控制器202及一處理器602之執行神經網路運算之一部分之一VPU 604所使用之高速暫存緩衝空間之一量來判定共用記憶體506中之共用資源之一分配。例如,基於在各通道控制器202之一實例性處理管線中所觀察之記憶體存取之延時來判定該共用資源分配。基於經判定分配,可將一梯度向量集合複製至緩衝器/記憶體庫704之一經分配空間中且使用VPU 604或上文所描述之位址處理機單元606對該梯度向量集合操作。在一些實施方案中,共用緩衝空間可為共用記憶體506之一緩衝器/記憶體庫704中之一最近解除分配之條目。
在藉由控制單元114實行之實例性調度執行緒中,控制單元114選擇一通道控制器202以接收通道ID資料且使用經分配之循環緩衝空間來儲存指派給選定通道控制器202之記憶體庫704中之啟動梯度。若選定通道控制器202不具有循環緩衝器/記憶體庫704中之足夠空間,則控制單元114可暫緩調度執行緒直至可針對選定通道控制器202分配足夠量之空間。
一「解除分配」信號707經產生及在用於啟動梯度之一反向傳遞操作期間發送至控制單元114且在用於參數之一正向傳遞操作期間發送至一實例性提取ID單元702。每當針對一給定調度執行緒完成通道ID資料處理時,藉由位址處理機單元606之一清空ID單元706產生解除分配信號707。一般而言,解除分配信號707係用於在自緩衝器704中之一條目清空用於操作之資料時解除分配先前由一通道控制器202 (或VPU 604)使用以對一資料件操作之緩衝記憶體704之一部分。例如,可產生解除分配信號707且將其發送至控制單元114或提取ID單元702以指示已自一循環緩衝器704清空資料(例如,啟動梯度或參數)之一部分。
各通道控制器202將其中間值儲存於共用記憶體506中之軟體定義之循環緩衝器704中。諸如有限狀態機(FSM)指令之一指令集可用於定義在其等實行期間所使用之循環緩衝器704之一buffer_offset及一buffer_size。例如,若部分填充一緩衝器704且請求額外分配,但該分配將超出緩衝區之末端,則以buffer_offset開始產生一新分配。此新分配在緩衝區之末端留下一孔。
作為一實例,若一長度20之緩衝器處於其中分配10個單元之一狀態中,其中一尾指標在position_7處且一頭指標在position_16處(710),且一額外分配請求嘗試分配一長度5之空間,則該空間將如以圖7之實例中之特徵710’所展示般分配。為確保恰當地解除分配孔,以特徵710’所展示之分配應被記錄為一長度8之分配。在圖7之實例中,為清楚起見,展示一映圖715,但其未包含於系統100中。例如,映圖715指示「_」表示緩衝器中之用於一分配請求之一自由空間,「█」表示緩衝器中之一經佔據空間,且「*」表示孔。
圖8係用於負載平衡由一記憶體通道控制器集合處置之請求之一實例性程序800之一流程圖。可使用上文所描述之系統100來實施或實行程序800。程序800之描述可參考系統100之上述運算資源。在一些實施方案中,程序800之步驟或動作係由可藉由本文件中所描述之裝置及資源之一或多個處理器實行之經程式化韌體或軟體指令來實現。在一些實施方案中,程序500之步驟對應於使用經組態以實施神經網路之一硬體電路執行運算以產生用於一神經網路層之一輸出的一方法。
現參考程序800,系統100之一組件接收自包含記憶體位置之一記憶體獲得資料之請求,其中各記憶體位置係由一各自位址識別(802)。例如,該資料可為跨記憶體105之HBM通道儲存之用於神經網路層之資料。在一些實施方案中,該資料係用於一實例性神經網路層之一數值向量。一嵌入層可由將一大特徵空間中之特徵(例如,一線上Ad中之字詞)映射至數字向量之一可訓練查找表來表示。例如,神經網路層係由將特徵集合中之各特徵映射至一各自數字向量之一可訓練查找表表示之一嵌入層。
對於自記憶體獲得資料之各請求,選擇一通道控制器以接收該請求(804)。例如,控制單元114選擇一特定通道控制器202以接收該請求,其中由控制單元114選擇之各通道控制器202經組態以存取記憶體105之任何通道204之任何記憶體位置。在一些實施方案中,各通道控制器202透過一OCI介面連接至記憶體105之實例性HBM通道,該OCI介面經組態以容許通道控制器202之任一者對儲存於記憶體105之一HBM通道204中之任何位置之一嵌入向量執行運算。
對於自記憶體獲得資料之各請求,提供該請求以由經選擇以接收該請求之通道控制器202處理(806)。例如,該請求可對應於在控制單元114處接收之一ID標頭。控制單元114回應於剖析來自該ID標頭之記憶體位置位址及緩衝器資訊而產生一描述符且將該請求作為一描述符提供以由選定通道控制器202處理。對於自記憶體獲得資料之各請求,通道控制器回應於使用控制單元114以及經選擇以接收該請求之通道控制器202處理該請求而自系統記憶體獲得資料(808)。
通道控制器202使用自記憶體105獲得之資料及緩衝器510之自硬體電路之一共用記憶體506分配之資源來執行神經網路運算(810)。對於諸如一Ad中之字詞之情況,可存在待自記憶體105查找或擷取之若干向量,接著將該等向量相加或首先乘以一權重(參數)集合。該等加法及乘法操作可表示使用所獲得資料及緩衝器510執行之神經網路運算之一部分。
在一些情況中,一嵌入表之有效實施嵌入項要求系統100能夠自記憶體105中之一大空間快速隨機地查找大量向量。使用本文件中所描述之技術,可以任何方式(例如,以任何列及行維度)對該嵌入表進行分片,且將其儲存於仍可由形成多核心處理單元104之多個處理器602中之任何處理器602及通道控制器202存取之記憶體105之任何通道中。
可在數位電子電路系統、有形體現之電腦軟體或韌體、電腦硬體(包含本說明書中所揭示之結構及其等之結構等效物)或其等之一或多者之組合中實施本說明書中所描述之標的物及功能操作之實施例。本說明書中所描述之標的物之實施例可實施為一或多個電腦程式,即,在一有形非暫時性程式載體上編碼以藉由資料處理設備實行或控制資料處理設備之操作之電腦程式指令之一或多個模組。
替代性地或此外,程式指令可在一人為產生之傳播信號(例如,一機器產生之電、光學或電磁信號)上編碼,該傳播信號經產生以編碼資訊用於傳輸至合適接收器設備以藉由一資料處理設備實行。電腦儲存媒體可為一機器可讀儲存裝置、一機器可讀儲存基板、一隨機或串列存取記憶體裝置或其等之一或多者之一組合。
術語「運算系統」涵蓋用於處理資料之全部種類的設備、裝置及機器,藉由實例,包含一可程式化處理器、一電腦或多個處理器或電腦。設備可包含專用邏輯電路系統,例如,一FPGA (場可程式化閘陣列)或一ASIC (特定應用積體電路)。除硬體之外,設備亦可包含針對所討論之電腦程式產生一實行環境之程式碼,例如,構成處理器韌體、一協定堆疊、一資料庫管理系統、一作業系統或其等之一或多者之一組合的程式碼。
可以任何形式之程式設計語言(包含編譯或解譯語言、或宣告式或程序性語言)撰寫一電腦程式(其亦可被稱為或描述為一程式、軟體、一軟體應用程式、一模組、一軟體模組、一指令檔或程式碼),且其可以任何形式部署,包含作為一獨立程式或作為一模組、組件、副常式或適用於一運算環境中之其他單元。
一電腦程式可(但不需要)對應於一檔案系統中之一檔案。一程式可儲存於保存其他程式或資料(例如,儲存於一標記語言文件中之一或多個指令檔)之一檔案之一部分中、專用於所討論之程式之一單一檔案中或多個協調檔案(例如,儲存一或多個模組、子程式或程式碼之部分的檔案)中。一電腦程式可經部署以在一個電腦上或在定位於一個位點處或跨多個位點分佈且由一通信網路互連之多個電腦上實行。
可藉由實行一或多個電腦程式以藉由對輸入資料操作及產生輸出來執行功能之一或多個可程式化電腦來執行本說明書中所描述之程序及邏輯流程。亦可藉由專用邏輯電路系統(例如,一FPGA (場可程式化閘陣列)、一ASIC (特定應用積體電路)或一GPGPU (通用圖形處理單元))來執行該等程序及邏輯流程,且設備亦可實施為該專用邏輯電路系統。
適用於一電腦程式之實行之電腦包含(舉例而言,可基於)通用微處理器或專用微處理器或兩者或任何其他種類之中央處理單元。一般而言,一中央處理單元將自一唯讀記憶體或一隨機存取記憶體或兩者接收指令及資料。一電腦之一些元件係用於執行或實行指令之一中央處理單元及用於儲存指令及資料之一或多個記憶體裝置。一般而言,一電腦亦將包含用於儲存資料之一或多個大容量儲存裝置(例如,磁碟、磁光碟或光碟),或可操作耦合以自該一或多個大容量儲存裝置接收資料或將資料傳送至該一或多個大容量儲存裝置,或兩者。然而,一電腦不需要具有此等裝置。此外,一電腦可嵌入於另一裝置中,例如,一行動電話、一個人數位助理(PDA)、一行動音訊或視訊播放器、一遊戲控制台、一全球定位系統(GPS)接收器或一可攜式儲存裝置(例如,一通用串列匯流排(USB)快閃隨身碟),等等。
適用於儲存電腦程式指令及資料之電腦可讀媒體包含所有形式之非揮發性記憶體、媒體及記憶體裝置,藉由實例包含:半導體記憶體裝置,例如,EPROM、EEPROM、及快閃記憶體裝置;磁碟,例如,內部硬碟或可抽換式磁碟;磁光碟;及CD ROM及DVD-ROM光碟。處理器及記憶體可藉由專用邏輯電路系統增補或併入專用邏輯電路系統中。
為提供與一使用者之互動,可在一電腦上實施本說明書中所描述之標的物之實施例,該電腦具有用於向該使用者顯示資訊之一顯示裝置(例如,LCD (液晶顯示器)監視器)及該使用者可藉由其提供輸入至該電腦之一鍵盤及一指標裝置(例如,一滑鼠或一軌跡球)。其他種類之裝置亦可用於提供與一使用者之互動;例如,提供給該使用者之回饋可為任何形式之感覺回饋,例如,視覺回饋、聽覺回饋或觸覺回饋;且來自該使用者之輸入可以任何形式接收,包含聲音、語音或觸覺輸入。另外,一電腦可藉由發送文件至由一使用者使用之一裝置及自該裝置接收文件而與該使用者互動;例如,藉由回應於自一使用者之用戶端裝置上之一網頁瀏覽器接收之請求而將網頁發送至該網頁瀏覽器。
可在一運算系統中實施本說明書中所描述之標的物之實施例,該運算系統包含一後端組件(例如,作為一資料伺服器),或包含一中介軟體組件(例如,一應用程式伺服器),或包含一前端組件(例如,具有一使用者可透過其與本說明書中所描述之標的物之一實施方案互動之一圖形使用者介面或一網頁瀏覽器之一用戶端電腦),或一或多個此等後端、中介軟體或前端組件之任何組合。該系統之該等組件可藉由數位資料通信之任何形式或媒體(例如,一通信網路)互連。通信網路之實例包含一區域網路(「LAN」)及一廣域網路(「WAN」),例如,網際網路。
運算系統可包含用戶端及伺服器。一用戶端及伺服器一般彼此遠離且通常透過一通信網路互動。用戶端與伺服器之關係憑藉運行於各自電腦上及彼此具有一用戶端-伺服器關係之電腦程式而發生。
雖然本說明書含有許多特定實施方案細節,但此等特定實施方案細節不應被理解為限制任何發明或可主張之內容之範疇,而是被理解為描述可特定於本發明之特定實施例之特徵。本說明書中在單獨實施例之背景內容中所描述之特定特徵亦可組合實施於一單一實施例中。相反地,在一單一實施例之背景內容中描述之各種特徵亦可單獨實施於多個實施例中或以任何合適子集合實施。此外,儘管特徵在上文可被描述為依特定組合起作用且甚至最初如此主張,然來自一所主張之組合之一或多個特徵在一些情況中可自該組合免除,且該所主張之組合可係關於一子集合或一子集合之變型。
類似地,雖然在圖式中依一特定順序描繪操作,但此不應被理解為需要依所展示之特定順序或依循序順序來執行此等操作或需要執行所有經繪示之操作以達成所要結果。在特定境況中,多任務處理及平行處理可為有利的。此外,上文所描述之實施例中之各種系統模組及組件之分離不應被理解為在所有實施例中需要此分離,且應理解,所描述之程式組件及系統可大體上一起整合於一單一軟體產品中或封裝於多個軟體產品中。
已描述標的物之特定實施例。其他實施例係在以下發明申請專利範圍之範疇內。例如,發明申請專利範圍中所敘述之動作可依一不同順序執行且仍達成所要結果。作為一實例,附圖中所描繪之程序並不一定需要所展示之特定順序,或循序順序,來達成所要結果。在特定實施方案中,多任務處理及平行處理可為有利的。
100:運算系統/系統
102:主機
104:多核心處理單元
105:記憶體單元/記憶體/系統記憶體
106a至106k:資料分片
108a至108n:元素
110:指令
112:目標緻密矩陣
114:程序ID控制單元/控制單元
200:架構
202:通道控制器/記憶體通道控制器
202-0至202-n
:通道控制器
204:記憶體通道/通道/高頻寬記憶體(HBM)通道
204-0至204-n
:記憶體通道
300:演算法/調度演算法/經修改循環調度演算法
350:通道控制器
400:表
410:序列
500:架構
506:共用高速暫存記憶體/共用記憶體/高速暫存記憶體
508:共用緩衝器/循環緩衝器/經分配緩衝器/緩衝器/共用循環緩衝器/高速暫存記憶體緩衝器
510-0至510-n
:記憶體庫
600:架構
602:處理器核心/處理器/核心
604:向量處理單元(VPU)
606:位址處理機單元
608:共用晶片上互連件(OCI)/共用互連件
610:循環緩衝器單元
700:循環緩衝器架構
702:提取ID單元
704:記憶體庫/緩衝器/循環緩衝器/緩衝記憶體
706:清空ID單元
707:解除分配信號
710:特徵
710’:特徵
715:映圖
800:程序
802:步驟
804:步驟
806:步驟
808:步驟
810:步驟
圖1係一實例性運算系統之一方塊圖。
圖2係包含一控制單元、通道控制器及記憶體通道之實例之一架構之一方塊圖。
圖3繪示用以實施用於記憶體通道控制器之負載平衡之一實例性演算法。
圖4繪示至不同通道控制器之一實例性請求分配。
圖5係包含圖1之系統之一處理器核心及共用記憶體緩衝器之實例之一架構的一方塊圖。
圖6展示用於分配一共用記憶體緩衝器之資源之一通道控制器之實例性組件。
圖7係一個別緩衝器之包含狀態資訊之一實例性循環緩衝器之一方塊圖。
圖8係用於負載平衡由記憶體通道控制器之一集合處理之請求之一實例性程序之一流程圖。
各種圖式中之相同元件符號及名稱指示相同元件。
800:程序
802:步驟
804:步驟
806:步驟
808:步驟
810:步驟
Claims (27)
- 一種用於使用經組態以在一硬體電路上實施一神經網路之一系統執行神經網路運算之方法,該方法包括:接收自包括複數個記憶體通道之一記憶體獲得用於執行該等神經網路運算之資料之一請求,各記憶體通道包括複數個記憶體位置,其中該資料跨該複數個記憶體通道之該複數個記憶體位置分發(distributed),其中該資料包括藉由該神經網路之一嵌入神經網路層映射至一詞彙特徵集合(a set of vocabulary features)中之一各自詞彙特徵的一各自數字向量(vector of numbers);自複數個通道控制器選擇通道控制器以提取(fetech)與該請求相關聯之該資料之至少一部分,其中各通道控制器係經組態以存取:i)該複數個記憶體通道之各記憶體通道及ii)包含於該複數個記憶體通道之各記憶體通道中之該複數個記憶體位置之各記憶體位置,其中該等通道控制器之各者基於一調度演算法(dispatch algorithm)以略過一特定通道控制器之一選擇,從而在獲得與該請求相關聯之該資料時降低該等通道控制器之一負載不平衡,該調度演算法經組態以週期性地調整該調度演算法中之一增量參數之一值;使用經選擇之該等通道控制器藉由針對該複數個記憶體通道之一記憶體通道存取各自複數個記憶體位置來處理該請求,以獲得與該請求相關聯用於執行該等神經網路運算之該資料;回應於處理該請求而藉由經選擇之該等通道控制器自該記憶體獲得該資料;及 使用自該記憶體獲得之該資料及自該硬體電路之一共用記憶體分配之資源來執行該等神經網路運算。
- 如請求項1之方法,其中該調度演算法用於將記憶體位置之各自位址分發給該複數個通道控制器之經選擇以接收一請求之任一者。
- 如請求項2之方法,其進一步包括:接收自該記憶體獲得不同輸入之複數個請求,該複數個請求之各請求指定儲存一對應輸入之一記憶體位置之一位址;基於該調度演算法判定對應於該複數個請求之各者之一位址分配;及基於該經判定之位址分配將該複數個請求分發給該複數個通道控制器。
- 如請求項3之方法,其中判定該位址分配包括:判定該位址分配使得經分配及分發給一對應通道控制器之位址之一各自數量在該複數個通道控制器之各者中相同。
- 如請求項2之方法,其中該系統包括經組態以容許任何通道控制器存取分配給該記憶體中之該複數個記憶體通道之任何記體通道之記憶體位置之一共用晶片上互連件。
- 如請求項5之方法,其中該方法包括: 使用任何通道控制器基於該共用晶片上互連件來存取分配給任何記憶體通道之任何記憶體位置。
- 如請求項1之方法,其中執行該等神經網路運算包括:判定該共用記憶體中之共用資源之一分配;及基於該經判定之共用資源分配來執行該等神經網路運算。
- 如請求項7之方法,其中判定該共用記憶體中之共用資源之一分配包括:判定待由經選擇之一通道控制器及該系統之執行該等神經網路運算之一部分之一向量處理單元使用之高速暫存記憶體之一量。
- 如請求項8之方法,其中該共用記憶體之一共用資源係該共用記憶體之一記憶體庫,該記憶體庫經組態為該共用記憶體之與該向量處理單元通信之一循環緩衝器。
- 如請求項1之方法,其進一步包括:回應於處理該請求而使用自記憶體獲得知該資料產生該嵌入神經網路層之一嵌入輸出,且其中執行該等神經網路運算包括提供該嵌入輸出以作為另一神經網路層之輸入。
- 如請求項10之方法,其中該嵌入神經網路層係由一可訓練查找表表示,該可訓練查找表將該詞彙特徵集合中之各詞彙特徵映射至一各自數字 向量,其中該詞彙特徵集合中之各詞彙特徵經指派給經組態以將映射至該詞彙特徵之該可訓練查找表表中之一各自數字向量編入索引之一各自獨熱(one-hot)向量。
- 如請求項11之方法,其進一步包括:基於執行該等神經網路運算來更新儲存於用於該神經網路之該嵌入神經網路層之該可訓練查找表處之嵌入項。
- 如請求項12之方法,其中:更新該等嵌入項包括回應於基於該嵌入輸出運算之反向傳播梯度來更新該可訓練查找表之值以作為執行該等神經網路運算之部分。
- 一種經組態以在一硬體電路上實施一神經網路以執行神經網路運算之系統,該系統包括:一或多個處理裝置;及一或多個非暫時性機器可讀儲存裝置,其等用於儲存可藉由該一或多個處理裝置實行以引起包括以下之操作之執行之指令:接收自包括複數個記憶體通道之一記憶體獲得用於執行該等神經網路運算之資料之一請求,各記憶體通道包括複數個記憶體位置,其中該資料跨該複數個記憶體通道之該複數個記憶體位置分發,其中該資料包括藉由該神經網路之一嵌入神經網路層映射至一詞彙特徵集合中之一各自詞彙特徵的一各自數字向量;自複數個通道控制器選擇通道控制器以提取與該請求相關聯之該資 料之至少一部分,其中各通道控制器係經組態以存取:i)該複數個記憶體通道之各記憶體通道及ii)包含於該複數個記憶體通道之各記憶體通道中之該複數個記憶體位置之各記憶體位置,其中該等通道控制器之各者基於一調度演算法以略過一特定通道控制器之一選擇,從而在獲得與該請求相關聯之該資料時降低該等通道控制器之一負載不平衡,該調度演算法經組態以週期性地調整該調度演算法中之一增量參數之一值;使用經選擇之該等通道控制器藉由針對該複數個記憶體通道之一記憶體通道存取各自複數個記憶體位置來處理該請求,以獲得與該請求相關聯用於執行該等神經網路運算之該資料;回應於處理該請求而藉由經選擇之該等通道控制器自該記憶體獲得該資料;及使用自該記憶體獲得之該資料及自該硬體電路之一共用記憶體分配之資源來執行該等神經網路運算。
- 如請求項14之系統,其中該調度演算法用於將記憶體位置之各自位址分發給該複數個通道控制器之經選擇以接收一請求之任一者。
- 如請求項15之系統,其中該等操作進一步包括:接收自該記憶體獲得不同輸入之複數個請求,該複數個請求之各請求指定儲存一對應輸入之一記憶體位置之一位址;基於該調度演算法判定對應於該複數個請求之各者之一位址分配;及基於該經判定之位址分配將該複數個請求分發給該複數個通道控制 器。
- 如請求項16之系統,其中判定該位址分配包括:判定該位址分配使得經分配及分發給一對應通道控制器之位址之一各自數量在該複數個通道控制器之各者中相同。
- 如請求項15之系統,其中該系統包括經組態以容許任何通道控制器存取分配給該記憶體中之該複數個記憶體通道之任何記憶體通道之記憶體位置之一共用晶片上互連件。
- 如請求項18之系統,其中該等操作進一步包括:使用任何通道控制器基於該共用晶片上互連件來存取分配給任何記憶體通道之任何記憶體位置。
- 如請求項14之系統,其中執行該等神經網路運算包括:判定該共用記憶體中之共用資源之一分配;及基於該經判定之共用資源分配來執行該等神經網路運算。
- 如請求項20之系統,其中判定該共用記憶體中之共用資源之一分配包括:判定待由經選擇之一通道控制器及該系統之執行該等神經網路運算之一部分之一向量處理單元使用之高速暫存記憶體之一量。
- 如請求項21之系統,其中該共用記憶體之一共用資源係該共用記憶體之一記憶體庫,該記憶體庫經組態為該共用記憶體之與該向量處理單元通信之一循環緩衝器。
- 如請求項14之系統,其中該等操作進一步包括:回應於處理該請求而使用自記憶體獲得知該資料產生該嵌入神經網路層之一嵌入輸出,且其中執行該等神經網路運算包括提供該嵌入輸出以作為另一神經網路層之輸入。
- 如請求項23之系統,其中該嵌入神經網路層係由一可訓練查找表表示,該可訓練查找表將該詞彙特徵集合中之各詞彙特徵映射至一各自數字向量,其中該詞彙特徵集合中之各詞彙特徵經指派給經組態以將映射至該詞彙特徵之該可訓練查找表表中之一各自數字向量編入索引之一各自獨熱(one-hot)向量。
- 如請求項24之系統,其中該等操作進一步包括:基於執行該等神經網路運算來更新儲存於用於該神經網路之該嵌入神經網路層之該可訓練查找表處之嵌入項。
- 如請求項25之系統,其中:更新該等嵌入項包括回應於基於該嵌入輸出運算之反向傳播梯度來更新該可訓練查找表之值以作為執行該等神經網路運算之部分。
- 一種非暫時性機器可讀儲存裝置,其用於在一硬體電路上實施一神經網路以執行神經網路運算及用於儲存可藉由一或多個處理裝置實行以引起包括以下之操作之執行之指令:接收自包括複數個記憶體通道之一記憶體獲得用於執行該等神經網路運算之資料之請求,各記憶體通道包括複數個記憶體位置,其中該資料跨該複數個記憶體通道之該複數個記憶體位置分發,其中該資料包括藉由該神經網路之一嵌入神經網路層映射至一詞彙特徵集合中之一各自詞彙特徵的一各自數字向量;自複數個通道控制器選擇通道控制器以提取與該請求相關聯之該資料之至少一部分,其中各通道控制器係經組態以存取:i)該複數個記憶體通道之各記憶體通道及ii)包含於該複數個記憶體通道之各記憶體通道中之該複數個記憶體位置之各記憶體位置,其中該等通道控制器之各者基於一調度演算法以略過一特定通道控制器之一選擇,從而在獲得與該請求相關聯之該資料時降低該等通道控制器之一負載不平衡,該調度演算法經組態以週期性地調整該調度演算法中之一增量參數之一值;使用經選擇之該等通道控制器藉由針對該複數個記憶體通道之一記憶體通道存取各自複數個記憶體位置來處理該請求,以獲得與該請求相關聯用於執行該等神經網路運算之該資料;及回應於處理該請求而藉由經選擇之該等通道控制器自該記憶體獲得該資料;及使用自該記憶體獲得之該資料及自該硬體電路之一共用記憶體分配之資源來執行該等神經網路運算。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202063001216P | 2020-03-27 | 2020-03-27 | |
US63/001,216 | 2020-03-27 | ||
US16/865,539 US11222258B2 (en) | 2020-03-27 | 2020-05-04 | Load balancing for memory channel controllers |
US16/865,539 | 2020-05-04 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202207031A TW202207031A (zh) | 2022-02-16 |
TWI864227B true TWI864227B (zh) | 2024-12-01 |
Family
ID=77854823
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW110103229A TWI864227B (zh) | 2020-03-27 | 2021-01-28 | 用於記憶體通道控制器之負載平衡 |
Country Status (4)
Country | Link |
---|---|
US (2) | US11222258B2 (zh) |
EP (1) | EP4022435A1 (zh) |
TW (1) | TWI864227B (zh) |
WO (1) | WO2021194616A1 (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11347652B2 (en) * | 2020-08-31 | 2022-05-31 | Microsoft Technology Licensing, Llc | Banked memory architecture for multiple parallel datapath channels in an accelerator |
US11592984B2 (en) * | 2020-09-11 | 2023-02-28 | Seagate Technology Llc | Onboard machine learning for storage device |
US11748251B2 (en) * | 2021-01-08 | 2023-09-05 | Microsoft Technology Licensing, Llc | Storing tensors in memory based on depth |
WO2022231571A1 (en) * | 2021-04-26 | 2022-11-03 | Google Llc | Efficiently allocating memory on neural network compute tiles |
US20220398440A1 (en) * | 2021-06-10 | 2022-12-15 | Apple Inc. | Circular buffering in neural network processor |
US11609871B1 (en) * | 2021-10-07 | 2023-03-21 | Cypress Semiconductor Corporation | Integrated circuit device with crossbar to route traffic |
US12136138B2 (en) | 2021-11-11 | 2024-11-05 | Samsung Electronics Co., Ltd. | Neural network training with acceleration |
US12333625B2 (en) * | 2021-11-11 | 2025-06-17 | Samsung Electronics Co., Ltd. | Neural network training with acceleration |
TWI826216B (zh) * | 2022-12-29 | 2023-12-11 | 瑞昱半導體股份有限公司 | 記憶體控制系統與記憶體控制方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030018741A1 (en) * | 2001-07-18 | 2003-01-23 | Makio Mizuno | Storage subsystem |
TW201020939A (en) * | 2008-11-21 | 2010-06-01 | Nat Taipei University Oftechnology | High speed back-propagation neural network architecture with flexible structure and learning function |
US20160321074A1 (en) * | 2015-05-01 | 2016-11-03 | Nvidia Corporation | Programmable Vision Accelerator |
US20180189638A1 (en) * | 2016-12-31 | 2018-07-05 | Intel Corporation | Hardware accelerator template and design framework for implementing recurrent neural networks |
CN110235083A (zh) * | 2017-01-02 | 2019-09-13 | 广州异构智能科技有限公司 | 对象识别方法和系统的无监督学习 |
Family Cites Families (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5226092A (en) * | 1991-06-28 | 1993-07-06 | Digital Equipment Corporation | Method and apparatus for learning in a neural network |
US5548762A (en) * | 1992-01-30 | 1996-08-20 | Digital Equipment Corporation | Implementation efficient interrupt select mechanism |
US5828856A (en) * | 1994-01-28 | 1998-10-27 | Apple Computer, Inc. | Dual bus concurrent multi-channel direct memory access controller and method |
JP3726484B2 (ja) * | 1998-04-10 | 2005-12-14 | 株式会社日立製作所 | 記憶サブシステム |
US6601126B1 (en) * | 2000-01-20 | 2003-07-29 | Palmchip Corporation | Chip-core framework for systems-on-a-chip |
JP4188602B2 (ja) * | 2002-01-10 | 2008-11-26 | 株式会社日立製作所 | クラスタ型ディスク制御装置及びその制御方法 |
US7260113B2 (en) * | 2002-08-29 | 2007-08-21 | Lsi Corporation | Method and apparatus for balancing a request load of communication channels |
KR100532416B1 (ko) | 2003-01-18 | 2005-11-30 | 삼성전자주식회사 | 다중 소스의 다중 채널로의 할당 방법 및 시스템 |
JP4291664B2 (ja) * | 2003-10-14 | 2009-07-08 | 株式会社日立製作所 | 通信バッファ予約機能を備えるストレージ装置およびシステム |
US8407433B2 (en) | 2007-06-25 | 2013-03-26 | Sonics, Inc. | Interconnect implementing internal controls |
US8332598B2 (en) | 2005-06-23 | 2012-12-11 | Intel Corporation | Memory micro-tiling request reordering |
US7872892B2 (en) | 2005-07-05 | 2011-01-18 | Intel Corporation | Identifying and accessing individual memory devices in a memory channel |
US8010753B2 (en) * | 2005-09-28 | 2011-08-30 | International Business Machines Corporation | Systems and methods for temporarily transferring use of portions of partitioned memory between host computers |
JP2007188341A (ja) * | 2006-01-13 | 2007-07-26 | Hitachi Ltd | 記憶デバイス制御装置 |
JP2008108100A (ja) * | 2006-10-26 | 2008-05-08 | Sanyo Electric Co Ltd | 音声データ処理装置 |
US11244727B2 (en) | 2006-11-29 | 2022-02-08 | Rambus Inc. | Dynamic memory rank configuration |
US8516172B1 (en) * | 2007-08-30 | 2013-08-20 | Virident Systems, Inc. | Methods for early write termination and power failure with non-volatile memory |
US8055816B2 (en) | 2009-04-09 | 2011-11-08 | Micron Technology, Inc. | Memory controllers, memory systems, solid state drives and methods for processing a number of commands |
EP2285112A1 (en) * | 2009-08-07 | 2011-02-16 | Canon Kabushiki Kaisha | Method for sending compressed data representing a digital image and corresponding device |
US9405700B2 (en) | 2010-11-04 | 2016-08-02 | Sonics, Inc. | Methods and apparatus for virtualization in an integrated circuit |
US9417823B2 (en) * | 2011-07-12 | 2016-08-16 | Violin Memory Inc. | Memory system management |
US9335952B2 (en) * | 2013-03-01 | 2016-05-10 | Ocz Storage Solutions, Inc. | System and method for polling the status of memory devices |
US9147154B2 (en) * | 2013-03-13 | 2015-09-29 | Google Inc. | Classifying resources using a deep network |
US9430418B2 (en) | 2013-03-15 | 2016-08-30 | International Business Machines Corporation | Synchronization and order detection in a memory system |
US9465735B2 (en) | 2013-10-03 | 2016-10-11 | Qualcomm Incorporated | System and method for uniform interleaving of data across a multiple-channel memory architecture with asymmetric storage capacity |
US9582201B2 (en) | 2014-09-26 | 2017-02-28 | Western Digital Technologies, Inc. | Multi-tier scheme for logical storage management |
US20160315866A1 (en) * | 2015-04-27 | 2016-10-27 | Telefonaktiebolaget L M Ericsson (Publ) | Service based intelligent packet-in mechanism for openflow switches |
US10909329B2 (en) * | 2015-05-21 | 2021-02-02 | Baidu Usa Llc | Multilingual image question answering |
US10540588B2 (en) * | 2015-06-29 | 2020-01-21 | Microsoft Technology Licensing, Llc | Deep neural network processing on hardware accelerators with stacked memory |
US20200151837A1 (en) * | 2018-11-08 | 2020-05-14 | Sony Interactive Entertainment LLC | Method for performing legal clearance review of digital content |
-
2020
- 2020-05-04 US US16/865,539 patent/US11222258B2/en active Active
-
2021
- 2021-01-21 WO PCT/US2021/014376 patent/WO2021194616A1/en unknown
- 2021-01-21 EP EP21706086.2A patent/EP4022435A1/en active Pending
- 2021-01-28 TW TW110103229A patent/TWI864227B/zh active
- 2021-12-28 US US17/563,509 patent/US20220121918A1/en active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030018741A1 (en) * | 2001-07-18 | 2003-01-23 | Makio Mizuno | Storage subsystem |
TW201020939A (en) * | 2008-11-21 | 2010-06-01 | Nat Taipei University Oftechnology | High speed back-propagation neural network architecture with flexible structure and learning function |
US20160321074A1 (en) * | 2015-05-01 | 2016-11-03 | Nvidia Corporation | Programmable Vision Accelerator |
US20180189638A1 (en) * | 2016-12-31 | 2018-07-05 | Intel Corporation | Hardware accelerator template and design framework for implementing recurrent neural networks |
CN110235083A (zh) * | 2017-01-02 | 2019-09-13 | 广州异构智能科技有限公司 | 对象识别方法和系统的无监督学习 |
Also Published As
Publication number | Publication date |
---|---|
US11222258B2 (en) | 2022-01-11 |
US20210303978A1 (en) | 2021-09-30 |
WO2021194616A1 (en) | 2021-09-30 |
EP4022435A1 (en) | 2022-07-06 |
TW202207031A (zh) | 2022-02-16 |
US20220121918A1 (en) | 2022-04-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI864227B (zh) | 用於記憶體通道控制器之負載平衡 | |
CN110262901B (zh) | 一种数据处理方法及数据处理系统 | |
US10331997B2 (en) | Adaptive configuration of a neural network device | |
WO2020073211A1 (zh) | 运算加速器、处理方法及相关设备 | |
CN110502330A (zh) | 处理器及处理方法 | |
TWI832000B (zh) | 用於神經網路之方法及系統 | |
TWI854206B (zh) | 積體電路及使用其執行之電腦實施方法 | |
TWI775210B (zh) | 用於卷積運算的資料劃分方法及處理器 | |
KR20220045026A (ko) | 신경망 계산 가속화를 위한 하드웨어 회로 | |
CN110795226B (zh) | 利用计算机系统处理任务的方法、电子设备和存储介质 | |
CN117892769B (zh) | 神经网络训练方法、显存调度方法、系统、设备和产品 | |
Zou et al. | Distributed training large-scale deep architectures | |
TWI758223B (zh) | 具有動態最小批次尺寸之運算方法,以及用於執行該方法之運算系統及電腦可讀儲存媒體 | |
Zhang et al. | Learning driven parallelization for large-scale video workload in hybrid CPU-GPU cluster | |
CN110750363A (zh) | 计算机存储管理方法和装置、电子设备和存储介质 | |
CN112416607B (zh) | 一种提升Cache命中率的方法、系统、设备及介质 | |
Ming et al. | VIDGCN: Embracing input data diversity with a configurable graph convolutional network accelerator | |
TW202435122A (zh) | 用於硬體積體電路之張量映射單元 | |
WO2023151216A1 (zh) | 图数据处理的方法和芯片 | |
CN119806721A (zh) | 容器调度方法、装置、电子设备及介质 | |
CN116362306A (zh) | 神经网络处理装置 | |
CN117492934A (zh) | 一种基于云服务智能部署的数据处理方法及系统 |