TWI836405B - 用於平衡權重稀疏卷積處理之方法、系統及非暫時性電腦可讀儲存媒體 - Google Patents
用於平衡權重稀疏卷積處理之方法、系統及非暫時性電腦可讀儲存媒體 Download PDFInfo
- Publication number
- TWI836405B TWI836405B TW111115017A TW111115017A TWI836405B TW I836405 B TWI836405 B TW I836405B TW 111115017 A TW111115017 A TW 111115017A TW 111115017 A TW111115017 A TW 111115017A TW I836405 B TWI836405 B TW I836405B
- Authority
- TW
- Taiwan
- Prior art keywords
- sub
- filters
- filter
- tensor
- channel
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 115
- 238000012545 processing Methods 0.000 title claims abstract description 73
- 238000003860 storage Methods 0.000 title claims abstract description 21
- 230000015654 memory Effects 0.000 claims description 50
- 230000008569 process Effects 0.000 claims description 29
- 238000013528 artificial neural network Methods 0.000 claims description 28
- 238000013138 pruning Methods 0.000 claims description 14
- 238000009825 accumulation Methods 0.000 claims description 13
- 238000009966 trimming Methods 0.000 claims 2
- 238000004590 computer program Methods 0.000 abstract description 2
- 239000000872 buffer Substances 0.000 description 33
- 230000004913 activation Effects 0.000 description 19
- 238000001994 activation Methods 0.000 description 19
- 230000006870 function Effects 0.000 description 19
- 239000011159 matrix material Substances 0.000 description 13
- 238000011176 pooling Methods 0.000 description 11
- 238000013527 convolutional neural network Methods 0.000 description 10
- 230000004044 response Effects 0.000 description 9
- 238000004422 calculation algorithm Methods 0.000 description 7
- 238000004891 communication Methods 0.000 description 7
- 238000000638 solvent extraction Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 238000007792 addition Methods 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000013139 quantization Methods 0.000 description 4
- 230000002457 bidirectional effect Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 210000004027 cell Anatomy 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 238000010801 machine learning Methods 0.000 description 2
- 230000011218 segmentation Effects 0.000 description 2
- 206010028980 Neoplasm Diseases 0.000 description 1
- 230000004931 aggregating effect Effects 0.000 description 1
- 201000011510 cancer Diseases 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000010191 image analysis Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 210000002569 neuron Anatomy 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000003362 replicative effect Effects 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 239000007858 starting material Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012549 training Methods 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/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/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
- 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/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/0464—Convolutional networks [CNN, ConvNet]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/048—Activation functions
-
- 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/082—Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- General Health & Medical Sciences (AREA)
- General Physics & Mathematics (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Image Processing (AREA)
- Complex Calculations (AREA)
- Image Analysis (AREA)
Abstract
本發明揭示用於平衡權重稀疏卷積處理之包含編碼於電腦儲存媒體上之電腦程式之方法、系統及設備。一例示性方法包括:獲得一輸入張量及複數個濾器;根據可用處理器之一數目來將該輸入張量分割成複數個子張量;將該複數個濾器之各者分割成一或多個子濾器以獲得複數個該等子濾器;將該複數個子張量及子濾器分別指定給該等可用處理器;針對該等可用處理器之各者,使該等指數值對之各者反覆且基於該指數值對來識別該指定子張量中之一對應輸入值以執行一乘法及累加(MAC)運算以產生一部分和;藉由使該複數個子濾器在該複數個處理器間輪換來將該複數個子濾器再指定給該等可用處理器;及使複數個該等部分和累加以獲得一輸出張量。
Description
本發明大體上係關於人工智慧,更特定言之,本發明係關於平衡權重稀疏卷積處理。
當前,神經網路(NN)係諸多現代人工智慧(AI)應用(諸如影像及視訊辨識、建議者系統、分類、醫療影像分析及自然語言處理)之基礎。NN用於出自自駕車、偵測癌症至玩複雜遊戲之各種使用案例中。一典型NN可包括其中執行昂貴(在運算及能量方面)卷積運算之一系列卷積層。
近年來,亦開發各種技術以藉由將稀疏引入至NN中之卷積處理(諸如修剪濾器以減少非零權重之數目)來提高NN之運算效率。然而,既有硬體架構依賴通用運算引擎(例如GPU),其未針對涉及具有稀疏權重(例如有限數目個非零權重)之濾器之卷積最佳化。此等架構無法將稀疏濾器高效儲存於記憶體中或完全利用稀疏性來大規模地達到更高位準之並行性。因此,期望構建用於高效稀疏卷積之一新穎系統架構。
本說明書之各種實施例可包含用於平衡權重稀疏卷積處理
及並行化之系統、方法及非暫時性電腦可讀媒體。
根據一態樣,提供用於平衡權重稀疏卷積處理及並行化之方法。該方法包括:獲得一輸入張量及複數個濾器,其中該輸入張量及該複數個濾器具有相同數目個通道;根據可用處理器之一數目來將該輸入張量分割成複數個子張量;將該複數個濾器之各者分割成一或多個子濾器以獲得複數個該等子濾器,其中該複數個該等子濾器各包括相同數目個非零權重;將該複數個子張量及該複數個子濾器分別指定給該等可用處理器,其中該複數個子濾器之各者由將該子濾器之該等非零權重儲存為指數值對之一緊湊記憶體佈局表示;針對該等可用處理器之各者,使該指定複數個子濾器之該緊湊記憶體佈局中之該等指數值對之各者反覆且基於該指數值對來識別該指定子張量中之一對應輸入值以執行一乘法及累加(MAC)運算以產生一部分和;藉由使該複數個子濾器在該複數個處理器間輪換來將該複數個子濾器再指定給該等可用處理器;及使自該複數個處理器之各者產生之複數個該等部分和累加以獲得一輸出張量。
在一些實施例中,該複數個子張量之各者包括相同於該輸入張量之該數目個通道。
在一些實施例中,該方法進一步包括:修剪該複數個濾器之各者,使得該濾器之每預定數目個通道包括該相同數目個非零值。
在一些實施例中,該等指數值對之各者包括一通道維度指數、一寬度維度指數及一對應非零權重。
在一些實施例中,基於該指數值對來識別該指定子張量中之一對應輸入值以執行一MAC運算以產生一部分和包括:基於該指數值對中之該通道維度指數及該寬度維度指數來識別該指定子張量中之一輸入
值;基於該經識別輸入值及該指數值對中之該對應非零權重來執行一乘法運算以獲得一點積;及使該點積與一對應部分和累加以獲得一新部分和。
在一些實施例中,該複數個濾器之各者包括一通道維度、一高度維度及一寬度維度,且將該複數個濾器之各者分割成一或多個子濾器包括:將該通道維度分成複數個通道群組;及根據該複數個通道群組來將該濾器分割成複數個子濾器,其中各子濾器對應於該複數個通道群組之一者。
在一些實施例中,根據該等通道群組來將該濾器分割成複數個子濾器包括:根據該複數個通道群組來將該濾器分割成複數個塊體;及沿該高度維度分割該複數個塊體之各者以獲得該複數個子濾器,其中複數個子濾器之各者與該濾器共用該寬度維度。
在一些實施例中,將來自該輸入張量之一相同水平面之該複數個子張量之一子集分別指定給該等可用處理器之一子集,且將該複數個子濾器指定給該等可用處理器包括:識別來自一相同濾器但對應於不同通道群組之該複數個子濾器之一子集;及將該複數個子濾器之該子集分別指定給該等可用處理器之該子集。
在一些實施例中,使該複數個子濾器在該複數個處理器間輪換包括:藉由使指定給一第i處理器之一子濾器輪換至一第(i+1)處理器來將該複數個子濾器再指定給該等可用處理器。
在一些實施例中,將藉由執行該MAC運算所產生之該部分和儲存於可由相鄰處理器存取之該處理器之一累加緩衝器中。
在一些實施例中,使自該複數個處理器之各者產生之該複數個該等部分和累加以獲得一輸出張量包括:在一神經網路之一當前卷積
層期間,使自該複數個處理器之各者產生之該複數個該等部分和累加以獲得一啟動子張量;回應於該當前層不是一最後卷積層而將該啟動子張量儲存於該處理器中用於該神經網路之一下一卷積層;及回應於該當前層係該最後卷積層而使來自該等可用處理器之複數個該等啟動子張量彙總以獲得該輸出張量。
根據另一態樣,提供一種用於平衡權重稀疏卷積處理及並行化之系統。該系統可包括一或多個處理器及一或多個非暫時性電腦可讀記憶體,該一或多個電腦可讀記憶體耦合至該一或多個處理器且組態有可由該一或多個處理器執行以引起該系統執行包括以下各者之操作之指令:獲得一輸入張量及複數個濾器,其中該輸入張量及該複數個濾器具有相同數目個通道;根據可用處理器之一數目來將該輸入張量分割成複數個子張量;將該複數個濾器之各者分割成一或多個子濾器以獲得複數個該等子濾器,其中該複數個該等子濾器各包括相同數目個非零權重;將該複數個子張量及該複數個子濾器分別指定給該等可用處理器,其中該複數個子濾器之各者由將該子濾器之該等非零權重儲存為指數值對之一緊湊記憶體佈局表示;針對該等可用處理器之各者,使該指定複數個子濾器之該緊湊記憶體佈局中之該等指數值對之各者反覆且基於該指數值對來識別該指定子張量中之一對應輸入值以執行一乘法及累加(MAC)運算以產生一部分和;藉由使該複數個子濾器在該複數個處理器間輪換來將該複數個子濾器再指定給該等可用處理器;及使自該複數個處理器之各者產生之複數個該等部分和累加以獲得一輸出張量。
根據又一態樣,提供一種用於平衡權重稀疏卷積處理及並行化之非暫時性電腦可讀儲存媒體。該媒體可組態有可由一或多個處理器
執行以引起該一或多個處理器執行包括以下各者之操作之指令:獲得一輸入張量及複數個濾器,其中該輸入張量及該複數個濾器具有相同數目個通道;根據可用處理器之一數目來將該輸入張量分割成複數個子張量;將該複數個濾器之各者分割成一或多個子濾器以獲得複數個該等子濾器,其中該複數個該等子濾器各包括相同數目個非零權重;將該複數個子張量及該複數個子濾器分別指定給該等可用處理器,其中該複數個子濾器之各者由將該子濾器之該等非零權重儲存為指數值對之一緊湊記憶體佈局表示;針對該等可用處理器之各者,使該指定複數個子濾器之該緊湊記憶體佈局中之該等指數值對之各者反覆且基於該指數值對來識別該指定子張量中之一對應輸入值以執行一乘法及累加(MAC)運算以產生一部分和;藉由使該複數個子濾器在該複數個處理器間輪換來將該複數個子濾器再指定給該等可用處理器;及使自該複數個處理器之各者產生之複數個該等部分和累加以獲得一輸出張量。
將在考量參考附圖之以下描述及隨附申請專利範圍(所有其等構成本說明書之一部分,其中相同元件符號標示各種圖中之對應部分)之後更明白本文中所揭示之系統、方法及非暫時性電腦可讀媒體之此等及其他特徵及結構之相關元件及部分組合之操作方法及功能及製造之經濟性。然而,應明確瞭解,圖式僅供說明及描述且不意欲界定本發明之限制。
100:神經網路
120:第一卷積層
130:第一池化層
140:第二卷積層
150:第二池化層
160:平坦化層
170:完全連接(FC)層
220:卷積處理
222:輸入張量
223:第一深度方向切片
224:濾器
225:輸出張量
228:點積
260:卷積處理
262:輸入張量
264:濾器
265:濾器
268:輸出張量
322:輸入張量
323:子張量
324:通道群組
342:濾器
345:子濾器
420:濾器
430:子濾器
440:位元陣列
500:硬體加速器
510:主機CPU
512:控制器
520:雙倍資料速率(DDR)記憶體
530:DDR介面
540:直接記憶體存取(DMA)控制器
550:全域緩衝器
554:權重緩衝器
556:輸出緩衝器
560:稀疏處理單元(SPU)陣列
562:SPU
570:排程器
580:處理實體(PE)
600:系統架構
612:晶片上網路匯流排介面
613:輸入DMA介面
622:多庫權重緩衝器
630:佈線
640:佈線
650:佈線
682:O2I矩陣
692:輸出DMA介面
670A:佈線
670B:佈線
700:PE
710:非零權重
712:啟動輸入佈線/底部指數
714:頂部指數
716:佈線
720:多工器閘(MUX)
730:iBuffer(iBuf)
732:頂部啟動回應佈線
734:底部啟動回應佈線
740:乘法閘/乘法器
744:部分和
745:MUX
746:部分和
750:加法閘/累加器
760:累加緩衝器(ABuf)
770:修正線性單元(ReLu)
780:量化單元
802:輸入張量
804:濾器
810:權重輪換方法
820:樸素方法
830:輸出張量
900:方法
910:區塊
920:區塊
930:區塊
940:區塊
950:區塊
960:區塊
970:區塊
1000:運算裝置
1002:匯流排
1004:硬體處理器
1007:主記憶體
1009:儲存裝置
1010:通信介面
圖1繪示根據各種實施例之一例示性卷積神經網路(CNN)。
圖2繪示根據各種實施例之例示性卷積處理。
圖3繪示根據各種實施例之用於分割輸入張量及濾器之一例示性方法。
圖4繪示根據各種實施例之用於儲存一子濾器之非零權重之一例示性記憶體佈局。
圖5繪示根據各種實施例之用於平衡權重卷積處理之一例示性系統圖。
圖6繪示根據各種實施例之用於平衡權重卷積處理之一例示性系統架構。
圖7繪示根據各種實施例之用於平衡權重卷積處理之一處理實體之一例示性圖式。
圖8A繪示根據各種實施例之用於並行平衡權重卷積處理之一例示性流程圖。
圖8B繪示根據各種實施例之用於並行平衡權重卷積處理之另一例示性流程圖。
圖9繪示根據各種實施例之用於平衡權重卷積處理之一實例性方法。
圖10繪示其中可實施本文中所描述之任何實施例之一實例性電腦系統。
本文中所描述之實施例提供用於神經網路中之平衡權重稀疏卷積程序之方法、系統、設備。一卷積程序可係指用於自一先前層提取輸入資料之特徵(諸如自一影像或一音訊波導出之一特徵圖或自一神經網路中之一先前層輸出之啟動)之一基本但運算昂貴之運算。一卷積程序之
輸入資料可指稱一輸入張量,且卷積程序之輸出可指稱一輸出張量。輸入張量可包括特徵圖之多個通道。例如,一RGB影像可表示為具有三個通道(紅通道、綠通道及藍通道)之一輸入張量,其中各通道包括一特徵圖(例如具有相同於原始RGB影像之大小但僅由紅色、綠色或藍色之一者製成之一灰階影像)。為自一輸入張量提取特徵,可依一卷積(例如滑動或移動)方式將一或多個特徵提取器(亦稱為濾器)應用於輸入張量。可在各卷積步驟期間執行特特徵偵測器(濾器)與輸入張量之間的乘法及累加(MAC)運算。隨後可組譯自卷積步驟產生之輸出以形成卷積程序之一輸出張量。輸出張量可變成神經網路中之下一層之輸入張量。在一些情況中,一卷積層中可涉及多個輸入張量。
在一卷積程序期間,可藉由引起大量零來修剪或稀疏化濾器以降低運算成本且提高推斷速度。例如,可將濾器中之20%以上或50%以上之值設定為零。本說明書中之一些實施例藉由將稀疏化濾器高效儲存於一節省記憶體佈局中且並行化複數個處理實體(PE)(例如處理器)上之卷積處理來利用濾器稀疏性。
在一些實施例中,首先可根據可用於參與卷積處理之PE之數目來將輸入張量分割成複數個子張量。可在不換出PE之局部記憶體/緩衝器之情況下在卷積程序之多個反覆(對應於一NN中之多個卷積層)中將子張量之各者指定給複數個PE之各者且使子張量之各者保持於其內。在卷積程序之各反覆之後,可更新指定給PE作為一輸入之子張量且使其演進成一輸出,其可用作卷積程序之下一反覆之輸入。在一些實施例中,可為了記憶體管理而將經更新子張量暫時換出PE且針對下一反覆將其換回PE中。
在一些實施例中,可將稀疏濾器之各者分割成可儲存於一節省記憶體佈局中之複數個子濾器。例如,在經修剪及分割之後,可依其中子濾器之各者包括相同數目個非零權重之一方式分割稀疏濾器之各者。因為將非零權重均勻分佈至複數個子濾器中,所以使用此等子濾器之卷積處理可指稱一平衡權重稀疏卷積。在一些實施例中,各子濾器內之非零權重可儲存為指數值對,其接著可經組合及儲存為記憶體內之固定數目個位元或位元組用於表示子濾器。子濾器之指數值對表示可顯著減小一神經網路之記憶體佔用面積且使解決方案適合於具有有限記憶體資源之裝置。例如,本文中所揭示之實施例可應用於邊緣運算系統中之邊緣裝置。在一些實施例中,可將子濾器指定給各具有一指定子張量以執行局部卷積運算之複數個PE。指定保證指定給不同PE之子張量及子濾器之對彼此獨立,使得複數個PE可並行執行局部運算以提高效能。
上述分割及並行處理方案亦係高度可擴縮的。在一些實施例中,並行處理之各回合(亦稱為反覆)可產生複數個部分和,且複數個PE可對多個回合執行並行處理以累加各回合中所產生之部分和且將累加結果組譯為一輸出張量。在一些實施例中,可(在各PE內)直接累加由各PE跨多個回合產生之部分和以在無需與其他PE交換資料之情況下產生輸出張量之一部分。
在一些實施例中,子濾器之指定可採用一權重輪換機制,其在並行處理之各回合之後使子濾器指定在PE間輪換。在此,「權重」係指儲存於各子濾器中之非零值。由此機構提供之益處係至少三重的:避免將同一子濾器同時儲存於多個PE中(例如避免多次複製相同資料);並行化及減少自一較高階記憶體(通常容量較大但速度較慢)之昂貴記憶體讀取
之次數以自由所有PE共用之一全域緩衝器獲得權重;及允許利用相鄰PE間之較快直接連接通道來執行子濾器在並行處理之每兩個回合之間的輪換。
在以下描述中,將參考圖式來描述本發明之特定、非限制性實施例。本文中所揭示之任何實施例之特定特徵及態樣可與本文中所揭示之任何其他實施例之特定特徵及態樣一起使用及/或組合。亦應瞭解,此等實施例係依舉例方式且僅說明本發明之範疇內之少數實施例。本發明針對之領域之熟習技術者所明白之各種改變及修改被視為在由隨附申請專利範圍中所進一步界定之本發明之精神、範疇及考量內。
圖1繪示根據各種實施例之一例示性卷積神經網路(CNN)。CNN廣泛用於包含影像理解、語音辨識、遊戲設置、機器人之各種應用中且可採用其中發生卷積運算之包含卷積層之層之一深階層。應注意,CNN僅用於說明,且本文中所揭示之實施例可應用於涉及卷積運算之其他神經網路。
圖1中所繪示之實例性神經網路100包括複數個層,諸如一第一卷積層120及一第一ReLU(修正線性單元)層、一第一池化層130、一第二二卷積層140及一第二ReLU層、一第二池化層150、一平坦化層160及一完全連接(FC)層170。此實例性神經網路100可經訓練以匹配具有複數個已知字母表類別之一給定影像中之一字母表。如圖1中所展示,具有一字母之一影像110被饋送至神經網路100中且透過複數個層來變換。最後層(FC層170)最終產生表示輸入影像110中之字母與已知字母表類別之各者之間的類似度之複數個分數。
在一些實施例中,輸入影像110可首先變換成一輸入張
量。作為一實例,如輸入影像110含有32*32個像素且各像素具有三個色彩通道(紅、綠、藍),則其對應輸入張量可具有32*32*3之一大小,其中一高度為32、一寬度為32且一深度(例如通道之數目)為3。為易於描述,三個維度大小可稱為一HWC格式,其中H係指輸入張量之高度(例如先前影像實例中之32),W係指輸入張量之寬度(例如先前影像實例中之32),且C係指輸入張量中之通道之數目(例如先前影像實例中之3)。在一些情況中,若一卷積層存在多個輸入張量(例如當存在輸入至卷積層中之多個影像或存在自一先前層接收之多個輸入啟動張量時),各輸入張量可依一NHWC格式表示,其中N係指輸入張量批次內之輸入張量之一指數。在以下描述中,除非另有明確說明,否則可為了簡單而省略N(例如,假定僅存在一個輸入張量)。一技術人員可明白擴展實施例以涵蓋其中N>1之情況。
在一些實施例中,一CNN可包含多個卷積層(例如圖1中之第一卷積層120及第二卷積層140)。一卷積層在不喪失對於得到一良好預測/分類而言至關重要之特徵之情況下將一輸入張量(例如原始輸入張量或來自一先前層之一輸入張量)還原成較易於處理之一格式。卷積層中之卷積處理中可涉及一或多個特徵偵測器,例如邊緣偵測器、影像處理中之曲線偵測器。此等特徵偵測器可指稱濾器。各濾器可具有相同於輸入張量之數目個通道。為易於描述,本說明書使用一術語「共用複數個通道」來表示各濾器及輸入張量具有相同數目個通道。例如,輸入張量係一32*32*3矩陣,且一實例性濾器可為一3*3*3矩陣。卷積處理之一詳細解釋可參考圖2之描述。
一CNN中之一卷積層可後接一非線性啟動函數以將非線性
引入至CNN中。實例性非線性啟動函數包含S形函數、雙曲線正切函數及修正線性單元(ReLU)。如圖1中所展示,一ReLU函數(亦可指稱一ReLU層)在卷積層120及140之各者之後。ReLU函數可應用一元素啟動函數以濾除由卷積層120或140產生之一些輸出(啟動)。例如,可採用一max(0,x)函數來濾除卷積輸出中之所有負啟動且僅將正啟動饋送至下一層。一ReLU函數可不改變輸出啟動之大小但限制主動神經元之數目,因為將負啟動全部清零以提高後續層之運算效率。
一CNN亦可包含一或多個池化層以提供降低輸入張量之維度之各種運算。在圖1中,神經網路100之第一池化層130及第二池化層150可各沿空間維度(高度及寬度)對輸入張量執行一降取樣操作,但通常不改變深度維度(例如通道之數目)。
一神經網路中之一完全連接(FC)層可學習由來自先前層(例如圖1中之一池化層150或一卷積層)之輸出表示之高階特徵之非線性組合以因此運算類別分數。參考圖1,可首先將來自池化層150之輸出平坦化(例如在一平坦化層160中)成一向量,FC層170可自其學習該空間中之一固有非學習函數以計算複數個類別之最終分數。各分數可表示輸入影像中之字母表與對應類別之間的一量化類似度。
圖2繪示根據各種實施例之例示性卷積處理。圖2中之卷積處理220涉及一輸入張量222、一濾器224及一輸出張量225。輸入張量222可由其高度(H)、寬度(W)及通道之數目(C)表示。如圖2中所展示,輸入張量222可為一3*3*3矩陣,其中一高度為3、一寬度為3且通道之一數目為3。各通道中之輸入張量222之高度及寬度(例如3(H)*3(W))可指稱一2D輸入特徵圖。一元組{h,w,c}可指向通道c中之2D輸入特徵圖之一元素。
例如,{2,1,1}可指向通道1中之2D輸入特徵圖之元素,其中一位置由{2,1}(例如高度方向指數係2,且寬度方向指數係1)界定。濾器224可由其高度(R)、寬度(S)及通道之數目(C)表示。在圖2中,濾器224可為一1*1*3矩陣。各通道中之濾器224之高度及寬度(例如1(R)*1(S))可指稱一核(濾器224分別具有三個通道中之三個核)。
在一些情境中,一卷積處理可涉及步幅及填補。例如,當步幅係1時,一濾器每次卷積(例如移動、滑動)一個像素;且當步幅係2時,濾器在其四處滑動時每次卷積兩個像素。一較大步幅產生一空間較小輸出張量(輸出張量中之較小H*W)。作用另一實例,當一濾器之空間大小(高度*寬度)大於1*1(例如3*3或5*5)時,輸入張量可圍繞其邊界填補零以應用濾器且控制輸出張量之空間大小以(例如)保持輸入張量之空間大小,使得輸入及輸出高度及寬度相同。在圖2中,假定不對輸入張量222執行填補且步幅係1。
在圖2中所展示之卷積處理220期間,對濾器224及輸入張量之各深度方向切塊(諸如第一深度方向切片223)執行MAC運算以產生一點積,諸如點積228。例如,輸入張量222之第一深度方向切片223係輸入張量222之左上處之一1*1*3張量(三個灰色方塊)。第一深度方向切片223及濾器224兩者具有1*1*3之一大小。在MAC運算之後,可將所產生之點積228組譯為輸出張量225之一部分。因而,可在濾器224卷積(例如移動)穿過輸入張量222中之所有深度方向切片(圖2中之9個切片)之後判定輸出張量225。輸出張量225中之通道之數目等於已在卷積期間應用之濾器之數目。因為卷積處理220僅使用一個濾器224,所以對應輸出張量225僅具有一個通道。
相比而言,卷積處理260涉及兩個濾器264及265。可藉由使濾器264卷積穿過輸入張量262來判定第一通道中之輸出張量268之值(例如通道1中之一2D輸出特徵圖)。可藉由使濾器265卷積穿過輸入張量262來判定第二通道中之輸出張量268之值(例如通道2中之一2D輸出特徵圖)。因此,所得輸出張量268包括2D輸出特徵圖之兩個通道。
應注意,可並行化一卷積處理期間之一些運算。例如,對一濾器執行之MAC運算獨立於對另一濾器執行之MAC操作,因為不同濾器產生不同輸出通道之2D輸出特徵圖。作為另一實例,輸入張量中之深度方向切片彼此獨立,因為其等產生各2D輸出特徵圖上之不同位置之值。若可在複數個處理實體(例如處理器、核心或線程)間並行化所有此等運算,則可達成理論理想並行性。然而,因為真實世界應用可具有大量濾器及巨量輸入張量,所以追求理論理想並行性需要硬體具有難以企及之運算容量(例如具有巨量處理實體及記憶體交換機構)。下文中所揭示之實施例提供藉由完全利用一給定硬體之並行處理能力來達成理想並行性之一方法(及對應系統、儲存媒體),其係一更可擴縮及實際方法。
圖3繪示根據各種實施例之用於分割輸入張量及濾器之一例示性方法。在各卷積程序期間,各輸入張量322及各濾器342共用複數個通道(即,具有相同數目個通道)。在不喪失一般性之情況下,各輸入張量可表示為具有一高度維度(H)、一寬度維度(W)及一通道維度(C)之三維張量;各濾器可類似地表示為具有一高度維度(R)、一寬度維度(S)及一通道維度(C)之三維張量。各維度可包含複數個對應維度單元。例如,圖3中之輸入張量322可表示為3(H)*3(W)*6(C),其中H維度包含3個高度單元,W維度包含3個寬度單元,且C維度包含6個通道。在一些實施例中,
卷積程序中可涉及多個輸入張量,且可使用一額外維度N(例如表示一輸入張量識別符)來擴展多個輸入張量之各者之H*W*C表示。
在一些實施例中,可根據可用PE之數目來將輸入張量322分割成複數個子張量。例如,分割可保證複數個子張量可均等地分佈於可用PE之間,使得PE上之上作負載均勻分佈。在一些實施例中,各子濾器之大小可為一高度單元*一寬度單元*濾器中之通道之數目。例如,可將圖3中之輸入張量322分割成複數個子張量323。如圖中所展示,例示性子張量323具有沿高度維度之一單一高度單元、沿寬度維度之一單一寬度單元及具有輸入張量322之所有通道之一通道維度。因此,子張量323可由1(H)*1(W)*6(C)表示。在一些實施例中,子張量(諸如323)可由一PE每次提取一部分,而非一次提取整個子張量323。在一些實施例中,可將子張量323進一步分割成複數個子張量。例如,可將323之六個通道分割成其中各包括兩個通道之三個通道群組,且各子張量因此可由1(H)*1(W)*2(C)表示。在一些實施例中,圖3之陰影區域中之三個子張量可由一個PE或三個不同PE處理。
在一些實施例中,濾器342可經修剪或稀疏化以限制其內之非零權重之數目。經稀疏化之濾器可在不顯著喪失自輸入張量提取特徵之準確度之情況下極大提高運算效率。在一些實施例中,可依一平衡方式修剪濾器342,使得每預定數目個通道包括固定數目個非零權重。此平衡權重修剪可促進可擴縮並行處理之管線設計。用於達成此目標之一例示性方式係將濾器之通道維度分成複數個通道群組,且修剪各通道群組內之非零權重之數目。例如,假定濾器係一張量或3(R)*3(S)*32(C),則可將32個通道分成四個通道群組,其中各通道群組包含8個連續通道(例如通道0
至7、通道8至15)。修剪程序確保各通道群組中之非零權重之數目相同。
在一些實施例中,在修剪或稀疏化濾器之後,可藉由以下程序來分割各濾器:針對各濾器,將其通道維度分成複數個通道群組;及根據複數個通道群組來將濾器分割成複數個子濾器,其中各子濾器對應於複數個通道群組之一者。在一些實施例中,可首先根據複數個通道群組來將濾器分割成複數個塊體,且接著沿其高度維度分割濾器以獲得複數個子濾器,其中複數個子濾器之各者與原始濾器共用寬度維度。
例如,可將一濾器分割成對應於複數個通道群組之複數個塊體;且可沿高度維度進一步分割複數個塊體之各者以獲得複數個子濾器,其中複數個子濾器之各者與濾器共用寬度維度。仍採用上述3(R)*3(S)*32(C)濾器作為一實例,可首先將濾器分割成對應於四個通道群組(例如通道0至7、通道8至15)之四個塊體,其中各塊體係一3(R)*3(S)*8(C)張量。接著,可沿其高度維度(R維度)將四個3(R)*3(S)*8(C)張量之各者分割成三個水平面,其中各平面係一1(R)*3(S)*8(C)張量。依此方式,將3(R)*3(S)*32(C)張量分割成12個1(R)*3(S)*8(C)張量,其可在以下描述中表示為子張量。
參考圖3中之例示性濾器342,假設濾器342具有沿其高度維度之複數個高度單元(R>1)、沿其寬度維度之複數個寬度單元(S>1)及六個通道。在分割之後,可將六個通道分成三個通道群組324。接著,可將通道群組324之各者分割成複數個1(H)*S*C子濾器345(沿高度維度具有一高度單元)。修剪程序確保各子濾器包括相同數目個非零權重,即使各子濾器內之非零權重之位置可不同。
圖4繪示根據各種實施例之用於儲存一子濾器之非零權重
之一例示性記憶體佈局。將圖4中之例示性濾器420假設為一R*3(S)*32(C)張量,其中R維度可包括數個高度單元(實際上,R通常等於S)。在圖3中所描述之分割之後,可將濾器420中之32個通道分成四個通道群組(表示為Gc=4),其中每群組具有八個通道(表示為Cg=8)。可將各通道群組進一步分割成水平面以獲得1(R)*3(S)*8(C)子濾器。圖4中之例示性子濾器430可邏輯地展示為一3*8表,其中3對應於子濾器430之S維度,且8對應於子濾器430之C維度。如圖中所展示,例示性子濾器430包括六個非零權重(w0至w5)。
在一些實施例中,一子濾器之非零權重可表示為指數值對。各指數值對包括一通道維度指數、一寬度維度指數及一對應非零權重。為了說明,圖4展示具有6個非零權重(表示為W0至W5)之大小1(R)*3(S)*8(Cg)之一子濾器430之一表視圖。例如,子濾器430之第一非零權重w0定位於通道2中(假定通道識別符以指數0自表之底部開始)及定位於沿寬度維度(例如S維度)之位置0處。因此,w0可表示為(指數=2,s=0,值)對,其中指數=2指示當前非零權重係在通道2中,s=0指示當前非零權重係在沿寬度維度之位置0處,且值係非零權重。依此方式,子濾器430中之其他非零權重亦可表示為對應指數值對。取決於實施方案,各指數值對可由數個位元(諸如8個、16個或32個位元)表示。接著,可將此等指數值對彙總為一系列位元或一位元陣列440用於表示子濾器430。位元陣列440之位元可具有(每子濾器之非零權重之數目)*(每指數值對之位元之數目)之一大小。使用位元陣列440記憶體佈局來表示子濾器可減小濾器之記憶體佔用面積且簡化並行卷積處理之設計。
在一些實施例中,可擴展位元陣列440以適應對濾器420執
行之不同分割方式。例如,若藉由分割濾器所產生之子濾器430係一2(R)*3(S)*8(C)張量(例如,子濾器430包括沿R維度之兩個而非一個平面),則除C維度指數、S維度指數及非零權重之外,子濾器430之指數值對表示亦可進一步包括一R維度指數。
圖5繪示根據各種實施例之用於平衡權重卷積處理之一例示性系統圖。圖5中所展示之架構包括經設計以在一神經網路經載入且運行時執行推斷之一電腦系統。在一些實施例中,此一電腦系統實施為一硬體加速器500。硬體加速器500中之一些組件依一特定方式協作以藉由促進複數個處理實體上之並行卷積運算來提高神經網路之處理量及能源效率。加速器500僅供說明且可包括更多、更少或替代組件。硬體加速器500可設計為一可再組態裝置,諸如一場可程式化閘陣列(FPGA)或一專用積體電路(ASIC)。
如圖5中所展示,硬體加速器500可包括一排程器570,其用於控制加速器500內之工作流程及與晶片外組件(諸如一主機CPU 510及雙倍資料速率(DDR)記憶體520)之互動。例如,加速器500可透過一周邊組件互連快速(PCIe)實體層(PHY)控制器512來與主機CPU 510互動及透過一DDR介面530來與一晶片外DDR記憶體520互動。加速器500可透過一直接記憶體存取(DMA)控制器540(其經由DDR介面530來與晶片外DDR記憶體520通信)來自晶片外DDR記憶體520提取資料。所提取之資料可儲存於一晶片上緩衝器(稱為全域緩衝器550)中以準備用於並行卷積運算。可將全域緩衝器550邏輯地分成多個區段,諸如一輸入緩衝器552、一權重緩衝器554及一輸出緩衝器556。輸入緩衝器552可儲存與輸入張量相關聯之資料,權重緩衝器554可儲存與濾器相關聯之資料,且輸出緩衝
器556可儲存與卷積運算之結果(例如輸出張量)相關聯之資料。全域緩衝器550可與稀疏處理單元(SPU)562之一陣列560交換資料以執行卷積運算。SPU名稱中之「稀疏」指示SPU陣列560經專門設計以高效執行涉及稀疏性(例如稀疏輸入張量及/或稀疏濾器)之卷積運算。SPU 562之各者可包括複數個處理實體(PE)580,其中各PE 580可處置一單元量之卷積運算。
圖6繪示根據各種實施例之用於平衡權重卷積處理之一例示性系統架構600。系統架構600係圖5中所展示之硬體加速器500之一例示性實施方案。如圖中所展示,系統架構600可包含一晶片上網路匯流排介面612、一多庫權重緩衝器622、複數個PE(PE 0至PE 255)、一O2I矩陣690、直接記憶體存取(DMA)介面(其包含一輸入DMA介面613及一輸出DMA介面692)及連接上述組件之複數個導線。系統架構600僅供說明,且取決於實施方案,系統架構600可包括更多、更少或替代組件。為簡單起見,圖6中未展示架構600中之一些佈線。
圖6中之例示性系統架構600包括256個PE,從一邏輯角度看,其等配置為PE之一32*8矩陣。此等PE之各者可包含各種內部緩衝器,諸如用於儲存一或多個輸入子張量之一iBuffer、用於儲存一或多個子濾器之一wBuffer、用於執行MAC運算之各種閘(例如至少一乘法器及一累加器)、用於儲存部分結果之一累加緩衝器、另一適合組件或其等之任何組合。在一些實施例中,一控制器(諸如圖5中之排程器570)可排程待由各PE執行之任務。各PE可產生可經彙總以形成一輸出張量之卷積程序之一部分結果。
在一些實施例中,圖6中之晶片上網路匯流排介面612可接
收一輸入張量及執行一卷積程序所需之一或多個濾器。此等所接收之輸入張量及濾器可透過輸入DMA介面613來發送至架構600中之組件。輸入張量及濾器可在到達晶片上網路匯流排介面612之前經分割。在其他實施例中,此等輸入張量及濾器在離開晶片上網路匯流排介面612之後但在分配至複數個PE中之前經分割。在一些實施例中,晶片上網路匯流排介面612可將所接收之濾器轉送至多庫權重緩衝器622。多庫權重緩衝器622係其中濾器中之非零權重儲存及分配至PE之一位置。在一些實施例中,多庫權重緩衝器622接收表示為位元陣列之複數個經分割子濾器且將此等位元陣列分配至PE。
在將輸入張量分割成複數個子張量之後,晶片上網路匯流排介面612可透過佈線630來將複數個子張量分配(例如藉由撒佈來指定)至PE。在一些實施例中,各PE可接收一或多個子張量,其中各子張量包括輸入張量之所有通道。例如,針對具有32個通道之一輸入張量,各PE可接收具有沿其高度維度之一高度單元、沿其寬度維度之一寬度單元及沿其通道維度之輸入張量之所有32個通道之一(H)*1(W)*32(C)子張量(例如圖3中之輸入張量322之子張量323)。依此方式,各PE可在不在各卷積程序之後換出或返回部分結果之情況下在多個卷積程序(對應於一NN中之多個卷積層)中持續使用及更新所接收之一或多個子張量。
在一些實施例中,多庫權重緩衝器622可透過佈線640來將複數個子濾器分配至複數個PE用於各PE執行局部MAC運算。各PE可具有用於儲存指定子濾器之一局部先進先出(FIFO)權重緩衝器。若各PE中之FIFO權重緩衝器不足夠大,則各PE可在處理較舊子濾器之後提取(或多庫權重緩衝器622可分配)新子濾器。
在一些實施例中,各PE可與相同行中之其相鄰PE一起具有一佈線660(例如一雙向佈線)以共用儲存於其緩衝器中之特定資料及/或自其相鄰PE提取特定資料。在此,「特定資料」可係指一子張量之一部分。當卷積程序將步幅組態為大於1時,相鄰PE之間需要此資料共用。
在一些實施例中,相同列中之PE可與佈線650連接以輪換由其等之各者獲得之部分和。圖6中之佈線650之方向(PE0至PE32至PE64…至PE224及返回至PE0)係說明性的且可取決於實施方案而不同。例如,在圖6中,在PE224基於指定子張量及子濾器來完成其局部MAC運算且獲得一或多個中間結果之後,需要使中間結果與由PE190(圖6中未展示)獲得之部分和累加。其他列中之PE亦可與類似於佈線650之一佈線連接以輪換局部中間結果。
在一些實施例中,由各PE獲得之MAC運算結果可透過佈線670A來彙總且透過輸出DMA介面692至晶片上網路匯流排介面612來回傳至高階記憶體/緩衝器。例如,若當前卷積程序對應於NN中之最後卷積層,則MAC運算結果可彙總至一輸出張量中以透過DMA介面來回傳。在一些實施例中,MAC運算結果可透過佈線670B來彙總且在一O2I矩陣682中重新組織以產生輸出張量。在一些實施例中,O2I矩陣682可針對PE之各列輸出累加資料。此等累加資料最終可形成輸出張量。圖6中之佈線670A及670B僅供說明且係為了易於參考。在一些實施例中,複數個PE之各者可具有用於輸出其局部MAC運算結果之一670A佈線及/或一670B佈線。
圖7繪示根據各種實施例之用於平衡權重卷積處理之一處理實體(PE)700之一例示性圖式。圖7中之例示性PE 700可係指圖5中之
PE 580之任何者或圖6中之PE之任何者。PE 700可包括用於儲存一或多個輸入子張量之一iBuffer 730(表示為iBuf)、用於執行乘法運算之一乘法閘740(表示為「X」)、用於執行累加運算之一加法閘750(表示為「+」)、用於儲存中間結果(例如MAC運算之部分和)之一累加緩衝器760(表示為「ABuf」)、作為一非線性啟動函數之一ReLu單元770、用於減少或否則調整表示中間結果之位元之數目之一量化單元780及用於選擇一些上述組件之適當輸入之各種多工器閘(表示為「MUX」,諸如720及745)。圖7中之組件及連接組件之管線僅供說明。取決於實施方案,PE可包括更多、更少或替代組件或具有一不同管線。
如上文所描述,一PE 700可基於一或多個輸入子張量及來自一或多個子濾器之複數個非零權重來執行局部卷積處理。PE 700可透過一啟動輸入佈線712來自一高階記憶體(諸如圖5中之全域緩衝器550)接收輸入子張量且將輸入子張量儲存於其iBuf 730中。在一些實施例中,iBuf 730可自MUX 720接收一指數或一組指數用於識別一所要輸入值或一輸入子張量。MUX 720可基於一控制器或一排程器(諸如圖5中之排程器570)來自iBuf 730之複數個輸入選項選擇一輸入用於識別所要輸入值或輸入子張量。例如,MUX 720之複數個輸入選項可包含由一相鄰PE(例如類似於圖6中之PE矩陣之一矩陣中之PE 700下方之PE)請求之一底部指數712、由另一相鄰PE(例如類似於圖6中之PE矩陣之一矩陣中之PE 700上方之PE)請求之一頂部指數714或一非零權重710之一指數(例如包括通道維度指數及寬度維度指數之指數)。當相鄰PE需要PE 700中之(若干)輸入值來執行其局部MAC運算時(例如當卷積處理之步幅大於1時),需要底部指數712及頂部指數714請求。在一些實施例中,底部指數712及頂部指數714可用於
自iBuf 730擷取一輸入值或一輸入子張量。所擷取之資料可分別透過頂部啟動回應佈線732來回傳至PE 700上方之PE及/或透過底部啟動回應佈線734來回傳至PE 700下方之PE。佈線732及734可係指圖6中之雙向佈線660。
在一些實施例中,指定給PE 700之非零權重710係呈指數值對之形式。指數值對格式之詳細描述可參考圖4之描述。例如,各非零權重710可表示為包括一通道維度指數(表示為C維度指數)、一寬度維度指數(表示為S維度指數)及非零權重之值之複數個位元(例如16個位元或32個位元)。非零權重之C維度指數及S維度指數可用於識別來自iBuf 730之對應輸入值用於參與一MAC運算。例如,非零權重710位於通道C中及位置S處,且其對應於輸入子張量中之通道C中及位置S處之一輸入值。如圖7中所展示,非零權重710之兩個指數可透過佈線716來饋送至MUX 720中。
為執行MAC運算,自iBuf 730擷取之輸入值及非零權重710之值可饋送至乘法器740中。結果(例如非零權重及對應輸入值之一乘積)可饋送至一累加器750中。累加器750使乘積與一先前計算部分和累加以形成一新部分和。例如,先前計算部分和及乘積可來自相同子張量但不同通道。如圖中所展示,先前計算部分和可由MUX 745自兩個選項選擇:自一相鄰PE之ABuf輪換之部分和744(例如透過圖6中之輪換佈線650)及選自其局部ABuf 760之部分和746。在一些實施例中,MUX 745可首先保持自其局部ABuf 760選擇部分和746直至完成局部MAC運算,且接著選擇自相鄰PE輪換之部分和744。在此,局部MAC運算係指基於指定給PE 700之非零權重710之MAC運算。
在一些實施例中,由累加器750產生之累加結果可儲存於ABuf 760中(例如藉由替換較舊版本部分和)。在一些實施例中,累加結果可通過用於啟動之ReLU單元770及用於減少結果中之位元之數目之量化單元780,使得其可透過佈線782來儲存於iBuf 730中。在一些實施例中,ReLu單元770及量化單元780可為選用的。
圖8A繪示根據各種實施例之用於並行平衡權重卷積處理之一例示性流程圖。輸入張量/濾器之上述分割及濾器之平衡權重表示允許一並行卷積處理。在一些實施例中,複數個PE存貯複數個輸入子張量,且基於局部儲存之(若干)子張量及(若干)指定子濾器來執行局部MAC運算。因為一PE之MAC運算不取決於另一PE之結果,所以複數個PE之間不存在相依性,因此,卷積程序自然地變成並行。然而,將子濾器隨機指定給複數個PE無法產生最佳並行處理效率。
如上文所提及,可藉由以下程序來分割濾器:針對各濾器,將其通道維度分成複數個通道群組;及根據複數個通道群組來將濾器分割成複數個子濾器,其中各子濾器對應於複數個通道群組之一者。在一些實施例中,可首先根據複數個通道群組來將濾器分割成複數個塊體,且接著沿其高度維度分割濾器以獲得複數個子濾器,其中複數個子濾器之各者與原始濾器共用寬度維度。在將子張量及子濾器指定給複數個PE之程序期間,將來自輸入張量之相同水平面之複數個輸入子張量之一子集分別指定給PE之一子集(例如圖6中之PE之一列),且可藉由以下操作來將複數個子濾器指定給PE之子集:識別來自一相同濾器但對應於不同通道群組之複數個子濾器之一子集;及將複數個子濾器之子集分別指定給PE之子集。
如圖8A中所展示,一實例性輸入張量802具有1*3*6之一大小,其中一高度為1,一寬度為3,且通道之一數目為6。可沿寬度維度將輸入張量802分割成三個塊體1、2、3,其中第一塊體由圖8A中之輸入張量802之陰影區域表示。可沿通道維度將各塊體進一步分成三個區段,其中各區段具有1*1*2之一大小。即,將各塊體中之六個通道分成三個通道群組。各區段可表示為Ix,y,其中x係指輸入張量中之2D輸入特徵圖上之一位置,且y係指通道群組指數。在以下描述中,1*1*2區段被視為子張量。
在真實世界應用中,各卷積程序中可涉及複數個濾器。為易於參考及描述,圖8A中僅展示一濾器804(1*1*6之大小)以展現如何將子濾器分配至PE。假定將濾器804之通道類似地分成三個通道群組,即,三個1*1*2子濾器。各子濾器表示為Wy,k,其中y係指子濾器所在之通道群組,且k係指子濾器所屬之濾器804之識別符。例如,W1,k係指在通道群組1中且屬於濾器k(在此,濾器804)之子濾器。
在分割輸入張量802及濾器804之後,將子張量及子濾器指定給複數個PE用於並行處理之多個回合。圖8A繪示將子張量及子濾器指定給複數個PE之兩種方法:一樸素方法820;及一權重輪換方法810。在兩種方法中,三個PE用於並行處理之多個回合。
在樸素方法820中,在並行處理之第一回合(t=1)期間,PE1、PE2及PE3分別處置來自第一通道群組且指定有I1,1*W1,k、I2,1*W1,k及I3,1*W1,k之子張量。即,相同子濾器W1,k由PE1、PE2及PE3使用以產生乘法結果。在此,「*」係指乘法運算。在並行處理之第二回合(t=2)期間,PE1、PE2及PE3分別處置來自第二通道群組且指定有I1,2*W2,k、
I2,2*W2,k及I3,2*W2,k之子張量。即,相同子濾器W2,k由PE1、PE2及PE3使用以產生乘法結果。類似地,在並行處理之第三回合(t=3)期間,PE1、PE2及PE3分別處置來自第三通道群組且指定有I1,3*W3,k、I2,3*W3,k及I3,3*W3,k之子張量。即,相同子濾器W3,k由PE1、PE2及PE3使用以產生乘法結果。在並行處理之三個回合之後,可累加由PE1產生之乘法結果以產生輸入張量802之第一(左)1*1*6張量與1*1*6濾器804之部分和A1,k(用於一下一NN層之一啟動)。類似地,可累加由PE2產生之MAC結果以產生輸入張量802之第二(中間)1*1*6張量與1*1*6濾器804之部分和A2,k,且可累加由PE3產生之MAC結果以產生輸入張量802之第三(右)1*1*6張量與1*1*6濾器804之部分和A3,k。隨後,可將此等部分和組譯為輸出張量830。
在一些實施例中,圖8A中之權重輪換方法810可包括藉由使指定給一第i處理器之一子濾器輪換至一第(i+1)處理器來將複數個子濾器再指定給可用處理器。如圖8A中所展示,在使用權重輪換方法810之並行處理之第一回合(t=1)期間,PE1、PE2及PE3分別處置來自所有三個通道群組且指定有I1,1*W1,k、I2,2*W2,k及I3,3*W3,k之三個子張量。在並行處理之第二回合(t=2)期間,使指定給PE1、PE2及PE3之權重輪換(圖8A中之左輪換)。如圖8A中所展示,當t=2時,PE1、PE2及PE3分別指定有I1,2*W2,k、I2,3*W3,k及I3,1*W1,k。類似地,當t=3時,PE1、PE2及PE3分別指定有I1,3*W3,k、I2,1*W1,k及I3,2*W2,k。即,一子濾器在第一回合期間指定給PEx,且在第二回合期間輪換至PEx-1,且在第三回合期間進一步輪換至PEx-2。在並行處理之三個回合之後,可累加由PE1、PE2及PE3之各者產生之乘法結果以產生一部分和。隨後,可將此等部分和組譯為輸出張量
830。
在樸素方法820及權重輪換方法810之一比較中,樸素方法820需要在並行處理之各輪換期間針對三個PE複製相同子濾器三次,且在各輪換之後,三個PE需要自一更高階之記憶體(例如圖5中之晶片外DDR記憶體520或圖6中之I-cache 610)提取下一權重。因為循序處理三個回合,所以自較高階記憶體循序提取權重。自一較高階記憶體存取資料通常昂貴且緩慢。相比而言,權重輪換方法810可在並行處理之第一回合期間提取所有三個權重。此記憶體提取步驟可並行執行(例如各PE讀取其指定權重)。針對後續回合,權重在PE間輪換而非自更高階記憶體提取。因為使權重在PE間輪換發生於一較低階記憶體系統中,所以其可產生較快速度及較少能量成本。在一些實施例中,相鄰PE可由一直接通道連接以交換快取資料,其可進一步促進權重輪換。
圖8B繪示根據各種實施例之並行平衡權重卷積處理之另一例示性流程圖。圖8B中之流程圖係圖8A中之權重輪換方法之一通用版本。在此實例中執行之MAC運算涉及一批次之輸入張量(其包括N個輸入張量)及一群組之濾器。將各輸入張量之通道分割成複數個通道群組,其表示為Gc(通道群組或通道群組之數目),其中各Gc包括Cg(每群組之通道)個通道;且將輸入張量之2D輸入特徵圖分割成Gh*Gw(高度群組*寬度群組)個分段;類似地根據複數個通道群組Gc來分割濾器之通道。
其中m係指Gc(通道群組之數目),i係指B個總和之第i總和,j係指m個通道群組中之第j通道群組,k係指濾器之識別符,I係指由i及j識別之一子張量,w係指由j及k識別之一子濾器,A係指由i及k索引之一總和(例如將放置於輸出張量之通道k中之2D特徵圖中之位置i處之啟動)。
在一些實施例中,並行卷積處理可開始於將B個總和分成複數個群組,其中各群組包括(產生)m個總和。為產生m個總和,可執行並行處理m個回合。在並行處理之各回合期間,使用m個PE根據將m個子張量及m個子濾器指定給m個PE來並行運算m個部分和。在並行處理之兩個連續回合期間,可使m個子濾器在PE間輪換。
圖8B中之圖式繪示複數個總和群組之一者之並行處理之多個(m個)回合。在第一回合(t=1)期間,將來自一通道群組之一子張量及一子濾器指定給m個PE之各者,但不同PE處置不同通道群組(即,沒有兩個PE處置相同通道群組)。如圖中所展示,當t=1時,PE1處置第一通道群組(I1,1及W1,k係來自通道群組1),且PE2處置第二通道群組(I2,2及W2,k係來自通道群組2)。此外,不同PE處置來自輸入張量之一2D特徵圖之不同位置之子張量(即,沒有兩個PE處置來自2D特徵圖上之相同位置之子張量)。如圖中所展示,當t=1時,PE1處置2D特徵圖上之位置1處之I1,1,且PE2處置2D特徵圖上之位置2處之I2,2。
在第二回合(t=2)期間,使子濾器之指定在m個PE間輪換。例如,使W2,k自PE2(在第一回合期間)輪換至PE1(在第二回合期間)。正式言之,使在第i回合期間指定給PEi之Wi,k在第i+1回合期間輪換至PEi-1。針對後續回合(t=3、…、m),使權重沿相同方向輪換。應注意,使指定給第一PE之子濾器輪換至最後PE。
在並行處理之各回合之後,各PE可藉由對指定子張量及子濾器執行MAC運算來產生一部分和。在並行處理之m個回合期間,可使由各PE產生之m個部分和累加以在完成m個回合之後最後產生一點積(即,待組譯成一輸出張量之一總和)。如圖8B中所展示,可在PE1累加其在並行處理之各回合期間產生之部分和之收集總和A1,k。
圖9繪示根據各種實施例之用於平衡權重卷積處理之一實例性方法。方法900可由用於最佳化資源分配之一裝置、設備或系統執行。方法900可由圖1至圖8繪示之環境或系統之一或多個模組/組件(諸如圖5中之硬體加速器500及圖6中之處理實體(PE)580)執行。下文將呈現之方法900之操作意欲說明。取決於實施方案,方法900可包含依各種順序或並行執行之額外、更少或替代步驟。
區塊910包含獲得一輸入張量及複數個濾器,其中輸入張量及複數個濾器具有相同數目個通道。
區塊920包含根據可用處理器之一數目來將輸入張量分割成複數個子張量。在一些實施例中,複數個子張量之各者包括相同於輸入張量之數目個通道。
區塊930包含將複數個濾器之各者分割成一或多個子濾器以獲得複數個子濾器,其中複數個子濾器各包括相同數目個非零權重。在一些實施例中,複數個濾器之各者包括一通道維度、一高度維度及一寬度維度,且將複數個濾器之各者分割成一或多個子濾器包括:將通道維度分成複數個通道群組;及根據複數個通道群組來將濾器分割成複數個子濾器,其中各子濾器對應於複數個通道群組之一者。在一些實施例中,根據通道群組來將濾器分割成複數個子濾器包括:根據複數個通道群組來將濾
器分割成複數個塊體;及沿高度維度分割複數個塊體之各者以獲得複數個子濾器,其中複數個子濾器之各者與濾器共用寬度維度。
區塊940包含將複數個子張量及複數個子濾器分別指定給可用處理器,其中複數個子濾器之各者由將子濾器之非零權重儲存為指數值對之一緊湊記憶體佈局表示。在一些實施例中,各指數值對包括一通道維度指數、一寬度維度指數及一對應非零權重。在一些實施例中,將來自輸入張量之一相同水平面之複數個子張量之一子集分別指定給可用處理器之一子集,且將複數個子濾器指定給可用處理器包括:識別來自一相同濾器但對應於不同通道群組之複數個子濾器之一子集;及將複數個子濾器之子集分別指定給可用處理器之子集。
區塊950包含:針對可用處理器之各者,使複數個指定子濾器之緊湊記憶體佈局中之各指數值對反覆且基於指數值對來識別指定子張量中之一對應輸入值以執行一乘法及累加(MAC)運算以產生一部分和。在一些實施例中,基於指數值對來識別指定子張量中之一對應地輸入值以執行一MAC運算以產生一部分和包括:基於指數值對中之通道維度指數及寬度維度指數來識別指定子張量中之一輸入值;基於經識別輸入值及指數值對中之對應非零權重來執行一乘法運算以獲得一點積;及使點積與一對應部分和累加以獲得一新部分和。在一些實施例中,將藉由執行MAC運算所產生之部分和儲存於可由相鄰處理器存取之處理器之一累加緩衝器中。
區塊960包含藉由使複數個子濾器在複數個處理器間輪換來將複數個子濾器再指定給可用處理器。在一些實施例中,使複數個子濾器在複數個處理器間輪換包括:藉由使指定給一第i處理器之一子濾器輪
換至一第(i+1)處理器來將複數個子濾器再指定給可用處理器。
區塊970包含使自複數個處理器之各者產生之複數個部分和累加以獲得一輸出張量。在一些實施例中,使自複數個處理器之各者產生之複數個部分和累加以獲得一輸出張量包括:在一神經網路之一當前卷積層期間,使自複數個處理器之各者產生之複數個部分和累加以獲得一啟動子張量;回應於當前層不是一最後卷積層而將啟動子張量儲存於處理器中用於神經網路之一下一卷積層;及回應於當前層係最後卷積層而使來自可用處理器之複數個啟動子張量彙總以獲得輸出張量。
在一些實施例中,方法900可進一步包括:修剪複數個濾器之各者,使得濾器之每預定數目個通道包括相同數目個非零值。
圖10繪示其中可實施本文中所描述之任何實施例之一實例性運算裝置。運算裝置可用於實施圖1至圖9中所展示之系統及方法之一或多個組件。運算裝置1000可包括一匯流排1002或用於傳送資訊之其他通信機構及與匯流排1002耦合用於處理資訊之一或多個硬體處理器1004。(若干)硬體處理器1004可為(例如)一或多個通用微處理器。
運算裝置1000亦可包含耦合至匯流排1002用於儲存資訊及由(若干)處理器1004執行之指令之一主記憶體1007,諸如一隨機存取記憶體(RAM)、快取及/或其他動態儲存裝置。主記憶體1007亦可用於在由(若干)處理器1004執行之指令之執行期間儲存暫時變數或其他中間資訊。此等指令在儲存於(若干)處理器1004可存取之儲存媒體中時可使運算裝置1000變成經客製化以執行指令中所指定之操作之一專用機。主記憶體1007可包含非揮發性媒體及/或揮發性媒體。非揮發性媒體可包含(例如)光碟或磁碟。揮發性媒體可包含動態記憶體。媒體之常見形式可包含(例
如)一軟碟、一撓性碟、硬碟、固態硬碟、磁帶或任何其他磁性資料儲存媒體、一CD-ROM、任何其他光學資料儲存媒體、具有孔圖案之任何實體媒體、一RAM、一DRAM、一PRAM及EPROM、一FLASH-EPROM、NVRAM、任何其他記憶體晶片或匣或其等之網路版本。
運算裝置1000可使用客製化硬佈線邏輯、一或多個ASIC或FPGA、韌體及/或程式邏輯(其等與運算裝置組合可引起或程式化運算裝置1000變成一專用機)來實施本文中所描述之技術。根據一實施例,本文技術由運算裝置1000回應於(若干)處理器1004執行主記憶體1007中所含之一或多個指令之一或多個序列而執行。此等指令可自另一儲存媒體(諸如儲存裝置1009)讀取至主記憶體1007中。執行主記憶體1007中所含之指令序列可引起(若干)處理器1004執行本文中所描述之程序步驟。例如,本文中所揭示之程序/方法可由儲存於主記憶體1007中之電腦程式指令實施。當此等指令由(若干)處理器1004執行時,其可執行對應圖中所展示及上文所描述之步驟。在替代實施例中,硬佈線電路系統可代替或結合軟體指令使用。
運算裝置1000亦包含耦合至匯流排1002之一通信介面1010。通信介面1010可提供至連接至一或多個網路之一或多個網路鏈路之一雙向資料通信耦合。作為另一實例,通信介面1010可為一區域網路(LAN)卡,其提供至一相容LAN(或與一WAN通信之WAN組件)之一資料通信連接。亦可實施無線鏈路。
操作之特定效能可在處理器間分配,不僅駐留於一單一機器內,且亦跨數個機器部署。在一些實例性實施例中,處理器或處理器實施引擎可定位於一單一地理位置中(例如在一家庭環境、一辦公環境或一
伺服器農場內)。在其他實例性實施例中,處理器或處理器實施引擎可跨數個地理位置分佈。
上述章節中所描述之程序、方法及演算法之各者可完全或部分自動體現於由一或多個電腦系統或包括電腦硬體之電腦處理器執行之碼模組中。程序及演算法可部分或完全實施於專用電路系統中。
當本文中所揭示之功能依軟體功能單元之形式實施且售賣為或用作獨立產品時,其可儲存於一處理器可執行非揮發性電腦可讀儲存媒體中。本文中所揭示之特定技術解決方案(全部或部分)或促成當前技術之態樣可依一軟體產品之形式體現。軟體產品可儲存於一儲存媒體中,軟體產品包括引起一運算裝置(其可為一個人電腦、一伺服器、一網路裝置及其類似者)執行本申請案之實施例之方法之所有或一些步驟之數個指令。儲存媒體可包括一隨身碟、一可攜式硬碟、ROM、RAM、一磁碟、一光碟、可操作以儲存程式碼之另一媒體或其等之任何組合。
特定實施例進一步提供包括一處理器及儲存指令之一非暫時性電腦可讀儲存媒體之一系統,指令可由處理器執行以引起系統執行對應於上文所揭示之實施例之任何方法中之步驟之操作。特定實施例進一步提供組態有指令之一非暫時性電腦可讀儲存媒體,指令可由一或多個處理器執行以引起一或多個處理器執行對應於上文所揭示之實施例之任何方法中之步驟之操作。
本文中所揭示之實施例可透過與一客戶端互動之一雲平台、一伺服器或一伺服器群(下文中統稱為「服務系統」)來實施。客戶端可為一終端裝置,或由一平台處之一使用者註冊之一客戶端,其中終端裝置可為一行動終端、一個人電腦(PC)及可安裝有一平台應用程式之任何裝
置。
上文所描述之各種特徵及程序可彼此獨立使用或可依各種方式組合。所有可能組合及子組合意欲於落於本發明之範疇內。另外,在一些實施方案中可省略特定方法或程序區塊。本文中所描述之方法及程序亦不受限於任何特定序列,且與其相關之區塊或狀態可依其他適當序列執行。例如,所描述之區塊或狀態可依除所具體揭示之順序之外的一順序執行,或多個區塊或狀態可組合於一單一區塊或狀態中。實例性區塊或狀態可連續、並行或依某一其他方式執行。區塊或狀態可經添加或自所揭示之實例性實施例移除。本文中所描述之例示性系統及組件可不同於本文中所描述地組態。例如,元件可添加至所揭示之實例性實施例、自所揭示之實例性實施例移除或相較於所揭示之實例性實例重新配置。
本文中所描述之例示性方法之各種操作可至少部分由一演算法執行。演算法可包括於儲存於一記憶體(例如上述一非暫時性電腦可讀儲存媒體)中之程式碼或指令中。此演算法可包括一機器學習演算法。在一些實施例中,一機器學習演算法可不明確程式化電腦執行一功能但可自訓練資料學習以產生執行功能之一預測模型。
本文中所描述之例示性方法之各種操作可至少部分由經暫時性組態(例如由軟體)或永久性組態以執行相關操作之一或多個處理器執行。不管經暫時性或永久性組態,此等處理器可構成操作以執行本文中所描述之一或多個操作或功能之處理器實施引擎。
類似地,本文中所描述之方法可至少部分係處理器實施的,其中一或若干特定處理器係硬體之一實例。例如,一方法之至少一些操作可由一或多個處理器或處理器實施引擎執行。此外,一或多個處理器
亦可操作以支援一「雲運算」環境中之相關操作之效能或作為一「軟體即服務」(SaaS)。例如,至少一些操作可由一電腦群組(作為包含處理器之機器之實例)執行,其中此等操作可經由一網路(例如網際網路)及經由一或多個適當介面(例如一應用程式設計介面(API))來存取。
操作之特定效能可在處理器間分配,不僅駐留於一單一機器內,且亦跨數個機器部署。在一些實例性實施例中,處理器或處理器實施引擎可定位於一單一地理位置中(例如在一家庭環境、一辦公環境或一伺服器農場內)。在其他實例性實施例中,處理器或處理器實施引擎可跨數個地理位置分佈。
在整個本說明書中,複數例項可實施描述為一單一例項之組件、操作或結構。儘管一或多個方法之個別操作繪示及描述為單獨操作,但個別操作之一或多者可同時執行,且無需依所繪示之順序執行操作。在實例性組態中呈現為單獨組件之結構及功能可實施為一組合結構或組件。類似地,呈現為一單一組件之結構及功能性可實施為單獨組件。此等及其他變動、修改、添加及改良落於本發明之範疇中。
如本文中所使用,除非內文另有明確指示或另有指示,否則「或」係包含性而非排他性的。因此,在本文中,除非內文另有明確指示或另有指示,否則「A、B或C」意謂「A、B、C、A及B、A及C、B及C或A、B及C」。此外,除非內文另有明確指示或另有指示,否則「及」係結合及分別的。因此,在本文中,除非內文另有明確指示或另有指示,否則「A及B」意謂「A及B,結合地或分別地」。可提供本文中所描述之資源、操作或結構之複數個例項作為一單一例項。另外,各種資源、操作、引擎及資料儲存器之間的邊界係略微任意的,且在特定說明性組態之
一內文中繪示特定操作。其他功能分配可設想且可落於本發明之各種實施例之一範疇內。一般而言,在實例性組態中呈現為單獨資源之結構及功能可實施為一組合結構或資源。類似地,呈現為一單一資源之結構及功能可實施為單獨資源。此等及其他變動、修改、添加及改良落於由隨附申請專利範圍表示之本發明之實施例之一範疇內。因此,本說明書及圖式應被視為意在說明而非限制。
術語「包含」或「包括」用於指示存在隨後宣告之特徵,而不排除添加其他特徵。除非另有具體說明或在所使用之內文中依其他方式理解,否則諸如「可」之條件語言一般意欲傳達特定實施例包含而其他實施例不包含特定特徵、元件及/或步驟。因此,此等條件語言一般絕不意欲隱含一或多個實施例需要特徵、元件及/或步驟或一或多個實施例需要包含用於在具有或不具有使用者輸入或提示之情況下決定此等特徵、元件及/或步驟是否包含於或執行於任何特定實施例中之邏輯。
儘管已參考特定實例性實施例來描述本發明之一概觀,但可在不背離本發明之實施例之較廣範疇之情況下對此等實施例作出各種修改及改變。若事實上揭示一個以上實施例,則本發明之此等實施例在本文中可個別或統一稱為術語「發明」,此僅為方便起見而非意欲將本申請案之範疇自動限制於任何單一揭示內容或概念。
本文中所繪示之實施例經足夠詳細地描述以使熟習技術者能夠實踐所揭示之教示。其他實施例可經使用且自其導出,使得可在不背離本發明之範疇之情況下作出結構及邏輯替代及改變。因此,[實施方式]不意在限制,且各種實施例之範疇僅由隨附申請專利範圍及此申請專利範圍授權之等效物之全範圍界定。
100:神經網路
120:第一卷積層
130:第一池化層
140:第二卷積層
150:第二池化層
160:平坦化層
170:完全連接(FC)層
Claims (20)
- 一種電腦實施方法,其包括:在一神經網路內之一層處獲得一輸入張量(tensor)及複數個濾器;將該輸入張量分成(segmenting)複數個子張量;針對該複數個濾器之各者,執行一修剪(pruning)操作,其包括:將該濾器之一通道維度分割成(dividing)複數個通道群組,各通道群組包括該濾器之相同數目之二或多個連續通道;及修剪該複數個通道群組,使得(1)該濾器內之各通道群組包括相同數目個一或多個非零權重(non-zero weights)及(2)該濾器中之所有非零權重係均勻地(evenly)分佈至該濾器內之該複數個通道群組中;根據該複數個經修剪之通道群組以將該複數個濾器之各者分成複數個子濾器,其中該複數個子濾器之各者包括相同數目個非零權重;及將該複數個子張量及該複數個子濾器指定(assigning)給用於並行卷積(parallel convolution)處理之複數個處理器。
- 如請求項1之方法,其中該方法進一步包括藉由以下各者以執行該並行卷積處理:藉由該複數個處理器之各者以使指定給該處理器之一子濾器之各非零權重反覆(iterating);及藉由該處理器以識別在指定給該處理器之一子張量中之一對應輸入值以執行一乘法及累加(MAC)運算。
- 如請求項1之方法,其進一步包括:將該等非零權重儲存於各濾器之該複數個通道群組之各者中作為指數值對(index-value pairs),其中該等指數值對之各者包括一通道維度指數、一寬度維度指數及一對應非零權重。
- 如請求項3之方法,其中該方法進一步包括藉由以下各者以執行該並行卷積處理:針對儲存作為一指數值對之該等非零權重之各者,識別在由表示各非零權重之該指數值對之該通道維度指數及該寬度維度指數所識別之一位置處之一指定子張量中之一對應輸入值。
- 如請求項1之方法,其進一步包括:使該複數個子濾器在該複數個處理器間輪換(rotating)。
- 如請求項1之方法,其中根據該複數個經修剪之通道群組以將該複數個濾器之各者分成該複數個子濾器包括:根據該複數個經修剪之通道群組以將該濾器分成複數個塊體(chunks);及將該複數個塊體之各者分成複數個水平面。
- 如請求項6之方法,其進一步包括:修剪該複數個水平面,使得該複數個水平面之各者包括相同數目個非零權重。
- 如請求項1之方法,其中在該並行卷積處理之後,該複數個處理器產生複數個部分和(partial sums),及該方法進一步包括:使該複數個部分和累加以獲得一輸出張量;及將該輸出張量饋送(feeding)作為用於該神經網路之一下一層(next layer)之一輸入張量。
- 一種用於平衡權重稀疏(sparse)卷積處理之系統,其包括:複數個處理器;及一或多個非暫時性電腦可讀記憶體,其耦合至該複數個處理器且經組態有可由該複數個處理器執行以引起該系統執行包括以下各者之操作之指令:在一神經網路內之一層處獲得一輸入張量及複數個濾器;將該輸入張量分成複數個子張量;針對該複數個濾器之各者,執行一修剪操作,其包括:將該濾器之一通道維度分割成複數個通道群組,各通道群組包括該濾器之相同數目之二或多個連續通道;及修剪該複數個通道群組,使得(1)該濾器內之各通道群組包括相同數目個一或多個非零權重及(2)該濾器中之所有非零權重係均勻地分佈至該濾器內之該複數個通道群組中,其中該複數個子濾器之各者包括相同數目個非零權重;根據該複數個經修剪之通道群組以將該複數個濾器之各者分成複數 個子濾器;及將該複數個子張量及該複數個子濾器指定給用於並行卷積處理之該複數個處理器。
- 如請求項9之系統,其中該等操作進一步包括藉由以下各者以執行該並行卷積處理:藉由該複數個處理器之各者以使指定給該處理器之一子濾器之各非零權重反覆;及藉由該處理器以識別在指定給該處理器之一子張量中之一對應輸入值以執行一乘法及累加(MAC)運算。
- 如請求項9之系統,其中該等操作進一步包括:將該等非零權重儲存於各濾器之該複數個通道群組之各者中作為指數值對,其中該等指數值對之各者包括一通道維度指數、一寬度維度指數及一對應非零權重。
- 如請求項11之系統,其中該等操作進一步包括藉由以下各者以執行該並行卷積處理:針對儲存作為一指數值對之該等非零權重之各者,識別在由表示各非零權重之該指數值對之該通道維度指數及該寬度維度指數所識別之一位置處之一指定子張量中之一對應輸入值。
- 如請求項9之系統,其中根據該複數個經修剪之通道群組以將該複數 個濾器之各者分成該複數個子濾器包括:根據該複數個經修剪之通道群組以將該濾器分成複數個塊體;及將該複數個塊體之各者分成複數個水平面。
- 如請求項13之系統,其中該等操作進一步包括:修剪該複數個水平面,使得該複數個水平面之各者包括相同數目個非零權重。
- 如請求項9之系統,其中在該並行卷積處理之後,該複數個處理器產生複數個部分和,及該等操作進一步包括:使該複數個部分和累加以獲得一輸出張量;及將該輸出張量饋送作為用於該神經網路之一下一層之一輸入張量。
- 一種非暫時性電腦可讀儲存媒體,其經組態有可由複數個處理器執行以引起該複數個處理器執行包括以下各者之操作之指令:在一神經網路內之一層處獲得一輸入張量及複數個濾器;將該輸入張量分成複數個子張量;針對該複數個濾器之各者,執行一修剪操作,其包括:將該濾器之一通道維度分割成複數個通道群組,各通道群組包括該濾器之相同數目之二或多個連續通道;及修剪該複數個通道群組,使得(1)該濾器內之各通道群組包括相同數目個一或多個非零權重及(2)該濾器中之所有非零權重係均勻地分佈至該 濾器內之該複數個通道群組中,其中該複數個子濾器之各者包括相同數目個非零權重;根據該複數個經修剪之通道群組以將該複數個濾器之各者分成複數個子濾器;及將該複數個子張量及該複數個子濾器指定給用於並行卷積處理之該複數個處理器。
- 如請求項16之非暫時性電腦可讀儲存媒體,其中該等操作進一步包括藉由以下各者以執行該並行卷積處理:藉由該複數個處理器之各者以使指定給該處理器之一子濾器之各非零權重反覆;及藉由該處理器以識別在指定給該處理器之一子張量中之一對應輸入值以執行一乘法及累加(MAC)運算。
- 如請求項16之非暫時性電腦可讀儲存媒體,其中該等操作進一步包括:將該等非零權重儲存於各濾器之該複數個通道群組之各者中作為指數值對,其中該等指數值對之各者包括一通道維度指數、一寬度維度指數及一對應非零權重。
- 如請求項16之非暫時性電腦可讀儲存媒體,其中根據該複數個經修剪之通道群組以將該複數個濾器之各者分成該複數個子濾器包括:根據該複數個經修剪之通道群組以將該濾器分成複數個塊體;及 將該複數個塊體之各者分成複數個水平面。
- 如請求項19之非暫時性電腦可讀儲存媒體,其中該等操作進一步包括:修剪該複數個水平面,使得該複數個水平面之各者包括相同數目個非零權重。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/917,256 US11113601B1 (en) | 2020-06-30 | 2020-06-30 | Method and system for balanced-weight sparse convolution processing |
US16/917,256 | 2020-06-30 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202234299A TW202234299A (zh) | 2022-09-01 |
TWI836405B true TWI836405B (zh) | 2024-03-21 |
Family
ID=77558859
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW111115017A TWI836405B (zh) | 2020-06-30 | 2021-06-30 | 用於平衡權重稀疏卷積處理之方法、系統及非暫時性電腦可讀儲存媒體 |
TW110124147A TWI765763B (zh) | 2020-06-30 | 2021-06-30 | 用於平衡權重稀疏卷積處理之方法及系統 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW110124147A TWI765763B (zh) | 2020-06-30 | 2021-06-30 | 用於平衡權重稀疏卷積處理之方法及系統 |
Country Status (4)
Country | Link |
---|---|
US (2) | US11113601B1 (zh) |
CN (2) | CN115516459B (zh) |
TW (2) | TWI836405B (zh) |
WO (1) | WO2022002157A1 (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20220108156A1 (en) * | 2020-10-05 | 2022-04-07 | Numenta, Inc. | Hardware architecture for processing data in sparse neural network |
US11556757B1 (en) * | 2020-12-10 | 2023-01-17 | Neuralmagic Ltd. | System and method of executing deep tensor columns in neural networks |
US11562220B2 (en) * | 2021-04-14 | 2023-01-24 | Deepx Co., Ltd. | Neural processing unit capable of reusing data and method thereof |
US12093155B2 (en) | 2021-09-24 | 2024-09-17 | Qualcomm Incorporated | Allocation of data sub-tensors onto hardware sub-arrays |
US11960982B1 (en) * | 2021-10-21 | 2024-04-16 | Neuralmagic, Inc. | System and method of determining and executing deep tensor columns in neural networks |
CN116151316A (zh) * | 2021-11-15 | 2023-05-23 | 平头哥(上海)半导体技术有限公司 | 适用于类神经网络模型的计算系统及实现类神经网络模型的方法 |
WO2024056219A1 (en) * | 2022-09-15 | 2024-03-21 | Nokia Technologies Oy | A method, an apparatus and a computer program product for video encoding and video decoding |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW201921263A (zh) * | 2017-04-24 | 2019-06-01 | 美商英特爾股份有限公司 | 使用低和高精確度的混合推理 |
US20190332925A1 (en) * | 2018-04-30 | 2019-10-31 | International Business Machines Corporation | Neural hardware accelerator for parallel and distributed tensor computations |
US20190347536A1 (en) * | 2017-10-06 | 2019-11-14 | DeepCube LTD. | System and method for compact and efficient sparse neural networks |
CN111062472A (zh) * | 2019-12-11 | 2020-04-24 | 浙江大学 | 一种基于结构化剪枝的稀疏神经网络加速器及其加速方法 |
US20200160181A1 (en) * | 2018-05-31 | 2020-05-21 | Neuralmagic Inc. | Systems and methods for generation of sparse code for convolutional neural networks |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20190279092A1 (en) * | 2016-11-04 | 2019-09-12 | Google Llc | Convolutional Neural Network Compression |
CN107239824A (zh) * | 2016-12-05 | 2017-10-10 | 北京深鉴智能科技有限公司 | 用于实现稀疏卷积神经网络加速器的装置和方法 |
KR102499396B1 (ko) * | 2017-03-03 | 2023-02-13 | 삼성전자 주식회사 | 뉴럴 네트워크 장치 및 뉴럴 네트워크 장치의 동작 방법 |
US10643297B2 (en) * | 2017-05-05 | 2020-05-05 | Intel Corporation | Dynamic precision management for integer deep learning primitives |
EP3631691A4 (en) * | 2017-05-23 | 2021-03-31 | Intel Corporation | METHODS AND APPARATUS FOR IMPROVING A NEURONAL NETWORK OF BINARY WEIGHT USING A DEPENDENCY TREE |
US20190266218A1 (en) * | 2018-02-28 | 2019-08-29 | Wave Computing, Inc. | Matrix computation within a reconfigurable processor fabric |
US11423312B2 (en) * | 2018-05-14 | 2022-08-23 | Samsung Electronics Co., Ltd | Method and apparatus for universal pruning and compression of deep convolutional neural networks under joint sparsity constraints |
US10832139B2 (en) * | 2018-06-22 | 2020-11-10 | Moffett Technologies Co. Limited | Neural network acceleration and embedding compression systems and methods with activation sparsification |
KR20200028168A (ko) * | 2018-09-06 | 2020-03-16 | 삼성전자주식회사 | 컨볼루셔널 뉴럴 네트워크를 이용하는 컴퓨팅 장치 및 그 동작 방법 |
US20200401895A1 (en) * | 2019-06-21 | 2020-12-24 | Samsung Electronics Co., Ltd. | Neural network hardware accelerator system with zero-skipping and hierarchical structured pruning methods |
CN111242277B (zh) * | 2019-12-27 | 2023-05-05 | 中国电子科技集团公司第五十二研究所 | 一种基于fpga设计的支持稀疏剪枝的卷积神经网络加速器 |
-
2020
- 2020-06-30 US US16/917,256 patent/US11113601B1/en active Active
-
2021
- 2021-06-30 CN CN202180028639.9A patent/CN115516459B/zh active Active
- 2021-06-30 TW TW111115017A patent/TWI836405B/zh active
- 2021-06-30 WO PCT/CN2021/103746 patent/WO2022002157A1/en active Application Filing
- 2021-06-30 CN CN202311292487.0A patent/CN117273101B/zh active Active
- 2021-06-30 TW TW110124147A patent/TWI765763B/zh active
- 2021-08-02 US US17/391,432 patent/US11763150B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW201921263A (zh) * | 2017-04-24 | 2019-06-01 | 美商英特爾股份有限公司 | 使用低和高精確度的混合推理 |
US20190347536A1 (en) * | 2017-10-06 | 2019-11-14 | DeepCube LTD. | System and method for compact and efficient sparse neural networks |
US20190332925A1 (en) * | 2018-04-30 | 2019-10-31 | International Business Machines Corporation | Neural hardware accelerator for parallel and distributed tensor computations |
US20200160181A1 (en) * | 2018-05-31 | 2020-05-21 | Neuralmagic Inc. | Systems and methods for generation of sparse code for convolutional neural networks |
CN111062472A (zh) * | 2019-12-11 | 2020-04-24 | 浙江大学 | 一种基于结构化剪枝的稀疏神经网络加速器及其加速方法 |
Also Published As
Publication number | Publication date |
---|---|
CN117273101A (zh) | 2023-12-22 |
US20210406686A1 (en) | 2021-12-30 |
TWI765763B (zh) | 2022-05-21 |
US11763150B2 (en) | 2023-09-19 |
CN115516459A (zh) | 2022-12-23 |
CN117273101B (zh) | 2024-05-24 |
US11113601B1 (en) | 2021-09-07 |
TW202215308A (zh) | 2022-04-16 |
WO2022002157A1 (en) | 2022-01-06 |
CN115516459B (zh) | 2023-11-03 |
TW202234299A (zh) | 2022-09-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI836405B (zh) | 用於平衡權重稀疏卷積處理之方法、系統及非暫時性電腦可讀儲存媒體 | |
TWI806134B (zh) | 用於分層權重稀疏卷積處理之方法和系統及其相關的非暫時性電腦可讀儲存媒體 | |
JP6961011B2 (ja) | データ管理のためのシステム及び方法 | |
US11741350B2 (en) | Efficient utilization of processing element array | |
US9886377B2 (en) | Pipelined convolutional operations for processing clusters | |
CN114026569A (zh) | 使用脉动阵列的扩张卷积 | |
TWI804041B (zh) | 用於具有工作負載平衡啟動稀疏性之卷積之方法和系統 | |
CN111465943A (zh) | 芯片上计算网络 | |
CN113469354B (zh) | 受存储器限制的神经网络训练 | |
CN113449861A (zh) | 使用部分梯度更新的推测性训练 | |
JP2023519565A (ja) | 機械学習ジョブ中の改善されたメモリ圧縮転送のためのスパース性に基づく特徴の再順序付け | |
WO2021118857A1 (en) | Hardware accelerator having reconfigurable instruction set | |
JP2022137247A (ja) | 複数の入力データセットのための処理 | |
US11636569B1 (en) | Matrix transpose hardware acceleration | |
CN117203628A (zh) | 加速器、计算机系统、方法和存储介质 | |
CN116261736B (zh) | 用于双稀疏卷积处理和并行化的方法和系统 | |
US12125124B1 (en) | Matrix transpose hardware acceleration |