TWI759361B - 用於稀疏神經網路加速的架構、方法、電腦可讀取媒體和裝備 - Google Patents

用於稀疏神經網路加速的架構、方法、電腦可讀取媒體和裝備 Download PDF

Info

Publication number
TWI759361B
TWI759361B TW106140114A TW106140114A TWI759361B TW I759361 B TWI759361 B TW I759361B TW 106140114 A TW106140114 A TW 106140114A TW 106140114 A TW106140114 A TW 106140114A TW I759361 B TWI759361 B TW I759361B
Authority
TW
Taiwan
Prior art keywords
operands
queues
pair
mar
operand
Prior art date
Application number
TW106140114A
Other languages
English (en)
Other versions
TW201824095A (zh
Inventor
葉堤許吉瑞許 土拉克西亞
賈維德 賈法瑞
艾姆瑞特 潘達
卡蘭維爾 恰薩
Original Assignee
美商高通公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 美商高通公司 filed Critical 美商高通公司
Publication of TW201824095A publication Critical patent/TW201824095A/zh
Application granted granted Critical
Publication of TWI759361B publication Critical patent/TWI759361B/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • General Engineering & Computer Science (AREA)
  • Neurology (AREA)
  • Computational Linguistics (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Evolutionary Computation (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • General Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Advance Control (AREA)
  • Complex Calculations (AREA)
  • Image Analysis (AREA)

Abstract

提供了一種用於稀疏神經網路的方法、電腦可讀取媒體、和裝備。該裝備可包括硬體加速器。該裝備可為要由MAR單元處理的每一運算元對決定該對中的兩個運算元是否都非零。該裝備可在要由MAR單元處理的運算元對中的一運算元為零時阻止該運算元對被載入到MAR單元的乘法器。該裝備可在該運算元對中的兩個運算元都非零時將該運算元對置於複數個佇列之一中。

Description

用於稀疏神經網路加速的架構、方法、電腦可讀取媒體和裝 備
本專利申請案主張於2016年12月29日提出申請的題為「AN ARCHITECTURE FOR SPARSE NEURAL NETWORK ACCELERATION(用於稀疏神經網路加速的架構)」的美國專利申請案第15/393,670號的權益,其經由援引全部明確納入於此。
本案一般係關於用於人工神經網路的計算系統,且更具體而言係關於用於深神經網路的硬體加速器。
可包括一群互連的人工神經元的人工神經網路是一種計算設備或者可表示將由計算設備執行的方法。人工神經網路可具有生物學神經網路中的對應的結構及/或功能。然而,人工神經網路可為其中傳統計算技術可能是麻煩的、不切實際的、或不勝任的某些應用提供有用的計算技術。由於人工神經網路能從觀察中推斷出功能,因此此類網路在因任務或資料的複雜度使得經由一般技術來設計該功能較為麻煩的應用中可以是有用的。
在計算中,硬體加速是使用電腦硬體來比用在較通用的CPU上執行的軟體更有可能地更高效地執行某些功能。執行加速的硬體可被稱為硬體加速器。硬體加速器可經由允許較大併發性、具有用於演算法中的臨時性的特定資料路徑、以及可能降低指令控制的管理負擔來改進特定演算法的執行。
迴旋神經網路是一種前饋人工神經網路。迴旋神經網路可包括神經元集合,其中每個神經元具有感受野並且共同地拼出一輸入空間。迴旋神經網路(CNN)具有眾多應用。具體而言,CNN已被廣泛使用於模式辨識和分類領域。
深迴旋神經網路(DCN)已經在分類問題(例如,圖像辨識)中顯示了很好的效能。專用硬體加速器可被構建以啟用DCN技術在像行動計算和雲計算等領域中的各種應用。DCN中的功率密集操作可以是矩陣-矩陣乘法和迴旋。
若干技術可以降低計算管理負擔並改進DCN分類器的品質。然而,此類技術可以導致乘法運算元的增加的稀疏性(例如,由於降低數目的非零運算元導致的較高百分比的零值運算元)。例如,權重修剪可導致DCN中約30-70%的稀疏性。使用經校正線性單元(ReLU)啟動可以造成DCN中約50%的稀疏性。DCN的漏失(dropout)(僅用於訓練)可導致DCN中25-75%的 稀疏性。具有高百分比的零值運算元的神經網路可被稱為稀疏神經網路。
以下提供一或多個態樣的簡要概述以提供對這些態樣的基本理解。此概述不是所有構想到的態樣的詳盡綜覽,並且既非意欲標識出所有態樣的關鍵性或決定性要素亦非試圖界定任何或所有態樣的範疇。其唯一的目的是以簡化形式提供一或多個態樣的一些概念以作為稍後提供的更詳細描述之序言。
若干技術可以降低計算管理負擔並改進DCN分類器的品質。然而,此類技術可導致乘法運算元的增加的稀疏性。硬體加速器設計可以將稀疏性納入考慮以使計算單元利用最大化。例如,硬體加速器可被配置成避免在乘法累加約簡(MAR)單元中乘以零值運算元。
在本案的一態樣,提供了一種用於神經網路的方法、電腦可讀取媒體、以及裝備。該裝備可包括硬體加速器。該裝備可為要由MAR單元處理的每一運算元對決定該對中的兩個運算元是否非零。該裝備可在要由MAR單元處理的運算元對中的一運算元為零時阻止該運算元對被載入到MAR單元的乘法器中。該裝備可在該運算元對的兩個運算元都非零時將該運算元對置於複數個佇列之一中。
為能達成前述及相關目的,這一或多個態樣包括在下文中充分描述並在所附請求項中特別指出的特 徵。以下描述和附圖詳細闡述了這一或多個態樣的某些說明性特徵。但是,這些特徵僅僅是指示了可採用各種態樣的原理的各種方式中的若干種,並且本描述意欲涵蓋所有此類態樣及其等效方案。
100:網路
102:全連接網路
104:局部連接網路
106:迴旋網路
108:共享
110:值
112:值
114:值
116:值
118:後續層
120:後續層
122:輸出
126:新圖像
200:深迴旋網路
300:設備
302a:位址產生器
302b:位址產生器
302c:位址產生器
302d:位址產生器
304a:載入單元
304b:載入單元
304c:載入單元
308:運算元儲存
310:非線性塊
312:儲存單元
314:計算單元
320:同步信號
400:乘法累加約簡單元
402a:乘法器
402b:乘法器
406:加法器
500:示圖
502:載入單元
506:MAR單元
510a:佇列
510b:佇列
512:邏輯電路
514:仲裁器
600:流程圖
602:方塊
604:方塊
606:方塊
608:方塊
610:方塊
612:方塊
614:方塊
616:方塊
700:示圖
702:載入單元
706:MAR單元
710:佇列
712:邏輯電路
714:仲裁器
800:流程圖
802:方塊
804:方塊
806:方塊
808:方塊
810:方塊
812:方塊
900:概念性資料流圖
902:裝備
902':裝備
904:零運算元偵測元件
906:佇列組件
908:仲裁器組件
910:計算組件
1000:示圖
1004:處理器
1006:電腦可讀取媒體/記憶體
1010:收發機
1014:處理系統
1020:天線
1024:匯流排
C1:特徵圖
C2:特徵圖
圖1是圖示根據本案的各態樣的神經網路的示圖。
圖2是圖示根據本案的各態樣的實例深迴旋網路(DCN)的方塊圖。
圖3是圖示用於稀疏神經網路的設備的實例的示圖。
圖4是圖示乘法累加約簡單元的實例的示圖。
圖5是圖示向MAR單元提供運算元的載入單元的實例的示圖。
圖6是用於神經網路的方法的流程圖。
圖7是圖示向MAR單元提供運算元的載入單元的另一實例的示圖。
圖8是用於神經網路的方法的流程圖。
圖9是圖示示例性裝備中的不同裝置/元件之間的資料流的概念性資料流圖。
圖10是圖示採用處理系統的裝備的硬體實現的實例的示圖。
以下結合附圖闡述的詳細描述意欲作為各種配置的描述,而無意表示可實踐本文所描述的概念的僅有配置。本詳細描述包括具體細節以提供對各種概念的透徹理解。然而,對於本發明所屬領域中具有通常知識者將顯而易見的是,沒有這些具體細節亦可實踐這些概念。在一些實例中,以方塊圖形式示出眾所周知的結構和組件以避免淡化此類概念。
現在將參照各種裝備和方法提供用於人工神經網路的計算系統的若干態樣。這些裝備和方法將在以下詳細描述中進行描述並在附圖中由各種方塊、元件、電路、程序、演算法等(統稱為「元素」)來圖示。這些元素可使用電子硬體、電腦軟體、或其任何組合來實現。此類元素是實現成硬體還是軟體取決於具體應用和加諸於整體系統上的設計約束。
作為實例,元素、或元素的任何部分、或者元素的任何組合可被實現為包括一或多個處理器的「處理系統」。處理器的實例包括:微處理器、微控制器、圖形處理單元(GPU)、中央處理單元(CPU)、應用處理器、數位訊號處理器(DSP)、精簡指令集計算(RISC)處理器、片上系統(SoC)、基頻處理器、現場可程式設計閘陣列(FPGA)、可程式設計邏輯裝置(PLD)、狀態機、閘控邏輯、個別的硬體電路以及其他配置成執行本案中通篇描述的各種功能性的合適硬體。處理系統中的一或多個處理器可以執行軟體。軟體應當被寬泛地解釋成意 為指令、指令集、代碼、程式碼片段、程式碼、程式、副程式、軟體組件、應用、軟體應用、套裝軟體、常式、子常式、物件、可執行件、執行的執行緒、規程、函數等,無論其是用軟體、韌體、中介軟體、微代碼、硬體描述語言、還是其他術語來述及皆是如此。
相應地,在一或多個實例實施例中,所描述的功能可以在硬體、軟體、或其任何組合中實現。若在軟體中實現,則各功能可作為一或多個指令或代碼儲存或編碼在電腦可讀取媒體上。電腦可讀取媒體包括電腦儲存媒體。儲存媒體可以是能被電腦存取的任何可用媒體。作為實例而非限定,此類電腦可讀取媒體可包括隨機存取記憶體(RAM)、唯讀記憶體(ROM)、電子可抹除可程式設計ROM(EEPROM)、光碟儲存、磁碟儲存、其他磁存放裝置、前述類型的電腦可讀取媒體的組合、或可被用來儲存指令或資料結構形式的能被電腦存取的電腦可執行代碼的任何其他媒體。
人工神經網路可由三類參數來定義:1)不同神經元層之間的互連模式;2)用於更新各互連的權重的學習程序;3)將神經元的經加權輸入轉換成其輸出啟動的啟動函數。神經網路可被設計成具有各種連通性模式。在前饋網路中,資訊從較低層被傳遞到較高層,其中給定層之每一者神經元向更高層中的神經元進行傳達。可在前饋網路的相繼層中構建階層式表示。神經網路亦可具有回流或回饋(亦被稱為自頂向下(top-down))連接。在 回流連接中,來自給定層中的神經元的輸出可被傳達給相同層中的另一神經元。回流架構可有助於辨識跨越不止一個按順序遞送給該神經網路的輸入資料組塊的模式。從給定層中的神經元到較低層中的神經元的連接被稱為回饋(或自頂向下)連接。當高層級概念的辨識可輔助辨別輸入的特定低層級特徵時,具有許多回饋連接的網路可能是有助益的。
圖1是圖示根據本案的各態樣的神經網路的示圖。如圖1所示,神經網路的各層之間的連接可以是全連接的(102)或局部連接的(104)。在全連接網路102中,第一層中的神經元可將它的輸出傳達給第二層之每一者神經元,從而第二層之每一者神經元將從第一層之每一者神經元接收輸入。替換地,在局部連接網路104中,第一層中的神經元可連接至第二層中有限數目的神經元。迴旋網路106可以是局部連接的,並且被進一步配置成使得與針對第二層中每個神經元的輸入相關聯的連接強度被共享(例如,108)。更一般化地,網路的局部連接層可被配置成使得一層之每一者神經元將具有相同或相似的連通性模式,但其連接強度可具有不同的值(例如,110、112、114和116)。局部連接的連通性模式可能在更高層中產生空間上相異的感受野,這是由於給定區域中的更高層神經元可接收到經由訓練被調諧為到網路的總輸入的受限部分的性質的輸入。
局部連接的神經網路可能非常適合於其中輸入的空間位置有意義的問題。例如,被設計成辨識來自車載相機的視覺特徵的網路100可發展具有不同性質的高層神經元,這取決於它們與圖像下部關聯還是與圖像上部關聯。例如,與圖像下部相關聯的神經元可學習以辨識車道標記,而與圖像上部相關聯的神經元可學習以辨識交通訊號燈、交通標誌等。
深迴旋網路(DCN)可以用受監督式學習來訓練。在訓練期間,可向DCN呈遞圖像(諸如限速標誌的經裁剪圖像126),並且可隨後計算「前向傳遞(forward pass)」以產生輸出122。輸出122可以是對應於特徵(諸如「標誌」、「60」、和「100」)的值向量。網路設計者可能希望DCN在輸出特徵向量中針對其中一些神經元輸出高得分,例如與經訓練的網路100的輸出122中所示的「標誌」和「60」對應的那些神經元。在訓練之前,DCN產生的輸出很可能是不正確的,並且由此可計算實際輸出與目標輸出之間的誤差。DCN的權重可隨後被調整以使得DCN的輸出得分與目標更緊密地對準。
為了調整權重,學習演算法可為權重計算梯度向量。該梯度可指示在權重被略微調整情況下誤差將增加或減少的量。在頂層,該梯度可直接對應於連接倒數第二層中的活化神經元與輸出層中的神經元的權重的值。在較低層中,該梯度可取決於權重的值以及所計算出的較高層 的誤差梯度。權重可隨後被調整以減小誤差。這種調整權重的方式可被稱為「反向傳播」,因為其涉及在神經網路中的反向傳遞(「backward pass」)。
在實踐中,權重的誤差梯度可能是在少量實例上計算的,從而計算出的梯度近似於真實誤差梯度。這種近似方法可被稱為隨機梯度下降法。隨機梯度下降法可被重複,直到整個系統可達成的誤差率已停止下降或直到誤差率已達到目標水平。
在學習之後,DCN可被呈遞新圖像126並且在網路中的前向傳遞可產生輸出122,其可被認為是該DCN的推斷或預測。
深迴旋網路(DCN)是迴旋網路的網路,其配置有額外的池化和正規化層。DCN已在許多工上達成現有最先進的效能。DCN可使用受監督式學習來訓練,其中輸入和輸出目標兩者對於許多典範是已知的並被用於經由使用梯度下降法來修改網路的權重。
DCN可以是前饋網路。另外,如前述,從DCN的第一層中的神經元到下一更高層中的神經元群的連接跨第一層中的神經元被共享。DCN的前饋和共用連接可被利用於進行快速處理。DCN的計算負擔可比例如類似大小的包括回流或回饋連接的神經網路小得多。
迴旋網路的每一層的處理可被認為是空間不變模版或基礎投影。若輸入首先被分解成多個通道,諸如彩色圖像的紅色、綠色和藍色通道,則在該輸入上訓練的 迴旋網路可被認為是三維的,其具有沿著該圖像的軸的兩個空間維度以及捕捉顏色資訊的第三維度。迴旋連接的輸出可被認為在後續層118和120中形成特徵圖,該特徵圖(例如,120)之每一者元素從先前層(例如,118)中一定範圍的神經元以及從該多個通道中的每一個通道接收輸入。特徵圖中的值可以用非線性(諸如矯正)max(0,x)進一步來處理。來自毗鄰神經元的值可被進一步池化(這對應於降取樣)並可提供額外的局部不變性以及維度縮減。亦可經由特徵圖中神經元之間的側向抑制來應用正規化,其對應於白化。
圖2是圖示示例性深迴旋網路200的方塊圖。深迴旋網路200可包括多個基於連通性和權重共用的不同類型的層。如圖2所示,示例性深迴旋網路200包括多個迴旋塊(例如,C1和C2)。每個迴旋塊可配置有迴旋層、正規化層(LNorm)、和池化層。迴旋層可包括一或多個迴旋濾波器,其可被應用於輸入資料以產生特徵圖。儘管僅圖示兩個迴旋塊,但本案不限於此,而是,根據設計偏好,任何數目的迴旋塊可被包括在深迴旋網路200中。正規化層可被用於對迴旋濾波器的輸出進行正規化。例如,正規化層可提供白化或側向抑制。池化層可提供在空間上的降取樣聚集以實現局部不變性和維度縮減。
例如,深迴旋網路的平行濾波器組可任選地基於高級RISC機(ARM)指令集被載入到SOC的CPU或GPU上以達成高效能和低功耗。在替換實施例中,平行 濾波器組可被載入到SOC的DSP或圖像信號處理器(ISP)上。另外,DCN可存取可存在於SOC上的其他處理塊,諸如專用於感測器和導航的處理塊。
深迴旋網路200亦可包括一或多個全連接層(例如,FC1和FC2)。深迴旋網路200可進一步包括邏輯回歸(LR)層。深迴旋網路200的每一層之間是要被更新的權重(未圖示)。每一層的輸出可以用作深迴旋網路200中後續層的輸入以從第一迴旋塊C1處提供的輸入資料(例如,圖像、音訊、視訊、感測器資料及/或其他輸入資料)學習階層式特徵表示。
網路100或深迴旋網路200可由通用處理器、數位訊號處理器(DSP)、特殊應用積體電路(ASIC)、現場可程式設計閘陣列(FPGA)或其他可程式設計邏輯裝置(PLD)、個別閘門或電晶體邏輯、個別的硬體組件、由處理器執行的軟體模組、或其任何組合來模擬。網路100或深迴旋網路200可以被用在大範圍的應用中,諸如圖像和模式辨識、機器學習、電機控制、及類似應用等。神經網路100或深迴旋網路200中的每一神經元可被實現為神經元電路。
在某些態樣,網路100或深迴旋網路200可被配置成經由將神經網路中的權重和啟動的稀疏性納入考慮來提高計算效率。例如,網路100或深迴旋網路200可被配置成避免在MAR單元中乘以零值運算元,如將在下文參考圖3-10描述的。
圖3是圖示用於稀疏神經網路的設備300的實例的示圖。設備300可以是任何計算設備。在一種配置中,設備300可包括被配置成避免在乘法累加約簡(MAR)單元中乘以零值運算元的硬體加速器。如圖3中圖示的,設備300可包括一或多個位址產生器302、一或多個載入單元304、一或多個計算單元314、非線性塊310以及儲存單元312。
計算單元314中的每一者可包括具有多個乘法器後帶加法器的MAR單元。MAR單元的每一乘法器可以計算兩個運算元的乘積。MAR單元的加法器可以計算來自MAR單元的所有乘法器的乘積的總和。在一種配置中,計算單元314可為神經網路執行計算/演算。在一種配置中,MAR單元的每一乘法器和該加法器可被實現在組合邏輯中。計算單元314的細節將在下文參考圖4更詳細地描述。
設備300可包括運算元儲存308。運算元儲存308可以是用於儲存要被載入到計算單元314的乘法器的運算元的記憶體或快取記憶體。在一種配置中,對於每一運算元對,第一運算元可以是神經網路的權重,且第二運算元可以是神經網路的啟動。
載入單元304可被配置成將運算元從運算元儲存308載入到計算單元314。具體而言,載入單元(例如,304a、304b或304c)可以將各對運算元從運算元儲存308載入到計算單元314內的各乘法器。在一種配置 中,載入單元(例如,304a、304b或304c)可以將同步信號320發送到位址產生器(例如,分別是302a、302b或302c)。
非線性塊310可被配置成接收計算單元314的輸出並對計算單元314的輸出執行非線性操作。非線性操作可以是其輸出不與輸入直接成比例的操作。在一種配置中,非線性塊310可以是經校正線性單元(ReLU)。在一種配置中,非線性塊310可為神經網路的神經元執行啟動功能的至少一部分。
儲存單元312可以接收非線性塊310的輸出並將非線性塊310的輸出儲存到運算元儲存308。在一種配置中,非線性塊310的輸出可包括神經網路的經更新啟動。
位址產生器302可被配置成產生用於存取運算元儲存308的位址。在一種配置中,位址產生器(例如,302a)可為要被載入到計算單元314內的乘法器的運算元對產生位址,並將這些位址發送到載入單元(例如,304a),載入單元可基於這些位址從運算元儲存308載入該運算元對。在一種配置中,位址產生器(例如,302d)可為非線性塊310的輸出產生位址,並將位址發送給儲存單元312,儲存單元312可以基於位址將非線性塊310的輸出儲存到運算元儲存308。
在一種配置中,載入單元(例如,304a)可以從運算元儲存308取回若干對運算元(例如,4對運算 元)並為所取回的每一運算元對決定運算元對中的兩個運算元是否都非零。若運算元對中的兩個運算元都非零,則載入單元可以將該運算元對載入到計算單元314之一中的MAR單元的乘法器。否則,若運算元對中的至少一個運算元是零,則載入單元可以阻止運算元對被載入到計算單元314中的任何乘法器。載入單元(例如,304a)的細節將在下文參考圖5或圖7更詳細地描述。
設備300可以經由為每一MAR指令取回更多運算元並在需要時(例如,在兩個運算元都非零時)執行計算來增加MAR單元的利用率。在一種配置中,設備300可以用硬體執行排程和同步(例如,使用佇列佔用)。在一種配置中,設備300可以維護單指令多資料(SIMD)架構,但執行可變週期MAR指令。
圖4是圖示乘法累加約簡單元400的實例的示圖。在一種配置中,MAR單元400可以在以上參考圖3描述的計算單元314中。MAR單元400可包括若干(例如,N個)乘法器402a-402b和加法器406。乘法器中的每一者可以將運算元對作為輸入。例如,乘法器402a可以將運算元Rm[1]和Rn[1]作為輸入,且乘法器402b可以將運算元Rm[N]和Rn[N]作為輸入。在一種配置中,MAR單元400可包括N個乘法器。在一種配置中,Rm[1]……Rm[N]可以是向量Rm的N個維度,且Rn[1]……Rn[N]可以是向量Rn的N個維度。
乘法器中的每一者可以計算兩個輸入運算元的乘積,並將乘積輸出給加法器406。加法器406可以將所有乘法器402a-402b的輸出作為輸入並計算所有這些輸入的總和以產生經累加值Rd作為MAR單元400的輸出。
圖5是圖示向MAR單元506提供運算元的載入單元502的實例的示圖500。在一種配置中,MAR單元506可以是以上參考圖4描述的MAR單元400,並且載入單元502可以是以上參考圖3描述的載入單元(例如,304a)。如所圖示的,載入單元502可包括邏輯電路512、複數個佇列510(例如,4個佇列)以及仲裁器514。
邏輯電路512可以接收運算元對Rm[i]和Rn[i],並決定Rm[i]和Rn[i]兩者是否都非零。若Rm[i]和Rn[i]兩者都非零,則佇列(例如,510b)可被啟用以允許Rm[i]和Rn[i]被置於佇列中。若Rm[i]和Rn[i]中的至少一者是零,則複數個佇列510可被禁用,從而阻止Rm[i]和Rn[i]被置於複數個佇列510中的任一者中。
複數個佇列510中的每一者可以是先入先出(FIFO)。在一種配置中,每一非零運算元對可被隨機地置於複數個佇列510之一中。在一種配置中,每一非零運算元對可按重複的預定次序被置於複數個佇列510之一中。例如,第一非零運算元對可被置於第一佇列中,第二非零運算元對可被置於第二佇列中,第三非零運算元對 可被置於第三佇列中,第二非零運算元對可被置於第四佇列中。假定存在四個佇列,該模式隨後重複並且第五非零運算元對可被置於第一佇列中。
仲裁器514可以從複數個佇列510之一選擇運算元對並將運算元對載入到MAR單元506的一個乘法器。在一種配置中,仲裁器514可從複數個佇列510隨機選擇運算元對並(隨機地或根據預定次序)將該運算元對載入到MAR單元506的乘法器。在一種配置中,仲裁器514可以是分配器,它採用一組試探規則來從複數個佇列510選擇運算元對並(隨機地或根據預定次序)將該運算元對載入到MAR單元506的乘法器以增加MAR單元506的乘法器的利用率。
在一種配置中,神經網路可在權重中具有50%稀疏性且在啟動中具有50%稀疏性。作為結果,每四對運算元中可存在一個非零運算元對。在此類配置中,載入單元502可以取回四倍於MAR單元506所能為每一MAR指令處置的運算元,並將非零運算元對排程在MAR單元506上。在一種配置中,載入單元502可以取決於區域管理負擔、現有稀疏性、以及所需輸送量加速之間的權衡來按任何速率取回運算元,諸如2倍於MAR單元506所能處置的運算元、4倍於MAR單元506所能處置的運算元、8倍於MAR單元506所能處置的運算元。
在一種配置中,載入單元502可以每K個MAR指令來同步複數個佇列510。在一種配置中,為了 同步複數個佇列510,載入單元502可以在複數個佇列510中的每一佇列為空之前阻止將新非零運算元置於複數個佇列510中。在一種配置中,K可以是預定數目。在另一配置中,數目K可以被動態地調整。在一種配置中,數目K可基於向量空間的維數及/或載入單元502中的佇列510的數目來被調整。在一種配置中,額外同步指令可被添加以啟用可變K。在一種配置中,複數個佇列510中的每一佇列的深度可以是K。在一種配置中,較大K可以造成MAR單元506的較高負載平衡。
在一種配置中,載入單元502中佇列510的數目可以取決於神經網路的稀疏性。例如,若神經網路在權重中具有50%的稀疏性且在啟動中具有50%的稀疏性,則佇列510的數目可以是四個。MAR單元506可歸因於MAR單元506的完全利用(經由濾除零運算元)而達成四倍加速。在一種配置中,為了對於使用稀疏向量的矩陣向量乘法的更好負載平衡,單個向量和矩陣的多個行可以跨各MAR單元來分佈。在此類配置中,單個向量可以跨多個MAR單元被共享。所有MAR單元的運算元之一可以是同一向量並且另一運算元可以是來自矩陣的特異行。這是向量-矩陣乘法的特性,其允許共享運算元。因為向量在所有MAR單元之間被共享,所以源自向量的所有零亦由所有MAR單元共享。這造成更好的負載平衡。因為運算元之一(該向量)在所有MAR單元之間被共享,所以在與向量-向量乘法(其中每一MAR單元的兩個運算元都 是特異的並且由此共用是不可能的)相比時取回頻寬可被降低。作為結果,向量的取回頻寬要求亦可被降低。
圖6是用於神經網路的方法的流程圖600。在一種配置中,神經網路可以是深迴旋神經網路(DCN)。該方法可由計算設備(例如,設備300或裝備902/902')執行。在602,該設備可任選地取回MAR單元在神經網路的一個MAR指令期間所能處置的運算元的特定倍數(例如,4倍)。在一種配置中,神經網路的權重和啟動可以形成要被載入到MAR單元(例如,MAR單元400或506,它可以在計算單元314內)的乘法器(例如,乘法器402a)的運算元對。在一種配置中,權重和啟動可被儲存在運算元儲存(例如,運算元儲存308)中。在一種配置中,MAR單元可包括複數個乘法器以及加法器。
在604,設備可為每一所取回的運算元對決定該對的兩個運算元是否都非零。若所取回的運算元對中的兩個運算元都非零,則設備可進至608。若所取回的運算元對的運算元中的至少一者是零,則設備可進至606。在一種配置中,特定數目(例如,4個)的運算元對可被並行地決定(在604)。在一種配置中,為了決定運算元(例如,權重或啟動)是否為零,可將運算元與零值相比較。
在606,若運算元對的至少一個運算元為零,則設備可以阻止運算元對被載入到MAR單元的乘法器。在一種配置中,為了阻止運算元對被載入到MAR單元的 乘法器,設備可以阻止運算元對被置於複數個佇列(例如,510)之一中。
在608,若運算元對中的兩個運算元都非零,則設備可任選地將運算元對置於複數個佇列(例如,510)之一。在一種配置中,各非零運算元對可隨機地或按重複的預定次序被置於複數個佇列之一中。在一種配置中,佇列的總數可基於神經網路的稀疏性來決定。
在610,設備可任選地從複數個佇列中的一個佇列選擇經排隊的運算元對。在一種配置中,設備可以從具有經排隊運算元對的佇列中隨機選擇。
在612,設備可任選地將所選經排隊運算元對載入到MAR單元的乘法器。在一種配置中,仲裁器可從複數個佇列隨機選擇運算元對並(例如,隨機地或根據預定順序)將運算元對載入到MAR單元的乘法器。在一種配置中,分配器可採用一組試探規則來從複數個佇列選擇運算元對並(例如,隨機地或根據預定順序)將運算元對載入到MAR單元的乘法器。
在614,設備可任選地決定是否是時間要同步複數個佇列。若是時間要進行同步,則設備進至616。否則,設備循環回到602。在一種配置中,設備可以在特定數目的(例如,K個)MAR指令之後決定是時間要同步複數個佇列。在一種配置中,MAR指令的特定數目可以是固定數目。在一種配置中,MAR指令的特定數目可以是可變數目。在一種配置中,MAR指令的可變數目可以 基於正由MAR單元處理的向量的大小來決定。例如,對於大小為L的兩個向量的點積,同步可以在ceiling(L/N)(上取整(L/N))指令(亦即,K=ceiling(L/N))之後發生,其中N是MAR單元中乘法器的數目。在迴旋中,向量的大小可對應於核心的體量。
在一種配置中,複數個佇列中的每一佇列可具有特定數目的深度。在一種配置中,為了同步複數個佇列,設備可以在所有佇列為空之前阻止將新運算元置於複數個佇列中。
在616,設備可任選地同步複數個佇列。在一種配置中,在同步期間,可防止新運算元被置於任何佇列中,直至所有佇列為空。設備隨後可循環回602。
圖7是圖示向MAR單元706提供運算元的載入單元702的另一實例的示圖700。在一種配置中,MAR單元706可以是以上參考圖4描述的MAR單元400,並且載入單元702可以是以上參考圖3描述的載入單元(例如,304a)。如所圖示的,載入單元702可包括邏輯電路712、佇列710以及仲裁器714。
邏輯電路712可以接收運算元對Rm[i]和Rn[i],並決定Rm[i]和Rn[i]兩者是否都非零。若Rm[i]和Rn[i]兩者都非零,則佇列710可被啟用以允許Rm[i]和Rn[i]被置於佇列710中。若Rm[i]和Rn[i]中的至少一者是零,則佇列710可被禁用,從而阻止Rm[i]和Rn[i]被置於佇列710中。
仲裁器714可以從佇列710選擇運算元對並將該運算元對載入到MAR單元706的一個乘法器。在一種配置中,仲裁器714可以(隨機地或根據預定次序)將運算元對載入到MAR單元706的乘法器。
在一種配置中,載入單元702可以按基於神經網路的稀疏性的取回頻率來取回運算元。例如,在一種配置中,神經網路可在權重中具有50%的稀疏性且在啟動中具有50%的稀疏性。作為結果,每四對運算元中可存在一個非零運算元對。在此類配置中,載入單元702可以按四倍於MAR單元706執行計算的頻率的頻率來取回運算元對,並將非零運算元對排程在MAR單元706上。
圖8是用於神經網路的方法的流程圖800。在一種配置中,神經網路可以是深迴旋神經網路(DCN)。方法可由計算設備(例如,設備300或裝備902/902')執行。在802,設備可任選地以MAR單元執行計算的頻率的數倍(例如,4倍)的頻率來取回運算元對。在一種配置中,神經網路的權重和啟動可以形成要被載入到MAR單元(例如,MAR單元400或706,它可以在計算單元314內)的乘法器(例如,乘法器402a)的運算元對。在一種配置中,權重和啟動可被儲存在運算元儲存(例如,運算元儲存308)中。在一種配置中,MAR單元可包括複數個乘法器和加法器。
在804,設備可為每一所取回的運算元對決定該對的兩個運算元是否都非零。若所取回的運算元對的運 算元兩者都非零,則設備可進至808。若所取回的運算元對的運算元中的至少一者是零,則設備可進至806。在一種配置中,為了決定運算元(例如,權重或啟動)是否為零,可將運算元與零值相比較。
在806,若運算元對的至少一個運算元為零,則設備可以阻止運算元對被載入到MAR單元的乘法器。在一種配置中,為了阻止運算元對被載入到MAR單元的乘法器,設備可以阻止運算元對被置於佇列(例如,710)中。
在808,若運算元對的兩個運算元都非零,則設備可任選地將該運算元對置於佇列(例如,710)中。
在810,設備可任選地從佇列選擇經排隊的運算元對。
在812,設備可任選地將經排隊運算元對載入到MAR單元的乘法器。在一種配置中,仲裁器可以將運算元對載入到MAR單元的隨機乘法器。在一種配置中,仲裁器可以根據預定順序將運算元對載入到MAR單元的乘法器。
圖9是圖示示例性裝備902中的不同裝置/組件之間的資料流的概念性資料流圖900。裝備902可以是計算設備(例如,設備300)。
裝備902可包括偵測運算元對中是否至少一個運算元為零的零運算元偵測元件904。運算元對可包括神經網路的權重和神經網路的啟動。在一種配置中,零運 算元偵測組件904可以執行以上參考圖6中的604或圖8中的804描述的操作。
裝備902可包括執行MAR操作的計算組件910。在一種配置中,計算組件910可包括以上參考圖3描述的計算單元314。
裝備902可包括基於從零運算元偵測組件904接收到的零運算元偵測來啟用或禁用將運算元對置於一或多個佇列的佇列組件906。在一種配置中,佇列組件906可包括上述佇列510或佇列710。在一種配置中,佇列組件906可以執行以上參考圖6中的606或608或者圖8中的806或808描述的操作。
裝備902可包括接收來自佇列組件906的運算元並將這些運算元載入到計算元件910的仲裁器組件908。在一種配置中,仲裁器組件908可包括上述仲裁器514或714。在一種配置中,仲裁器組件908可以執行以上參考圖6中的610或612或者圖8中的810或812描述的操作。
裝備可包括執行圖6和8的前述流程圖中的演算法的每個方塊的額外組件。如此,圖6和8的前述流程圖之每一者方塊可由一組件執行且裝備可包括這些組件中的一或多個組件。這些組件可以是專門配置成實施該程序/演算法的一或多個硬體組件、由配置成執行該程序/演算法的處理器實現、儲存在電腦可讀取媒體中以供由處理器實現、或其某個組合。
圖10是圖示採用處理系統1014的裝備902'的硬體實現的實例的示圖1000。處理系統1014可用由匯流排1024一般化地表示的匯流排架構來實現。取決於處理系統1014的具體應用和整體設計約束,匯流排1024可包括任何數目的互連匯流排和橋接器。匯流排1024將各種電路連結在一起,包括一或多個處理器及/或硬體組件(由處理器1004,組件904、906、908、910以及電腦可讀取媒體/記憶體1006表示)。匯流排1024亦可連結各種其他電路(諸如定時源、周邊設備、穩壓器和功率管理電路),這些電路在本發明所屬領域中是眾所周知的,並且因此將不再進一步描述。
處理系統1014可被耦合到收發機1010。收發機1010可耦合至一或多個天線1020。收發機1010提供用於在傳輸媒體上與各種其他裝備進行通訊的裝置。收發機1010從一或多個天線1020接收信號,從接收到的信號中提取資訊,並向處理系統1014提供所提取的資訊。另外,收發機1010從處理系統1014接收資訊,並基於接收到的資訊來產生將被施加給一或多個天線1020的信號。處理系統1014包括耦合到電腦可讀取媒體/記憶體1006的處理器1004。處理器1004負責一般性處理,包括執行儲存在電腦可讀取媒體/記憶體1006上的軟體。該軟體在由處理器1004執行時使處理系統1014執行上文針對任何特定裝備描述的各種功能。電腦可讀取媒體/記憶體1006亦可被用於儲存由處理器1004在執行軟體時操縱 的資料。處理系統1014進一步包括組件904、906、908、910中的至少一個組件。這些組件可以是在處理器1004中執行的軟體組件、常駐/儲存在電腦可讀取媒體/記憶體1006中的軟體組件、耦合到處理器1004的一或多個硬體組件、或其某種組合。
在一種配置中,裝備902/902可包括用於為要由MAR單元處理的每一運算元對決定該對的兩個運算元是否都非零的裝置。在一種配置中,用於為要由MAR單元處理的每一運算元對決定該對的兩個運算元是否都非零的裝置可以執行以上參考圖6中的604或圖8中的804描述的操作。在一種配置中,用於為要由MAR單元處理的每一運算元對決定該對的兩個運算元是否都非零的裝置可以包括零運算元偵測組件904及/或處理器1004。
在一種配置中,裝備902/902'可包括用於在要由MAR單元處理的運算元對的一運算元為零時阻止該運算元對被載入到MAR單元的乘法器的裝置。在一種配置中,用於阻止要由MAR單元處理的運算元對被載入到MAR單元的乘法器的裝置可以執行以上參考圖6中的606或圖8中的806描述的操作。在一種配置中,用於阻止要由MAR單元處理的運算元對被載入到MAR單元的乘法器的裝置可以包括載入單元304、佇列組件906及/或處理器1004。
在一種配置中,裝備902/902'可包括用於在該運算元對的兩個運算元都非零時將該運算元對置於複數個佇列之一的裝置。在一種配置中,用於將該運算元對置於複數個佇列之一中的裝置可以執行以上參考圖6中的608或圖8中的808描述的操作。在一種配置中,用於將運算元對置於複數個佇列之一中的裝置可包括載入單元304、佇列組件906及/或處理單元1004。
在一種配置中,裝備902/902'可包括用於從一或多個佇列選擇經排隊的運算元對的裝置。在一種配置中,用於從一或多個佇列選擇經排隊的運算元對的裝置可以執行以上參考圖6中的610或圖8中的810描述的操作。在一種配置中,用於從一或多個佇列選擇經排隊的運算元對的裝置可包括載入單元304、仲裁器組件908及/或處理單元1004。
在一種配置中,裝備902/902'可包括用於將經排隊的運算元對載入到MAR單元的乘法器的裝置。在一種配置中,用於將經排隊的運算元對載入到MAR單元的乘法器的裝置可以執行以上參考圖6中的612或圖8中的812描述的操作。在一種配置中,用於將經排隊的運算元對載入到MAR單元的乘法器的裝置可包括載入單元304、仲裁器組件908及/或處理單元1004。
在一種配置中,用於選擇的裝置和用於載入的裝置可包括從複數個佇列隨機選擇運算元對並(隨機地或根據預定順序)將運算元對載入到MAR單元的乘法器的 仲裁器。在一種配置中,用於選擇的裝置和用於載入的裝置可包括採用一組試探規則從複數個佇列選擇運算元對並(隨機地或根據預定順序)將運算元對載入到MAR單元的乘法器的分配器。
在一種配置中,裝備902/902'可包括用於在特定數目的MAR指令之後同步複數個佇列的裝置。在一種配置中,用於在特定數目的MAR指令之後同步複數個佇列的裝置可執行以上參考圖6中的614或616描述的操作。在一種配置中,用於在特定數目的MAR指令之後同步複數個佇列的裝置可包括載入單元304、佇列組件906或處理單元1004。在一種配置中,用於同步複數個佇列的裝置可被配置成在複數個佇列中的每一佇列為空之前阻止將新運算元置於複數個佇列中。
前述裝置可以是裝備902的前述組件及/或裝備902'的處理系統1014中被配置成執行由前述裝置敘述的功能的一或多個組件。
應理解,所揭示的程序/流程圖中的各個方塊的具體次序或層次是示例性辦法的圖示。應理解,基於設計偏好,可以重新編排這些程序/流程圖中的各個方塊的具體次序或層次。此外,一些方塊可被組合或被略去。所附方法請求項以範例次序呈現各種方塊的要素,且並不意味著被限定於所呈現的具體次序或層次。
提供先前描述是為了使本發明所屬領域中任何具有通常知識者均能夠實踐本文中所述的各個態樣。對 這些態樣的各種修改將容易為本發明所屬領域中具有通常知識者所明白,並且在本文中所定義的普適原理可被應用於其他態樣。因此,請求項並非意欲被限定於本文中所示的態樣,而是應被授予與語言上的請求項相一致的全部範疇,其中對要素的單數形式的引述除非特別聲明,否則並非意欲表示「有且僅有一個」,而是「一或多個」。措辭「示例性」在本文中用於表示「用作實例、例子、或圖示」。本文中描述為「示例性」的任何態樣不必被解釋為優於或勝過其他態樣。除非特別另外聲明,否則術語「一些」指的是一或多個。諸如「A、B或C中的至少一者」、「A、B或C中的一者或多者」、「A、B和C中的至少一者」、「A、B和C中的一者或多者」以及「A、B、C或其任何組合」之類的組合包括A、B及/或C的任何組合,並且可包括多個A、多個B或者多個C。具體地,諸如「A、B或C中的至少一者」、「A、B或C中的一者或多者」、「A、B和C中的至少一者」、「A、B和C中的一者或多者」、以及「A、B、C或其任何組合」之類的組合可以是僅A、僅B、僅C、A和B、A和C、B和C、或者A和B和C,其中任何此類組合可包含A、B或C中的一或多個成員。本案通篇描述的各個態樣的要素為本發明所屬領域中具有通常知識者當前或今後所知的所有結構上和功能上的等效方案經由引述被明確納入於此,且意欲被請求項所涵蓋。此外,本文中所揭示的任何內容皆並非意欲貢獻給公眾,無論此類揭示是否在申請專利範圍中被顯式地敘 述。措辭「模組」、「機制」、「元件」、「設備」等等可以不是措辭「裝置」的代替。如此,沒有任何請求項元素應被解釋為手段功能,除非該元素是使用短語「用於……的裝置」來明確敘述的。
500:示圖
502:載入單元
506:MAR單元
510a:佇列
510b:佇列
512:邏輯電路
514:仲裁器

Claims (30)

  1. 一種用於一神經網路的方法,包括以下步驟:為要由一乘法累加約簡(MAR)單元處理的一運算元對決定該運算元對的兩個運算元是否都非零;及在決定要由該MAR單元處理的該運算元對中的一運算元為零時阻止該運算元對被載入到該MAR單元的一乘法器。
  2. 如請求項1之方法,進一步包括在決定該運算元對中的兩個運算元都非零時將該運算元對置於複數個佇列中的一個佇列中。
  3. 如請求項2之方法,其中非零運算元對被隨機地或以重複的預定次序置於該複數個佇列中。
  4. 如請求項2之方法,進一步包括以下步驟:從該複數個佇列選擇一經排隊的運算元對;及將該經排隊的運算元對載入到該MAR單元的該乘法器。
  5. 如請求項4之方法,其中該選擇和該載入是由一仲裁器執行的,該仲裁器從該複數個佇列隨機選擇該經排隊的運算元對並將該經排隊的運算元對載入到該MAR單元的該乘法器。
  6. 如請求項4之方法,其中該選擇和該載入是由一分配器執行的,該分配器採用一組試探規則從該複 數個佇列選擇該經排隊的運算元對並將該經排隊的運算元對載入到該MAR單元的該乘法器。
  7. 如請求項2之方法,進一步包括在一特定數目的MAR指令之後同步該複數個佇列。
  8. 如請求項7之方法,其中該同步該複數個佇列包括在該複數個佇列中的每一佇列為空之前阻止將新運算元置於該複數個佇列中。
  9. 如請求項7之方法,其中該特定數目是一固定數目或一可變數目。
  10. 如請求項2之方法,其中該複數個佇列包括一特定數目的佇列,且其中該特定數目是基於該神經網路的一稀疏性來決定的。
  11. 一種用於一神經網路的裝備,包括:用於為要由一乘法累加約簡(MAR)單元處理的一運算元對決定該運算元對的兩個運算元是否都非零的裝置;及用於在決定要由該MAR單元處理的該運算元對中的一運算元為零時阻止該運算元對被載入到該MAR單元的一乘法器的裝置。
  12. 如請求項11之裝備,進一步包括用於在決定該運算元對中的兩個運算元都非零時將該運算元對置於複數個佇列中的一個佇列中的裝置。
  13. 如請求項12之裝備,其中非零運算元對被隨機地或以重複的一預定次序置於該複數個佇列中。
  14. 如請求項12之裝備,進一步包括:用於從該複數個佇列選擇一經排隊的運算元對的裝置;及用於將該經排隊的運算元對載入到該MAR單元的該乘法器的裝置。
  15. 如請求項14之裝備,其中該用於選擇的裝置和該用於載入的裝置包括一仲裁器,該仲裁器從該複數個佇列隨機選擇該經排隊的運算元對並將該經排隊的運算元對載入到該MAR單元的該乘法器。
  16. 如請求項14之裝備,其中該用於選擇的裝置和該用於載入的裝置包括一分配器,該分配器採用一組試探規則從該複數個佇列選擇該經排隊的運算元對並將該經排隊的運算元對載入到該MAR單元的該乘法器。
  17. 如請求項12之裝備,進一步包括用於在一特定數目的MAR指令之後同步該複數個佇列的裝置。
  18. 如請求項17之裝備,其中該用於同步該複數個佇列的裝置被配置成在該複數個佇列中的每一佇列為空之前阻止將新運算元置於該複數個佇列中。
  19. 如請求項17之裝備,其中該特定數目是一固定數目或一可變數目。
  20. 如請求項12之裝備,其中該複數個佇列包括一特定數目的佇列,且其中該特定數目是基於該神經網路的一稀疏性來決定的。
  21. 一種用於神經網路的裝備,包括:一記憶體;及耦合到該記憶體的至少一個處理器,該至少一個處理器被配置成:為要由一乘法累加約簡(MAR)單元處理的一運算元對決定該運算元對的兩個運算元是否都非零;及在決定要由該MAR單元處理的該運算元對的一運算元為零時阻止該運算元對被載入到該MAR單元的一乘法器。
  22. 如請求項21之裝備,其中該至少一個處理器被進一步配置成在決定該運算元對的兩個運算元都非零時將該運算元對置於複數個佇列中的一個佇列中。
  23. 如請求項22之裝備,其中非零運算元對被隨機地或以重複的一預定次序置於該複數個佇列中。
  24. 如請求項22之裝備,其中該至少一個處理器被進一步配置成:從該複數個佇列選擇一經排隊的運算元對;及將該經排隊的運算元對載入到該MAR單元的該乘法器。
  25. 如請求項24之裝備,其中該選擇和該載入是由一仲裁器執行的,該仲裁器從該複數個佇列隨機選擇該經排隊的運算元對並將該經排隊的運算元對載入到該MAR單元的該乘法器。
  26. 如請求項24之裝備,其中該選擇和該載入是由一分配器執行的,該分配器採用一組試探規則從該複數個佇列選擇該經排隊的運算元對並將該經排隊的運算元對載入到該MAR單元的該乘法器。
  27. 如請求項22之裝備,其中該至少一個處理器被進一步配置成在一特定數目的MAR指令之後同步該複數個佇列。
  28. 如請求項27之裝備,其中為同步該複數個佇列,該至少一個處理器被配置成在該複數個佇列中的每一佇列為空之前阻止將新運算元置於該複數個佇列中。
  29. 如請求項27之裝備,其中該特定數目是一固定數目或一可變數目。
  30. 一種儲存電腦可執行代碼的非暫時性電腦可讀取媒體,包括用於以下操作的代碼:為要由一乘法累加約簡(MAR)單元處理的一運算元對決定該運算元對的兩個運算元是否都非零;及在決定要由該MAR單元處理的該運算元對的一運算元為零時阻止該運算元對被載入到該MAR單元的一乘法器。
TW106140114A 2016-12-29 2017-11-20 用於稀疏神經網路加速的架構、方法、電腦可讀取媒體和裝備 TWI759361B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/393,670 US10871964B2 (en) 2016-12-29 2016-12-29 Architecture for sparse neural network acceleration
US15/393,670 2016-12-29

Publications (2)

Publication Number Publication Date
TW201824095A TW201824095A (zh) 2018-07-01
TWI759361B true TWI759361B (zh) 2022-04-01

Family

ID=60655089

Family Applications (1)

Application Number Title Priority Date Filing Date
TW106140114A TWI759361B (zh) 2016-12-29 2017-11-20 用於稀疏神經網路加速的架構、方法、電腦可讀取媒體和裝備

Country Status (4)

Country Link
US (1) US10871964B2 (zh)
CN (1) CN110121721A (zh)
TW (1) TWI759361B (zh)
WO (1) WO2018125429A1 (zh)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10317930B2 (en) * 2015-09-30 2019-06-11 International Business Machines Corporation Optimizing core utilization in neurosynaptic systems
US10338629B2 (en) 2016-09-22 2019-07-02 International Business Machines Corporation Optimizing neurosynaptic networks
EP3563307B1 (en) 2017-02-23 2023-04-12 Cerebras Systems Inc. Accelerated deep learning
US11102225B2 (en) 2017-04-17 2021-08-24 Splunk Inc. Detecting fraud by correlating user behavior biometrics with other data sources
WO2018193352A1 (en) 2017-04-17 2018-10-25 Cerebras Systems Inc. Dataflow triggered tasks for accelerated deep learning
US11372956B2 (en) 2017-04-17 2022-06-28 Splunk Inc. Multiple input neural networks for detecting fraud
US11315010B2 (en) * 2017-04-17 2022-04-26 Splunk Inc. Neural networks for detecting fraud based on user behavior biometrics
WO2018193370A1 (en) 2017-04-17 2018-10-25 Cerebras Systems Inc. Task activating for accelerated deep learning
US11488004B2 (en) 2017-04-17 2022-11-01 Cerebras Systems Inc. Neuron smearing for accelerated deep learning
US10482156B2 (en) * 2017-12-29 2019-11-19 Facebook, Inc. Sparsity-aware hardware accelerators
US11328207B2 (en) 2018-08-28 2022-05-10 Cerebras Systems Inc. Scaled compute fabric for accelerated deep learning
WO2020044208A1 (en) 2018-08-29 2020-03-05 Cerebras Systems Inc. Isa enhancements for accelerated deep learning
US11328208B2 (en) 2018-08-29 2022-05-10 Cerebras Systems Inc. Processor element redundancy for accelerated deep learning
CN109543140B (zh) * 2018-09-20 2020-07-10 中国科学院计算技术研究所 一种卷积神经网络加速器
CN109472350B (zh) * 2018-10-30 2021-11-16 南京大学 一种基于块循环稀疏矩阵的神经网络加速***
US10963220B2 (en) 2018-11-12 2021-03-30 Samsung Electronics Co., Ltd. Signed multiplication using unsigned multiplier with dynamic fine-grained operand isolation
KR20200072307A (ko) 2018-12-12 2020-06-22 삼성전자주식회사 뉴럴 네트워크에서의 부하 균형을 위한 장치 및 방법
US11961007B2 (en) * 2019-02-06 2024-04-16 Qualcomm Incorporated Split network acceleration architecture
US20220129739A1 (en) * 2019-02-19 2022-04-28 Vastai Holding Company Method and system for convolution model multi-mode hardware accelerator
US11562248B2 (en) * 2019-04-29 2023-01-24 Advanced Micro Devices, Inc. Data sparsity monitoring during neural network training
US11494624B2 (en) * 2019-05-20 2022-11-08 Mipsology SAS Accelerating neuron computations in artificial neural networks with dual sparsity
US11436302B2 (en) 2019-06-07 2022-09-06 International Business Machines Corporation Electronic system for computing items of an outer product matrix
US11222092B2 (en) 2019-07-16 2022-01-11 Facebook Technologies, Llc Optimization for deconvolution
US20210133591A1 (en) * 2019-11-04 2021-05-06 Baidu Usa Llc Reducing training times of deep neural networks through efficient hybrid parallelism
US11562047B2 (en) * 2020-01-31 2023-01-24 Microsoft Technology Licensing, Llc Accelerator for dense and sparse matrix computations
KR20210106131A (ko) 2020-02-20 2021-08-30 삼성전자주식회사 전자 장치 및 그의 제어 방법
CN112418417B (zh) * 2020-09-24 2024-02-27 北京计算机技术及应用研究所 基于simd技术的卷积神经网络加速装置及方法
CN115222015A (zh) 2021-04-21 2022-10-21 阿里巴巴新加坡控股有限公司 指令处理装置、加速单元和服务器

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1999004368A1 (en) * 1997-07-15 1999-01-28 Silverbrook Research Pty. Limited A camera with internal printing system
TW201635143A (zh) * 2014-12-17 2016-10-01 輝達公司 序列中有效工作、負載平衡、及合併式的序列平行化消耗

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5206822A (en) 1991-11-15 1993-04-27 Regents Of The University Of California Method and apparatus for optimized processing of sparse matrices
US9367519B2 (en) 2013-08-30 2016-06-14 Microsoft Technology Licensing, Llc Sparse matrix data structure
US10339447B2 (en) * 2014-01-23 2019-07-02 Qualcomm Incorporated Configuring sparse neuronal networks
US9311558B2 (en) 2014-04-16 2016-04-12 I.R.I.S. Pattern recognition system
EP3035204B1 (en) 2014-12-19 2018-08-15 Intel Corporation Storage device and method for performing convolution operations
US20160328645A1 (en) * 2015-05-08 2016-11-10 Qualcomm Incorporated Reduced computational complexity for fixed point neural network
US10460230B2 (en) * 2015-06-04 2019-10-29 Samsung Electronics Co., Ltd. Reducing computations in a neural network
US10592252B2 (en) * 2015-12-31 2020-03-17 Microsoft Technology Licensing, Llc Efficient instruction processing for sparse data

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1999004368A1 (en) * 1997-07-15 1999-01-28 Silverbrook Research Pty. Limited A camera with internal printing system
TW201635143A (zh) * 2014-12-17 2016-10-01 輝達公司 序列中有效工作、負載平衡、及合併式的序列平行化消耗

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Jorge Albericio, Patrick Judd, Alberto Delmas, Sayeh Sharify, Andreas Moshovos," Bit-Pragmatic Deep Neural Network Computing", arXiv:1610.06920v1 [cs.LG],2016/10/20 *

Also Published As

Publication number Publication date
US10871964B2 (en) 2020-12-22
US20180189056A1 (en) 2018-07-05
WO2018125429A1 (en) 2018-07-05
TW201824095A (zh) 2018-07-01
CN110121721A (zh) 2019-08-13

Similar Documents

Publication Publication Date Title
TWI759361B (zh) 用於稀疏神經網路加速的架構、方法、電腦可讀取媒體和裝備
CN110050267B (zh) 用于数据管理的***和方法
US20180164866A1 (en) Low-power architecture for sparse neural network
TWI775605B (zh) 深度視覺處理器
EP3685319B1 (en) Direct access, hardware acceleration in neural network
US11586417B2 (en) Exploiting activation sparsity in deep neural networks
US10262218B2 (en) Simultaneous object detection and rigid transform estimation using neural network
US20190370664A1 (en) Operation method
CN108090565A (zh) 一种卷积神经网络并行化训练加速方法
US20210241071A1 (en) Architecture of a computer for calculating a convolution layer in a convolutional neural network
EP3809337A1 (en) Method and apparatus with neural network operation
TW201633181A (zh) 用於經非同步脈衝調制的取樣信號的事件驅動型時間迴旋
US11119507B2 (en) Hardware accelerator for online estimation
Que Reconfigurable acceleration of recurrent neural networks
Kästner et al. Analysis of hardware implementations to accelerate convolutional and recurrent neuronal networks
CN116997910A (zh) 张量控制器架构