TW202328986A - 用於具有工作負載平衡啟動稀疏性之卷積之方法和系統 - Google Patents
用於具有工作負載平衡啟動稀疏性之卷積之方法和系統 Download PDFInfo
- Publication number
- TW202328986A TW202328986A TW112107790A TW112107790A TW202328986A TW 202328986 A TW202328986 A TW 202328986A TW 112107790 A TW112107790 A TW 112107790A TW 112107790 A TW112107790 A TW 112107790A TW 202328986 A TW202328986 A TW 202328986A
- Authority
- TW
- Taiwan
- Prior art keywords
- output values
- tensor
- output
- processors
- weight
- Prior art date
Links
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
- G06N3/082—Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
-
- 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
- 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
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/70—Arrangements for image or video recognition or understanding using pattern recognition or machine learning
- G06V10/82—Arrangements for image or video recognition or understanding using pattern recognition or machine learning using neural networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/24—Classification techniques
- G06F18/241—Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/38—Indexing scheme relating to groups G06F7/38 - G06F7/575
- G06F2207/48—Indexing scheme relating to groups G06F7/48 - G06F7/575
- G06F2207/4802—Special implementations
- G06F2207/4818—Threshold devices
- G06F2207/4824—Neural 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/048—Activation functions
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Evolutionary Computation (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Artificial Intelligence (AREA)
- Data Mining & Analysis (AREA)
- General Health & Medical Sciences (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Mathematical Physics (AREA)
- Mathematical Optimization (AREA)
- Computational Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Neurology (AREA)
- Mathematical Analysis (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Multimedia (AREA)
- Bioinformatics & Computational Biology (AREA)
- Medical Informatics (AREA)
- Databases & Information Systems (AREA)
- Evolutionary Biology (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Complex Calculations (AREA)
- Image Processing (AREA)
- Measurement Of Velocity Or Position Using Acoustic Or Ultrasonic Waves (AREA)
- Image Analysis (AREA)
Abstract
本發明描述用於具有工作負載平衡啟動稀疏性之卷積之包含編碼於電腦儲存媒體上之電腦程式之方法、系統及設備。一種例示性方法包括:將一卷積層處之一輸入張量及一權重張量指定給複數個處理器以基於該輸入張量及該權重張量來並行執行乘法累加(MAC)運算;基於該等MAC運算之結果來獲得複數個輸出值;基於該複數個輸出值來建構輸出值之一或多個庫;針對該等庫之各者,對該庫中之該一或多個輸出值執行一前K排序以獲得K個輸出值;藉由將該各庫中除該所獲得之K個輸出值之外的該一或多個輸出值設定為零來修剪該等庫之各者;及基於該等經修剪庫來建構該卷積層之一輸出張量。
Description
本發明大體上係關於人工智慧,更特定言之,本發明係關於具有工作負載平衡啟動稀疏性之卷積程序。
當前,神經網路(NN)係諸多現代人工智慧(AI)應用(諸如影像及視訊辨識、推薦系統、分類、醫療影像分析及自然語言處理)之基礎。NN用於自自駕車及偵測癌症至玩複雜遊戲之各種使用案例中。一典型NN可包括其中執行密集且因此昂貴(在運算及能量方面)卷積運算之一系列卷積層。一典型卷積層可涉及一或多個啟動(或輸入)張量及一或多個權重張量。
近年來,已開發各種方法以藉由將稀疏性引入至NN中之卷積程序(諸如修剪權重張量以減少非零權重之數目)來提高NN之運算效率。一些既有硬體架構完全忽視啟動稀疏性或呈現未結構化啟動稀疏性,其會在使用一並行處理構架執行卷積運算時引起工作負載失衡。失衡工作負載會直接影響架構之系統可擴縮性及效能。因此,期望構建提供及利用工作負載平衡啟動稀疏性來提高卷積程序之效率之一新穎系統架構。
本說明書之各種實施例可包含用於具有工作負載平衡啟動稀疏性之卷積之系統、方法及非暫時性電腦可讀媒體。
根據一個態樣,用於具有工作負載平衡啟動稀疏性之卷積之方法包括:將一卷積層處之一輸入張量及一權重張量指定給複數個處理器以基於該輸入張量及該權重張量來並行執行乘法累加(MAC)運算;基於該等MAC運算之結果來獲得複數個輸出值;基於該複數個輸出值來建構輸出值之一或多個庫,其中該等庫之各者包括該複數個輸出值之一或多者;針對該等庫之各者,對該庫中之該一或多個輸出值執行一前K排序以獲得K個輸出值,其中K係一正整數;藉由將該各庫中除該所獲得之K個輸出值之外的該一或多個輸出值設定為零來修剪該等庫之各者;及基於該等經修剪庫來建構該卷積層之一輸出張量。
在一些實施例中,將一卷積層處之一輸入張量及一權重張量指定給複數個處理器包括:獲得一神經網路中之該卷積層處之一輸入張量及複數個權重張量;將該輸入張量分割成複數個子張量且將該複數個子張量指定給複數個處理器;及將該複數個權重張量分割成複數個權重群組且將該複數個權重群組指定給該複數個處理器。
在一些實施例中,將該複數個子張量及該複數個權重群組指定給複數個處理器包括:針對該複數個處理器之各者,將該複數個子張量之一或多者及該複數個權重群組之一或多者儲存至該處理器之一內部緩衝器中。
在一些實施例中,將該複數個權重群組指定給該複數個處理器包括:在複數個並行處理循環之各者期間,將該複數個權重群組之一或多者指定給該複數個處理器以使該複數個處理器基於該複數個子張量及該複數個權重群組之該一或多者來並行執行該等MAC運算。
在一些實施例中,該一或多個庫之各者對應於基於該複數個權重群組之一者所產生之輸出值。
在一些實施例中,基於該等MAC運算之結果來獲得複數個輸出值包括:獲得複數個部分和作為由該複數個處理器在複數個並行處理循環之各者期間執行之該等MAC運算之一結果;將該複數個部分和饋送至一加法器樹裝置中以獲得一或多個輸出值;及在該複數個並行處理循環之一或多者內將該一或多個輸出值儲存於一累加緩衝器中以獲得該複數個輸出值。
在一些實施例中,對該庫中之該等輸出值執行一前K排序以獲得K個輸出值包括:對該庫中之該等輸出值之量值執行一前K排序以獲得該K個輸出值。
在一些實施例中,該等庫之各者包括大於0之一高度維度、大於0之一寬度維度及大於1之一通道維度。
在一些實施例中,該方法可進一步包括:將該等庫之各者中之該K個非零輸出值分別表示為K個多維向量,其中該K個多維向量之各者包括該庫內之一非零輸出值及該非零輸出值之一對應通道維度識別符。
在一些實施例中,基於該等經修剪庫來建構該卷積層之該輸出張量包括:組譯該等庫之各者之該K個多維向量以形成該輸出張量。
在一些實施例中,該等經修剪庫之各者與一庫識別符相關聯,且基於該等經修剪庫來建構該卷積層之該輸出張量包括:基於該對應庫識別符來組譯該等庫之各者之該K個多維向量以形成該輸出張量。
在一些實施例中,該輸出張量係一稀疏張量。
根據另一態樣,提供一種用於具有工作負載平衡啟動稀疏性之卷積之系統。該系統可包括一或多個處理器及一或多個非暫時性電腦可讀記憶體,該一或多個非暫時性電腦可讀記憶體耦合至該一或多個處理器且組態有可由該一或多個處理器執行以引起該系統執行包括以下各者之操作之指令:將一卷積層處之一輸入張量及一權重張量指定給複數個處理器以基於該輸入張量及該權重張量來並行執行乘法累加(MAC)運算;基於該等MAC運算之結果來獲得複數個輸出值;基於該複數個輸出值來建構輸出值之一或多個庫,其中該等庫之各者包括該複數個輸出值之一或多者;針對該等庫之各者,對該庫中之該一或多個輸出值執行一前K排序以獲得K個輸出值,其中K係一正整數;藉由將該各庫中除該所獲得之K個輸出值之外的該一或多個輸出值設定為零來修剪該等庫之各者;及基於該等經修剪庫來建構該卷積層之一輸出張量。
根據又一態樣,提供一種用於具有工作負載平衡啟動稀疏性之卷積之非暫時性電腦可讀儲存媒體。該媒體可組態有可由一或多個處理器執行以引起該一或多個處理器執行包括以下各者之操作之指令:將一卷積層處之一輸入張量及一權重張量指定給複數個處理器以基於該輸入張量及該權重張量來並行執行乘法累加(MAC)運算;基於該等MAC運算之結果來獲得複數個輸出值;基於該複數個輸出值來建構輸出值之一或多個庫,其中該等庫之各者包括該複數個輸出值之一或多者;針對該等庫之各者,對該庫中之該一或多個輸出值執行一前K排序以獲得K個輸出值,其中K係一正整數;藉由將該各庫中除該所獲得之K個輸出值之外的該一或多個輸出值設定為零來修剪該等庫之各者;及基於該等經修剪庫來建構該卷積層之一輸出張量。
將在考量參考附圖之以下描述及隨附申請專利範圍(所有其等構成本說明書之一部分,其中相同元件符號標示各種圖中之對應部分)之後更明白本文中所揭示之系統、方法及非暫時性電腦可讀媒體之此等及其他特徵及結構之相關元件及部分組合之操作方法及功能及製造之經濟性。然而,應明確瞭解,圖式僅供說明及描述且不意欲界定本發明之限制。
本文中所描述之實施例提供用於神經網路中具有工作負載平衡啟動稀疏性之卷積之方法、系統、設備。一卷積程序可係指用於自輸入資料提取特徵之一基本但運算昂貴操作。卷積程序通常發生於一神經網路內之一卷積層處。一卷積層之輸入資料可包含自一影像或一音訊波導出之一特徵圖或自一先前層接收之一啟動張量,且可指稱一輸入張量。卷積層之輸出可指稱一輸出張量。在一些實施例中,輸入張量及輸出張量兩者可指稱啟動。輸入張量可包括特徵圖之多個通道。例如,一RGB影像可表示為具有三個通道(紅通道、綠通道及藍通道)之一輸入張量,其中各通道包括一特徵圖(例如,具有相同於原始RGB影像之大小但僅由紅色、綠色或藍色之一者製成之一灰階影像)。為自一輸入張量提取特徵,可依一卷積(例如滑動或移動)方式將一或多個特徵提取器(亦稱為權重張量或濾器)應用於輸入張量。可在各卷積步驟期間執行特徵偵測器(權重張量或濾器)與輸入張量之間的乘法累加(MAC)運算。隨後可組譯自卷積步驟產生之輸出以形成卷積層之輸出張量。輸出張量可變成神經網路中下一層之輸入張量。在一些情況中,可在一個卷積層中處理多個輸入張量。
在一卷積程序期間,可藉由引入大量零來修剪或稀疏化輸入張量及/或權重張量以降低運算成本且提高推斷速度。例如,可將輸入張量中50%以上之值設定為零。因為通常在一並行處理構架(處理器、核心或另一類型之處理實體之一叢集)中實施一卷積程序,所以輸入張量之未結構化或不平衡修剪會引起處理實體(PE)之間的工作負載失衡,其可導致不佳系統可擴縮性及效能。因此,修剪輸入張量之一重要目標可包含在並行卷積期間平衡處理單元之間的工作負載。
在一些實施例中,首先可根據可用於參與卷積程序之PE之數目來將輸入張量分割成複數個子張量。可在不換出PE之局部記憶體/緩衝器之情況下在多個卷積程序(對應於一NN中之多個卷積層)中將子張量之各者指定給複數個PE之一者且子張量之各者保持於其內。在各卷積程序之後,可更新作為一輸入指定給PE之子張量且使其演進成一輸出,輸出可用作下一卷積程序之輸入。在一些實施例中,可為了記憶體管理而將經更新子張量暫時換出PE且在下一反覆中將其換回。
在一些實施例中,可將權重張量之各者分割成複數個權重群組,其等之各者可儲存於複數個PE之一者中以執行與指定子張量(輸入張量之一部分)之局部MAC運算。在一些實施例中,複數個權重群組可在複數個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繪示繪示根據各種實施例之一神經網路層之一例示圖300及權重修剪及啟動修剪之一例示圖340。圖式300展示一神經網路層(具體言之,一卷積層)之一抽象圖。圖3中之卷積層包含:(1)表示為x
1、x
2及x
3之複數個輸入啟動312 (例如輸入張量中之輸入值),其等可係指一或多個輸入張量之輸入值;(2)表示為W
1,1之一或多個權重314,其等可係指濾器/權重張量/特徵提取器之權重;(3)視情況一或多個偏壓316,其等用於調諧(與權重314一起)啟動312;(3)一啟動函數318,其用於判定是否應啟動一神經元;及(4)表示為y
1、y
2及y
3之複數個輸出啟動320 (例如輸出張量中之輸出值)。圖式300僅展示一個權重314用於說明且可包含更多權重。例示性啟動函數318可包含S型函數、雙曲線正切函數(TanH)、ReLU或另一適合啟動函數。
圖3中之圖式340繪示具有權重修剪342及啟動修剪344之一例示性神經網路。權重修剪342及啟動修剪344可將稀疏性引入至卷積程序中以減少能量且實現較高處理量。如圖中所展示,權重修剪342可減少濾器中非零權重之數目,使得在輸入啟動(例如x1、x2、x3)與權重之間需要執行較少卷積運算。在一些實施例中,啟動修剪344可涉及將掩碼(例如t1、t2、t3)應用於輸出啟動(例如y
1、y
2、y
3)。掩碼可將一些輸出啟動設定為零(例如撤銷啟動輸出)。在圖3中,掩碼t2將輸出啟動y
2設定為零,而掩碼t1及t3不改變對應輸出啟動y
1及y
3。依此方式,所得輸出啟動經修剪以含有一些零值,其可有助於降低下一層之運算成本。
然而,圖3中所繪示之基於掩碼之方法無法平衡(例如均勻分佈)非零輸出啟動。因為卷積程序通常在一並行處理架構中使用多個處理器執行,所以失衡輸出啟動會導致處理器之間的工作負載失衡且限制架構之可擴縮性及處理量。在以下描述中,使用說明性實施例來描述一工作負載平衡啟動修剪方法及架構。
圖4繪示根據各種實施例之用於工作負載平衡啟動修剪之一例示圖。例示性神經網路層400可參考圖3中例示性神經網路層300或340之另一視圖。在例示中,神經網路層400可開始於一輸入張量X與複數個濾器/權重張量之間的一卷積程序且可視情況涉及用於在產生輸出啟動之前調諧卷積結果之一偏壓層。採用一個濾器W
1作為一實例,輸入張量X與濾器W
1(及對應偏壓張量B1)之間的卷積程序可產生一輸出張量Y
1之一部分。
在一些實施例中,輸出張量Y
1之部分可為表示為表410之一密集啟動矩陣。矩陣410「密集」,因為其可包含大量非零值。在一些實施例中,密集矩陣410可藉由建構輸出值之一或多個庫來修剪成一平衡稀疏啟動矩陣420,其中各庫包含相同數目個非零輸出值。如圖4中所展示,輸出值之兩個庫可基於密集矩陣410之各列建構。密集矩陣410之各列可包含八個非零輸出值,且兩個庫可均勻劃分列,使得各庫包含四個非零輸出值。
在一些實施例中,為依一平衡方式修剪啟動,各庫中之相同數目個輸出值可保持為非零,且其他輸出值可修剪為零。在一些實施例中,各庫中保持為非零之輸出值可由一前K排序運算判定。各庫中之前K排序運算可選擇具有最大量值之K個非零值保持其值,且其他非零值可設定為零。如圖4中所展示,一第一庫可建構有密集矩陣410中之左上四個非零值(0.2、0.1、-0.4及0.8)。第一庫中之一前2排序(例如,K=2)可偵測具有最大量值(例如絕對值)之兩個非零值,其等在此情況中係-0.4及0.8。隨後,第一庫中之-0.4及0.8保持不變,而其內之其他值0.2及0.1修剪為零。相同程序可在其他庫中並行執行以產生平衡稀疏啟動矩陣420。
上述啟動程序可依各種方式客製化以達成所要結果。例如,K值可在較多非零啟動係較佳時組態為一大數目或在一較大稀疏性係較佳時組態為一小數目。作為另一實例,庫之大小可經組態以判定非零啟動如何分佈於輸出張量中。
為清楚描述,層400之輸出啟動可表示為一H*W*C輸出張量430,其中H係高度維度,W係寬度維度,且C係通道維度。在一些實施例中,輸出張量430之各維度可分割成群組。例如,輸出張量430之H維度可分成三個群組,其中各群組表示為Hg (高度群組)。類似地,W維度可分成三個Wg (寬度群組),且C維度可分成三個Cg (通道群組)。在圖4中,假定Y
1啟動對應於輸出張量之最右平面432,因此,最右平面432可表示為修剪之前的密集啟動矩陣410或修剪之後的平衡稀疏啟動矩陣420。圖4展示庫之一個例示性組態,其中各Hg*Wg*Cg子張量形成一庫。例如,平面432之陰影Hg*Wg*Cg部分可指稱一庫,其可表示為平衡稀疏矩陣420之左上庫。取決於實施方案,庫可藉由將Hg、Wg及Cg組態為不同值來具有不同形狀。在一些實施例中,Cg可組態為大於1之一整數(至少2),Hg可組態為大於0之一整數,且Wg可組態為大於0之一整數。
圖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可處置一單位量之卷積運算。
在一些實施例中,SPU 562之各者可進一步包括用於修剪由其內之複數個PE 580執行之卷積運算之輸出值之一模組。例如,圖5中之「密集2稀疏性」模組564可使用以下方法來修剪來自複數個PE 580之輸出值:基於複數個輸出值(由複數個PE 580產生)來建構輸出值之一或多個庫,其中各庫包括複數個輸出值之一或多者;針對各庫,對庫中之一或多個輸出值執行一前K排序以獲得K個非零輸出值,其中K係大於0之一正整數;及藉由將庫中除所獲得之K個非零輸出值之外的一或多個輸出值設定為零來修剪各庫。在一些實施例中,一個K可對應於一神經網路中之一個層。即,神經網路中之不同層可具有不同K值。層之K值可透過機器學習來學習。
在一些實施例中,一或多個庫之大小相等(例如,各庫含有相同數目個輸出值)且可在修剪之後含有相同數目個非零輸出值。各庫內之非零輸出值之位置可隨機,但各庫內之非零輸出值之總數(例如大於1之一整數K)可相同。
圖6A繪示根據各種實施例之用於產生具有工作負載平衡啟動稀疏性之一輸出張量之一例示性系統架構600。例示性系統架構600可包含經組態以並行實施卷積運算之複數個PE 630、經組態以對由複數個PE 630產生之輸出(例如部分和)執行加法之一加法器樹640、經組態以累加由加法器樹640產生之輸出(例如將組譯成一輸出張量之輸出值)之一累加器緩衝器650及經組態以修剪由累加器緩衝器650累加之輸出之一前K排序裝置660。由前K排序裝置660執行之修剪程序可產生具有依一平衡方式分佈之非零啟動之稀疏輸出啟動680。在一些實施例中,前K排序裝置660可對應於圖5中之「密集2稀疏性」模組564。在一些實施例中,加法器樹640可係指一裝置之一部分或一獨立裝置。
以下描述使用一卷積層處之一例示性卷積程序來展現如何產生卷積層之具有工作負載平衡啟動稀疏性之一輸出張量。在一些實施例中,例示性卷積程序可開始於將卷積層處之一輸入張量610及一或多個權重張量620指定給複數個處理器(PE 630)以基於輸入張量610及權重張量620並行執行乘法累加(MAC)運算。
在一些實施例中,輸入張量610可分割成複數個子張量且指定給複數個PE 630,且權重張量620可分割成複數個權重群組且類似地指定給複數個PE 630。在一些實施例中,「指定」子張量及權重群組可係指將其等儲存至PE 630之內部緩衝器中。
在一些實施例中,在接收指定子張量及權重群組之後,複數個PE 630可並行執行MAC運算以獲得複數個部分和。此等部分和可饋送至加法器樹640中以獲得一或多個輸出值,其可經累加且儲存於累加器緩衝器650中。當累加器緩衝器650中之輸出值足以形成一全庫時,輸出值可饋送至前K排序裝置660中用於修剪。在一些實施例中,庫之大小係預定的。庫之例示性組態可參考圖4中之描述。在一些實施例中,累加器緩衝器650中之一些輸出值可回饋至加法器樹640以與由PE 630新產生之部分和相加。在一些實施例中,當將輸出值之一全庫饋送至前K排序裝置660中時,一控制器或排程器(例如圖5中之排程器570)可將庫之對應指數670發送至前K排序裝置660。當將輸出值之一個以上庫饋送至前K排序裝置660中時,控制器或排程器可將一庫指數陣列670發送至前K排序裝置660。
取決於輸入張量610/權重張量620之分割粒度及庫之大小,累加器緩衝器650可依一不同速率產生輸出值之全庫。在一些實施例中,複數個PE 630需要在複數個循環(亦稱為並行處理循環)內對累加器緩衝器650執行並行卷積程序以累加輸出值之一個全庫。在一些實施例中,累加器緩衝器650可在各並行處理循環期間基於由複數個PE 630產生之部分和來累加輸出值之一或多個全庫。
為簡化分割粒度與全庫之產生速率之間的關係之描述,假定僅存在一個輸入張量且庫大小表示為K。例如,若PE在各並行處理循環期間並行處置一個權重張量及對應輸入值,則可在每K個並行處理循環內累加輸出值之一個全庫。作為另一實例,若PE在各並行處理循環期間並行處置K個權重張量及對應輸入值,則可在每一並行處理循環內產生輸出值之一個全庫。作為又一實例,若PE在各並行處理循環期間並行處置N*K個權重張量及對應輸入值,則可在各並行處理循環內產生輸出值之N個全庫。
在一些實施例中,前K排序裝置660對庫中之輸出值之量值執行一前K排序邏輯以獲得具有最大量值之K個輸出值。前K排序邏輯可由一基於硬體之雙調排序器結合以下軟體排序演算法之至少一者實施:一堆排序演算法、一合併排序演算法、一快速排序演算法、另一適合排序演算法。在一些實施例中,K輸出值可保持不變(例如,保持為原始非零值),且其他輸出值可修剪為零。假定各庫具有N個輸出值,上述修剪程序可使各庫具有最大量值之K個非零值及(N-K)個零值。藉由將稀疏性攝取至庫中且依一平衡方式分佈非零輸出值(非零啟動),自庫組譯之輸出啟動可提供下一卷積層之具有工作負載平衡啟動稀疏性之一輸入張量。
在一些實施例中,經修剪庫可經組譯以建構卷積層之輸出張量。輸出張量既稀疏又平衡(例如,非零啟動依一平衡方式分佈於庫之間)。此將藉由允許複數個PE均勻分佈工作負載來有益於下一卷積層處之並行卷積處理。
圖6B繪示根據各種實施例之用於產生具有工作負載平衡啟動稀疏性之一輸出張量之一例示性流程圖。圖6中之流程圖展現一個並行處理循環期間一卷積層處之一卷積程序之一簡化版本。為了簡單及清楚,假定一H*W*C輸入張量610已分割成四個Hg*Wg*Cg輸入子張量(例如圖6中輸入張量610中之陰影區域),一權重群組620包含共用相同於輸入子張量之維度之四個權重張量,且存在可用於並行執行MAC運算之四個PE 630。此等假定可取決於實際使用情況而放寬或改變,且可因此實施工作流程所需之調整。
在一些實施例中,在一個並行處理循環期間,PE 630之各者可處置一個輸入子張量及權重群組620中之一個權重張量。在此,「處置」可係指執行輸入子張量中之輸入值與權重張量中之權重之間的MAC運算。PE 630可並行執行其局部MAC運算。在一些實施例中,PE 630可在MAC運算之後產生複數個部分和。此等部分和可饋送至一加法器樹裝置632中以執行所需加法,諸如使多個部分和加在一起以獲得一輸出值。在一些實施例中,由加法器樹裝置632產生之輸出值可饋送至一累加器緩衝器634中用於累加。累加器緩衝器634可保持累加輸出值以產生輸出值之全庫640。在一些實施例中,庫之大小可預定。
在一些實施例中,系統架構、輸入/權重張量分割及工作負載分佈可依一方式組態以提高產生輸出值之全庫之效率。在圖6所展示之實例中,各PE 630處置一輸入子張量及一權重張量之一個組合,其在一並行處理循環期間產生一個輸出值;且在並行處理循環期間自四個PE 630產生之四個輸出值可形成一個庫640。依此方式,圖6中之例示性設置將在各並行處理循環之後產生輸出值之一個庫640。在一些實施例中,權重張量及/或輸入子張量可在複數個並行處理循環內在PE 630之間輪換,直至輸入張量610與權重群組620之間的卷積程序完成。在複數個並行處理循環期間由PE 630產生之複數個庫可經修剪及組譯以形成卷積層之輸出張量。
在一些實施例中,輸出值之庫640可饋送至一前K排序組件642用於修剪。前K排序組件642可對庫640中之輸出值執行一前K排序運算以識別具有最大量值(例如絕對值)之K個輸出值。取決於實施方案,前K排序組件642、加法器樹632及累加器緩衝器634可實施為單獨裝置或一統一裝置之部分。此等K個輸出值可保持其值,且庫640中之其他輸出值可修剪為零。例如,自圖6中之累加器緩衝器634產生之庫640可含有四個非零輸出值(陰影)且可在執行一前2排序之後修剪成一稀疏庫650。前2排序可自具有最大量值之四個輸出值識別兩個且將另兩個值設定為零。
在一些實施例中,在使用前K排序運算將庫640修剪成稀疏庫650之後,所得/稀疏庫650內之K個非零值無需均勻分佈於其內。然而,因為各稀疏庫(如650)含有相同數目個非零輸出值(啟動),所以基於所有稀疏庫組譯之輸出張量將平衡且稀疏。當稀疏輸出張量變成下一卷積層之輸入張量時,複數個PE可被指定平衡工作負載(例如,各PE在各並行處理循環期間接收相同數目個非零輸入值)以並行執行卷積。
圖7繪示根據各種實施例之用於具有工作負載平衡啟動稀疏性之卷積之一實例性方法。方法700可由用於最佳化資源分配之一裝置、設備或系統執行。方法700可由圖1至圖6繪示之環境或系統之一或多個模組/組件(諸如圖5中之硬體加速器500)執行。下文將呈現之方法700之操作意在說明。取決於實施方案,方法700可包含依各種順序或並行執行之額外、更少或替代步驟。
區塊710包含將一卷積層處之一輸入張量及一權重張量指定給複數個處理器以基於輸入張量及權重張量來並行執行乘法累加(MAC)運算。在一些實施例中,將一卷積層處之一輸入張量及一權重張量指定給複數個處理器包括:獲得一神經網路中卷積層處之一輸入張量及複數個權重張量;將輸入張量分割成複數個子張量且將複數個子張量指定給複數個處理器;及將複數個權重張量分割成複數個權重群組且將複數個權重群組指定給複數個處理器。在一些實施例中,將複數個子張量及複數個權重群組指定給複數個處理器包括:針對複數個處理器之各者,將複數個子張量之一或多者及複數個權重群組之一或多者儲存至處理器之一內部緩衝器中。
在一些實施例中,將複數個權重群組指定給複數個處理器包括:在複數個並行處理循環之各者期間,將複數個權重群組之一或多者指定給複數個處理器以使複數個處理器基於複數個子張量及複數個權重群組之一或多者來並行執行MAC運算。在一些實施例中,一或多個庫之各者對應於基於複數個權重群組之一者所產生之輸出值。
區塊720包含基於MAC運算之結果來獲得複數個輸出值。在一些實施例中,基於MAC運算之結果來獲得複數個輸出值包括:獲得複數個部分和作為由複數個處理器在複數個並行處理循環之各者期間執行之MAC運算之一結果;將複數個部分和饋送至一加法器樹裝置中以獲得一或多個輸出值;及在複數個並行處理循環之一或多者內將一或多個輸出值儲存於一累加緩衝器中以獲得複數個輸出值。
區塊730包含基於複數個輸出值來建構輸出值之一或多個庫,其中各庫包括複數個輸出值之一或多者。在一些實施例中,各庫包括大於0之一高度維度、大於0之一寬度維度及大於1之一通道維度。在一些實施例中,方法可進一步包括:將各庫中之K個非零輸出值分別表示為K個多維向量,其中K個多維向量之各者包括庫內之一非零輸出值及非零輸出值之一對應通道維度識別符。在一些實施例中,基於經修剪庫來建構卷積層之輸出張量包括:組譯各庫之K個多維向量以形成輸出張量。
區塊740包含針對各庫,對庫中之一或多個輸出值執行一前K排序以獲得K個輸出值,其中K係一正整數。在一些實施例中,對庫中之輸出值執行一前K排序以獲得K個輸出值包括:對庫中之輸出值之量值執行一前K排序以獲得K個輸出值。
區塊750包括藉由將各庫中除所獲得之K個輸出值之外的一或多個輸出值設定為零來修剪各庫。
區塊760包含基於經修剪庫來建構卷積層之一輸出張量。在一些實施例中,經修剪庫之各者與一庫識別符相關聯,且基於經修剪庫來建構卷積層之輸出張量包括:基於對應庫識別符來組譯各庫之K個多維向量以形成輸出張量。在一些實施例中,輸出張量係一稀疏張量。
圖8繪示其中可實施本文中所描述之任何實施例之一實例性運算裝置。運算裝置可用於實施圖1至圖7中所展示之系統及方法之一或多個組件。運算裝置800可包括一匯流排802或用於傳送資訊之其他通信機構及與匯流排802耦合用於處理資訊之一或多個硬體處理器804。(若干)硬體處理器804可為(例如)一或多個通用微處理器。
運算裝置800亦可包含耦合至匯流排802用於儲存資訊及由(若干)處理器804執行之指令之一主記憶體807,諸如一隨機存取記憶體(RAM)、快取及/或其他動態儲存裝置。主記憶體807亦可用於在由(若干)處理器804執行之指令之執行期間儲存暫時變數或其他中間資訊。此等指令在儲存於(若干)處理器804可存取之儲存媒體中時可使運算裝置800變成經客製化以執行指令中所指定之操作之一專用機。主記憶體807可包含非揮發性媒體及/或揮發性媒體。非揮發性媒體可包含(例如)光碟或磁碟。揮發性媒體可包含動態記憶體。媒體之常見形式可包含(例如)一軟碟、一撓性碟、硬碟、固態硬碟、磁帶或任何其他磁性資料儲存媒體、一CD-ROM、任何其他光學資料儲存媒體、具有孔圖案之任何實體媒體、一RAM、一DRAM、一PROM及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、C、A及B二者、A及C二者、B及C二者或A、B及C三者」。此外,除非內文另有明確指示或另有指示,否則「及」係結合及分別的。因此,在本文中,除非內文另有明確指示或另有指示,否則「A及B」意謂「A及B,結合地或分別地」。此外,可提供本文中所描述之資源、操作或結構之複數例項作為一單一例項。另外,各種資源、操作、引擎及資料儲存器之間的邊界係略微任意的,且在特定說明性組態之一內文中繪示特定操作。其他功能分配可設想且可落於本發明之各種實施例之一範疇內。一般而言,在實例性組態中呈現為單獨資源之結構及功能可實施為一組合結構或資源。類似地,呈現為一單一資源之結構及功能可實施為單獨資源。此等及其他變動、修改、添加及改良落於由隨附申請專利範圍表示之本發明之實施例之一範疇內。因此,本說明書及圖式應被視為意在說明而非限制。
術語「包含」或「包括」用於指示存在隨後宣告之特徵,但不排除添加其他特徵。除非另有具體說明或在所使用之內文中依其他方式理解,否則諸如「可」之條件語言一般意欲傳達特定實施例包含而其他實施例不包含特定特徵、元件及/或步驟。因此,此條件語言一般不意欲隱含一或多個實施例依任何方式需要特徵、元件及/或步驟或一或多個實施例需要包含用於在具有或不具有使用者輸入或提示之情況下決定此等特徵、元件及/或步驟是否包含於或執行於任何特定實施例中之邏輯。
儘管已參考特定實例性實施例來描述本發明之一概觀,但可在不背離本發明之實施例之較廣範疇之情況下對此等實施例作出各種修改及改變。若事實上揭示一個以上實施例,則本發明之此等實施例在本文中可個別或統一稱為術語「發明」,此僅為方便起見而非意欲將本申請案之範疇自動限制於任何單一揭示內容或概念。
本文中所繪示之實施例經足夠詳細地描述以使熟習技術者能夠實踐所揭示之教示。其他實施例可經使用且自其導出,使得可在不背離本發明之範疇之情況下作出結構及邏輯替代及改變。因此,[實施方式]不意在限制,且各種實施例之範疇僅由隨附申請專利範圍及此申請專利範圍授權之等效物之全範圍界定。
100:神經網路
110:輸入影像
120:第一卷積層
130:第一池化層
140:第二卷積層
150:第二池化層
160:平坦化層
170:完全連接(FC)層
220:卷積程序
222:輸入張量
223:第一深度方向切片
224:濾器
225:輸出張量
228:點積
260:卷積程序
262:輸入張量
264:濾器
265:濾器
268:輸出張量
300:神經網路層
312:輸入啟動
314:權重
316:偏壓
318:啟動函數
320:輸出啟動
340:神經網路層
342:權重修剪
344:啟動修剪
400:神經網路層
410:表/密集啟動矩陣
420:平衡稀疏啟動矩陣
430:輸出張量
432:最右平面
500:加速器
510:主機CPU
512:周邊組件互連快速(PCIe)實體層(PHY)控制器
520:晶片外雙倍資料速率(DDR)記憶體
530:DDR介面
540:直接記憶體存取(DMA)控制器
550:全域緩衝器
552:輸入緩衝器
554:權重緩衝器
556:輸出緩衝器
560:稀疏處理單元(SPU)陣列
562:SPU
564:「密集2稀疏性」模組
570:排程器
580:處理實體(PE)
600:系統架構
610:輸入張量
620:權重張量/權重群組
630:PE
632:加法器樹裝置
634:累加器緩衝器
640:加法器樹/庫
642:前K排序組件
650:累加器緩衝器/稀疏庫
660:前K排序裝置
670:庫指數陣列
680:稀疏輸出啟動
700:方法
710:區塊
720:區塊
730:區塊
740:區塊
750:區塊
760:區塊
800:運算裝置
802:匯流排
804:處理器
807:主記憶體
809:儲存裝置
810:通信介面
B
1:偏壓張量
C:通道之數目
Cg:通道群組
H:高度
Hg:高度群組
R:高度
S:寬度
W:寬度
W
1:濾器
Wg:寬度群組
X:輸入張量
Y
1:輸出啟動/輸出張量
圖1繪示根據各種實施例之一例示性卷積神經網路(CNN)。
圖2繪示根據各種實施例之一例示性卷積程序。
圖3繪示根據各種實施例之一神經網路層之一例示圖及權重修剪及啟動修剪之一例示圖。
圖4繪示根據各種實施例之用於工作負載平衡啟動修剪之一例示圖。
圖5繪示根據各種實施例之用於具有工作負載平衡啟動稀疏性之卷積之一例示性系統圖。
圖6A繪示根據各種實施例之用於具有工作負載平衡啟動稀疏性之卷積之一例示性系統架構。
圖6B繪示根據各種實施例之用於產生具有工作負載平衡啟動稀疏性之一輸出張量之一例示性流程圖。
圖7繪示根據各種實施例之用於具有工作負載平衡啟動稀疏性之卷積之一實例性方法。
圖8繪示其中可實施本文中所描述之任何實施例之一實例性電腦系統。
100:神經網路
110:輸入影像
120:第一卷積層
130:第一池化層
140:第二卷積層
150:第二池化層
160:平坦化層
170:完全連接(FC)層
Claims (17)
- 一種電腦實施方法,其包括: 將一卷積層處之一輸入張量及一權重張量指定給複數個處理器以基於該輸入張量及該權重張量來並行執行乘法累加(MAC)運算; 基於該等MAC運算之結果來獲得複數個輸出值; 基於該複數個輸出值來建構輸出值之一或多個庫,其中該等庫之各者包括該複數個輸出值之一或多者; 針對該等庫之各者,對該庫中之該一或多個輸出值執行一前K排序以獲得K個輸出值,其中K係一正整數; 藉由將該各庫中除該所獲得之K個輸出值之外的該一或多個輸出值設定為零來修剪該等庫之各者;及 基於該等經修剪庫來建構該卷積層之一輸出張量, 其中該建構包括: 將該等庫之各者中之該K個非零輸出值分別表示為K個多維向量,其中該K個多維向量之各者包括該庫內之一非零輸出值及該非零輸出值之一對應通道維度識別符,及 組譯該等庫之各者之該K個多維向量以形成該輸出張量。
- 如請求項1之方法,其中該將一卷積層處之一輸入張量及一權重張量指定給複數個處理器包括: 獲得一神經網路中該卷積層處之一輸入張量及複數個權重張量; 將該輸入張量分割成複數個子張量且將該複數個子張量指定給複數個處理器;及 將該複數個權重張量分割成複數個權重群組且將該複數個權重群組指定給該複數個處理器, 其中將該複數個子張量及該複數個權重群組指定給複數個處理器包括: 針對該複數個處理器之各者,將該複數個子張量之一或多者及該複數個權重群組之一或多者儲存至該處理器之一內部緩衝器中。
- 如請求項2之方法,其中將該複數個權重群組指定給該複數個處理器包括: 在複數個並行處理循環之各者期間,將該複數個權重群組之一或多者指定給該複數個處理器以使該複數個處理器基於該複數個子張量及該複數個權重群組之該一或多者來並行執行該等MAC運算。
- 如請求項3之方法,其中該一或多個庫之各者對應於基於該複數個權重群組之一者所產生之輸出值。
- 如請求項1之方法,其中基於該等MAC運算之結果來獲得複數個輸出值包括: 獲得複數個部分和作為由該複數個處理器在複數個並行處理循環之各者期間執行之該等MAC運算之一結果; 將該複數個部分和饋送至一加法器樹裝置中以獲得一或多個輸出值;及 在該複數個並行處理循環之一或多者內將該一或多個輸出值儲存於一累加緩衝器中以獲得該複數個輸出值。
- 如請求項1之方法,其中對該庫中之該等輸出值執行一前K排序以獲得K個輸出值包括: 對該庫中之該等輸出值之量值執行一前K排序以獲得該K個輸出值。
- 如請求項1之方法,其中該等庫之各者包括: 一高度維度,其大於0; 一寬度維度,其大於0;及 一通道維度,其大於1。
- 如請求項1之方法,其中該等經修剪庫之各者與一庫識別符相關聯,且 基於該等經修剪庫來建構該卷積層之該輸出張量進一步包括: 基於該對應庫識別符來組譯該等庫之各者之該K個多維向量以形成該輸出張量。
- 如請求項1之方法,其中該輸出張量係一稀疏張量。
- 一種電腦系統,其包括一或多個處理器及一或多個非暫時性電腦可讀記憶體,該一或多個非暫時性電腦可讀記憶體耦合至該一或多個處理器且組態有可由該一或多個處理器執行以引起該系統執行包括以下各者之操作之指令: 將一卷積層處之一輸入張量及一權重張量指定給複數個處理器以基於該輸入張量及該權重張量來並行執行乘法累加(MAC)運算; 基於該等MAC運算之結果來獲得複數個輸出值; 基於該複數個輸出值來建構輸出值之一或多個庫,其中該等庫之各者包括該複數個輸出值之一或多者; 針對該等庫之各者,對該庫中之該一或多個輸出值執行一前K排序以獲得K個輸出值,其中K係一正整數; 藉由將該各庫中除該所獲得之K個輸出值之外的該一或多個輸出值設定為零來修剪該等庫之各者;及 基於該等經修剪庫來建構該卷積層之一輸出張量, 其中該建構包括: 將該等庫之各者中之該K個非零輸出值分別表示為K個多維向量,其中該K個多維向量之各者包括該庫內之一非零輸出值及該非零輸出值之一對應通道維度識別符,及 組譯該等庫之各者之該K個多維向量以形成該輸出張量。
- 如請求項10之系統,其中該將一卷積層處之一輸入張量及一權重張量指定給複數個處理器包括: 獲得一神經網路中該卷積層處之一輸入張量及複數個權重張量; 將該輸入張量分割成複數個子張量且將該複數個子張量指定給複數個處理器;及 將該複數個權重張量分割成複數個權重群組且將該複數個權重群組指定給該複數個處理器。
- 如請求項10之系統,其中基於該等MAC運算之結果來獲得複數個輸出值包括: 獲得複數個部分和作為由該複數個處理器在複數個並行處理循環之各者期間執行之該等MAC運算之一結果; 將該複數個部分和饋送至一加法器樹裝置中以獲得一或多個輸出值;及 在該複數個並行處理循環之一或多者內將該一或多個輸出值儲存於一累加緩衝器中以獲得該複數個輸出值。
- 如請求項10之系統,其中對該庫中之該等輸出值執行一前K排序以獲得K個輸出值包括: 對該庫中之該等輸出值之量值執行一前K排序以獲得該K個輸出值。
- 一種非暫時性電腦可讀儲存媒體,其組態有可由一或多個處理器執行以引起該一或多個處理器執行包括以下各者之操作之指令: 將一卷積層處之一輸入張量及一權重張量指定給複數個處理器以基於該輸入張量及該權重張量來並行執行乘法累加(MAC)運算; 基於該等MAC運算之結果來獲得複數個輸出值; 基於該複數個輸出值來建構輸出值之一或多個庫,其中該等庫之各者包括該複數個輸出值之一或多者; 針對該等庫之各者,對該庫中之該一或多個輸出值執行一前K排序以獲得K個輸出值,其中K係一正整數; 藉由將該各庫中除該所獲得之K個輸出值之外的該一或多個輸出值設定為零來修剪該等庫之各者;及 基於該等經修剪庫來建構該卷積層之一輸出張量, 其中該建構包括: 將該等庫之各者中之該K個非零輸出值分別表示為K個多維向量,其中該K個多維向量之各者包括該庫內之一非零輸出值及該非零輸出值之一對應通道維度識別符,及 組譯該等庫之各者之該K個多維向量以形成該輸出張量。
- 如請求項14之非暫時性電腦可讀儲存媒體,其中基於該等MAC運算之結果來獲得複數個輸出值包括: 獲得複數個部分和作為由該複數個處理器在複數個並行處理循環之各者期間執行之該等MAC運算之一結果; 將該複數個部分和饋送至一加法器樹裝置中以獲得一或多個輸出值;及 在該複數個並行處理循環之一或多者內將該一或多個輸出值儲存於一累加緩衝器中以獲得該複數個輸出值。
- 如請求項14之非暫時性電腦可讀儲存媒體,其中對該庫中之該等輸出值執行一前K排序以獲得K個輸出值包括: 對該庫中之該等輸出值之量值執行一前K排序以獲得該K個輸出值。
- 如請求項14之非暫時性電腦可讀儲存媒體,其中該將一卷積層處之一輸入張量及一權重張量指定給複數個處理器包括: 獲得一神經網路中該卷積層處之一輸入張量及複數個權重張量; 將該輸入張量分割成複數個子張量且將該複數個子張量指定給複數個處理器;及 將該複數個權重張量分割成複數個權重群組且將該複數個權重群組指定給該複數個處理器。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/091,216 US20220147826A1 (en) | 2020-11-06 | 2020-11-06 | Method and system for convolution with workload-balanced activation sparsity |
US17/091,216 | 2020-11-06 |
Publications (1)
Publication Number | Publication Date |
---|---|
TW202328986A true TW202328986A (zh) | 2023-07-16 |
Family
ID=81454090
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW112107790A TW202328986A (zh) | 2020-11-06 | 2021-11-05 | 用於具有工作負載平衡啟動稀疏性之卷積之方法和系統 |
TW110141250A TWI804041B (zh) | 2020-11-06 | 2021-11-05 | 用於具有工作負載平衡啟動稀疏性之卷積之方法和系統 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW110141250A TWI804041B (zh) | 2020-11-06 | 2021-11-05 | 用於具有工作負載平衡啟動稀疏性之卷積之方法和系統 |
Country Status (7)
Country | Link |
---|---|
US (1) | US20220147826A1 (zh) |
EP (1) | EP4226286A4 (zh) |
JP (1) | JP2024502225A (zh) |
KR (1) | KR20230104235A (zh) |
CN (1) | CN116547643A (zh) |
TW (2) | TW202328986A (zh) |
WO (1) | WO2022095984A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20230273828A1 (en) * | 2020-07-21 | 2023-08-31 | The Governing Council Of The University Of Toronto | System and method for using sparsity to accelerate deep learning networks |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11055063B2 (en) * | 2016-05-02 | 2021-07-06 | Marvell Asia Pte, Ltd. | Systems and methods for deep learning processor |
US11544545B2 (en) * | 2017-04-04 | 2023-01-03 | Hailo Technologies Ltd. | Structured activation based sparsity in an artificial neural network |
US11275996B2 (en) * | 2017-06-21 | 2022-03-15 | Arm Ltd. | Systems and devices for formatting neural network parameters |
US20190392287A1 (en) * | 2018-06-22 | 2019-12-26 | Samsung Electronics Co., Ltd. | Neural processor |
CN111160516B (zh) * | 2018-11-07 | 2023-09-05 | 杭州海康威视数字技术股份有限公司 | 一种深度神经网络的卷积层稀疏化方法及装置 |
CN109948794A (zh) * | 2019-02-28 | 2019-06-28 | 清华大学 | 神经网络结构化剪枝方法、剪枝装置和电子设备 |
WO2020190772A1 (en) * | 2019-03-15 | 2020-09-24 | Futurewei Technologies, Inc. | Neural network model compression and optimization |
US11763156B2 (en) * | 2019-11-15 | 2023-09-19 | Microsoft Technology Licensing, Llc | Neural network compression based on bank-balanced sparsity |
US20200134417A1 (en) * | 2019-12-24 | 2020-04-30 | Intel Corporation | Configurable processor element arrays for implementing convolutional neural networks |
US20220101118A1 (en) * | 2020-09-30 | 2022-03-31 | Moffett Technologies Co., Limited | Bank-balanced-sparse activation feature maps for neural network models |
-
2020
- 2020-11-06 US US17/091,216 patent/US20220147826A1/en active Pending
-
2021
- 2021-11-05 JP JP2023527417A patent/JP2024502225A/ja active Pending
- 2021-11-05 TW TW112107790A patent/TW202328986A/zh unknown
- 2021-11-05 KR KR1020237018879A patent/KR20230104235A/ko unknown
- 2021-11-05 TW TW110141250A patent/TWI804041B/zh active
- 2021-11-05 EP EP21888676.0A patent/EP4226286A4/en active Pending
- 2021-11-05 WO PCT/CN2021/129141 patent/WO2022095984A1/en active Application Filing
- 2021-11-05 CN CN202180075198.8A patent/CN116547643A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
TWI804041B (zh) | 2023-06-01 |
KR20230104235A (ko) | 2023-07-07 |
EP4226286A1 (en) | 2023-08-16 |
WO2022095984A1 (en) | 2022-05-12 |
TW202230228A (zh) | 2022-08-01 |
EP4226286A4 (en) | 2024-04-10 |
JP2024502225A (ja) | 2024-01-18 |
US20220147826A1 (en) | 2022-05-12 |
CN116547643A (zh) | 2023-08-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI806134B (zh) | 用於分層權重稀疏卷積處理之方法和系統及其相關的非暫時性電腦可讀儲存媒體 | |
JP6961011B2 (ja) | データ管理のためのシステム及び方法 | |
US9886377B2 (en) | Pipelined convolutional operations for processing clusters | |
WO2022002157A1 (en) | Method and system for balanced-weight sparse convolution processing | |
TWI804041B (zh) | 用於具有工作負載平衡啟動稀疏性之卷積之方法和系統 | |
WO2021118857A1 (en) | Hardware accelerator having reconfigurable instruction set | |
US11636569B1 (en) | Matrix transpose hardware acceleration | |
TWI836405B (zh) | 用於平衡權重稀疏卷積處理之方法、系統及非暫時性電腦可讀儲存媒體 | |
TWI813414B (zh) | 用於最佳化神經網路訓練之電腦實施之方法、系統及非暫時性電腦可讀取儲存媒體 | |
WO2021248433A1 (en) | Method and system for dual-sparse convolution processing and parallelization |