TWI894409B - 用於神經網路硬體處理器的基於稀疏性的加速處理 - Google Patents
用於神經網路硬體處理器的基於稀疏性的加速處理Info
- Publication number
- TWI894409B TWI894409B TW110146500A TW110146500A TWI894409B TW I894409 B TWI894409 B TW I894409B TW 110146500 A TW110146500 A TW 110146500A TW 110146500 A TW110146500 A TW 110146500A TW I894409 B TWI894409 B TW I894409B
- Authority
- TW
- Taiwan
- Prior art keywords
- pair
- zero values
- data streams
- product
- data
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/544—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
- G06F7/5443—Sum of products
-
- G—PHYSICS
- G06—COMPUTING 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
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/50—Adding; Subtracting
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/52—Multiplying; Dividing
- G06F7/523—Multiplying only
-
- 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/04—Architecture, e.g. interconnection topology
- G06N3/0495—Quantised networks; Sparse networks; Compressed 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
-
- 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
- G06N3/08—Learning methods
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Mathematical Optimization (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Neurology (AREA)
- Complex Calculations (AREA)
Abstract
本案的實施例包括用於神經網路硬體處理器的基於稀疏性的加速處理的系統及方法。輸入管理器決定來自複數對資料串流中的一對資料串流的一對非零值並且從該對資料串流中擷取該對非零值。乘法器對該對非零值執行乘法運算並且產生該對非零值的乘積。累加器管理器從乘法器接收該對非零值的乘積並且將該對非零值的乘積發送到複數個累加器中的對應累加器。
Description
本案係關於計算硬體。更特定而言,本案係關於用於訓練及使用神經網路來執行推理的技術。
神經網路係用於各種不同應用(例如,影像分類、電腦視覺、自然語言處理、語音識別、寫入識別等)的機器學習模型。藉由經由神經網路運行資料集,將來自神經網路的結果與已知結果進行比較,並且基於差異更新網路參數,可出於一組目的訓練神經網路。
在一態樣中,本申請案揭示了一種系統,該系統包含:輸入管理器,經配置為決定來自複數對資料串流中的一對資料串流的一對非零值並且從該對資料串流中擷取該對非零值,其中在複數對資料串流中的每對資料串流係資料串流的不同組合;乘法器,經配置為對該對非零值執行乘法運算並且產生該對非零值的乘積;累加器管理器,經配置為從乘法器接收該對非零值的乘積;以及複數個累加器,在複數個累加器中的每個累加器經配置為儲存特定值,從累加器管理器接收來自複數對資料串流中的對應對資料串流的一對非零值的特定乘積,將該對非零值的特定乘積相加到該值以產生特定總和,及用特定總和更新特定值,其中累加器管理器進一步經配置為將該對非零值的乘積發送到複數個累加器中的對應累加器。
在另一態樣中,本申請案揭示了一種電路,該電路包含:第一電路,經配置為決定來自複數對資料串流中的一對資料串流的一對非零值並且從該對資料串流中擷取該對非零值,其中在複數對資料串流中的每對資料串流係資料串流的不同組合;第二電路,經配置為對該對非零值執行乘法運算並且產生該對非零值的乘積;第三電路,經配置為從第二電路接收該對非零值的乘積;以及複數個電路,在複數個電路中的每個電路經配置為儲存特定值,從第三電路接收來自複數對資料串流中的對應對資料串流的一對非零值的特定乘積,將該對非零值的特定乘積相加到該值以產生特定總和,及用特定總和更新特定值,其中第三電路進一步經配置為將該對非零值的乘積發送到複數個電路中的對應電路。
在又一態樣中,本申請案揭示了一種方法,該方法包含:決定來自複數對資料串流中的一對資料串流的一對非零值;從該對資料串流中擷取該對非零值,其中在複數對資料串流中的每對資料串流係資料串流的不同組合;對該對非零值執行乘法運算以產生該對非零值的乘積;將該對非零值的乘積發送到複數個累加器中的對應累加器,其中對應累加器經配置為儲存一值,將該對非零值的乘積相加到該值以產生總和,及用該總和更新該值。
在以下描述中,出於解釋的目的,闡述數個實例及具體細節以便提供對本案的透徹理解。此種實例及細節不被解釋為不適當地限制作為整體的申請專利範圍或所請求標的的元素。基於不同申請專利範圍的語言,對於本領域的技術人員而言將顯而易見的,所請求標的可包括單獨或組合的此等實例中的一些或所有特徵,並且可進一步包括對本文描述的特徵及技術的修改及等效物。
本文描述了用於神經網路硬體處理器的基於稀疏性的加速處理的技術。在一些實施例中,系統包括耦接到若干累加器的乘法器。系統經配置為接收若干對資料串流。每個累加器經配置為對一對資料串流執行累加運算。使用乘法器,系統能夠在一個執行週期中執行乘法運算。系統可在一個執行週期中執行累加運算。因此,為在給定輸入中執行乘法運算並且隨後經由累加器處理乘法運算的乘積採取了兩個執行週期。當處理資料串流對中的給定資料集合時,系統迭代地檢查來自每對資料串流的資料對以決定是否可以跳過乘法運算。例如,若來自特定對資料串流的一對資料具有至少一個零值,則系統可以跳過彼乘法及累加運算並且繼續檢查來自下一對資料串流的資料對。若來自特定對資料串流的一對資料均係非零值,則系統對其等執行乘法及累加運算。
在本申請案中描述的技術提供了優於使用神經網路硬體處理器處理的習知方法的數個益處及優點。例如,跳過對具有至少一個零值的資料對執行運算並且對均係非零值的資料對執行運算增加可以處理資料對的速度。處理此種資料的傳統方法對每一對資料執行運算。此外,使用包括乘法器及若干累加器用於若干對資料串流的硬體在對資料對的運算採取多個週期來完成的情況下改進了處理效率。可採用一個乘法器及一個累加器的習知硬體處理器的效率藉由該等硬體處理器採取來對資料對執行運算的週期數量限制。
第1圖示出了根據一些實施例的硬體系統100。如圖所示,硬體系統100包括乘法器-累加器(multiplier-accumulator; MAC) 105及多對資料串流150-165。多對資料串流150-165的每一者包括兩個資料串流。具體地,一對資料串流150包括資料串流152及154,一對資料串流155包括資料串流157及159,一對資料串流160包括資料串流162及164,並且一對資料串流165包括資料串流167及169。在一些實施例中,多對資料串流150-165的每一者藉由佇列(例如,先進先出(first in first out; FIFO)佇列)實施,該佇列經配置為從資料來源(未圖示)接收或讀取資料。
如第1圖中示出,MAC 105包括輸入資料管理器110、乘法器115、正反器120、累加器管理器125、及累加器130-145。輸入資料管理器110經配置為管理將經由系統100處理的輸入資料。如第1圖中示出,在此實例中,輸入管理器110經配置為管理四對資料串流150-165。在一些實施例中,輸入資料管理器110可決定來自特定對資料串流的一對資料以經由系統100進行處理。例如,輸入資料管理器110可以檢查來自一對資料串流150的一對資料。若該對資料均係非零值,則輸入資料管理器110將該對資料發送到乘法器115,用於處理並且迭代到一對資料串流155。若該對資料具有至少一個零值,則輸入資料管理器110丟棄該對資料並且(例如,不將該對資料發送到乘法器115)迭代到一對資料串流155。在一對資料串流155處,輸入資料管理器110檢查來自其的一對資料並且執行與針對一對資料串流150所執行者相同的運算。輸入資料管理器160重複此過程,同時迭代到一對資料串流160、迭代到一對資料串流165、迭代回一對資料串流150等。
乘法器115負責執行乘法運算。例如,當乘法器115從輸入資料管理器110接收兩個運算元時,乘法器110將兩個運算元相乘在一起以產生乘積並且將乘積輸出到正反器120。正反器120經配置為儲存並且輸出資料。例如,正反器120在執行週期期間可從乘法器115接收資料。在執行週期結束時,正反器120儲存正反器120從乘法器115接收的任何值。亦即,正反器120從乘法器115接收的值可在執行週期期間的各個時間改變,但正反器120僅儲存在執行週期結束時其從乘法器115接收的值。在執行週期開始時,正反器120將其儲存的值發送到累加器管理器125。在執行週期結束時,正反器停止發送儲存的值並且儲存其從乘法器115接收的值。
累加器130-145各自經配置為對來自該對資料串流150-165的一者的資料執行累加運算。針對此實例,累加器130經配置為針對來自一對資料串流150的資料執行累加運算,累加器135經配置為針對來自一對資料串流155的資料執行累加運算,累加器140經配置為針對來自一對資料串流160的資料執行累加運算,並且累加器145經配置為針對來自一對資料串流165的資料執行累加運算。累加器130-145的每一者經配置為儲存值。當每個累加器130-145從累加器管理器125接收值時,其將接收的值相加到其儲存的值以產生總和並且用總和更新其儲存的值。
累加器管理器125經配置為將資料從正反器120路由到累加器130-145。例如,累加器管理器125可以從正反器120接收值,該值係由來自多對資料串流150-165的一者的一對資料計算的乘積。累加器管理器125將接收的值發送到對應累加器(例如,累加器130-145的一者)。例如,若值係由來自一對資料串流160的資料計算的乘積,則累加器管理器125將值發送到累加器140。類似地,若值係由來自一對資料串流150的資料計算的乘積,則累加器125將值發送到累加器130。累加器管理器將由來自一對資料串流155的資料計算的乘積路由到累加器135並且將由來自一對資料串流165的資料計算的乘積路由到累加器145。
在此實例中,MAC 105經配置為執行乘法運算並且跨兩個執行週期的對特定對資料執行累加運算。具體地,在第一執行週期期間,乘法運算對藉由輸入資料管理器110決定的兩個運算元執行。在第一執行週期結束時將乘積儲存在正反器120中。在第二執行週期中,正反器120將乘積發送到累加器管理器125,該累加器管理器將乘積路由到累加器130-145的一者。對應累加器對乘積執行累加運算(例如,將其儲存的值與乘積相加並且用計算的總和更新其儲存的值)。
第2A圖至第2K圖示出了根據一些實施例的使用硬體系統100的基於稀疏性的加速處理的實例。第2A圖示出了將用於此實例的兩個矩陣200及205。如第2A圖所示,矩陣200係高度為3(例如,3行)、寬度為3(例如,3列)、及深度為4(例如,4層)的三維(3D)矩陣。在高度與寬度軸之間的交點處的位置可被稱為空間位置。沿著深度的軸可被稱為通道軸。
針對此實例,矩陣200經配置為沿著高度軸儲存3個元素、沿著寬度軸儲存3個元素、及沿著深度軸儲存4個元素。矩陣200的頂部行將被稱為第一行,並且矩陣200的底部行將被稱為最後行。類似地,矩陣200的最左列將被稱為第一列,並且矩陣200的最右列將被稱為最後列。在矩陣200前面的層將被稱為第一層,並且在矩陣200後面的層將被稱為最後層。在矩陣200的第一行及第一列處,第一層中的第一元素被稱為A0,第二層中的第一元素被稱為A1,第三層中的第一元素被稱為A2,並且第四層中的第一元素被稱為A3。如圖所示,在矩陣200的第一行及第二列處,第一層中的第二元素被稱為A4。第二層中的第二元素被稱為A5,第三層中的第二元素被稱為A6,並且第四層中的第二元素被稱為A7。矩陣200中的其他元素以類似方式引用。
矩陣205類似於矩陣200之處在於其亦係高度為3(例如,3行)、寬度為3(例如,3列)、及深度為4(例如,4層)的3D矩陣。此外,矩陣205經配置為沿著高度軸儲存3個元素、沿著寬度軸儲存3個元素、及沿著深度軸儲存4個元素。矩陣205中的元素以與矩陣200相同的方式引用,而將矩陣205中的元素標記為B0、B1、B2等除外。
在此實例中,矩陣乘法運算在矩陣200與205之間執行。在兩個矩陣之間的乘法運算期間,在第一矩陣中的空間維度中的元素的每個集合將乘以在第二矩陣中的空間維度中的元素的每個集合。由此,矩陣乘法運算可以經由在兩個矩陣中的空間維度中的元素集合之間的全對全點積乘法運算來執行。全對全點積乘法途徑用於此實例。第2B圖示出了在矩陣200中的元素的兩個集合(在此實例中元素A0-A3的集合及元素A4-A7的集合)與矩陣205中的元素的兩個集合(在此實例中元素B0-B3的集合及元素B4-B7的集合)之間的示例性全對全點積乘法。如圖所示,在矩陣200及205中的元素的此等集合之間的全對全點積乘法係在元素A0-A3與元素B0-B3之間的第一點積乘法、在元素A4-A7與元素B0-B3之間的第二點積乘法、在元素A0-A3與元素B4-B7之間的第三點積乘法、及在元素A4-A7與元素B4-B7之間的第四點積乘法。針對每個卷積,矩陣200中的元素乘以矩陣205中的對應元素,並且隨後將乘積相加在一起以產生最終點積。例如,在第一點積乘法中,元素A0乘以元素B0,元素A1乘以元素B1,元素A2乘以元素B2,並且元素A3乘以元素B3。此等乘法的乘積相加以產生最終點積,該點積係第一點積乘法的輸出。
第2C圖示出了針對此實例的矩陣200及205中的元素的示例值的表210。如所描繪,元素A0具有值0,元素A1具有值7,元素A2具有值78,元素A3具有值0,元素A4具有值5,元素A5-A7各自具有值0,元素B0具有值3,元素B1具有值0,元素B2具有值13,元素B3具有值31,元素B4具有值0,元素B5具有值80,元素B6具有值4,並且元素B7具有值0。
第2D圖示出了運算及對應執行週期的表215。特定而言,表215顯示了針對上文提及的四個點積乘法的運算220-295、及其中運算220-295將開始的執行週期。例如,運算220將在執行週期1中開始,運算225將在執行週期2中開始,運算230將在執行週期3中開始等。如上文提及,在此實例中使用硬體系統100用於處理資料。此外,MAC 105經配置為執行乘法運算並且跨兩個執行週期的對特定對資料執行累加運算。因此,運算220將藉由在執行週期1中使元素A0與B0相乘來開始。在執行週期2中,累加運算將對運算220中計算的乘積執行。亦在執行週期2中,運算225將藉由使元素A4與B0相乘來開始。此係可能的,因為運算225的資料對來自不同對資料串流。運算230-295將藉由將來自不同對資料串流的資料對交織到MAC 105中來以此方式執行。然而,執行運算220-295的每一者將係低效的,因為相乘的許多資料對包括零值,並且因此可以跳過。
第2E圖至第2J圖示出了基於資料的稀疏性的加速運算220-295的處理的實例。第2E圖示出了用於處理運算220-295的第一執行週期1。在執行週期1中,將來自矩陣200及205的元素讀取到實施多對資料串流150-165的佇列中。此外,初始化累加器130-145以儲存值零。接下來,輸入資料管理器110決定來自該對資料串流150-165的一者的一對資料,其中兩個值均係非零。基於表210中的示例值,在一對資料串流150的佇列開始時的該對資料(在此實例中元素A0及B0)均係零。因此,輸入資料管理器110從一對資料串流150移除該對資料並且迭代到一對資料串流155以在佇列開始時檢查該對資料(在此實例中元素A4及B0)。由於此對資料包括兩個非零值,輸入資料管理器110決定該對資料將經由MAC 105處理。
第2F圖示出了在執行週期1期間的所決定的該對資料的處理。如圖所示,一旦輸入資料管理器110決定將處理該對資料,輸入資料管理器110從一對資料串流155的佇列移除該對資料並且將其發送到乘法器115。如第2F圖中指示,乘法器115對元素A4及B0執行乘法運算以產生乘積並且將乘積發送到正反器120。在執行週期1結束時,正反器120儲存元素A4與B0的乘積。
第2G圖示出了用於處理運算220-295的第二執行週期2。針對此實例,輸入資料管理器110已繼續經由多對資料串流150-165迭代(例如,藉由查看一對資料串流160中的元素A0及B4來開始)以識別均係非零的一對值。針對包括至少一個零值的資料對,輸入資料管理器110從相應對資料串流的佇列將其移除。輸入資料管理器110直到其到達一對資料串流160中的元素A1及B5時才找到此對值。如圖所示,在找到此對資料之後,輸入資料管理器110從一對資料串流160的佇列移除該對資料並且將其發送到乘法器115。接下來,乘法器115對元素A1及B5執行乘法運算以產生乘積。隨後,如第2G圖中示出,乘法器115將乘積發送到正反器120。在執行週期2結束時,正反器120儲存元素A1與B5的乘積。在執行週期2期間,正反器120亦將來自執行週期1中的乘法運算的乘積發送到累加器管理器125。由於在執行週期1中的乘法運算的運算元係來自一對資料串流155,累加器管理器125將乘積路由到累加器135,該累加器處置一對資料串流155的資料的累加。累加器135將乘積相加到其儲存的值(在此實例中為零)以產生總和。接下來,累加器135用計算的總和更新其儲存的值。
第2H圖示出了用於處理運算220-295的第三執行週期3。在此實例中,輸入資料管理器110已繼續經由多對資料串流150-165迭代(例如,藉由查看一對資料串流165中的元素A5及B5來開始)以識別均係非零的一對值。針對包括至少一個零值的資料對,輸入資料管理器110從相應對資料串流的佇列將其移除。輸入資料管理器110直到其到達一對資料串流150中的元素A2及B2時才找到一對非零值。如第2H圖中示出,當輸入資料管理器110找到此對資料之後,輸入資料管理器110從一對資料串流150的佇列移除該對資料並且將其發送到乘法器115。隨後,乘法器115對元素A2及B2執行乘法運算以產生乘積。如第2H圖中描繪,接下來,乘法器115將乘積發送到正反器120。在執行週期3結束時,正反器120儲存元素A2與B2的乘積。此外,在執行週期3期間,正反器120將來自執行週期2中的乘法運算的乘積發送到累加器管理器125。由於在執行週期2中的乘法運算的運算元係來自一對資料串流160,累加器管理器125將乘積路由到累加器140,該累加器處置一對資料串流160的資料的累加。累加器140將乘積相加到其儲存的值(在此實例中為零)以產生總和。隨後,累加器140用計算的總和更新其儲存的值。
第2I圖示出了用於處理運算220-295的第四執行週期4。針對此實例,輸入資料管理器110已繼續經由多對資料串流150-165迭代(例如,藉由查看一對資料串流155中的元素A6及B2來開始)以識別均係非零的一對值。針對包括至少一個零值的資料對,輸入資料管理器110從相應對資料串流的佇列將其移除。輸入資料管理器110直到其到達一對資料串流160中的元素A2及B6時才找到一對非零值。如第2I圖所示,一旦輸入資料管理器110找到此對資料,輸入資料管理器110就從一對資料串流160的佇列移除該對資料並且將其發送到乘法器115。隨後,乘法器115對元素A2及B6執行乘法運算以產生乘積。如第2I圖中示出,乘法器115將乘積發送到正反器120。在執行週期4結束時,正反器120儲存元素A2與B6的乘積。在執行週期4期間,正反器120亦將來自執行週期3中的乘法運算的乘積發送到累加器管理器125。因為在執行週期3中的乘法運算的運算元係來自一對資料串流150,累加器管理器125將乘積路由到累加器130,該累加器處置一對資料串流150的資料的累加。隨後,累加器130將乘積相加到其儲存的值(在此實例中為零)以產生總和。隨後,累加器130用計算的總和更新其儲存的值。
第2J圖示出了用於處理運算220-295的第五執行週期5。在此實例中,輸入資料管理器110已繼續經由多對資料串流150-165迭代(例如,藉由查看一對資料串流165中的元素A6及B6來開始)以識別均係非零的一對值。針對包括至少零值的資料對,輸入資料管理器110從相應對資料串流的佇列將其移除。輸入資料管理器110經由所有剩餘對資料迭代並且未找到一對非零值。因此,輸入資料管理器110未將一對資料發送到乘法器115。此外,在執行週期5期間,正反器120將來自執行週期4中的乘法運算的乘積發送到累加器管理器125。由於在執行週期4中的乘法運算的運算元係來自一對資料串流160,累加器管理器125將乘積路由到累加器140。接下來,累加器130將乘積相加到其儲存的值以產生總和。隨後,累加器130用計算的總和更新其儲存的值。
第2K圖示出了表296,該表顯示藉由MAC 105執行以處理運算220-295的實際運算,以及其中運算開始的執行週期。如圖所示,運算225在執行週期1中開始,運算250在執行週期2中開始,運算260在執行週期3中開始,並且運算270在執行週期4中開始。由於每個運算採取兩個週期來完成,運算225在執行週期2中完成,運算270在執行週期3中完成,運算260在執行週期4中完成,並且運算270在執行週期5中完成。
上文藉由參考第2A圖至第2K圖描述的實例示出了沿著深度維度及空間維度兩者掃描非零值的處理技術。檢查兩個維度允許處理的加速增加。此外,第2A圖至第2K圖圖示了一個MAC如何用於處理兩個矩陣的一部分。在一些實施例中,此種MAC的陣列可以用於處理整對矩陣或矩陣的至少較大部分。
第3圖示出了根據一些實施例的示例性硬體系統300。如圖所示,硬體系統300包括輸入佇列305、輸入佇列310、MAC陣列315、及輸出佇列320。輸入佇列305經配置為儲存第一矩陣A的元素並且輸入佇列310經配置為儲存第二矩陣B的元素。如所示出,輸入佇列305為MAC陣列315的每行提供五個條目。每個條目包括16個單元。條目中的每個單元係用於MAC陣列315中的MAC的對應行中的對應MAC。每個單元包括16個讀取指針以服務MAC陣列315中的MAC的對應行中的MAC的16個列。來自MAC陣列315中的一行MAC的16個讀取指針獨立於彼此移動以從5個條目中的任一者讀取資料。每個單元經配置為儲存來自矩陣的兩個空間位置的元素的兩個集合。參見第2A圖,舉例而言,每個單元可以儲存針對矩陣200中的第一空間位置的元素A0-A3的第一集合、及針對矩陣200中的第二空間位置的元素A4-A7的第二集合。由此,每個單元儲存總共8個元素。
輸入佇列310具有類似結構。如第3圖中描繪,輸入佇列310為MAC陣列315的每列提供五個條目。每個條目包括16個單元。條目中的每個單元係用於MAC陣列315中的MAC的對應列中的對應MAC。每個單元包括16個讀取指針以服務MAC陣列315中的MAC的對應列中的MAC的16個行。來自MAC陣列315中的一列MAC的16個讀取指針獨立於彼此移動以從5個條目中的任一者讀取資料。每個單元經配置為儲存來自矩陣的兩個空間位置的元素的兩個集合。參見第2A圖,舉例而言,每個單元可以儲存針對矩陣205中的第一空間位置的元素B0-B3的第一集合、及針對矩陣205中的第二空間位置的元素B4-B7的第二集合。
如第3圖中示出,MAC陣列315係針對總共256個MAC的MAC的16x16陣列。在此實例中,MAC陣列315中的每個MAC使用MAC 105實施。因此,MAC陣列315中的每個MAC可以與上文藉由參考第2A圖至第2K圖解釋者類似的方式加速處理其相應資料。輸出佇列320經配置為儲存藉由MAC陣列315中的每個MAC產生的輸出。由於MAC陣列315中的每個MAC經配置為產生四個輸出,輸出佇列320經配置為儲存1024個輸出(256 MAC×4個輸出)。
第4圖示出了根據一些實施例的基於稀疏性的加速處理的過程400。在一些實施例中,MAC 105執行過程400。過程400藉由於410決定來自複數對資料串流中的一對資料串流的一對非零值來開始。參見第1圖及第2E圖,輸入資料管理器110決定來自該對資料串流150-165的一者的一對資料,其中兩個值均係非零。在此實例中,決定在佇列開始時的該對資料(元素A4及B0)包括兩個非零值。
接下來,過程400於420從該對資料串流擷取該對非零值。在複數對資料串流中的每對資料串流係資料串流的不同組合。參見第1圖及第2F圖,一旦輸入資料管理器決定在一對資料串流155中的元素A4及B0將經由MAC 105處理,輸入資料管理器110從一對資料串流155的佇列移除該對資料並且將其發送到乘法器115。
過程400隨後於430對該對非零值執行乘法運算以產生該對非零值的乘積。參見第1圖及第2F圖,乘法器115對元素A4及B0執行乘法運算以產生乘積並且將乘積發送到正反器120,該正反器儲存元素A4與B0的乘積。最終,過程400於440將該對非零值的乘積發送到複數個累加器中的對應累加器。對應累加器經配置為儲存值、將該對非零值的乘積相加到該值以產生總和、及用總和更新該值。參見第1圖及第2G圖,舉例而言,正反器120將來自對元素A4及B0的乘法運算的乘積發送到累加器管理器125。乘法運算的運算元係來自一對資料串流155。由此,累加器管理器125將乘積路由到累加器135,該累加器處置一對資料串流155的資料的累加。累加器135將乘積相加到其儲存的值以產生總和並且用計算的總和更新其儲存的值。
上文描述的技術可在經配置為處理神經網路的廣泛的電腦系統中實施。第5圖描繪了可以用於實施在以上揭示中描述的技術的示例性電腦系統500的簡化方塊圖。如第5圖所示,電腦系統500包括一或多個處理器502,該等處理器經由匯流排子系統504與多個週邊裝置通訊。此等週邊裝置可包括儲存子系統506(例如,包含記憶體子系統508及檔案儲存子系統510)及網路介面子系統516。一些電腦系統可進一步包括使用者介面輸入裝置512及/或使用者介面輸出裝置514。
匯流排子系統504可以提供用於使電腦系統500的各個部件及子系統如意欲彼此通訊的機制。儘管將匯流排子系統504示意性圖示為單個匯流排,匯流排子系統的替代實施例可以利用多個匯流排。
網路介面子系統516可以用作在電腦系統500與其他電腦系統或網路之間通訊資料的介面。網路介面子系統516的實施例可以包括例如乙太網路、Wi-Fi、及/或蜂巢適配器、數據機(電話、衛星、電纜、ISDN等)、數位用戶線路(digital subscriber line; DSL)單元、及/或類似者。
儲存子系統506包括記憶體子系統508及檔案/磁碟儲存子系統510。子系統508及510以及本文描述的其他記憶體係非暫時性電腦可讀取儲存媒體的實例,該儲存媒體可以儲存可執行程式碼及/或提供本案的實施例的功能的資料。
記憶體子系統508包括多個記憶體,包括在程式執行期間用於儲存指令及資料的主隨機存取記憶體(random access memory; RAM) 518及其中儲存固定指令的唯讀記憶體(read-only memory; ROM) 520。檔案儲存子系統510可以提供用於程式及資料檔案的永久(例如,非揮發性)儲存,並且可以包括磁性或固態硬碟驅動器、光學驅動器連同相關聯的可移除媒體(例如,CD-ROM、DVD、藍光等)、基於可移除快閃記憶體的驅動器或卡、及/或在本領域中已知的其他類型的儲存媒體。
應當瞭解,電腦系統500係說明性的並且具有與系統500相比較多或較少的部件的許多其他配置係可能的。
第6圖示出了根據一些實施例的神經網路處理系統。在各個實施例中,根據本案的神經網路可在包含一或多個神經網路處理器的硬體環境中實施及訓練。例如,神經網路處理器可指各種圖形處理單元(graphics processing unit; GPU)(例如,用於處理藉由Nvidia Corp®產生的神經網路的GPU)、現場可程式設計閘陣列(field programmable gate array; FPGA)(例如,用於處理藉由Xilinx®產生的神經網路的FPGA)、或各種特殊應用積體電路(application specific integrated circuit; ASIC)或神經網路處理器,包含針對神經網路計算最佳化的硬體架構。在此示例性環境中,一或多個伺服器602(其可包含上文在第5圖中示出的架構)可在通訊網路601(例如,開關、路由器等)上耦接到複數個控制器610(1)-610(M)。控制器610(1)-610(M)亦可包含在上文第5圖中示出的架構。每個控制器610(1)-610(M)可耦接到一或多個NN處理器,諸如處理器611(1)-611(N)及612(1)-612(N),例如。NN處理器611(1)-611(N)及612(1)-612(N)可包括針對神經網路處理(諸如訓練或推理)最佳化的功能處理區塊及記憶體的各種配置。NN處理器針對神經網路計算最佳化。在一些實施例中,每個NN處理器可以藉由硬體系統100或硬體系統300實施。伺服器602可用NN模型以及到模型的輸入資料配置控制器610,該等模型可藉由NN處理器611(1)-611(N)及612(1)-612(N)並行載入及執行,例如。模型可包括如上文描述的層及相關聯的權重,例如。NN處理器可載入模型並且應用輸入以產生輸出結果。NN處理器亦可實施本文描述的訓練演算法,例如。
另外的示例性實施例
在各個實施例中,本案包括用於基於稀疏性的加速處理的系統、方法、及設備。本文描述的技術可體現在儲存可藉由電腦系統執行的程式的非暫時性機器可讀取媒體中,該程式包含用於執行本文描述的技術的指令集。在一些實施例中,一種系統包括處理單元集合及儲存指令的非暫時性機器可讀取媒體,當藉由處理單元集合中的至少一個處理單元執行時,該等指令導致至少一個處理單元執行上文描述的技術。在一些實施例中,非暫時性機器可讀取媒體可係記憶體,例如,該記憶體可耦接到一或多個控制器或一或多個人工智慧處理器,例如。
以下技術可單獨或以不同組合體現並且可進一步用本文描述的其他技術體現。
例如,在一個實施例中,本案包括一種系統,該系統包含:輸入管理器,經配置為決定來自複數對資料串流中的一對資料串流的一對非零值並且從該對資料串流中擷取該對非零值,其中在複數對資料串流中的每對資料串流係資料串流的不同組合;乘法器,經配置為對該對非零值執行乘法運算並且產生該對非零值的乘積;累加器管理器,經配置為從乘法器接收該對非零值的乘積;以及複數個累加器,在複數個累加器中的每個累加器經配置為儲存特定值,從累加器管理器接收來自複數對資料串流中的對應對資料串流的一對非零值的特定乘積,及將該對非零值的特定乘積相加到該值以產生特定總和,並且用特定總和更新特定值。累加器管理器進一步經配置為將該對非零值的乘積發送到複數個累加器中的對應累加器。
在一個實施例中,輸入管理器決定來自該對資料串流的該對非零值並且在第一執行週期期間從該對資料串流中擷取該對非零值。乘法器在第一執行週期期間對該對非零值執行乘法運算。
在一個實施例中,在接收該對非零值的乘積的複數個累加器中的累加器執行將該對非零值的乘積相加到一值以產生總和並且在第二執行週期期間用該總和更新該值。
在一個實施例中,該對非零值係第一對非零值,在複數對資料串流中的該對資料串流係第一對資料串流,乘法運算係第一乘法運算,並且乘積係第一乘積。輸入管理器進一步經配置為決定來自複數對資料串流中的第二對資料串流的第二對非零值並且從第二對資料串流中擷取第二對非零值。乘法器進一步經配置為對第二對非零值執行第二乘法運算並且產生第二對非零值的第二乘積。
在一個實施例中,輸入管理器決定來自第二對資料串流的第二對非零值並且在第二執行週期期間從第二對資料串流中擷取第二對非零值。乘法器在第二執行週期期間對該對非零值執行乘法運算。
在一個實施例中,累加器係第一累加器,值係第一值,並且總和係第一總和。在接收第二對非零值的第二乘積的複數個累加器中的第二累加器執行將第二對非零值的第二乘積相加到第二值以產生第二總和並且在第三執行週期期間用第二總和更新第二值。
在一個實施例中,本案進一步包含複數個佇列。在複數個佇列中的第一佇列經配置為儲存來自該對資料串流中的第一資料串流的第一資料集合並且在複數個佇列中的第二佇列經配置為儲存來自該對資料串流中的第二資料串流的第二資料集合。輸入管理器藉由從第一及第二佇列中擷取該對非零值來從該對資料串流中擷取該對非零值。
在一個實施例中,第一資料集合包含沿著第一3D矩陣中的第一空間位置的第一深度軸的第一三維(3D)矩陣中的元素,並且第二資料集合包含沿著第二3D矩陣中的第二空間位置的第二深度軸的第二3D矩陣中的元素。
在一個實施例中,每對資料串流提供用於基於在第一矩陣中的元素與第二矩陣中的元素之間的全對全點積乘法來在第一矩陣與第二矩陣之間執行矩陣乘法運算的資料。
在一個實施例中,在複數對資料串流中的第一對資料串流中的第一資料串流及在複數對資料串流中的第二對資料串流中的第二資料串流使用相同的資料來源。
以上描述說明本案的各個實施例連同可如何實施特定實施例的態樣的實例。以上實例不應當被認為係唯一的實施例,並且經提供以說明如藉由以下申請專利範圍定義的特定實施例的靈活性及優點。基於以上揭示內容及以下申請專利範圍,可在不脫離如由申請專利範圍定義的本案的範疇之情況下採用其他佈置、實施例、實施方式、及等效物。
1:執行週期
2:執行週期
3:執行週期
4:執行週期
5:執行週期
6:執行週期
7:執行週期
8:執行週期
9:執行週期
10:執行週期
11:執行週期
12:執行週期
13:執行週期
14:執行週期
15:執行週期
16:執行週期
31:值
78:值
80:值
100:硬體系統
105:乘法器-累加器(MAC)
110:輸入資料管理器
115:乘法器
120:正反器
125:累加器管理器
130:累加器
135:累加器
140:累加器
145:累加器
150:資料串流
152:資料串流
154:資料串流
155:資料串流
157:資料串流
159:資料串流
160:資料串流
162:資料串流
164:資料串流
165:資料串流
167:資料串流
169:資料串流
200:矩陣
205:矩陣
210:表
215:表
220:運算
225:運算
230:運算
235:運算
240:運算
245:運算
250:運算
255:運算
260:運算
265:運算
270:運算
275:運算
280:運算
285:運算
290:運算
295:運算
296:表
300:硬體系統
305:輸入佇列
310:輸入佇列
315:MAC陣列
320:輸出佇列
400:過程
410:操作
420:操作
430:操作
440:操作
500:電腦系統
502:處理器
504:匯流排子系統
506:儲存子系統
508:記憶體子系統
510:檔案儲存子系統
512:使用者介面輸入裝置
514:使用者介面輸出裝置
516:網路介面子系統
518:主隨機存取記憶體(RAM)
520:唯讀記憶體(ROM)
601:通訊網路
602:伺服器
610(1):控制器
610(M):控制器
611(1):處理器
611(N):處理器
612(1):處理器
612(N):處理器
A0:元素
A1:元素
A2:元素
A3:元素
A4:元素
A5:元素
A6:元素
A7:元素
B0:元素
B1:元素
B2:元素
B3:元素
B4:元素
B5:元素
B6:元素
B7:元素
本案的各個實施例藉由實例的方式示出並且在附圖的圖式中不作限制。
第1圖示出了根據一些實施例的硬體系統。
第2A圖至第2K圖示出了根據一些實施例的使用第1圖中示出的硬體系統的基於稀疏性的加速處理的實例。
第3圖示出了根據一些實施例的示例性硬體系統。
第4圖示出了根據一些實施例的基於稀疏性的加速處理的過程。
第5圖描繪了根據一些實施例的示例性電腦系統的簡化方塊圖。
第6圖示出了根據一些實施例的神經網路處理系統。
國內寄存資訊(請依寄存機構、日期、號碼順序註記)
無
國外寄存資訊(請依寄存國家、機構、日期、號碼順序註記)
無
100:硬體系統
105:乘法器-累加器(MAC)
110:輸入資料管理器
115:乘法器
120:正反器
125:累加器管理器
130:累加器
135:累加器
140:累加器
145:累加器
150:資料串流
152:資料串流
154:資料串流
155:資料串流
157:資料串流
159:資料串流
160:資料串流
162:資料串流
164:資料串流
165:資料串流
167:資料串流
169:資料串流
Claims (20)
- 一種用於加速處理的系統,包含:一輸入管理器,經配置為決定來自複數對資料串流中的一對資料串流的一對非零值並且從該對資料串流中擷取該對非零值,其中該複數對資料串流中的每對資料串流係資料串流的一不同組合;一乘法器,經配置為對該對非零值執行一乘法運算並且產生該對非零值的一乘積;一累加器管理器,經配置為從該乘法器接收該對非零值的該乘積;以及複數個累加器,該複數個累加器中的每個累加器經配置為儲存一特定值,從該累加器管理器接收來自該複數對資料串流中的一對應對資料串流的一對非零值的一特定乘積,將該對非零值的該特定乘積相加到該值以產生一特定總和,及用該特定總和更新該特定值,其中該累加器管理器進一步經配置為將該對非零值的該乘積發送到該複數個累加器中的該對應累加器。
- 如請求項1所述之系統,其中該輸入管理器決定來自該對資料串流的該對非零值並且在一第一執行週期期間從該對資料串流中擷取該對非零值,其中該乘法器在該第一執行週期期間對該對非零值執行該乘法運算。
- 如請求項2所述之系統,其中在接收該對非零值的該乘積的該複數個累加器中的一累加器執行將該對非零值的該乘積相加到一值以產生一總和並且在一第二執行週期期間用該總和更新該值。
- 如請求項3所述之系統,其中該對非零值係一第一對非零值,其中該複數對資料串流中的該對資料串流係一第一對資料串流,其中該乘法運算係一第一乘法運算,其中該乘積係一第一乘積,其中該輸入管理器進一步經配置為決定來自該複數對資料串流中的一第二對資料串流的一第二對非零值並且從該第二對資料串流中擷取該第二對非零值,其中該乘法器進一步經配置為對該第二對非零值執行一第二乘法運算並且產生該第二對非零值的一第二乘積。
- 如請求項4所述之系統,其中該輸入管理器決定來自該第二對資料串流的該第二對非零值並且在該第二執行週期期間從該第二對資料串流中擷取該第二對非零值,其中該乘法器在該第二執行週期期間對該對非零值執行該乘法運算。
- 如請求項5所述之系統,其中該累加器係一第一累加器,其中該值係一第一值,其中該總和係一第一總和,其中在接收該第二對非零值的該第二乘積的該複數個累加器中的一第二累加器執行將該第二對非零值的該第二乘積相加到一第二值以產生一第二總和並且在一第三執行週期期間用該第二總和更新該第二值。
- 如請求項1所述之系統,進一步包含複數個佇列,其中該複數個佇列中的一第一佇列經配置為儲存來自該對資料串流中的一第一資料串流的一第一資料集合並且該複數個佇列中的一第二佇列經配置為儲存來自該對資料串流中的一第二資料串流的一第二資料集合,其中該輸入管理器藉由從該等第一及第二佇列中擷取該對非零值來從該對資料串流中擷取該對非零值。
- 如請求項7所述之系統,其中該第一資料集合包含沿著一第一三維(3D)矩陣中的一第一空間位置的一第一深度軸的該第一3D矩陣中的元素,並且該第二資料集合包含沿著一第二3D矩陣中的一第二空間位置的一第二深度軸的該第二3D矩陣中的元素。
- 如請求項1所述之系統,每對資料串流提供用於基於在一第一矩陣中的元素與一第二矩陣中的元素之間的一全對全點積乘法來在該第一矩陣與該第二矩陣之間執行一矩陣乘法運算的資料。
- 如請求項1所述之系統,其中在該複數對資料串流中的一第一對資料串流中的一第一資料串流及在該複數對資料串流中的一第二對資料串流中的一第二資料串流使用一相同的資料來源。
- 一種電路,包含:一第一電路,經配置為決定來自複數對資料串流中的一對資料串流的一對非零值並且從該對資料串流中擷取該對非零值,其中該複數對資料串流中的每對資料串流係資料串流的一不同組合;一第二電路,經配置為對該對非零值執行一乘法運算並且產生該對非零值的一乘積;一第三電路,經配置為從該第二電路接收該對非零值的該乘積;以及複數個電路,該複數個電路中的每個電路經配置為儲存一特定值,從該第三電路接收來自該複數對資料串流中的一對應對資料串流的一對非零值的一特定乘積,將該對非零值的該特定乘積相加到該值以產生一特定總和,及用該特定總和更新該特定值,其中該第三電路進一步經配置為將該對非零值的該乘積發送到該複數個電路中的該對應電路。
- 如請求項11所述之電路,其中該第一電路決定來自該對資料串流的該對非零值並且在一第一執行週期期間從該對資料串流中擷取該對非零值,其中該第二電路在該第一執行週期期間對該對非零值執行該乘法運算。
- 如請求項12所述之電路,其中在接收該對非零值的該乘積的該複數個電路中的一電路執行將該對非零值的該乘積相加到一值以產生一總和並且在一第二執行週期期間用該總和更新該值。
- 如請求項13所述之電路,其中該對非零值係一第一對非零值,其中該複數對資料串流中的該對資料串流係一第一對資料串流,其中該乘法運算係一第一乘法運算,其中該乘積係一第一乘積,其中該第一電路進一步經配置為決定來自該複數對資料串流中的一第二對資料串流的一第二對非零值並且從該第二對資料串流中擷取該第二對非零值,其中該第二電路進一步經配置為對該第二對非零值執行一第二乘法運算並且產生該第二對非零值的一第二乘積。
- 如請求項14所述之電路,其中該第一電路決定來自該第二對資料串流的該第二對非零值並且在該第二執行週期期間從該第二對資料串流中擷取該第二對非零值,其中該第二電路在該第二執行週期期間對該對非零值執行該乘法運算。
- 如請求項15所述之電路,其中該電路係一第一電路,其中該值係一第一值,其中該總和係一第一總和,其中在接收該第二對非零值的該第二乘積的該複數個電路中的一第二電路執行將該第二對非零值的該第二乘積相加到一第二值以產生一第二總和並且在一第三執行週期期間用該第二總和更新該第二值。
- 一種用於加速處理的方法,包含以下步驟:決定來自複數對資料串流中的一對資料串流的一對非零值;從該對資料串流中擷取該對非零值,其中該複數對資料串流中的每對資料串流係資料串流的一不同組合;對該對非零值執行一乘法運算以產生該對非零值的一乘積;將該對非零值的該乘積發送到複數個累加器中的一對應累加器,其中該對應累加器經配置為儲存一值、將該對非零值的該乘積相加到該值以產生一總和、及用該總和更新該值。
- 如請求項17所述之方法,進一步包含以下步驟:將來自該對資料串流中的一第一資料串流的一第一資料集合儲存在經配置為儲存的複數個佇列中的一第一佇列中;以及將來自該對資料串流中的一第二資料串流的一第二資料集合儲存在該複數個佇列中的一第二佇列中,其中從該對資料串流中擷取該對非零值包含從儲存該對非零值的該等第一及第二佇列中擷取該對非零值。
- 如請求項18所述之方法,其中該第一資料集合包含沿著一第一三維(3D)矩陣中的一第一空間位置的一第一深度軸的該第一3D矩陣中的元素,並且該第二資料集合包含沿著一第二3D矩陣中的一第二空間位置的一第二深度軸的該第二3D矩陣中的元素。
- 如請求項17所述之方法,每對資料串流提供用於基於在一第一矩陣中的元素與一第二矩陣中的元素之間的一全對全乘積乘法來在該第一矩陣與該第二矩陣之間執行一矩陣乘法運算的資料。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US17/149,606 | 2021-01-14 | ||
| US17/149,606 US11853717B2 (en) | 2021-01-14 | 2021-01-14 | Accelerating processing based on sparsity for neural network hardware processors |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| TW202234228A TW202234228A (zh) | 2022-09-01 |
| TWI894409B true TWI894409B (zh) | 2025-08-21 |
Family
ID=79282983
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| TW110146500A TWI894409B (zh) | 2021-01-14 | 2021-12-13 | 用於神經網路硬體處理器的基於稀疏性的加速處理 |
Country Status (3)
| Country | Link |
|---|---|
| US (1) | US11853717B2 (zh) |
| TW (1) | TWI894409B (zh) |
| WO (1) | WO2022154913A1 (zh) |
Families Citing this family (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20220300575A1 (en) * | 2021-03-22 | 2022-09-22 | International Business Machines Corporation | Determining triangles in graph data structures using crosspoint array |
Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20120113133A1 (en) * | 2010-11-04 | 2012-05-10 | Shpigelblat Shai | System, device, and method for multiplying multi-dimensional data arrays |
| US9529590B2 (en) * | 2010-06-11 | 2016-12-27 | Massachusetts Institute Of Technology | Processor for large graph algorithm computations and matrix operations |
| TW202026858A (zh) * | 2018-09-28 | 2020-07-16 | 美商高通公司 | 在深度神經網路中利用啟動稀疏性 |
| US20200279133A1 (en) * | 2017-04-04 | 2020-09-03 | Hailo Technologies Ltd. | Structured Sparsity Guided Training In An Artificial Neural Network |
Family Cites Families (8)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US9317482B2 (en) | 2012-10-14 | 2016-04-19 | Microsoft Technology Licensing, Llc | Universal FPGA/ASIC matrix-vector multiplication architecture |
| US10528864B2 (en) | 2016-08-11 | 2020-01-07 | Nvidia Corporation | Sparse convolutional neural network accelerator |
| US10891538B2 (en) | 2016-08-11 | 2021-01-12 | Nvidia Corporation | Sparse convolutional neural network accelerator |
| US10360163B2 (en) * | 2016-10-27 | 2019-07-23 | Google Llc | Exploiting input data sparsity in neural network compute units |
| US10346944B2 (en) | 2017-04-09 | 2019-07-09 | Intel Corporation | Machine learning sparse computation mechanism |
| US10482156B2 (en) | 2017-12-29 | 2019-11-19 | Facebook, Inc. | Sparsity-aware hardware accelerators |
| US11995533B1 (en) * | 2018-12-05 | 2024-05-28 | Perceive Corporation | Executing replicated neural network layers on inference circuit |
| US11507838B2 (en) | 2019-06-28 | 2022-11-22 | Intel Corporation | Methods and apparatus to optimize execution of a machine learning model |
-
2021
- 2021-01-14 US US17/149,606 patent/US11853717B2/en active Active
- 2021-12-10 WO PCT/US2021/062719 patent/WO2022154913A1/en not_active Ceased
- 2021-12-13 TW TW110146500A patent/TWI894409B/zh active
Patent Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US9529590B2 (en) * | 2010-06-11 | 2016-12-27 | Massachusetts Institute Of Technology | Processor for large graph algorithm computations and matrix operations |
| US20120113133A1 (en) * | 2010-11-04 | 2012-05-10 | Shpigelblat Shai | System, device, and method for multiplying multi-dimensional data arrays |
| US20200279133A1 (en) * | 2017-04-04 | 2020-09-03 | Hailo Technologies Ltd. | Structured Sparsity Guided Training In An Artificial Neural Network |
| TW202026858A (zh) * | 2018-09-28 | 2020-07-16 | 美商高通公司 | 在深度神經網路中利用啟動稀疏性 |
Also Published As
| Publication number | Publication date |
|---|---|
| US11853717B2 (en) | 2023-12-26 |
| TW202234228A (zh) | 2022-09-01 |
| WO2022154913A1 (en) | 2022-07-21 |
| US20220222043A1 (en) | 2022-07-14 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN111684473B (zh) | 提高神经网络阵列的性能 | |
| CN111639701B (zh) | 一种图像特征提取的方法、系统、设备及可读存储介质 | |
| WO2017116924A1 (en) | Neural network training performance optimization framework | |
| CN120893470A (zh) | 一种支持较少位数定点数的神经网络运算的装置和方法 | |
| CN111709415B (zh) | 目标检测方法、装置、计算机设备和存储介质 | |
| US12080086B2 (en) | Sparse-aware convolution and techniques for acceleration thereof | |
| KR20190062303A (ko) | 폴드된 특징 데이터에 대한 컨볼루션 연산을 수행하기 위한 방법 및 장치 | |
| US12591768B2 (en) | Deep learning acceleration with mixed precision | |
| US20230068450A1 (en) | Method and apparatus for processing sparse data | |
| WO2022062391A1 (zh) | 一种加速rnn网络的系统、方法及存储介质 | |
| CN111047025B (zh) | 一种卷积计算方法及装置 | |
| WO2025044276A1 (zh) | 数据处理方法、装置、计算机设备及存储介质 | |
| TW202234228A (zh) | 用於神經網路硬體處理器的基於稀疏性的加速處理 | |
| US20230206041A1 (en) | Deep learning acceleration with mixed precision | |
| US20200026998A1 (en) | Information processing apparatus for convolution operations in layers of convolutional neural network | |
| CN119002831B (zh) | 一种基于改进的大语言模型推理运行框架的数据处理方法 | |
| CN109634556B (zh) | 一种乘累加器及累加输出方法 | |
| CN116167425B (zh) | 一种神经网络加速方法、装置、设备及介质 | |
| CN116578425B (zh) | 一种基于光栅化的负载均衡方法及系统 | |
| US12547882B2 (en) | Deep learning acceleration with mixed precision | |
| US20230206042A1 (en) | Deep learning acceleration with mixed precision | |
| US20230206045A1 (en) | Deep learning acceleration with mixed precision | |
| CN113407904B (zh) | 兼容多维度卷积神经网络的Winograd处理方法、系统及介质 | |
| CN112183711B (zh) | 使用像素通道置乱的卷积神经网络的演算方法与系统 | |
| CN116542294A (zh) | 一种适用于大卷积核的三维Winograd嵌套方法 |