TWI806134B - 用於分層權重稀疏卷積處理之方法和系統及其相關的非暫時性電腦可讀儲存媒體 - Google Patents
用於分層權重稀疏卷積處理之方法和系統及其相關的非暫時性電腦可讀儲存媒體 Download PDFInfo
- Publication number
- TWI806134B TWI806134B TW110131140A TW110131140A TWI806134B TW I806134 B TWI806134 B TW I806134B TW 110131140 A TW110131140 A TW 110131140A TW 110131140 A TW110131140 A TW 110131140A TW I806134 B TWI806134 B TW I806134B
- Authority
- TW
- Taiwan
- Prior art keywords
- layer
- filter
- sub
- processors
- zero
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 80
- 238000012545 processing Methods 0.000 title claims abstract description 28
- 238000003860 storage Methods 0.000 title claims abstract description 21
- 238000013528 artificial neural network Methods 0.000 claims abstract description 36
- 230000015654 memory Effects 0.000 claims description 33
- 239000000872 buffer Substances 0.000 claims description 28
- 239000013598 vector Substances 0.000 claims description 26
- 239000011159 matrix material Substances 0.000 claims description 8
- 238000004590 computer program Methods 0.000 abstract description 2
- 230000006870 function Effects 0.000 description 15
- 230000008569 process Effects 0.000 description 13
- 238000011176 pooling Methods 0.000 description 11
- 230000004913 activation Effects 0.000 description 10
- 238000001994 activation Methods 0.000 description 10
- 238000013527 convolutional neural network Methods 0.000 description 10
- 238000004891 communication Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000007792 addition Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000013138 pruning Methods 0.000 description 3
- 238000000638 solvent extraction Methods 0.000 description 3
- 238000013473 artificial intelligence Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000013500 data storage 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
- 230000007246 mechanism Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 206010028980 Neoplasm Diseases 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 201000011510 cancer Diseases 0.000 description 1
- 238000010276 construction Methods 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
- 238000000605 extraction Methods 0.000 description 1
- 235000019580 granularity Nutrition 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
- 238000003058 natural language processing Methods 0.000 description 1
- 210000002569 neuron Anatomy 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000001737 promoting effect Effects 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012549 training Methods 0.000 description 1
Images
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/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/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/08—Learning methods
- G06N3/082—Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/544—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
- G06F7/5443—Sum of products
-
- G—PHYSICS
- G06—COMPUTING; 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/0495—Quantised networks; Sparse networks; Compressed 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/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
- G06N3/048—Activation functions
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Mathematical Physics (AREA)
- Molecular Biology (AREA)
- Software Systems (AREA)
- Neurology (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Image Processing (AREA)
- Image Analysis (AREA)
- Complex Calculations (AREA)
Abstract
本發明描述用於分層權重稀疏卷積處理之方法、系統及設備,其包含編碼於電腦儲存媒體上之電腦程式。一種例示性方法包括:在一神經網路之一卷積層處獲得一輸入張量及複數個濾器;將該輸入張量分割成複數個子張量且將該複數個子張量指定給複數個處理器;針對該複數個濾器之各者,產生該濾器中之複數個非零權重之一分層位元表示,其中該分層位元表示包括指示一子濾器是否具有至少一非零權重之複數個位元及對應於該濾器中之該複數個非零權重之複數個鍵值對;基於該分層位元表示來識別該複數個非零權重之一或多者及來自該指定子張量之對應輸入值以執行乘法及累加(MAC)運算。
Description
本發明大體上係關於人工智慧,更特定言之,本發明係關於分層權重稀疏卷積處理。
當前,神經網路(NN)係諸多現代人工智慧(AI)應用(諸如影像及視訊辨識、建議者系統、分類、醫療影像分析及自然語言處理)之基礎。NN用於出自自駕車及偵測癌症至玩複雜遊戲之各種使用案例中。一典型NN可包括其中執行密集及因此昂貴(在運算及能量方面)卷積運算之一系列卷積層。
近年來,已開發各種方法以藉由將稀疏性引入至NN中之卷積處理(諸如修剪濾器以減少非零權重之數目)來提高NN之運算效率。然而,既有硬體架構依賴通用運算引擎(例如GPU),其未針對涉及具有稀疏權重(例如有限數目個非零權重)之濾器之卷積最佳化。此等架構往往無法將稀疏濾器高效儲存於記憶體中或完全利用稀疏性來大規模地達到更高位準之並行性。因此,期望構建用於高效稀疏卷積之一新穎系統架構。
本說明書之各種實施例可包含用於分層權重稀疏卷積處理
及並行化之系統、方法及非暫時性電腦可讀媒體。
根據一態樣,用於分層權重稀疏卷積之方法包括:在一神經網路之一卷積層處獲得一輸入張量及複數個濾器;將該輸入張量分割成複數個子張量且將該複數個子張量指定給複數個處理器;針對該複數個濾器之各者,產生該濾器中之複數個非零權重之一分層位元表示,其中該分層位元表示包括一第一層及一第二層,該第一層包括對應於該濾器中之複數個子濾器且指示該對應子濾器是否具有至少一非零權重之複數個位元,且該第二層包括對應於該濾器中之該複數個非零權重之複數個鍵值對,各鍵值對包括作為值之該複數個非零權重之一者及作為鍵之該複數個非零權重之該一者之一通道識別符;由該複數個處理器之各者基於該分層位元表示來識別該複數個非零權重之一或多者及來自該指定子張量之對應輸入值;對該一或多個經識別非零權重及該等對應輸入值執行乘法及累加(MAC)運算以獲得一部分和;及累加由該複數個處理器之各者獲得之該部分和以建構該神經網路之該卷積層之一輸出張量。
在一些實施例中,將該複數個子張量指定給複數個處理器包括:針對該複數個處理器之各者,將該複數個子張量之一或多者儲存至該處理器之一內部緩衝器中。
在一些實施例中,該複數個子張量之各者及該複數個子濾器之各者具有相同數目個通道。
在一些實施例中,基於該分層位元表示來識別該複數個非零權重之一或多者及來自該指定子張量之對應輸入值包括:針對該複數個非零權重之各者,基於該分層位元表示之該第一層來判定一通道群組指數,其中該通道群組指數對應於該非零權重定位於其中之一濾器通道群
組;基於該分層位元表示之該第二層來判定該濾器通道群組內之該非零權重之一偏移;基於該通道群組指數及該偏移來識別來自該指定子張量之一輸入值。
在一些實施例中,該分層位元表示進一步包括該第一層與該第二層之間的一第三層,其中該第三層針對該複數個子濾器之各者包括分別對應於該子濾器之複數個水平面之複數個位元向量,且該複數個位元向量之各者指示該對應水平面是否包括該複數個非零權重之至少一者。
在一些實施例中,基於該分層位元表示來識別該複數個非零權重之一或多者及來自該指定子張量之對應輸入值包括:針對該複數個非零權重之各者,基於該分層位元表示之該第一層來判定一通道群組指數,其中該通道群組指數對應於該非零權重定位於其中之一濾器通道群組;基於該分層位元表示之該第三層來判定該非零權重之一高度指數及一寬度指數;基於該分層位元表示之該第二層來判定該濾器通道群組內之該非零權重之一偏移;基於該通道群組指數、該高度指數、該寬度指數及該偏移來識別來自該指定子張量之一輸入值。
在一些實施例中,修剪該複數個濾器,使得該複數個子濾器之各者具有全零權重或數個前置非零權重。
在一些實施例中,該複數個處理器經電配置成包括複數個列及行之一矩陣,且該複數個處理器之各者具有一或多個行方向相鄰處理器。
在一些實施例中,允許該複數個處理器之各者自其行方向相鄰處理器之一者之一內部緩衝器讀取一或多個鍵值對。
在一些實施例中,該方法可進一步包括:將來自一通道群
組之該複數個子張量之一或多者指定給一列處理器,其中該通道群組包括複數個通道;及在該列處理器之各者基於該分層位元表示來完成一子張量與一對應子濾器之間的該等MAC運算且獲得一部分和之後,使該等部分和在該列處理器之間輪換。
在一些實施例中,該方法可進一步包括:將來自一相同高度指數及一相同寬度指數之該複數個子濾器之一或多者指定給該複數個處理器之各者;及在該複數個處理器之各者基於該分層位元表示來完成具有對應子張量之該複數個子濾器之該一或多者之間的該等MAC運算且獲得一部分和之後,累加該等部分和以建構該輸出張量。
根據另一態樣,提供一種用於分層權重稀疏卷積之系統。該系統可包括一或多個處理器及耦合至該一或多個處理器且組態有指令之一或多個非暫時性電腦可讀記憶體,該等指令可由該一或多個處理器執行以引起該系統執行包括以下各者之操作:在一神經網路之一卷積層處獲得一輸入張量及複數個濾器;將該輸入張量分割成複數個子張量且將該複數個子張量指定給複數個處理器;針對該複數個濾器之各者,產生該濾器中之複數個非零權重之一分層位元表示,其中該分層位元表示包括一第一層及一第二層,該第一層包括對應於該濾器中之複數個子濾器且指示該對應子濾器是否具有至少一非零權重之複數個位元,且該第二層包括對應於該濾器中之該複數個非零權重之複數個鍵值對,各鍵值對包括作為值之該複數個非零權重之一者及作為鍵之該複數個非零權重之該一者之一通道識別符;由該複數個處理器之各者基於該分層位元表示來識別該複數個非零權重之一或多者及來自該指定子張量之對應輸入值;對該一或多個經識別非零權重及該等對應輸入值執行乘法及累加(MAC)運算以獲得一部分和;及
累加由該複數個處理器之各者獲得之該部分和以建構該神經網路之該卷積層之一輸出張量。
根據又一態樣,提供一種用於分層權重稀疏卷積之非暫時性電腦可讀儲存媒體。該媒體可組態有可由一或多個處理器執行以引起該一或多個處理器執行包括以下各者之操作之指令:在一神經網路之一卷積層處獲得一輸入張量及複數個濾器;將該輸入張量分割成複數個子張量且將該複數個子張量指定給複數個處理器;針對該複數個濾器之各者,產生該濾器中之複數個非零權重之一分層位元表示,其中該分層位元表示包括一第一層及一第二層,該第一層包括對應於該濾器中之複數個子濾器且指示該對應子濾器是否具有至少一非零權重之複數個位元,且該第二層包括對應於該濾器中之該複數個非零權重之複數個鍵值對,各鍵值對包括作為值之該複數個非零權重之一者及作為鍵之該複數個非零權重之該一者之一通道識別符;由該複數個處理器之各者基於該分層位元表示來識別該複數個非零權重之一或多者及來自該指定子張量之對應輸入值;對該一或多個經識別非零權重及該等對應輸入值執行乘法及累加(MAC)運算以獲得一部分和;及累加由該複數個處理器之各者獲得之該部分和以建構該神經網路之該卷積層之一輸出張量。
將在考量參考附圖之以下描述及隨附申請專利範圍(所有其等構成本說明書之一部分,其中相同元件符號標示各種圖中之對應部分)之後更明白本文中所揭示之系統、方法及非暫時性電腦可讀媒體之此等及其他特徵及結構之相關元件及部分組合之操作方法及功能及製造之經濟性。然而,應明確瞭解,圖式僅供說明及描述且不意欲界定本發明之限制。
100:神經網路
110:影像
120:第一卷積層
130:第一池化層
140:第二卷積層
150:第二池化層
160:平坦化層
170:完全連接(FC)層
220:卷積處理
222:輸入張量
223:第一深度方向切片
224:濾器
225:輸出張量
228:點積
260:卷積處理
262:輸入張量
264:濾器
265:濾器
268:輸出張量
322:輸入張量
323:子張量
324:通道群組
342:濾器
343:濾器
344:濾器
345:濾器區塊
346:子濾器
420:濾器
430:具有非零之濾器區塊
432:水平面/表
433:水平面/表
434:水平面/表
436:全零濾器區塊
440:分層位元表示
500:硬體加速器
510:主機CPU
512:周邊組件互連快速(PCIe)實體層(PHY)控制器
520:雙倍資料速率(DDR)記憶體
530:DDR介面
540:直接記憶體存取(DMA)控制器
550:全域緩衝器
552:輸入緩衝器
554:權重緩衝器
556:輸出緩衝器
560:稀疏處理單元(SPU)陣列
562:SPU
570:排程器
580:處理實體(PE)
600:輸入張量
610:濾器
622:輪換連接
624:權重交換連接
630:第一列
640:行
700:方法
710:區塊
720:區塊
730:區塊
740:區塊
750:區塊
760:區塊
800:運算裝置
802:匯流排
804:硬體處理器
807:主記憶體
809:儲存裝置
810:通信介面
圖1繪示根據各種實施例之一例示性卷積神經網路(CNN)。
圖2繪示根據各種實施例之例示性卷積處理。
圖3繪示根據各種實施例之用於分割輸入張量及濾器之一例示性方法。
圖4繪示根據各種實施例之用於儲存非零權重之一例示性分層記憶體佈局。
圖5繪示根據各種實施例之分層權重稀疏卷積之一例示性系統圖。
圖6A繪示根據各種實施例之用於分層權重稀疏卷積之一例示性系統架構。
圖6B繪示根據各種實施例之用於分層權重稀疏卷積之另一例示性系統架構。
圖7繪示根據各種實施例之用於分層權重稀疏卷積之一實例性方法。
圖8繪示其中可實施本文中所描述之任何實施例之一實例性電腦系統。
本文中所描述之實施例提供用於神經網路中之分層權重稀疏卷積之方法、系統、設備。一卷積程序可係指用於自一先前層提取輸入資料之特徵(諸如自一影像或一音訊波導出之一特徵圖或自一神經網路中之一先前層輸出之啟動)之一基本但運算昂貴之運算。一卷積程序之輸入
資料可指稱一輸入張量,且卷積程序之輸出可指稱一輸出張量。輸入張量可包括特徵圖之多個通道。例如,一RGB影像可表示為具有三個通道(紅通道、綠特定及藍通道)之一輸入張量,其中各通道包括一特徵圖(例如具有相同於原始RGB影像之大小但僅由紅色、綠色或藍色之一者製成之一灰階影像)。為自一輸入張量提取特徵,可依一卷積(例如滑動或移動)方式將一或多個特徵提取器(亦稱為濾器)應用於輸入張量。可在各卷積步驟期間執行特特徵偵測器(濾器)與輸入張量之間的乘法及累加(MAC)運算。隨後可組譯自卷積步驟產生之輸出以形成卷積程序之一輸出張量。輸出張量可變成神經網路中之下一層之輸入張量。在一些情況中,一卷積層中可涉及多個輸入張量。
在一卷積程序期間,可藉由引入大量零來修剪或稀疏化濾器以降低運算成本且提高推斷速度。例如,可將濾器中之50%以上之值設定為零。本說明書中之一些實施例藉由將稀疏化濾器高效儲存於一節省記憶體佈局中且並行化複數個處理實體(PE)(例如處理器)上之卷積處理來利用濾器稀疏性。
在一些實施例中,首先可根據可用於參與卷積處理之PE之數目來將輸入張量分割成複數個子張量。可在不換出PE之局部記憶體/緩衝器之情況下在卷積程序之多個反覆(對應於一NN中之多個卷積層)中將子張量之各者指定給複數個PE之各者且使子張量之各者保持於其內。在卷積程序之各反覆之後,可更新指定給PE作為一輸入之子張量且使其演進成一輸出,其可用作卷積程序之下一反覆之輸入。在一些實施例中,可為了記憶體管理而將經更新子張量暫時換出PE且針對下一反覆將其換回PE中。
在一些實施例中,可將稀疏濾器之各者分割成可儲存於一節省記憶體佈局中之複數個子濾器。例如,在經修剪及分割之後,可依其中子濾器之各者包括全零權重或表示為W之預定數目個非零權重之一方式分割稀疏濾器之各者。各子濾器內之非零權重之數目可受子濾器之大小(例如,一較大大小之子濾器可包含更多非零權重)及所要特徵提取準確度(例如,太少非零權重會引起特徵損失)影響。在一些實施例中,基於知道各子濾器內之非零權重之數目(0或W),可依具有多個層之一分層位元表示(例如記憶體佈局之一形式)表示稀疏濾器之各者。例如,頂層可包含用於表示濾器內之複數個區塊是否含有非零權重之複數個位元,一第二層可類似地包含用於表示各區塊內之複數個區段是否含有非零權重之複數個位元,且一底層可儲存實際非零權重。可基於(例如)如何分割濾器來判定各分層位元表示中之層數。
因為將稀疏濾器表示為分層位元表示,所以對應卷積處理可指稱一分層權重稀疏卷積。濾器之分層位元表示可允許各PE更高效地儲存及反覆非零權重。例如,分層位元表示可顯著減小濾器之記憶體佔用面積(例如,各PE可將較少資料自一全域緩衝器讀取至其局部緩衝器中以執行局部卷積)且使解析度適合於具有有限記憶體資源之裝置。例如,本文中所揭示之實施例可應用於邊緣運算系統中之邊緣裝置。關於分層位元表示之詳細描述可參考圖4。在一些實施例中,可依保證指定給不同PE之子張量及子濾器之對彼此獨立使得複數個PE可並行執行局部運算以提高效能之一方式將子濾器及子張量指定給複數個PE。關於指定之詳細描述可參考圖6A及圖6B。
上述分割及並行處理方案亦係高度可擴縮的。在一些實施
例中,並行處理之各回合(亦稱為反覆)可產生複數個部分和,且複數個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,所以對應輸出張量228僅具有一個通道。
相比而言,卷積處理260涉及兩個濾器264及265。可藉由使濾器264卷積穿過輸入張量262來判定第一通道中之輸出張量268之值(例如通道1中之一2D輸出特徵圖)。可藉由使濾器265卷積穿過輸入張量262來判定第二通道中之輸出張量268之值(例如通道2中之一2D輸出特徵圖)。因此,所得輸出張量268包括2D輸出特徵圖之兩個通道。
應注意,可並行化一卷積處理期間之一些運算。例如,對一濾器執行之MAC運算獨立於另一濾器之MAC操作,因為不同濾器產生不同輸出通道之2D輸出特徵圖。作為另一實例,輸入張量中之深度方向切片彼此獨立,因為其等產生各2D輸出特徵圖上之不同位置之值。若可在複數個處理實體(例如處理器、核心或線程)間並行化所有此等運算,則可達成理論理想並行性。然而,因為真實世界應用可具有大量濾器及巨量輸入張量,所以追求理論理想並行性需要硬體具有難以企及之運算能力(例如具有巨量處理實體及記憶體交換機構)。以下描述中所揭示之實施例提供藉由完全利用一給定硬體之並行處理能力來達成理想並行性之一方法(及對應系統、儲存媒體),其係一更可擴縮及實際方法。
圖3繪示根據各種實施例之用於分割輸入張量及濾器之一例示性方法。在各卷積程序期間,各輸入張量322及各濾器342及343共用複數個通道(即,具有相同數目個通道)。在不喪失一般性之情況下,各輸入張量可表示為具有一高度維度(H)、一寬度維度(W)及一通道維度(C)之
三維張量;各濾器可類似地表示為具有一高度維度(R)、一寬度維度(S)及一通道維度(C)之三維張量。各維度可包含複數個對應維度單元。例如,圖3中之輸入張量323可表示為3(H)*3(W)*6(C),其中H維度包含3個高度單元,W維度包含3個寬度單元,且C維度包含6個通道。在一些實施例中,卷積程序中可涉及多個輸入張量,且可使用一額外維度N(例如表示一輸入張量識別符)來擴展多個輸入張量之各者之H*W*C表示。
在一些實施例中,可將輸入張量322分割成複數個子張量323。例如,分割可保證複數個子張量可均等地分佈於可用PE之間,使得PE上之工作負載均勻分佈。在一些實施例中,各子張量之大小可表示為Hg*Wg*Cg,其中Hg係指子張量之高度方向維度(例如,「g」代表群組,且「Hg」代表一子張量內之一高度單元群組),Wg係指子張量之寬度方向維度,且Cg係指子張量之通道方向維度或包含一或多個連續通道之一通道群組324。以圖3中之輸入張量322為例,子張量323(陰影區域)可具有1(Hg)*1(Wg)*2(Cg)之一大小。在實際實施方案中,Hg及Wg可相等及大於1,且Cg可為諸如8、16或32之一大正數。在一些實施例中,子張量(諸如323)可由一個PE每次提取一部分,而非一次提取整個子張量323(例如歸因於PE之內部緩衝器之有限大小)。
在一些實施例中,濾器342可分割成複數個子濾器,且複數個子張量之各者及複數個子濾器之各者可具有相同數目個通道,例如,其等可在其通道方向維度上具有通道群組Cg 324。濾器342之分割可依各種方式實施且具有各種粒度。例如,濾器342可分割成濾器區塊345,其中各濾器區塊345具有R*S*Cg之一大小且被處理為一子濾器。作為另一實例,可將濾器區塊345之各者進一步分割成複數個水平面,其中各水平
面具有1*S*Cg之一大小且被處理為一子濾器346。假定濾器342具有3(R)*3(S)*C之一大小,則子濾器346可具有1(R)*3(S)*Cg之一大小,其中將通道C之數目分成多個通道群組,其中各通道群組具有Cg個通道。
在一些實施例中,濾器342至344可經修剪或稀疏化以限制其內之非零權重之數目。經稀疏化之濾器可在不顯著喪失自輸入張量提取特徵之準確度之情況下極大提高運算效率。在一些實施例中,濾器342至344可經修剪使得各子濾器(例如345或346)具有全零權重或數個前置非零權重。各子濾器中之數個前置非零權重用於自輸入張量322捕獲所要特徵,且全零子濾器有助於減小濾器之儲存器/記憶體佔用面積及運算成本。在一些實施例中,可在多個步驟中執行修剪程序。例如,第一步驟係修剪濾器區塊345之各者,使得其等含有相同數目個非零權重(非零權重之位置在各濾器區塊345內可不同);接著,在各濾器區塊345內,可修剪其內子濾器346,使得其等含有相同數目個非零權重;最後,一些子濾器346可移除非零權重以產生全零子濾器。
在一些實施例中,複數個濾器可存在於一個卷積層中以自不同角度捕獲輸入張量322中之特徵。例如,圖3展示濾器342至344可用於使用輸入張量來卷積。在一些實施例中,可將複數個濾器342至344(表示為K個濾器)分成濾器群組(表示為Kg),其中各濾器群組包括固定數目個濾器。在各濾器群組內,來自相同通道群組之子濾器可形成一子濾器群組,其可饋送至一PE中以使用一對應子張量323來執行局部卷積。例如,假定濾器342及343位於相同濾器群組中,則來自濾器342之第一通道群組之一子濾器346及來自濾器343之第一通道群組之一子濾器可形成一子濾器群組,其可饋送至一PE中以使用來自(相同)第一通道群組之子張量323
來執行卷積。
圖4繪示根據各種實施例之用於儲存非零權重之一例示性分層記憶體佈局。圖4中之例示性濾器420為了說明而被假設為一3(R)*3(S)*32(C)張量且可係指圖3中所展示之濾器之一者。亦假設將濾器420分割成複數個通道群組,其中各通道群組包括複數個通道(Cg);且在各通道群組內,將濾器區塊R*S*Cg進一步分割成複數個子濾器(諸如複數個水平面),其中各子濾器表示為1(R)*3(S)*Cg。如圖4中所展示,假設Cg之值為8。此等假設僅為了簡單及清楚且可易於經修正或放寬以適應不同濾器分割方式或卷積之實際需要。
如圖4中所展示,將濾器420分成複數個濾器區塊,諸如第一濾器區塊(陰影方塊)3(R)*3(S)*8(Cg)。可將第一濾器區塊進一步分成分別對應於R=0、R=1及R=2之水平面432、433及434。水平面432、433及434之各者可表示為具有3之一寬度(對應於S)及8之一高度(對應於Cg)之二維表。應注意,各子濾器(水平面)已經修剪以包含全零(諸如434)或固定數目個非零權重(432及433中各四個非零權重)。例如,對應於平面R=0之表432可由四個非零權重W0至W3組成,其中所有其他值為零。在非零權重中,W0及W1定位於行S=0中,且W2及W3定位於行S=1中。類似地,對應於平面R=1之表433亦具有四個非零權重,其中W4及W5定位於行S=0中,且W6及W7定位於行S=2中。對應於平面R=2之表434不具有非零權重。
在圖4中,濾器420可作為一分層位元表示儲存於PE之記憶體中以表示濾器420中之非零權重。濾器420之分層位元表示可依各種形式產生,其取決於濾器420之結構。在一些實施例中,若濾器具有
1(R)*1(S)*C之一大小且被分割成複數個濾器區塊(各濾器區塊係1(R)*1(S)*Cg),則濾器之分層位元表示可包括一第一層及一第二層。第一層可包括對應於濾器中之複數個濾器區塊且指示對應濾器區塊是否具有至少一非零權重之複數個位元,且第二層可包括對應於濾器中之複數個非零權重之複數個鍵值對,各鍵值對包括作為值之複數個非零權重之一者及作為鍵之該一個非零權重之一通道識別符。
在一些實施例中,若濾器420之寬度及高度維度大於1,則可將濾器420之分層位元表示中之層數增加至3。例如,第一層可包括對應於濾器中之複數個濾器區塊且指示對應濾器區塊是否具有至少一非零權重之複數個位元;第二層可針對複數個濾器區塊之各者包括分別對應於濾器區塊內之複數個水平面之複數個位元向量,其中各位元向量指示對應水平面是否具有至少一非零權重;且第三層可包括對應於濾器中之複數個非零權重之複數個鍵值對,各鍵值對包括作為值之複數個非零權重之一者及作為鍵之該一個非零權重之一通道識別符。
例如,假定濾器420具有含一些非零權重之一第一濾器區塊(陰影方塊)及含全零權重之一第二濾器區塊,則濾器420之分層位元表示可如圖4中所展示般建構。分層位元表示440之第一層包括指示對應濾器區塊是否含有至少一非零權重之複數個位元。在此實例中,對應於第一濾器區塊之第一位元係1,且對應於第二濾器區塊之第二位元係0(指示一全零濾器區塊)。分層位元表示440之第二層包括對應於具有至少一非零權重之濾器區塊之水平面之複數個位元向量。在此實例中,第一濾器區塊具有表示為表432、433及434之三個水平面,其中表432含有行0及1中之非零權重,表433含有行0及2中之非零權重,且表434含有全零。因此,分
層位元表示440之第二層中之第一位元向量具有指示第一水平面(R=0)具有第一行(S=0)及第二行(S=1)中之非零權重之值(1,1,0);分層位元表示440之第二層中之第二位元向量具有指示第二水平面(R=1)具有第一行(S=0)及第三行(S=2)中之非零權重之值(1,0,1);且分層位元表示440之第二層中之第三位元向量具有指示對應水平面(R=2)中無非零值之值(0,0,0)。分層位元表示440之第三層可包含實際非零值。如圖4中所展示,非零權重W0定位於通道2中(表432中之idx值係指自0開始之通道之指數),因此,對應於第三層中之W0之鍵值對係(2,W0)。類似地,非零權重W1表示為(7,W1)以指示非零權重W1定位於通道7中。
分層位元表示440依一高效方式儲存濾器420中之非零權重之所需資訊。在一些實施例中,分層位元表示440可藉由以下操作來提供各非零權重之準確位置:基於分層位元表示440之第一層來判定一通道群組指數,其中通道群組指數對應於非零權重定位於其中之一濾器通道群組;基於分層位元表示之第二層來判定非零權重之一高度指數及一寬度指數;及基於分層位元表示440之第三層來判定濾器通道群組內之非零權重之一偏移(即,通道指數)。
在卷積程序期間,複數個處理實體(PE)之各者可指定有一或多個濾器(例如一濾器群組)或一或多個濾器區塊(例如來自相同通道群組)及一或多個對應子張量(例如來自相同於濾器/濾器區塊之通道群組之一輸入張量之一部分)以執行局部乘法及累加(MAC)運算以產生部分和。
為對各PE執行MAC運算,可基於一或多個濾器或濾器區塊之分層位元表示來識別對應於指定非零權重(濾器或濾器區塊中)之輸入值(子張量中)。以下描述使用濾器420之例示性分層位元表示作為一實例
來展現如何識別對應輸入值。在圖4中假定將濾器420指定給一PE。濾器420中之各非零權重可經列舉且與輸入張量中之一對應輸入值相乘。例如,PE可藉由識別指示具有非零權重之一濾器區塊之一第一非零值位元來自第一層開始。非零值位元之位置可指示其對應於哪個通道群組。在圖4中,第一層之第一位元係1,其意謂第一通道群組之濾器區塊具有至少一非零權重。接著,PE可藉由定位對應於濾器區塊之固定數目個位元向量來檢查第二層,其中固定數目係指各濾器區塊中之水平面之數目(例如圖4中之第一濾器區塊中之3個水平面432、433及434)。此等位元向量之各者可包含固定數目個位元,其等分別對應於濾器420之S維度中之行之數目(例如各水平面432、433或434中之3個行S=0、1、2)。可基於第二層中之位元向量之位置來判定R維度中之指數;可基於位元向量內之位元值來判定S維度中之指數。最後,第三層包含通道識別符及實際非零權重。藉由知道R維度、S維度及通道維度中之三個指數,PE可定位來自輸入張量之對應輸入值且基於非零權重及輸入值來執行MAC運算以獲得一部分和。可累加由複數個PE獲得之部分和以建構卷積層之一輸出張量。
在一些實施例中,分層位元表示440中之各層可維持指向先前經處理位元、位元向量或鍵值對之一指標。在非零權重之列舉期間,指標可有助於PE判定待處理之下一濾器區塊、位元向量或鍵值對。在一些實施例中,分層位元表示440可儲存為具有對應於第一層之根節點之一樹。根節點中之各非零位元可具有包含一或多個子節點之一子樹,子節點儲存屬於對應於非零位元之濾器區塊之位元向量,其中各位元向量對應於濾器區塊中之一水平面。各位元向量中之各非零位元可具有一或多個孫節點,其對應於濾器區塊之各水平面中之一或多個行且儲存一或多個行中之
非零權重之鍵值對。
分層位元表示440提供一高效方式來儲存非零權重及定位對應輸入值以執行卷積所需之所有資訊。例如,若第一層中之一位元係0,則可跳過整個對應濾器區塊。在此情況中,整個濾器區塊僅佔用PE中之儲存空間之1個位元。
圖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可處置一單元量之卷積運算。
圖6A繪示根據各種實施例之分層權重稀疏卷積之一例示圖。為了說明,圖6A展示如何將一子張量(輸入張量600中之陰影部分)及子濾器群組(濾器610中之陰影部分)指定給複數個PE以並行實施卷積。
在一些實施例中,複數個PE可配置成具有PE之複數個列及行之一矩陣。可允許複數個PE之各者與其相鄰PE交換資料(例如,自其行方向相鄰PE之一者之一內部緩衝器讀取非零權重或在其列方向相鄰PE之間輪換部分和)。
在一些實施例中,可首先將輸入張量600(一H*W*C張量)分割成複數個子張量,例如複數個W*Cg子張量(例如輸入張量600中之複數個水平面),其中Cg係指包含複數個通道之一通道群組。接著,可將此等子張量指定給複數個PE或儲存於複數個PE之內部緩衝器中。如圖6A中所展示,各PE列(例如第一列630之PE0、PE32、…、PE224)可指定有W*Cg子張量之一部分。接著,各PE可個別穿過濾器中之水平面(例如S*Cg)以列舉所有非零權重。針對所識別之各非零權重,可易於自對應分層位元表示推導非零權重之通道維度指數、R維度指數及S維度指數,且PE接著可易於基於三個指數來定位來自指定子張量之對應輸入值。可使
非零權重及對應輸入值相乘及累加以產生一部分和。若對應位元係0,則PE可跳過整個濾器區塊或個別通道群組。在一些實施例中,各PE可視需要透過相同行640中之每兩個PE之間的權重交換連接624來自其相鄰PE讀取更多非零權重。在一些實施例中,當相同列630中之最慢PE完成列舉所有指定非零權重時,可透過輪換連接622來輪換由相同列630中之各PE產生之部分和用於下一處理回合(例如可使此等部分和與下一回合中所產生之新部分和進一步累加)。在此,「最慢PE」可係指具有最小運算能力或具有最重工作負載(例如待處理之最多非零權重)之PE。在一些實施例中,可累加此等部分和以建構卷積層之輸出張量。
圖6A中所展示之濾器及輸入張量之例示性指定可提供神經網路中之卷積程序之以下益處:可在一列中之任何最慢PE可減少運算時間時節省運算時間及藉由跳過記憶體存取及乘法(避免濾器之全零部分)來明確節省功率。
圖6B繪示根據各種實施例之分層權重稀疏卷積之另一例示圖。在圖6B中,依相同於圖6A中所展示之指定之一方式分割輸入張量600及濾器610且將其等指定給複數個PE。例如,各PE可視需要透過權重交換連接624來自其行方向相鄰PE讀取更多非零權重。圖6A及圖6B中之此等兩個圖之間的差異在於:各PE繼續穿過濾器610之所有S*Cg直至計算對應輸出通道之最終結果。依此方式,部分和無需在相同列中之PE之間輪換。在一些實施例中,可累加此等部分和以建構卷積層之輸出張量。
圖6B中所展示之濾器及輸入張量之例示性指定可提供神經網路中之卷積程序之以下益處:由於一個PE可跳過整個輸出通道運算之運算而節省運算時間及由於跳過記憶體存取及乘法而節省功率。
圖7繪示根據各種實施例之用於分層權重稀疏卷積之一實例性方法。方法700可由用於最佳化資源分配之一裝置、設備或系統執行。方法700可由圖1至圖6繪示之環境或系統之一或多個模組/組件(諸如圖5中之硬體加速器500)執行。下文將呈現之方法700之操作意在說明。取決於實施方案,方法700可包含依各種順序或並行執行之額外、更少或替代步驟。
區塊710包含在一神經網路之一卷積層處獲得一輸入張量及複數個濾器。在一些實施例中,修剪複數個濾器,使得複數個子濾器之各者具有全零權重或數個前置非零權重。
區塊720包含將輸入張量分割成複數個子張量且將複數個子張量指定給複數個處理器。在一些實施例中,將複數個子張量指定給複數個處理器包括:針對複數個處理器之各者,將複數個子張量之一或多者儲存至處理器之一內部緩衝器中。
區塊730包含針對複數個濾器之各者,產生濾器中之複數個非零權重之一分層位元表示,其中分層位元表示包括一第一層及一第二層,第一層包括對應於濾器中之複數個子濾器且指示對應子濾器是否具有至少一非零權重之複數個位元,且第二層包括對應於濾器中之複數個非零權重之複數個鍵值對,各鍵值對包括作為值之複數個非零權重之一者及作為鍵之複數個非零權重之該一者之一通道識別符。在一些實施例中,複數個子張量之各者及複數個子濾器之各者具有相同數目個通道。
區塊740包含由複數個處理器之各者基於分層位元表示來識別複數個非零權重之一或多者及來自指定子張量之對應輸入值。在一些實施例中,基於分層位元表示來識別複數個非零權重之一或多者及來自指
定子張量之對應輸入值包括:針對複數個非零權重之各者,基於分層位元表示之第一層來判定一通道群組指數,其中通道群組指數對應於非零權重定位於其中之一濾器通道群組;基於分層位元表示之第二層來判定濾器通道群組內之非零權重之一偏移;基於通道群組指數及偏移來識別來自指定子張量之一輸入值。
在一些實施例中,分層位元表示進一步包括第一層與第二層之間的一第三層,其中第三層針對複數個子濾器之各者包括分別對應於子濾器之複數個水平面之複數個位元向量,且複數個位元向量之各者指示對應水平面是否包括複數個非零權重之至少一者。在一些實施例中,基於分層位元表示來識別複數個非零權重之一或多者及來自指定子張量之對應輸入值包括:針對複數個非零權重之各者,基於分層位元表示之第一層來判定一通道群組指數,其中通道群組指數對應於非零權重定位於其中之一濾器通道群組;基於分層位元表示之第三層來判定非零權重之一高度指數及一寬度指數;基於分層位元表示之第二層來判定濾器通道群組內之非零權重之一偏移;基於通道群組指數、高度指數、寬度指數及偏移來識別來自指定子張量之一輸入值。
區塊750包含對一或多個經識別非零權重及對應輸入值執行乘法及累加(MAC)運算以獲得一部分和。
區塊760包含累加由複數個處理器之各者獲得之部分和以建構神經網路之卷積層之一輸出張量。
在一些實施例中,複數個處理器經電配置成包括複數個列及行之一矩陣,且複數個處理器之各者具有一或多個行方向相鄰處理器。在一些實施例中,允許複數個處理器之各者自其行方向相鄰處理器之一者
之一內部緩衝器讀取一或多個鍵值對。在一些實施例中,700方法可進一步包括:將來自一通道群組之複數個子張量之一或多者指定給一列處理器,其中通道群組包括複數個通道;及在該列處理器之各者基於分層位元表示來完成一個子張量與一對應子濾器之間的MAC運算且獲得一部分和之後,使部分和在該列處理器之間輪換。在一些實施例中,方法700可進一步包括:將來自一相同高度指數及一相同寬度指數之複數個子濾器之一或多者指定給複數個處理器之各者;及在複數個處理器之各者基於分層位元表示來完成具有對應子濾器之複數個子濾器之一或多者之間的MAC運算且獲得一部分和之後,累加部分和以建構輸出張量。
圖8繪示其中可實施本文中所描述之任何實施例之一實例性運算裝置。運算裝置可用於實施圖1至圖7中所展示之系統及方法之一或多個組件。運算裝置800可包括一匯流排802或用於傳送資訊之其他通信機構及與匯流排802耦合用於處理資訊之一或多個硬體處理器804。(若干)硬體處理器804可為(例如)一或多個通用微處理器。
運算裝置800亦可包含耦合至匯流排802用於儲存資訊及由(若干)處理器804執行之指令之一主記憶體807,諸如一隨機存取記憶體(RAM)、快取及/或其他動態儲存裝置。主記憶體807亦可用於在由(若干)處理器804執行之指令之執行期間儲存暫時變數或其他中間資訊。此等指令在儲存於(若干)處理器804可存取之儲存媒體中時可使運算裝置800變成經客製化以執行指令中所指定之操作之一專用機。主記憶體807可包含非揮發性媒體及/或揮發性媒體。非揮發性媒體可包含(例如)光碟或磁碟。揮發性媒體可包含動態記憶體。媒體之常見形式可包含(例如)一軟碟、一撓性碟、硬碟、固態硬碟、磁帶或任何其他磁性資料儲存媒體、一CD-
ROM、任何其他光學資料儲存媒體、具有孔圖案之任何實體媒體、一RAM、一DRAM、一PRAM及EPROM、一FLASH-EPROM、NVRAM、任何其他記憶體晶片或匣或其等之網路版本。
運算裝置800可使用客製化硬佈線邏輯、一或多個ASIC或FPGA、韌體及/或程式邏輯(其等與運算裝置組合可引起或程式化運算裝置800變成一專用機)來實施本文中所描述之技術。根據一實施例,本文技術由運算裝置800回應於(若干)處理器804執行主記憶體807中所含之一或多個指令之一或多個序列而執行。此等指令可自另一儲存媒體(諸如儲存裝置809)讀取至主記憶體807中。執行主記憶體807中所含之指令序列可引起(若干)處理器804執行本文中所描述之程序步驟。例如,本文中所揭示之程序/方法可由儲存於主記憶體807中之電腦程式指令實施。當此等指令由(若干)處理器804執行時,其可執行對應圖中所展示及上文所描述之步驟。在替代實施例中,硬佈線電路系統可代替或結合軟體指令使用。
運算裝置800亦包含耦合至匯流排802之一通信介面810。通信介面810可提供至連接至一或多個網路之一或多個網路鏈路之一雙向資料通信耦合。作為另一實例,通信介面810可為一區域網路(LAN)卡,其提供至一相容LAN(或與一WAN通信之WAN組件)之一資料通信連接。亦可實施無線鏈路。
操作之特定效能可在處理器間分配,不僅駐留於一單一機器內,且亦跨數個機器部署。在一些實例性實施例中,處理器或處理器實施引擎可定位於一單一地理位置中(例如在一家庭環境、一辦公環境或一伺服器農場內)。在其他實例性實施例中,處理器或處理器實施引擎可跨數個地理位置分佈。
上述章節中所描述之程序、方法及演算法之各者可體現於由一或多個電腦系統或包括電腦硬體之電腦處理器執行之碼模組中及由該等碼模組完全或部分自動化。程序及演算法可部分或完全實施於專用電路系統中。
當本文中所揭示之功能依軟體功能單元之形式實施且售賣為或用作獨立產品時,其可儲存於一處理器可執行非揮發性電腦可讀儲存媒體中。本文中所揭示之特定技術解決方案(全部或部分)或促成當前技術之態樣可依一軟體產品之形式體現。軟體產品可儲存於一儲存媒體中,軟體產品包括引起一運算裝置(其可為一個人電腦、一伺服器、一網路裝置及其類似者)執行本申請案之實施例之方法之所有或一些步驟之數個指令。儲存媒體可包括一隨身碟、一可攜式硬碟、ROM、RAM、一磁碟、一光碟、可操作以儲存程式碼之另一媒體或其等之任何組合。
特定實施例進一步提供包括一處理器及儲存指令之一非暫時性電腦可讀儲存媒體之一系統,指令可由處理器執行以引起系統執行對應於上文所揭示之實施例之任何方法中之步驟之操作。特定實施例進一步提供組態有指令之一非暫時性電腦可讀儲存媒體,指令可由一或多個處理器執行以引起一或多個處理器執行對應於上文所揭示之實施例之任何方法中之步驟之操作。
本文中所揭示之實施例可透過與一用戶端互動之一雲平台、一伺服器或一伺服器群(下文中統稱為「服務系統」)來實施。用戶端可為一終端裝置,或由一平台處之一使用者註冊之一用戶端,其中終端裝置可為一行動終端、一個人電腦(PC)及可安裝有一平台應用程式之任何裝置。
上文所描述之各種特徵及程序可彼此獨立使用或可依各種方式組合。所有可能組合及子組合意欲於落於本發明之範疇內。另外,在一些實施方案中可省略特定方法或程序區塊。本文中所描述之方法及程序亦不受限於任何特定序列,且與其相關之區塊或狀態可依其他適當序列執行。例如,所描述之區塊或狀態可依除所具體揭示之順序之外的一順序執行,或多個區塊或狀態可組合於一單一區塊或狀態中。實例性區塊或狀態可連續、並行或依某一其他方式執行。區塊或狀態可經添加或自所揭示之實例性實施例移除。本文中所描述之例示性系統及組件可不同於所描述地組態。例如,元件可添加至所揭示之實例性實施例、自所揭示之實例性實施例移除或相較於所揭示之實例性實施例重新配置。
本文中所描述之例示性方法之各種操作可至少部分由一演算法執行。演算法可包括於儲存於一記憶體(例如上述一非暫時性電腦可讀儲存媒體)中之程式碼或指令中。此演算法可包括一機器學習演算法。在一些實施例中,一機器學習演算法可不明確程式化電腦執行一功能但可自訓練資料學習以產生執行功能之一預測模型。
本文中所描述之例示性方法之各種操作可至少部分由經暫時性組態(例如由軟體)或永久性組態以執行相關操作之一或多個處理器執行。不管經暫時性或永久性組態,此等處理器可構成操作以執行本文中所描述之一或多個操作或功能之處理器實施引擎。
類似地,本文中所描述之方法可至少部分係處理器實施的,其中一或若干特定處理器係硬體之一實例。例如,一方法之至少一些操作可由一或多個處理器或處理器實施引擎執行。此外,一或多個處理器亦可操作以支援一「雲運算」環境中之相關操作之效能或作為一「軟體即
服務」(SaaS)。例如,至少一些操作可由一電腦群組(作為包含處理器之機器之實例)執行,其中此等操作可經由一網路(例如網際網路)及經由一或多個適當介面(例如一應用程式設計介面(API))來存取。
操作之特定效能可在處理器間分配,不僅駐留於一單一機器內,且亦跨數個機器部署。在一些實例性實施例中,處理器或處理器實施引擎可定位於一單一地理位置中(例如在一家庭環境、一辦公環境或一伺服器農場內)。在其他實例性實施例中,處理器或處理器實施引擎可跨數個地理位置分佈。
在整個本說明書中,複數例項可實施描述為一單一例項之組件、操作或結構。儘管一或多個方法之個別操作繪示及描述為單獨操作,但個別操作之一或多者可同時執行,且無需依所繪示之順序執行操作。在實例性組態中呈現為單獨組件之結構及功能可實施為一組合結構或組件。類似地,呈現為一單一組件之結構及功能性可實施為單獨組件。此等及其他變動、修改、添加及改良落於本發明之範疇中。
如本文中所使用,除非內文另有明確指示或另有指示,否則「或」係包含性而非排他性的。因此,在本文中,除非內文另有明確指示或另有指示,否則「A、B或C」意謂「A、B、A及B、A及C、B及C或A、B及C」。此外,除非內文另有明確指示或另有指示,否則「及」係結合及分別的。因此,在本文中,除非內文另有明確指示或另有指示,否則「A及B」意謂「A及B,結合地或分別地」。此外,可提供本文中所描述之資源、操作或結構之複數例項作為一單一例項。另外,各種資源、操作、引擎及資料儲存器之間的邊界係略微任意的,且在特定說明性組態之一內文中繪示特定操作。其他功能分配可設想且可落於本發明之各種實施
例之一範疇內。一般而言,在實例性組態中呈現為單獨資源之結構及功能可實施為一組合結構或資源。類似地,呈現為一單一資源之結構及功能可實施為單獨資源。此等及其他變動、修改、添加及改良落於由隨附申請專利範圍表示之本發明之實施例之一範疇內。因此,本說明書及圖式應被視為意在說明而非限制。
術語「包含」或「包括」用於指示存在隨後宣告之特徵,但不排除添加其他特徵。除非另有具體說明或在所使用之內文中依其他方式理解,否則諸如「可」之條件語言一般意欲傳達特定實施例包含而其他實施例不包含特定特徵、元件及/或步驟。因此,此條件語言一般不意欲隱含一或多個實施例依任何方式需要特徵、元件及/或步驟或一或多個實施例需要包含用於在具有或不具有使用者輸入或提示之情況下決定此等特徵、元件及/或步驟是否包含於或執行於任何特定實施例中之邏輯。
儘管已參考特定實例性實施例來描述本發明之一概觀,但可在不背離本發明之實施例之較廣範疇之情況下對此等實施例作出各種修改及改變。若事實上揭示一個以上實施例,則本發明之此等實施例在本文中可個別或統一稱為術語「發明」,此僅為方便起見而非意欲將本申請案之範疇自動限制於任何單一揭示內容或概念。
本文中所繪示之實施例經足夠詳細地描述以使熟習技術者能夠實踐所揭示之教示。其他實施例可經使用且自其導出,使得可在不背離本發明之範疇之情況下作出結構及邏輯替代及改變。因此,[實施方式]不意在限制,且各種實施例之範疇僅由隨附申請專利範圍及此申請專利範圍授權之等效物之全範圍界定。
100:神經網路
110:影像
120:第一卷積層
130:第一池化層
140:第二卷積層
150:第二池化層
160:平坦化層
170:完全連接(FC)層
Claims (20)
- 一種電腦實施方法,其包括:在一神經網路之一卷積層(convolution layer)處獲得一輸入張量(tensor)及複數個濾器(filters);將該輸入張量分割成複數個子張量且將該複數個子張量指定給複數個處理器;針對該複數個濾器之各者,產生該濾器中之複數個非零權重之一分層位元表示(hierarchical bit representation),其中該分層位元表示包括一第一層及一第二層,該第一層包括對應於該濾器中之複數個子濾器且指示一對應子濾器是否具有至少一非零權重之複數個位元,且該第二層包括對應於該濾器中之該複數個非零權重之複數個鍵值對(key-value pairs),各鍵值對包括作為值之該複數個非零權重之一者及作為鍵之該複數個非零權重之該一者之一通道識別符;由該複數個處理器之各者基於該分層位元表示來識別該複數個非零權重之一或多者及來自該指定子張量之對應輸入值;對該一或多個經識別非零權重及該等對應輸入值執行乘法及累加(multiply-and-accumulate;MAC)運算以獲得一部分和;及累加由該複數個處理器之各者獲得之該部分和以建構該神經網路之該卷積層之一輸出張量。
- 如請求項1之方法,其中將該複數個子張量指定給該複數個處理器包 括:針對該複數個處理器之各者,將該複數個子張量之一或多者儲存至該處理器之一內部緩衝器中。
- 如請求項1之方法,其中該複數個子張量之各者及該複數個子濾器之各者具有相同數目個通道。
- 如請求項1之方法,其中基於該分層位元表示來識別該複數個非零權重之一或多者及來自該指定子張量之對應輸入值包括:針對該複數個非零權重之各者,基於該分層位元表示之該第一層來判定一通道群組指數,其中該通道群組指數對應於該非零權重定位於其中之一濾器通道群組;基於該分層位元表示之該第二層來判定該濾器通道群組內之該非零權重之一偏移;及基於該通道群組指數及該偏移來識別來自該指定子張量之一輸入值。
- 如請求項1之方法,其中該分層位元表示進一步包括該第一層與該第二層之間的一第三層,其中該第三層針對該複數個子濾器之各者包括分別對應於該子濾器之複數個水平面之複數個位元向量,且該複數個位元向量之各者指示該對應水平面是否包括該複數個非零權重之至少一者。
- 如請求項5之方法,其中基於該分層位元表示來識別該複數個非零權重之一或多者及來自該指定子張量之對應輸入值包括:針對該複數個非零權重之各者,基於該分層位元表示之該第一層來判定一通道群組指數,其中該通道群組指數對應於該非零權重定位於其中之一濾器通道群組;基於該分層位元表示之該第三層來判定該非零權重之一高度指數及一寬度指數;基於該分層位元表示之該第二層來判定該濾器通道群組內之該非零權重之一偏移;及基於該通道群組指數、該高度指數、該寬度指數及該偏移來識別來自該指定子張量之一輸入值。
- 如請求項1之方法,其中修剪該複數個濾器,使得該複數個子濾器之各者具有全零權重或數個前置非零權重。
- 如請求項1之方法,其中該複數個處理器經電配置成包括複數個列及行之一矩陣,且該複數個處理器之各者具有一或多個行方向相鄰處理器。
- 如請求項8之方法,其中允許該複數個處理器之各者自其行方向相鄰處理器之一者之一內部緩衝器讀取一或多個鍵值對。
- 如請求項8之方法,其進一步包括: 將來自一通道群組之該複數個子張量之一或多者指定給一列處理器,其中該通道群組包括複數個通道;及在該列處理器之各者基於該分層位元表示來完成該複數個子張量之一個子張量與一對應子濾器之間的該等MAC運算且獲得一部分和之後,使該等部分和在該列處理器之間輪換。
- 如請求項8之方法,其進一步包括:將來自一相同高度指數及一相同寬度指數之該複數個子濾器之一或多者指定給該複數個處理器之各者;及在該複數個處理器之各者基於該分層位元表示來完成具有對應子張量之該複數個子濾器之該一或多者之間的該等MAC運算且獲得一部分和之後,累加該等部分和以建構該輸出張量。
- 一種用於分層權重稀疏卷積處理之系統,其包括一或多個處理器及耦合至該一或多個處理器且組態有指令之一或多個非暫時性電腦可讀記憶體,該等指令可由該一或多個處理器執行以引起該系統執行包括以下各者之操作:在一神經網路之一卷積層處獲得一輸入張量及複數個濾器;將該輸入張量分割成複數個子張量且將該複數個子張量指定給複數個處理器;針對該複數個濾器之各者,產生該濾器中之複數個非零權重之一分層位元表示,其中該分層位元表示包括一第一層及一第二層, 該第一層包括對應於該濾器中之複數個子濾器且指示一對應子濾器是否具有至少一非零權重之複數個位元,且該第二層包括對應於該濾器中之該複數個非零權重之複數個鍵值對,各鍵值對包括作為值之該複數個非零權重之一者及作為鍵之該複數個非零權重之該一者之一通道識別符;由該複數個處理器之各者基於該分層位元表示來識別該複數個非零權重之一或多者及來自該指定子張量之對應輸入值;對該一或多個經識別非零權重及該等對應輸入值執行乘法及累加(MAC)運算以獲得一部分和;及累加由該複數個處理器之各者獲得之該部分和以建構該神經網路之該卷積層之一輸出張量。
- 如請求項12之系統,其中將該複數個子張量指定給該複數個處理器包括:針對該複數個處理器之各者,將該複數個子張量之一或多者儲存至該處理器之一內部緩衝器中。
- 如請求項12之系統,其中該分層位元表示進一步包括該第一層與該第二層之間的一第三層,其中該第三層針對該複數個子濾器之各者包括分別對應於該子濾器之複數個水平面之複數個位元向量,且該複數個位元向量之各者指示該對應水平面是否包括該複數個非零權重之至少一者。
- 如請求項12之系統,其中修剪該複數個濾器,使得該複數個子濾器之各者具有全零權重或數個前置非零權重。
- 如請求項15之系統,其中基於該分層位元表示來識別該複數個非零權重之一或多者及來自該指定子張量之對應輸入值包括:針對該複數個非零權重之各者,基於該分層位元表示之該第一層來判定一通道群組指數,其中該通道群組指數對應於該非零權重定位於其中之一濾器通道群組;基於該分層位元表示來判定該非零權重之一高度指數及一寬度指數;基於該分層位元表示之該第二層來判定該濾器通道群組內之該非零權重之一偏移;及基於該通道群組指數、該高度指數、該寬度指數及該偏移來識別來自該指定子張量之一輸入值。
- 一種用於分層權重稀疏卷積處理之非暫時性電腦可讀儲存媒體,其組態有可由一或多個處理器執行以引起該一或多個處理器執行包括以下各者之操作之指令:在一神經網路之一卷積層處獲得一輸入張量及複數個濾器;將該輸入張量分割成複數個子張量且將該複數個子張量指定給複數個處理器;針對該複數個濾器之各者,產生該濾器中之複數個非零權重之一分 層位元表示,其中該分層位元表示包括一第一層及一第二層,該第一層包括對應於該濾器中之複數個子濾器且指示一對應子濾器是否具有至少一非零權重之複數個位元,且該第二層包括對應於該濾器中之該複數個非零權重之複數個鍵值對,各鍵值對包括作為值之該複數個非零權重之一者及作為鍵之該複數個非零權重之該一者之一通道識別符;由該複數個處理器之各者基於該分層位元表示來識別該複數個非零權重之一或多者及來自該指定子張量之對應輸入值;對該一或多個經識別非零權重及該等對應輸入值執行乘法及累加(MAC)運算以獲得一部分和;及累加由該複數個處理器之各者獲得之該部分和以建構該神經網路之該卷積層之一輸出張量。
- 如請求項17之儲存媒體,其中將該複數個子張量指定給該複數個處理器包括:針對該複數個處理器之各者,將該複數個子張量之一或多者儲存至該處理器之一內部緩衝器中。
- 如請求項17之儲存媒體,其中該分層位元表示進一步包括該第一層與該第二層之間的一第三層,其中該第三層針對該複數個子濾器之各者包括分別對應於該子濾器之複數個水平面之複數個位元向量,且 該複數個位元向量之各者指示該對應水平面是否包括該複數個非零權重之至少一者。
- 如請求項17之儲存媒體,其中修剪該複數個濾器,使得該複數個子濾器之各者具有全零權重或數個前置非零權重。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/999,455 | 2020-08-21 | ||
US16/999,455 US10970619B1 (en) | 2020-08-21 | 2020-08-21 | Method and system for hierarchical weight-sparse convolution processing |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202215304A TW202215304A (zh) | 2022-04-16 |
TWI806134B true TWI806134B (zh) | 2023-06-21 |
Family
ID=75275484
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW112115587A TW202331599A (zh) | 2020-08-21 | 2021-08-23 | 用於分層權重稀疏卷積處理之方法和系統及其相關的非暫時性電腦可讀儲存媒體 |
TW110131140A TWI806134B (zh) | 2020-08-21 | 2021-08-23 | 用於分層權重稀疏卷積處理之方法和系統及其相關的非暫時性電腦可讀儲存媒體 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW112115587A TW202331599A (zh) | 2020-08-21 | 2021-08-23 | 用於分層權重稀疏卷積處理之方法和系統及其相關的非暫時性電腦可讀儲存媒體 |
Country Status (7)
Country | Link |
---|---|
US (2) | US10970619B1 (zh) |
EP (1) | EP4200759A4 (zh) |
JP (2) | JP7450815B2 (zh) |
KR (2) | KR102636710B1 (zh) |
CN (1) | CN115485695A (zh) |
TW (2) | TW202331599A (zh) |
WO (1) | WO2022037705A1 (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11888002B2 (en) | 2018-12-17 | 2024-01-30 | Meta Platforms Technologies, Llc | Dynamically programmable image sensor |
US11962928B2 (en) | 2018-12-17 | 2024-04-16 | Meta Platforms Technologies, Llc | Programmable pixel array |
US11935291B2 (en) | 2019-10-30 | 2024-03-19 | Meta Platforms Technologies, Llc | Distributed sensor system |
US11948089B2 (en) | 2019-11-07 | 2024-04-02 | Meta Platforms Technologies, Llc | Sparse image sensing and processing |
US11825228B2 (en) | 2020-05-20 | 2023-11-21 | Meta Platforms Technologies, Llc | Programmable pixel array having multiple power domains |
US10970619B1 (en) * | 2020-08-21 | 2021-04-06 | Moffett Technologies Co., Limited | Method and system for hierarchical weight-sparse convolution processing |
US11556757B1 (en) * | 2020-12-10 | 2023-01-17 | Neuralmagic Ltd. | System and method of executing deep tensor columns in neural networks |
TW202321991A (zh) * | 2021-06-22 | 2023-06-01 | 美商元平台技術有限公司 | 稀疏影像處理 |
US11960982B1 (en) | 2021-10-21 | 2024-04-16 | Neuralmagic, Inc. | System and method of determining and executing deep tensor columns in neural networks |
CN114218152B (zh) * | 2021-12-06 | 2023-08-15 | 海飞科(南京)信息技术有限公司 | 流处理方法、处理电路和电子设备 |
CN116888601A (zh) * | 2022-01-28 | 2023-10-13 | 华为技术有限公司 | 处理计算任务方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20190122106A1 (en) * | 2017-10-23 | 2019-04-25 | Samsung Electronics Co., Ltd. | Method and apparatus with neural network |
US20190251436A1 (en) * | 2018-02-14 | 2019-08-15 | Samsung Electronics Co., Ltd. | High-speed processing method of neural network and apparatus using the high-speed processing method |
TWI682357B (zh) * | 2017-04-28 | 2020-01-11 | 美商英特爾股份有限公司 | 用於低精度機器學習運算之計算最佳化 |
US20200202199A1 (en) * | 2018-12-19 | 2020-06-25 | Samsung Electronics Co., Ltd. | Neural network processing method and apparatus based on nested bit representation |
US20200234124A1 (en) * | 2019-01-23 | 2020-07-23 | Samsung Electronics Co., Ltd. | Winograd transform convolution operations for neural networks |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160358069A1 (en) | 2015-06-03 | 2016-12-08 | Samsung Electronics Co., Ltd. | Neural network suppression |
US10242311B2 (en) * | 2016-08-11 | 2019-03-26 | Vivante Corporation | Zero coefficient skipping convolution neural network engine |
EP3607495A4 (en) * | 2017-04-07 | 2020-11-25 | Intel Corporation | METHODS AND SYSTEMS USING IMPROVED TRAINING AND LEARNING FOR DEEP NEURAL NETWORKS |
US10776694B2 (en) * | 2017-05-16 | 2020-09-15 | Samsung Electronics Co., Ltd. | Optimized neural network input stride method and apparatus |
US10366322B2 (en) * | 2017-10-06 | 2019-07-30 | DeepCube LTD. | System and method for compact and efficient sparse neural networks |
US11645529B2 (en) * | 2018-05-01 | 2023-05-09 | Hewlett Packard Enterprise Development Lp | Sparsifying neural network models |
KR102178932B1 (ko) * | 2018-12-19 | 2020-11-18 | 고려대학교 산학협력단 | 출력 특징 맵의 0에 대한 연산을 스킵할 수 있는 합성곱 신경망의 연산 장치 및 그 동작 방법 |
CN109857744B (zh) * | 2019-02-13 | 2020-03-20 | 上海燧原智能科技有限公司 | 稀疏张量计算方法、装置、设备及存储介质 |
US10970619B1 (en) * | 2020-08-21 | 2021-04-06 | Moffett Technologies Co., Limited | Method and system for hierarchical weight-sparse convolution processing |
-
2020
- 2020-08-21 US US16/999,455 patent/US10970619B1/en active Active
-
2021
- 2021-04-05 US US17/222,623 patent/US11144823B1/en active Active
- 2021-08-23 KR KR1020237009557A patent/KR102636710B1/ko active IP Right Grant
- 2021-08-23 JP JP2023524504A patent/JP7450815B2/ja active Active
- 2021-08-23 TW TW112115587A patent/TW202331599A/zh unknown
- 2021-08-23 WO PCT/CN2021/114157 patent/WO2022037705A1/en unknown
- 2021-08-23 TW TW110131140A patent/TWI806134B/zh active
- 2021-08-23 CN CN202180028638.4A patent/CN115485695A/zh active Pending
- 2021-08-23 KR KR1020247004695A patent/KR20240023241A/ko active Application Filing
- 2021-08-23 EP EP21857792.2A patent/EP4200759A4/en active Pending
-
2024
- 2024-03-05 JP JP2024033128A patent/JP2024052988A/ja active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI682357B (zh) * | 2017-04-28 | 2020-01-11 | 美商英特爾股份有限公司 | 用於低精度機器學習運算之計算最佳化 |
US20190122106A1 (en) * | 2017-10-23 | 2019-04-25 | Samsung Electronics Co., Ltd. | Method and apparatus with neural network |
US20190251436A1 (en) * | 2018-02-14 | 2019-08-15 | Samsung Electronics Co., Ltd. | High-speed processing method of neural network and apparatus using the high-speed processing method |
US20200202199A1 (en) * | 2018-12-19 | 2020-06-25 | Samsung Electronics Co., Ltd. | Neural network processing method and apparatus based on nested bit representation |
US20200234124A1 (en) * | 2019-01-23 | 2020-07-23 | Samsung Electronics Co., Ltd. | Winograd transform convolution operations for neural networks |
Also Published As
Publication number | Publication date |
---|---|
WO2022037705A1 (en) | 2022-02-24 |
TW202215304A (zh) | 2022-04-16 |
KR102636710B1 (ko) | 2024-02-14 |
US10970619B1 (en) | 2021-04-06 |
US11144823B1 (en) | 2021-10-12 |
CN115485695A (zh) | 2022-12-16 |
JP7450815B2 (ja) | 2024-03-15 |
EP4200759A1 (en) | 2023-06-28 |
EP4200759A4 (en) | 2024-04-03 |
JP2023534317A (ja) | 2023-08-08 |
KR20230078652A (ko) | 2023-06-02 |
JP2024052988A (ja) | 2024-04-12 |
KR20240023241A (ko) | 2024-02-20 |
TW202331599A (zh) | 2023-08-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI806134B (zh) | 用於分層權重稀疏卷積處理之方法和系統及其相關的非暫時性電腦可讀儲存媒體 | |
TWI765763B (zh) | 用於平衡權重稀疏卷積處理之方法及系統 | |
US11816559B2 (en) | Dilated convolution using systolic array | |
JP2023519565A (ja) | 機械学習ジョブ中の改善されたメモリ圧縮転送のためのスパース性に基づく特徴の再順序付け | |
US11501145B1 (en) | Memory operation for systolic array | |
WO2022095984A1 (en) | Method and system for convolution with workload-balanced activation sparsity | |
WO2021118857A1 (en) | Hardware accelerator having reconfigurable instruction set | |
US11636569B1 (en) | Matrix transpose hardware acceleration | |
WO2021248433A1 (en) | Method and system for dual-sparse convolution processing and parallelization | |
US12026607B1 (en) | Memory operation for systolic array | |
TW202416219A (zh) | 支援機器學習加速的記憶體儲存格式 |