TWI811291B - 深度學習加速器及加快深度學習操作的方法 - Google Patents
深度學習加速器及加快深度學習操作的方法 Download PDFInfo
- Publication number
- TWI811291B TWI811291B TW108102491A TW108102491A TWI811291B TW I811291 B TWI811291 B TW I811291B TW 108102491 A TW108102491 A TW 108102491A TW 108102491 A TW108102491 A TW 108102491A TW I811291 B TWI811291 B TW I811291B
- Authority
- TW
- Taiwan
- Prior art keywords
- weights
- zero
- input
- deep learning
- control mask
- Prior art date
Links
Images
Classifications
-
- 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
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Evolutionary Computation (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Image Analysis (AREA)
- Control Of Throttle Valves Provided In The Intake System Or In The Exhaust System (AREA)
- Auxiliary Drives, Propulsion Controls, And Safety Devices (AREA)
Abstract
深度學習加速器(DLA)包括多個處理元件(PEs),被分成多個PE組,用於通過對輸入啟動應用多維權重來執行卷積神經網絡(CNN)計算,以生成輸出啟動。DLA還包括調度器,該調度器根據控制遮罩將輸入啟動中的輸入資料和多維權重中的非零權重調度給處理元件。DLA還包括緩衝記憶體,其存儲控制遮罩,該控制遮罩指定多維權重中的零權重的位置。該多個PE組生成輸出啟動中的各個輸出通道的輸出資料,並共用指定相同的零權重的位置的相同控制遮罩。
Description
本申請要求2018年3月29日遞交的申請號為62/649,628的美國臨時案的優先權,在此合併參考該申請案的全部內容。
本申請通常涉及一種深度學習計算的架構,以及更特別地,涉及一種深度學習加速器及加快深度學習操作的方法。
深度學習因其優越性能而在計算機視覺、語音識別、自然語言處理、生物資訊學等領域中獲得廣泛應用。深度學習是機器學習的一個分支,它使用包含多個隱藏層的人工神經網絡。一種稱為卷積神經網絡(convolutional neural network,CNN)的人工神經網絡已用於諸如圖像資料的大資料集的深度學習。
然而,神經網絡計算的工作量很大。大多數神經網絡計算涉及乘法和加法計算。例如,卷積神經網絡(CNN)的核心計算是卷積(convolution),其涉及高階巢狀循環(high-order nested loop)。對於特徵提取,卷積神經網絡(CNN)在一組輸入通道(例如,紅色,綠色和藍色)上將輸入圖像圖元與一組濾波器(filters)進行卷積,然後進行非線性計算,下採樣計算和類別評分計算(class scores
computation)。該神經網絡計算對資源要求很高。因此,需要改進神經網絡計算以提高系統性能。
在一實施例中,本申請提供一種深度學習加速器(DLA),以執行深度學習操作。深度學習加速器(DLA)包括多個處理元件(PE),被分成多個PE組,用於通過對輸入啟動應用多維權重來執行卷積層的計算,以產生輸出啟動。深度學習加速器(DLA)還包括調度器,該調度器根據控制遮罩將輸入啟動中的輸入資料和多維權重中的非零權重調度給處理元件。其中,該控制遮罩指定該多維權重中的零權重的位置,以及,該多個PE組生成該輸出啟動中的各輸出通道的輸出資料,並共用相同的控制遮罩,該相同的控制遮罩指定相同的零權重的位置。
在另一實施例中,本申請提供了一種用於加快深度學習操作的方法。該方法包括:將多個處理元件(PE)分成多個PE組,每個PE組通過對輸入啟動應用多維權重來執行卷積層的計算。該方法還包括:根據控制遮罩將該輸入啟動中的輸入資料和該多維權重中的非零權重調度給該PE組,其中,該控制遮罩指定該多維權重中的零權重的位置,以及,該多個PE組共用相同的控制遮罩,該相同的控制遮罩指定相同的零權重的位置;以及,該多個PE組生成該輸出啟動中的各個輸出通道的輸出資料。
本發明提供了一種改進的神經網絡計算架構,能夠提高系統性能。在下面的詳細描述中描述其它實施例和優點。本發明內容並非旨在限定本發明。本發明由申請專利範圍限定。
100、620:深度學習加速器
110、625:處理元件
120:調度器
124:硬體控制器
125:控制遮罩
130:緩衝器
140:緩衝加載器
145:零輸入映射
150、630:記憶體
500:方法
510、520、530:步驟
600:系統
610:處理器
640:網絡介面
在下面的詳細描述中,為了說明的目的,闡述了許多具體細節,以便所屬技術領域中具有通常知識者能夠更透徹地理解本發明實施例。然而,顯而易見的是,可以在沒有這些具體細節的情況下實施一個或複數個實施例,不同的實施例或不同實施例中披露的不同特徵可根據需求相結合,而並不應當僅限於附圖所列舉的實施例。通過閱讀後續的詳細描述和實施例可以更全面地理解本發明,實施例係搭配附圖來說明。
第1圖根據一實施例示出了深度學習加速器的示意圖。
第2圖根據一實施例示出了處理元件(PEs)110用於執行CNN計算的佈置的示意圖。
第3A圖,第3B圖,第3C圖根據一些實施例示出了用於CNN計算的零權重的模式。
第4圖根據一實施例示出了全連接計算中被跳過的權重。
第5圖是根據一實施例示出的用於執行深度學習操作的方法的流程示意圖。
第6圖示出了操作本發明實施例的一種系統的示例。
以下描述為本發明實施的較佳實施例。以下實施例僅用來例舉闡釋本發明的技術特徵,並非用來限制本發明的範疇。在通篇說明書及申請專利範圍當中使用了某些詞彙來指稱特定的組件。所屬技術領域中具有通常知識者應可理解,製造商可能會用不同的名詞來稱呼同樣的組件。本說明書及申請專利範圍並不以名稱的差異來作為區別組件的方式,而係以組件在功能上的差異來作為區別的基準。本發明的範圍應當參考後附的申請專利範圍來確定。在以下
描述和申請專利範圍當中所提及的術語“包含”和“包括”為開放式用語,故應解釋成“包含,但不限定於...”的意思。此外,術語“耦接”意指間接或直接的電氣連接。因此,若文中描述一個裝置耦接至另一裝置,則代表該裝置可直接電氣連接於該另一裝置,或者透過其它裝置或連接手段間接地電氣連接至該另一裝置。
本發明實施例提供了一種用於在神經網絡計算中跳過權重(skipping weights)以減少工作量的系統和方法。被跳過的權重(skipped weights)是在神經網絡計算中使用的權重,例如,全連接(fully-connected,FC)神經網絡、卷積神經網絡(CNN)或在計算中使用權重的其它神經網絡。當權重的值為零(稱為“零權重”(“zero weight”)時,或者當權重與零值(例如,零值輸入)相乘時,該權重被跳過。由於不必從記憶體(memory)讀取該被跳過的權重,從而跳過權重能夠減少神經網絡記憶體帶寬(bandwidth)。由於不必對被跳過的權重(如零權重)執行乘法操作,因而跳過權重還能夠降低計算成本。在一實施例中,選擇或佈置被跳過的權重能夠優化用於控制權重跳過的軟體和硬體開銷。本發明實施例通過選擇適合於輸入大小的操作模式來實現有效的卷積計算。系統中的乘數(multipliers)被不同的操作模式共用。本發明實施例的優勢將在以下描述中進行詳細闡述。
在描述深度學習神經網絡的硬體架構之前,描述一些術語是有用的。例如,深度學習神經網絡可以包括卷積(CONV)層,批量歸一化(batch normalization,BN)層,修正線性單元(rectifier linear unit,ReLU)層,全連接(FC)層,池化層(pooling layer),分類器層(softmax layer)等的組合。每個層的輸入被稱為輸入啟動(input activation),而輸出被稱為輸出啟動(output activation)。輸入啟動通常包括多個輸入通道(例如,C個輸入通道),以及,輸出啟動通常包括多個輸出通道(例如,N個輸出通道)。
在全連接(FC)層中,輸入啟動的每個輸入通道通過加權鏈接
(weighted link)被鏈接到輸出啟動的每個輸出通道。例如,輸入啟動中的C個輸入通道的資料與(C×N)維(dimension,D)的多維權重(multi-dimensional weights)相乘,以生成(generate)輸出啟動中的N個輸出通道的輸出資料。
修正線性單元(ReLU)層執行修正(rectifier)功能;例如,當輸入資料值等於或小於零時,具有零閾值的修正函數使得該函數輸出零。
卷積層對輸入資料和一組濾波器權重(filter weights)執行卷積。通常,卷積層中使用的每個濾波器的高度和寬度小於輸入資料的高度和寬度。例如,濾波器在寬度維度(width dimension,W)和高度(height dimension,H)維度中由5×5維的權重組成;也就是說,沿寬度維度的五個權重和沿高度維度的五個權重。卷積層的輸入啟動(例如,輸入圖像)在寬度維度和高度維度的每一個維度中具有數百或數千或更多圖元,且被細分為用於卷積操作的瓦片(tiles,即,塊)。除了寬度和高度之外,輸入圖像還具有深度維度(depth dimension),其也被稱為輸入通道的數量(例如,輸入圖像中的顏色通道的數量)。每個輸入通道由H×W維的相應濾波器濾波。因此,C個輸入通道的輸入圖像由具有多維權重C×H×W的相應濾波器濾波。在卷積過程中,濾波器在輸入圖像的輸入通道的寬度和/或高度上滑動(slide),並且在任何位置處的權重和圖像圖元值之間計算點積(dot product)。當濾波器在輸入圖像上滑動時,生成2維(2D)輸出特徵圖(output feature map)。該輸出特徵圖是在輸入圖像的每個空間位置處的濾波器響應的表示。不同的輸出特徵圖可用來檢測輸入圖像中的不同特徵。當N個C×H×W維的濾波器被應用於C個輸入通道的輸入圖像時,生成N個輸出特徵圖(即,輸出啟動的N個輸出通道)。因此,用於卷積層的濾波器權重可以通過具有坐標(N,H,W,C)的位置來識別,其中,該位置指定該權重對應的輸出通道,高度坐標,寬度坐標和對應的輸入通道。
第1圖是根據一實施例的支持權重跳過的神經網絡計算的深度學習
加速器(deep leaming accelerator,DLA)100的示意圖。深度學習加速器(DLA)100包括多個處理元件(processing elements,PEs)110,每個處理元件包括至少一個乘法累加器(multiply-and-accumulate,MAC)電路(例如,連接到加法器的乘法器),以執行乘法和加法。處理元件(PEs)110對輸入資料和調度器(dispatcher)120調度的權重執行操作。當深度學習加速器(DLA)100執行神經網絡計算時,調度器120根據控制遮罩(control mask)125將權重調度給處理元件(PEs)110,其中,控制遮罩125指定(specify)零權重的位置。零權重是在處理元件(PEs)110中的乘法累加器(MAC)所執行的計算中要跳過的這些權重;例如,能夠跳過乘法中使用的零權重。在一實施例中,調度器120包括硬體控制器124,其執行對存儲在控制遮罩125中的零權重位置的讀訪問。
在一實施例中,控制遮罩125通過將多維權重的給定(given)輸入通道識別為零值來指定零權重的位置。在另一實施例中,控制遮罩125通過將多維權重的給定高度坐標和給定寬度坐標識別為零值來指定零權重的位置。在又一實施例中,控制遮罩125通過將多維權重的給定輸入通道,給定高度坐標和給定寬度坐標識別為零值來指定零權重的位置。
深度學習加速器(DLA)100還包括緩衝器(buffer)130,用於存儲輸入資料和權重,緩衝器130可以是靜態隨機存取記憶體(Static Random Access Memory,SRAM)單元。在一些實施例中,處理元件(PEs)110還用於執行完全連接(FC)層的計算,以及,深度學習加速器(DLA)100還包括緩衝加載器(buffer loader)140,緩衝加載器140用於從記憶體150加載輸入資料和權重,記憶體150可以是動態隨機存取記憶體(Dynamic Random Access Memory,DRAM)。應當理解的是,在一些實施例中,緩衝器130和/或記憶體150可以是易失性或非易失性記憶體裝置,本發明實施例對其類型不做任何限制。在一實施例中,緩衝加載器140包括零輸入映射(zero input map)145,其表示(indicate)
輸入啟動中的零值輸入資料的位置和輸入啟動中的非零輸入資料的位置。
第2圖根據一實施例示出了處理元件(PEs)110用於執行卷積層的計算的佈置的示意圖。在該示例中,深度學習加速器(DLA)100(第1圖)包括十二個處理元件(PEs)110。此外,輸入啟動具有四個輸入通道(C=4),以及,輸出啟動具有六個輸出通道(N=6)。存在六個三維(3D)濾波器(F1-F6)用於所對應的6個輸出通道,每個濾波器的尺寸為(H×W×C=3×3×4)維。處理元件(PEs)110被分成P個PE組215;在該示例中,P=4。P個PE組215生成輸出啟動中的各個輸出通道的輸出資料;也就是說,每個PE組215被映射到(生成輸出啟動的輸出通道的輸出資料)輸出啟動的輸出通道。此外,PE組215共用相同的控制遮罩,其在濾波器F1-F4中指定相同的零權重位置(the same positions of zero weights),也就是說,濾波器F1-F4中被控制遮罩指定的零權重的位置相同。在一些實施例中,濾波器F5-F6中的零權重位置可以不同於濾波器F1-F4中的零權重位置。
在該示例中,處理元件(PEs)110在第一時間段中利用濾波器F1-F4的濾波器權重執行卷積層的計算,以生成所對應的四個輸出通道,以及,在第二時間段中利用濾波器F5-F6的濾波器權重執行卷積層的計算,以生成輸出啟動的另外兩個輸出通道。控制遮罩指定濾波器F1,F2,F3和F4中的零權重的位置,4個PE組215利用這4個濾波器F1,F2,F3和F4進行卷積層的計算。在該示例中,濾波器F1-F4中的每一個在第一輸入通道的左上角(顯示為陰影方塊)具有零權重;因此,控制遮罩將(H,W,C)=(1,1,1)指定為零權重。當調度器120(第1圖)將F1-F4的權重調度給PE組215以進行卷積層的計算時,調度器120針對所有四個輸出通道跳過在(1,1,1)位置處的權重的調度。也就是說,調度器120將非零權重調度給PE組215,而不將零權重調度給PE組215進行卷積層的計算。
與傳統CNN計算系統(在該傳統CNN計算系統中,跨越不同輸出通
道的濾波器具有不同的零位置)相比,本文描述的共用(shared)控制遮罩能夠顯著降低控制硬體用於識別零權重和控制權重跳過調度的複雜度。在這裡描述的實施例中,為了滿足性能目標,共用相同控制遮罩的PE組215的數量(小於或等於3D濾波器的數量)是可調整的。當所有3D濾波器(在該示例中為六個)使用相同的控制遮罩時,控制硬體中的開銷被最小化。然而,如果CNN性能由於施加到所有輸出通道的濾波器上的相同控制遮罩而劣化,則共用該相同控制遮罩的這些濾波器的數量被相應地調整。這裡描述的實施例允許濾波器的子集(例如,P個濾波器)使用相同的控制遮罩,其中PN,(N是輸出通道的數量,其也是3D濾波器的總數量)。也就是說,PE組的數量小於或等於輸出啟動中的輸出通道的數量。
在一實施例中,同一PE組215中的處理元件(PEs)110對輸入啟動的不同部分並行地進行操作,以生成輸出通道的輸出資料。不同PE組215中的處理元件(PEs)110使用相應的(corresponding)濾波器對輸入啟動的相同部分並行地進行操作,以生成相應輸出通道的輸出資料。
第3A圖,第3B圖,第3C圖根據一些實施例示出了用於卷積層的計算的零權重的模式(pattern)。在第3A圖,第3B圖,第3C圖的示例中,H=W=C=3,以及,N=4。第3A圖是示出被跨越一組輸出通道的濾波器共用的第一零權重模式的示意圖。第一零權重模式用於逐通道(channel-wise)權重跳過,在該第一零權重模式中,對不同的輸出通道來說,跨越高度維度(H)和寬度維度(W)的第一輸入通道的權重是零。每個輸入通道中的零權重在第3A圖中顯示為陰影方塊的層。第一零權重模式由相應的控制遮罩描述。控制遮罩可以指定C=1,這意味著對於這一組輸出通道(例如,P個輸出通道)的指定坐標位置中的權重是零值。在一實施例中,控制遮罩將零權重的位置指定為(H,W,C)=(x,x,1),其中,x表示“不關心”,即無論其值是多少都沒關係。調度器120跳過調度使
用該控制項遮罩中指定的這些零權重的MAC操作。
第3B圖是示出被跨越一組輸出通道的濾波器共用的第二零權重模式的示意圖。第二零權重模式用於逐點(point-wise)權重跳過,在該第二零權重模式中,對於這一組輸出通道來說,跨輸入通道維度(C)的給定(H,W)位置的權重是零。零權重在第3B圖中顯示為陰影方塊。第二零權重模式由相應的控制遮罩描述。該控制遮罩指定(H,W)=(1,3),這意味著對於這一組輸出通道(例如,P個輸出通道)的指定坐標位置中的權重是零值。在一實施例中,控制遮罩將零權重的位置指定為(H,W,C)=(1,3,x),其中,x表示“不關心”。調度器120跳過調度使用該控制項遮罩中指定的那些零權重的MAC操作。
第3C圖是示出被跨越一組輸出通道的濾波器共用的第三零權重模式的示意圖。第三零權重模式用於逐形狀(shape-wise)權重跳過,在該第三零權重模式中,對於這一組輸出通道來說,給定位置(H,W,C)的權重是零。零權重在第3C圖中顯示為陰影方塊。第三零權重模式由相應的控制遮罩描述。該控制遮罩指定(H,W,C)=(1,1,1),這意味著對於不同的輸出通道(例如,P個輸出通道)的指定坐標位置中的權重是零值。調度器120跳過調度使用該控制遮罩中指定的那些零權重的MAC操作。
第3A圖,第3B圖,第3C圖的示例示出了控制遮罩在每個卷積層的計算中能簡化為從跟蹤四維(N,H,W,C)到少於四維的零權重(第3A圖中的一維,第3B圖中的二維,以及,第3C圖中的三維)。跨P個輸出通道的統一(uniform)零權重模式從P個PE組共用的控制遮罩中移除(remove)了一個維度(即,輸出通道維度(N))。因此,返回參考第1圖,還能夠簡化用於調度器120的硬體控制器124,硬體控制器124讀取控制遮罩125。
在第1圖的實施例中,緩衝加載器140首先將來自記憶體(如DRAM)150的輸入資料加載到緩衝器130中。其中一些輸入資料值可能是零,例如,作
為前一神經網絡層中的ReLU操作的結果。對於全連接(FC)層的計算,每個零值輸入資料使得乘法輸出等於零。因此,將與零輸入相乘的相應權重可以被標記為“被跳過的權重”。在一些實施例中,緩衝加載器140用於從記憶體150讀取全連接(FC)層的FC輸入資料,並根據該FC輸入資料的值從該記憶體150中選擇性地讀取FC權重。例如,緩衝加載器140用於從記憶體150讀取該FC權重的第一子集(如第4圖中描述的W2、W3)而不從記憶體150讀取該FC權重的第二子集(如第4圖中描述的W1、W4),該第一子集對應於FC輸入資料的非零FC輸入通道(該非零FC輸入通道對應的輸入資料不為零),該第二子集對應於FC輸入資料的零FC輸入通道(該零FC輸入通道對應的輸入資料為零)。在一實施例中,調度器120還用於識別該第一子集中的零FC權重(權重為零);以及,將該第一子集中的非零FC權重(權重不為零)調度給處理元件110,而不將第二子集中的FC權重(包括零FC權重和非零FC權重)和第一子集中的零FC權重調度給用於FC神經網絡計算的處理元件110。具體描述請參考第4圖。
第4圖根據一實施例示出了FC層的計算中被跳過的權重。參考第4圖,緩衝加載器140讀取輸入啟動410,該輸入啟動410包括多個輸入通道(例如,C1,C2,C3和C4)。每個輸入通道中的資料將乘以相應的權重(例如,二維權重420的對應列)。在該示例中,在讀取輸入啟動410之後,緩衝加載器140識別出輸入通道(例如,輸入通道C1和C4)中的資料為零(在第4圖中標記為“Z”),並將相應的權重(例如,W1和W4這兩列)標記為“被跳過的權重”(標記為“S”)而不加載W1和W4。在該示例中,輸入通道C2和C3中的資料是非零(標記為“N”),因此,衝器加載器140將對應的權重W2和W3從記憶體(如DRAM)150加載到緩衝器130中。從而,緩衝加載器140跳過讀取(和加載)權重W1和W4。跳過對W1和W4的讀訪問可減少記憶體總線流量。
在權重W2和W3被加載到緩衝器130之後,調度器120識別W2和W3
中的零權重(在第4圖中標記為“Z”)和非零權重(標記為“N”)。調度器120會跳過將零權重調度給處理元件(PEs)110的操作,即不將零權重調度給處理元件(PEs)110。調度器120將W2和W3中的非零權重與對應的輸入通道C2和C3中的輸入資料一起調度給處理元件(PEs)110以進行MAC操作。通過跳過被加載到緩衝器130的零權重的MAC操作,可以減少處理元件(PEs)110的工作量。
第5圖是根據一實施例示出的用於執行深度學習操作的方法500的流程示意圖。在一實施例中,方法500可以由加速器(例如,第1圖的深度學習加速器(DLA)100)執行。
方法500開始於步驟510處,在步驟510中,加速器將多個處理元件(PEs)分成多個PE組。每個PE組通過對輸入啟動應用多維權重來執行卷積層的計算。在一些實施例中,加速器包括調度器,在步驟520中,該調度器根據控制遮罩將輸入啟動中的輸入資料和多維權重中的非零權重調度給PE組。控制遮罩指定該多維權重中的零權重的位置。該多個PE組共用相同的控制遮罩,該相同的控制遮罩指定相同的零權重的位置。在步驟530中,該多個PE組生成輸出啟動的各個輸出通道的輸出資料。
在一實施例中,非暫時性計算機可讀介質在其上存儲指令,當在系統的一個或多個處理器上執行時,使得系統執行第5圖的方法500。下面參考第6圖描述該系統的一種示例。
第6圖示出了操作本發明實施例的系統600的一種示例。系統600包括一個或多個處理器(這裡稱為處理器610),例如一個或多個中央處理單元(CPU)、圖形處理單元(GPU)、數位信號處理器(DSP),媒體處理器或其它通用和/或專用處理電路。處理器610耦接於深度學習加速器(DLA)620,深度學習加速器(DLA)620是第1圖的深度學習加速器(DLA)100。深度學習加速器(DLA)620包括多個硬體組件,例如處理元件(PEs)625,以及第1圖的深
度學習加速器(DLA)100中示出的其它硬體組件。處理元件(PEs)625的每一個可進一步包括算術組件,例如乘法器,加法器,累加器等中的一個或多個。處理元件(PEs)625被佈置為用於執行結合第1圖至第5圖所描述的上述神經網絡計算的一個或多個組。在一實施例中,深度學習加速器(DLA)620的輸出被發送到記憶體630,並且由處理器610進一步處理以用於各種應用。在一些實施例中,系統600還包括網絡介面640,以與外界交換被深度學習加速器(DLA)620處理後的資料。
記憶體630包括易失性和/或非易失性記憶體裝置,諸如隨機存取記憶體(RAM),閃存,只讀記憶體(ROM)等。記憶體630位於晶片上(即在與處理器610相同的晶片上),且包括高速緩存,寄存器檔和由RAM裝置構成的緩衝器。可替代地或另外地,記憶體630可以包括作為主記憶體的一部分的片外記憶體裝置,諸如動態隨機存取記憶體(DRAM)裝置。記憶體630可以被深度學習加速器(DLA)620中的處理元件(PEs)625訪問。系統600還可以包括用於連接到網絡的網絡介面(例如,個人區域網絡,局域網,廣域網等)。系統600可以是計算裝置,通信裝置或計算和通信裝置的組合的一部分。
已經參考第1圖和第6圖的示例性實施例描述了第5圖的流程圖的操作。然而,應該理解的是,第5圖的流程圖的操作可以由除了參考第1圖和第6圖討論的實施例之外的其它實施例來執行,以及,參考第1圖和第6圖討論的實施例可以執行與參考流程圖所討論的操作不同的操作。雖然第5圖的流程圖示出了由本發明的某些實施例執行的特定操作順序,但是應該理解的是,此順序是示例性的(例如,替代實施例中可以以不同的順序執行操作,組合某些操作,重疊某些操作等)。
本文已經描述了各種功能組件或塊。如所屬技術領域中具有普通知識者將理解的,功能塊將優選地通過電路(如專用電路或通用電路,其在一個
或多個處理器和編碼指令的控制下操作)來實現,其通常包括以這樣的方式配置的電晶體,以便根據這裡描述的功能和操作來控制電路的操作。
雖然已經對本發明實施例及其優點進行了詳細說明,但應當理解的係,在不脫離本發明的精神以及申請專利範圍所定義的範圍內,可以對本發明進行各種改變、替換和變更,例如,可以通過結合不同實施例的若干部分來得出新的實施例。所描述的實施例在所有方面僅用於說明的目的而並非用於限制本發明。本發明的保護範圍當視所附的申請專利範圍所界定者為準。所屬技術領域中具有通常知識者皆在不脫離本發明之精神以及範圍內做些許更動與潤飾。
以上所述僅為本發明之較佳實施例,凡依本發明申請專利範圍所做之均等變化與修飾,皆應屬本發明之涵蓋範圍。
100:深度學習加速器
110:處理元件
120:調度器
124:硬體控制器
125:控制遮罩
130:緩衝器
140:緩衝加載器
145:零輸入映射
150:記憶體
Claims (18)
- 一種深度學習加速器,包括:多個處理元件(PE),被分成P個PE組,用於通過對輸入啟動應用N個多維權重來執行卷積層的計算,以生成輸出啟動,其中,P和N分別為正整數,P小於或等於N;以及調度器,用於根據控制遮罩將該輸入啟動中的輸入資料和該多維權重中的非零權重調度給該PE組,而不將零權重調度給該PE組執行卷積層的計算;其中,該控制遮罩針對該N個多維權重中的每個多維權重指定零權重的位置,以及,該P個PE組生成該輸出啟動中的各輸出通道的輸出資料,其中,該N個多維權重中的至少P個多維權重共用相同的控制遮罩,該相同的控制遮罩針對該至少P個多維權重中的每個多維權重指定相同的零權重的位置。
- 根據申請專利範圍第1項所述的深度學習加速器,其中,該控制遮罩通過將該至少P個多維權重的給定輸入通道識別為零值來指定該零權重的位置。
- 根據申請專利範圍第1項所述的深度學習加速器,其中,該控制遮罩通過將該至少P個多維權重的給定高度坐標和給定寬度坐標識別為零值來指定該零權重的位置。
- 根據申請專利範圍第1項所述的深度學習加速器,其中,該控制遮罩通過將該至少P個多維權重的給定輸入通道、給定高度坐標和給定寬度坐 標識別為零值來指定該零權重的位置。
- 根據申請專利範圍第1項所述的深度學習加速器,其中,每個PE組包括多個PE,該多個PE對該輸入啟動的不同部分並行地執行該卷積層的計算。
- 根據申請專利範圍第1項所述的深度學習加速器,其中,該多個PE組的數量小於或等於該輸出啟動中的輸出通道的數量。
- 根據申請專利範圍第1項所述的深度學習加速器,其中,該處理元件還用於執行完全連接(FC)層的計算,以及,該深度學習加速器還包括:緩衝加載器,用於從記憶體讀取該FC層的FC輸入資料,並根據該FC輸入資料的值從該記憶體中選擇性地讀取FC權重。
- 根據申請專利範圍第7項所述的深度學習加速器,其中,該緩衝加載器用於:從該記憶體讀取該FC權重的第一子集而不從該記憶體讀取該FC權重的第二子集,該第一子集對應於該FC輸入資料的非零FC輸入通道,該第二子集對應於該FC輸入資料的零FC輸入通道。
- 根據申請專利範圍第7項所述的深度學習加速器,其中,該調度器還用於:識別該第一子集中的零FC權重;以及,將該第一子集中的非零FC權重調度給該處理元件,而不將該第二子集中的 FC權重和該第一子集中的零FC權重調度給該處理元件。
- 一種加快深度學習操作的方法,包括:將多個處理元件(PE)分成P個PE組,每個PE組通過對輸入啟動應用N個多維權重來執行卷積層的計算,其中,P和N分別為正整數,P小於或等於N;根據控制遮罩將該輸入啟動中的輸入資料和該N個多維權重中的非零權重調度給該PE組,而不將零權重調度給該PE組執行卷積層的計算,其中,該控制遮罩針對該N個多維權重中的每個多維權重指定零權重的位置,以及,該N個多維權重中的至少P個多維權重共用相同的控制遮罩,該相同的控制遮罩針對該至少P個多維權重中的每個多維權重指定相同的零權重的位置;以及,該P個PE組生成該輸出啟動中的各個輸出通道的輸出資料。
- 根據申請專利範圍第10項所述的方法,其中,該控制遮罩通過將該至少P個多維權重的給定輸入通道識別為零值來指定該零權重的位置。
- 根據申請專利範圍第10項所述的方法,其中,該控制遮罩通過將該至少P個多維權重的給定高度坐標和給定寬度坐標識別為零值來指定該零權重的位置。
- 根據申請專利範圍第10項所述的方法,其中,該控制遮罩通過將該至少P個多維權重的給定輸入通道、給定高度坐標和給定寬度坐標識別為零值來指定該零權重的位置。
- 根據申請專利範圍第10項所述的方法,其中,該方法還包括:每個PE組中的多個處理元件對該輸入啟動的不同部分並行地執行該卷積層的計算。
- 根據申請專利範圍第10項所述的方法,其中,該多個PE組的數量小於或等於該輸出啟動中的輸出通道的數量。
- 根據申請專利範圍第10項所述的方法,其中,該處理元件還用於執行完全連接(FC)層的計算,以及,該方法還包括:從記憶體讀取該FC層的FC輸入資料;以及,根據該FC輸入資料的值從該記憶體中選擇性地讀取FC權重。
- 根據申請專利範圍第16項所述的方法,其中,該方法還包括:從該記憶體讀取該FC權重的第一子集而不從該記憶體讀取該FC權重的第二子集,該第一子集對應於該FC輸入資料的非零FC輸入通道,該第二子集對應於該FC輸入資料的零FC輸入通道。
- 根據申請專利範圍第16項所述的方法,其中,該方法還包括:識別該第一子集中的零FC權重;以及,將該第一子集中的非零FC權重調度給該處理元件,而不將該第二子集中的FC權重和該第一子集中的零FC權重調度給該處理元件。
Applications Claiming Priority (4)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US201862649628P | 2018-03-29 | 2018-03-29 | |
| US62/649,628 | 2018-03-29 | ||
| US16/221,295 | 2018-12-14 | ||
| US16/221,295 US20190303757A1 (en) | 2018-03-29 | 2018-12-14 | Weight skipping deep learning accelerator |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| TW201942808A TW201942808A (zh) | 2019-11-01 |
| TWI811291B true TWI811291B (zh) | 2023-08-11 |
Family
ID=68054474
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| TW108102491A TWI811291B (zh) | 2018-03-29 | 2019-01-23 | 深度學習加速器及加快深度學習操作的方法 |
Country Status (3)
| Country | Link |
|---|---|
| US (1) | US20190303757A1 (zh) |
| CN (1) | CN110322001A (zh) |
| TW (1) | TWI811291B (zh) |
Families Citing this family (23)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN108228696B (zh) * | 2017-08-31 | 2021-03-23 | 深圳市商汤科技有限公司 | 人脸图像检索方法和系统、拍摄装置、计算机存储介质 |
| US10579432B1 (en) * | 2018-08-13 | 2020-03-03 | Twitter, Inc. | Load balancing deterministically-subsetted processing resources using fractional loads |
| KR102721579B1 (ko) * | 2018-12-31 | 2024-10-25 | 에스케이하이닉스 주식회사 | 프로세싱 시스템 |
| US12373696B2 (en) * | 2019-06-21 | 2025-07-29 | Samsung Electronics Co., Ltd. | Neural network hardware accelerator system with zero-skipping and hierarchical structured pruning methods |
| US11222092B2 (en) * | 2019-07-16 | 2022-01-11 | Facebook Technologies, Llc | Optimization for deconvolution |
| US11182458B2 (en) | 2019-12-12 | 2021-11-23 | International Business Machines Corporation | Three-dimensional lane predication for matrix operations |
| CN113011577B (zh) * | 2019-12-20 | 2024-01-05 | 阿里巴巴集团控股有限公司 | 处理单元、处理器核、神经网络训练机及方法 |
| CN113807506B (zh) * | 2020-06-11 | 2023-03-24 | 杭州知存智能科技有限公司 | 数据加载电路和方法 |
| US11977969B2 (en) | 2020-06-11 | 2024-05-07 | Hangzhou Zhicun Intelligent Technology Co., Ltd. | Data loading |
| CN113065352B (zh) * | 2020-06-29 | 2022-07-19 | 国网浙江省电力有限公司杭州供电公司 | 一种电网调度工作文本的操作内容识别方法 |
| JP7598714B2 (ja) * | 2020-07-02 | 2024-12-12 | ルネサスエレクトロニクス株式会社 | 半導体装置およびそれに用いるデータ生成方法 |
| US12182621B2 (en) * | 2020-07-21 | 2024-12-31 | The Governing Council Of The University Of Toronto | System and method for using sparsity to accelerate deep learning networks |
| CN111626414B (zh) * | 2020-07-30 | 2020-10-27 | 电子科技大学 | 一种动态多精度神经网络加速单元 |
| TWI768497B (zh) * | 2020-10-07 | 2022-06-21 | 大陸商星宸科技股份有限公司 | 智慧處理器、資料處理方法及儲存介質 |
| CN112257859B (zh) * | 2020-10-30 | 2024-07-05 | 地平线(上海)人工智能技术有限公司 | 特征数据处理方法及装置、设备、存储介质 |
| KR102900552B1 (ko) * | 2020-11-24 | 2025-12-16 | 삼성전자주식회사 | 컨벌루션 연산을 위한 데이터 공유 방법, 페처 및 컨벌루션 연산 장치 |
| US12499357B2 (en) | 2020-12-30 | 2025-12-16 | Industrial Technology Research Institute | Data compression method, data compression system and operation method of deep learning acceleration chip |
| CN112883982B (zh) * | 2021-01-08 | 2023-04-18 | 西北工业大学 | 一种面向神经网络稀疏特征的数据去零编码及封装方法 |
| US20230103750A1 (en) * | 2021-10-06 | 2023-04-06 | Mediatek Inc. | Balancing workload for zero skipping on deep learning accelerator |
| GB2621383B (en) * | 2022-08-11 | 2025-07-23 | Advanced Risc Mach Ltd | Mechanism for neural network processing unit skipping |
| CN115660056B (zh) * | 2022-11-02 | 2026-01-09 | 无锡江南计算技术研究所 | 一种神经网络硬件加速器的数据在线压缩方法及装置 |
| TWI857749B (zh) * | 2023-08-16 | 2024-10-01 | 國立成功大學 | 執行深度可分離卷積運算的加速器系統和方法 |
| CN120911519A (zh) * | 2025-10-10 | 2025-11-07 | 长沙金维集成电路股份有限公司 | 数据处理方法、卷积引擎、设备及存储介质 |
Citations (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN107341544A (zh) * | 2017-06-30 | 2017-11-10 | 清华大学 | 一种基于可分割阵列的可重构加速器及其实现方法 |
Family Cites Families (10)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20160358069A1 (en) * | 2015-06-03 | 2016-12-08 | Samsung Electronics Co., Ltd. | Neural network suppression |
| US10614354B2 (en) * | 2015-10-07 | 2020-04-07 | Altera Corporation | Method and apparatus for implementing layers on a convolutional neural network accelerator |
| US20170344876A1 (en) * | 2016-05-31 | 2017-11-30 | Samsung Electronics Co., Ltd. | Efficient sparse parallel winograd-based convolution scheme |
| KR102459855B1 (ko) * | 2016-06-14 | 2022-10-27 | 삼성전자주식회사 | 심층 신경망용 가속기 |
| KR20180012439A (ko) * | 2016-07-27 | 2018-02-06 | 삼성전자주식회사 | 회선 신경망에서 가속기 및 이의 동작 방법 |
| US10698657B2 (en) * | 2016-08-12 | 2020-06-30 | Xilinx, Inc. | Hardware accelerator for compressed RNN on FPGA |
| CA3038967A1 (en) * | 2016-10-04 | 2018-04-12 | Magic Leap, Inc. | Efficient data layouts for convolutional neural networks |
| US11003985B2 (en) * | 2016-11-07 | 2021-05-11 | Electronics And Telecommunications Research Institute | Convolutional neural network system and operation method thereof |
| CN107239824A (zh) * | 2016-12-05 | 2017-10-10 | 北京深鉴智能科技有限公司 | 用于实现稀疏卷积神经网络加速器的装置和方法 |
| US11631004B2 (en) * | 2018-03-28 | 2023-04-18 | Intel Corporation | Channel pruning of a convolutional network based on gradient descent optimization |
-
2018
- 2018-12-14 US US16/221,295 patent/US20190303757A1/en not_active Abandoned
-
2019
- 2019-01-11 CN CN201910028541.8A patent/CN110322001A/zh active Pending
- 2019-01-23 TW TW108102491A patent/TWI811291B/zh active
Patent Citations (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN107341544A (zh) * | 2017-06-30 | 2017-11-10 | 清华大学 | 一种基于可分割阵列的可重构加速器及其实现方法 |
Also Published As
| Publication number | Publication date |
|---|---|
| US20190303757A1 (en) | 2019-10-03 |
| TW201942808A (zh) | 2019-11-01 |
| CN110322001A (zh) | 2019-10-11 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| TWI811291B (zh) | 深度學習加速器及加快深度學習操作的方法 | |
| TWI748151B (zh) | 神經網絡計算加速器及其執行的方法 | |
| CN107704922B (zh) | 人工神经网络处理装置 | |
| CN107679621B (zh) | 人工神经网络处理装置 | |
| TWI639119B (zh) | 執行卷積計算的系統及方法 | |
| JP2023109847A (ja) | 機械学習のための画像変換 | |
| KR102038390B1 (ko) | 고효율 병렬 처리를 위한 인공 신경망 모듈 및 이의 스케쥴링 방법 | |
| US20220083857A1 (en) | Convolutional neural network operation method and device | |
| US10755169B2 (en) | Hybrid non-uniform convolution transform engine for deep learning applications | |
| CN107679620A (zh) | 人工神经网络处理装置 | |
| WO2020199476A1 (zh) | 基于脉动阵列的神经网络加速方法、装置、计算机设备及存储介质 | |
| WO2019136762A1 (zh) | 人工智能处理器、及其所应用的处理方法 | |
| US12125124B1 (en) | Matrix transpose hardware acceleration | |
| CN112639726B (zh) | 用于执行并行计算的方法和系统 | |
| Kuramochi et al. | An FPGA-based low-latency accelerator for randomly wired neural networks | |
| CN113837922A (zh) | 计算装置、数据处理方法及相关产品 | |
| WO2024027039A1 (zh) | 数据处理方法、装置、设备和可读存储介质 | |
| US11164032B2 (en) | Method of performing data processing operation | |
| CN112967172A (zh) | 一种数据处理装置、方法、计算机设备及存储介质 | |
| CN113822975B (zh) | 用于对图像进行有效采样的技术 | |
| KR102441520B1 (ko) | 필터 분해 기법을 이용한 에너지 효율적 재구성형 cnn 가속기 장치 및 방법 | |
| TWI798591B (zh) | 卷積神經網路運算方法及裝置 | |
| CN113867800A (zh) | 计算装置、集成电路芯片、板卡、电子设备和计算方法 | |
| WO2024153908A1 (en) | Efficient data processing, arbitration and prioritization | |
| JP2024533636A (ja) | 畳み込みニューラルネットワーク演算 |