TW202316325A - 用於神經網路的並行逐深度處理架構 - Google Patents
用於神經網路的並行逐深度處理架構 Download PDFInfo
- Publication number
- TW202316325A TW202316325A TW111131684A TW111131684A TW202316325A TW 202316325 A TW202316325 A TW 202316325A TW 111131684 A TW111131684 A TW 111131684A TW 111131684 A TW111131684 A TW 111131684A TW 202316325 A TW202316325 A TW 202316325A
- Authority
- TW
- Taiwan
- Prior art keywords
- output
- processing
- input
- circuit
- depth
- Prior art date
Links
- 238000012545 processing Methods 0.000 title claims abstract description 248
- 238000013528 artificial neural network Methods 0.000 title claims description 100
- 238000000034 method Methods 0.000 claims abstract description 83
- 230000008569 process Effects 0.000 claims abstract description 33
- 230000015654 memory Effects 0.000 claims description 46
- 238000012805 post-processing Methods 0.000 claims description 18
- 238000010801 machine learning Methods 0.000 abstract description 10
- 230000004913 activation Effects 0.000 description 14
- 238000001994 activation Methods 0.000 description 14
- 230000006870 function Effects 0.000 description 12
- 238000013527 convolutional neural network Methods 0.000 description 11
- 230000001537 neural effect Effects 0.000 description 10
- 238000010586 diagram Methods 0.000 description 9
- 238000013135 deep learning Methods 0.000 description 8
- 230000036961 partial effect Effects 0.000 description 7
- 239000013598 vector Substances 0.000 description 7
- 238000012549 training Methods 0.000 description 6
- 238000004891 communication Methods 0.000 description 5
- 238000011176 pooling Methods 0.000 description 5
- 230000000007 visual effect Effects 0.000 description 5
- 230000002123 temporal effect Effects 0.000 description 3
- 241001442055 Vipera berus Species 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000000670 limiting effect Effects 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 238000010606 normalization Methods 0.000 description 2
- 230000002829 reductive effect Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000009825 accumulation Methods 0.000 description 1
- 230000003321 amplification Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000003116 impacting effect Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000007620 mathematical function Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 210000002569 neuron Anatomy 0.000 description 1
- 238000003199 nucleic acid amplification method Methods 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 238000013139 quantization Methods 0.000 description 1
- YGSDEFSMJLZEOE-UHFFFAOYSA-N salicylic acid Chemical compound OC(=O)C1=CC=CC=C1O YGSDEFSMJLZEOE-UHFFFAOYSA-N 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 230000003595 spectral effect Effects 0.000 description 1
- 229960000196 stridex Drugs 0.000 description 1
- 238000012546 transfer 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/08—Learning methods
-
- 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
- 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
-
- 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/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
- G06V20/00—Scenes; Scene-specific elements
- G06V20/40—Scenes; Scene-specific elements in video content
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V20/00—Scenes; Scene-specific elements
- G06V20/60—Type of objects
- G06V20/64—Three-dimensional objects
-
- 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/084—Backpropagation, e.g. using gradient descent
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Evolutionary Computation (AREA)
- General Engineering & Computer Science (AREA)
- Artificial Intelligence (AREA)
- General Health & Medical Sciences (AREA)
- Software Systems (AREA)
- Molecular Biology (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Mathematical Physics (AREA)
- Multimedia (AREA)
- Neurology (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Databases & Information Systems (AREA)
- Medical Informatics (AREA)
- Image Processing (AREA)
- Multi Processors (AREA)
Abstract
用於執行機器學習任務的方法和裝置,且特別是用於經由深度並行性來改進效能的神經網路處理架構和電路。一個示例神經網路處理電路通常包括複數組處理元件(PE)電路,其中每組PE電路包括複數個PE電路,其被配置為在複數個深度處並行地處理輸入。
Description
本申請案主張於2021年9月2日提出申請的美國申請案第17/465,550號的優先權,其轉讓給本案的受讓人並藉由引用整體地併入本文。
本揭示內容的各態樣係關於機器學習,且特別係關於電路、神經網路處理架構和用於執行機器學習任務的逐深度並行處理的技術。
機器學習通常是產生經訓練的模型(例如,人工神經網路、樹、或其他結構)的過程,其表示對訓練資料集合的廣義擬合。將經訓練的模型應用於新資料產生推理,其可以被用於瞭解新資料。在一些情況下,將模型應用於新資料被描述為對新資料進行「推理」。
隨著對於實現各種機器學習(或人工智慧)任務,對機器學習的使用激增,對於更有效地處理機器學習模型資料的期望與日俱增。在一些情況下,專用硬體(諸如,機器學習加速器)可以被用於增強處理系統的對於處理機器學習模型資料的能力。然而,此種硬體需要空間和電力,這在處理設備上並不總是可用的。例如,「邊緣處理」設備(諸如行動設備)、始終線上設備、物聯網路(IoT)設備等通常必須平衡處理能力與電力和封裝限制。此外,加速器可能在公共資料匯流排間移動資料,這可能導致大量功耗,並給共享了資料匯流排的其他過程帶來時延。因此,正在考慮處理系統的其他態樣,以用於處理機器學習模型資料。
本揭示內容的系統、方法和設備各自具有若干態樣,其中沒有單獨的一個態樣負責其期望的屬性。在不限制由所附申請專利範圍表達的本揭示內容的範圍的情況下,現在將簡要地論述一些特徵。在考慮該論述之後,並且特別是在閱讀標題為「實施方式」的部分之後,吾人將理解本揭示內容的特徵如何提供在本文描述的優點。
本揭示內容的某些態樣涉及處理電路。處理電路通常包括複數組處理元件(PE)電路。每組PE電路包括複數個PE電路,該複數個PE電路被配置為在複數個深度並行地處理輸入。每個PE電路通常包括一或多個乘法電路和局部累加器,局部累加器具有耦合到一或多個乘法電路的輸出的輸入。每個乘法電路可以被配置為計算部分乘積,並且局部累加器可以被配置為根據由一或多個乘法電路中的每一個乘法電路計算的部分乘積來產生和。
本揭示內容的某些態樣涉及神經網路處理的方法。該方法通常包括接收用於處理的輸入。對於所接收的輸入的複數個分段中的每一個分段,針對神經網路中的複數個深度中的相應深度的中間輸出是基本上基於與該相應深度相關聯的在該神經網路中的權重並行地產生的。針對每個相應深度的中間輸出被累加到最後輸出。至少該最後輸出被輸出到記憶體匯流排。
其他態樣提供被配置為執行上述方法以及在本文中描述的方法的處理系統;非暫時性電腦可讀取媒體,其包含當由處理系統的一或多個處理器執行時使處理系統執行上述方法以及在本文中描述的方法的指令;被體現在電腦可讀取儲存媒體上的電腦程式產品,其包括用於執行上述方法以及在本文中進一步描述的方法的代碼;及處理系統,其包括用於執行上述方法以及在本文中進一步描述的方法的構件。
為了實現前述和相關目的,該一或多個態樣包括在下文中充分描述並且在申請專利範圍中特別指出的特徵。以下描述和附圖詳細闡述了一或多個態樣的某些說明性特徵。然而,該等特徵僅指示可以採用各個態樣的原理的各種方式中的一些。
本揭示內容的各態樣提供了用於並行地處理輸入的複數個深度的裝置、方法、處理系統和電腦可讀取媒體。
對於神經網路、深度神經網路和深度學習的簡介
神經網路被組織成相互連接的節點的層。通常,節點(或神經元)是計算發生的地方。例如,節點可以將輸入資料與權重(或係數)集合進行合併,該權重集合將輸入資料放大或衰減。從而,對輸入信號的放大或衰減可以被視為對針對關於網路試圖學習的任務的各個輸入的相對顯著性的指派。通常,輸入權重乘積被求和(或被累加),隨後,和被傳遞經由節點的啟動函數,以決定信號是否以及在多大程度上應該進一步在網路中進展。
在最基本的實現方式中,神經網路可以有輸入層、隱藏層和輸出層。「深度」神經網路通常有多於一個隱藏層。
深度學習是一種訓練深度神經網路的方法。通常,深度學習將向網路的輸入映射到從網路的輸出,並從而有時稱為「通用逼近器」,這是因為深度學習可以學習逼近在任何輸入
x和任何輸出
y之間的未知函數
f(
x)=
y。換言之,深度學習找到用以將
x變換成
y的正確的
f。
更特定而言,深度學習基於不同的特徵集合對每一層節點進行訓練,該不同的特徵集合是從前一層的輸出。從而,隨著深度神經網路的每個連續層,特徵變得越加複雜。從而,深度學習之所以強大,是因為其可以漸進地從輸入資料中提取更高級別的特徵,並藉由學習在每個層中以連續地更高級別的抽象對輸入進行表示來執行複雜任務(諸如,物體辨識),從而建立對輸入資料的有用特徵表示。
例如,若被以視覺資料呈現,則深度神經網路的第一層可以學習辨識輸入資料中相對簡單的特徵,諸如,邊緣。在另一個實例中,若被以聽覺資料呈現,則深度神經網路的第一層可以學習辨識輸入資料中在特定頻率中的譜功率。隨後,深度神經網路的第二層可以基於第一層的輸出來進行學習以辨識特徵的組合,諸如,視覺資料的簡單形狀、或聽覺資料的聲音組合。隨後,更高層可以進行學習以辨識視覺資料中的複雜形狀、或聽覺資料中的詞語。更高層亦可以進行學習以辨識常見的視覺物體或口語片語。從而,當被應用於具有自然層次結構的問題時,深度學習架構可以表現得特別好。
神經網路中的層連接
神經網路,諸如深度神經網路(DNN),可以以在各層之間的各種連接模式來設計。
圖1A示出全連接神經網路102的實例。在全連接神經網路102中,第一層中的每一個節點將其輸出傳送給第二層中的每一個節點,使得第二層中的每個節點將接收來自第一層中每一個節點的輸入。
圖1B示出局部連接神經網路104的實例。在局部連接神經網路104中,第一層中的節點可以被連接到第二層中的有限數量個節點。更通常,可以配置局部連接神經網路104中的局部連接層,使得層中的每一個節點將具有相同或類似的連接模式,但具有可以具有不同的值(例如,與第一層節點的局部區域110、112、114和116相關聯的值)的連接強度(或權重)。局部連接連接模式可以在更高層中產生空間上不同的感受場,這是因為給定區域中的更高層節點可以接收經由進行訓練調諧為向網路的總輸入的受限部分的屬性的輸入。
一種類型的局部連接神經網路是迴旋神經網路(CNN)。圖1C示出迴旋神經網路106的實例。迴旋神經網路106可以被配置,使得針對第二層中的每一個節點的與輸入相關聯的連接強度被共享(例如,針對與第一層節點的另一局部區域重疊的局部區域108)。迴旋神經網路非常適合於在其中輸入的空間位置是有意義的的問題。
一種類型的迴旋神經網路是深度迴旋網路(DCN)。深度迴旋網路是具有多個迴旋層的網路,多個迴旋層可以利用例如池化和正規化層進一步被配置。
圖1D示出DCN 100的實例,該DCN 100被設計用於辨識由圖像擷取設備130產生的圖像126中的視覺特徵。例如,若圖像擷取設備130是被安裝在車輛內或車輛上(或以其他方式與車輛一起移動)的攝像頭,則可以利用各種監督學習技術對DCN 100進行訓練,以辨識交通標誌以及甚至交通標誌上的數字。DCN 100亦可以被訓練用於其他任務,諸如,辨識車道標記或辨識交通燈。該等任務只是一些示例任務,並且亦有許多其他任務是可能的。
在圖1D的實例中,DCN 100包括特徵提取部分和分類部分。在接收到圖像126之後,迴旋層132對圖像126應用迴旋核(例如,如在圖2中描繪和描述),以產生第一特徵圖集合118(或中間啟動)。通常,「核」或「濾波器」包含多維權重陣列,被設計用於強調輸入資料通道的不同的態樣。在各個實例中,「核」和「濾波器」可以被互換使用,用以代表在迴旋神經網路中應用的權重集合。
隨後,第一特徵圖集合118可以藉由池化層(例如,最大池化層,未圖示)來子取樣,以產生第二特徵圖集合120。池化層可以減小第一特徵圖集合118的大小,同時保留大部分資訊,以改進模型效能。例如,第二特徵圖集合120可以藉由池化層從28x28矩陣降取樣為14x14矩陣。
該過程可以在許多層中重複。換言之,第二特徵圖集合120可以經由後續的一或多個迴旋層(未圖示)被進一步迴旋,以產生後續的一或多個特徵圖集合(未圖示)。
在圖1D的實例中,第二特徵圖集合120被提供給全連接層124,該全連接層124既而產生輸出特徵向量128。輸出特徵向量128的每個特徵可以包括對應於圖像126的可能特徵的數字,諸如,「標誌」、「60」和「100」。在一些情況下,softmax函數(未圖示)可以將輸出特徵向量128中的數字轉換為概率。在此種情況下,DCN 100的輸出122是圖像126包括一或多個特徵的概率。
softmax函數(未圖示)可以將輸出特徵向量128的獨立元素轉換成概率,以便DCN 100的輸出122是圖像126包括一或多個特徵(諸如,上面帶有數字「60」的標誌,如在圖像126中)的一或多個概率。從而,在本實例中,輸出122中的針對「標誌」和「60」的概率應高於輸出122中的其他元素(諸如,「30」、「40」、「50」、「70」、「80」、「90」和「100」)的概率。
在訓練DCN 100之前,由DCN 100產生的輸出122可能不正確。從而,可以計算在輸出122和預先已知的目標輸出之間的誤差。例如,這裡,目標輸出是對圖像126包括「標誌」和數字「60」的指示。利用已知的目標輸出,隨後可以經由進行訓練來調整DCN 100的權重,以便DCN 100的後續輸出122(以高概率)實現目標輸出。
為了調整DCN 100的權重,學習演算法可以計算針對權重的梯度向量。梯度向量可以指示當以特定方式來調整權重時誤差將增加或減少的量。隨後,可以調整權重以減小誤差。此種調整權重的方式可以稱為「反向傳播」,這是因為該調整過程涉及在DCN 100中的層中的「反向傳遞」。
在實踐中,可以在少量實例上計算權重的誤差梯度,以便所計算的梯度逼近真實的誤差梯度。此種逼近方法可以稱為隨機梯度下降。可以重複隨機梯度下降,直到整個系統的可實現誤差率停止下降為止,或直到誤差率達到目標水平為止。
在進行訓練之後,可以以新圖像呈現DCN 100,並且DCN 100可以產生推理,諸如,分類、或各種特徵在新圖像中的概率。
用於迴旋神經網路的迴旋技術
迴旋通常被用於從輸入資料集合中提取有用的特徵。例如,在諸如在上文描述的迴旋神經網路中,迴旋可以使用核及/或濾波器提取不同的特徵,其中在進行訓練期間自動地學習核和/或濾波器的權重。隨後將所提取的特徵合併以進行推理。
可以在迴旋神經網路的每個層之前及/或之後應用啟動函數。啟動函數通常是用於決定神經網路的節點的輸出的數學函數。從而,啟動函數基於節點的輸入是否是與模型的預測相關的來決定節點是否應傳遞資訊。在一個實例中,其中
y=
conv(
x)(亦即,
y是
x的迴旋),
x和
y通常被視為「啟動(activation)」。然而,就特定迴旋運算而言,
x亦可以被稱為「預啟動(pre-activation)」或「輸入啟動」,這是因為
x存在於特定迴旋之前,並且
y可以被稱為輸出啟動或特徵圖。
圖2描繪了三維迴旋,其中輸入210被組織成三維空間,並且使用複數個迴旋核220來處理,以產生輸出230。輸入210可以是三維輸入,諸如,在三個維度(例如,維度
X(水平)、維度
Y(垂直)、和維度
Z(深度))中的每一個維度具有空間資料的三維圖像、或隨時間(例如,視訊)變化的二維圖像(具有維度
X(水平)和維度
Y(垂直))的序列,其中時間可以對應於維度
Z(深度)。在該特定實例中,具有一定數量
n個深度週期(cycle)的12圖元×12圖元的圖像可以經由具有3圖元×3圖元×
n個深度週期的維度的對應迴旋核220來處理。輸出230可以具有沿著維度
X和
Y以及深度維度的相同大小,深度維度對應於被用於處理輸入210的迴旋核220的數量。
輸出固定技術(利用該技術,神經網路的輸出保持儲存在與處理元件相關聯的記憶體中)可以允許快速產生輸出230。通常,使用輸出固定技術涉及:深度週期(對應於來自複數個迴旋核220的不同的核)位於多迴路邏輯結構的內部迴路中,其中多迴路邏輯結構的外部迴路被用於在維度
X和
Y上進行迭代。然而,輸出固定技術可以允許累加器電路在針對在維度
X和
Y中的給定輸入的深度週期中被重複使用。然而,每個深度週期通常需要將與該深度週期相關聯的權重重新載入到被用於處理深度週期的處理元件中。此外,當核被更新時,維度
X和
Y中的輸入可以被重新載入到一或多個處理元件中並且被處理。一些處理技術可以支援對輸入的權重固定處理。在此種情況下,維度
X和
Y中的輸入可以在多迴路結構的內部迴路中被迭代。
示例神經網路處理架構和資料流
圖3是示例神經網路處理架構300的方塊圖,示出示例資料流序列,其中可以實現本揭示內容的某些態樣。神經網路處理架構300可以包括複數個處理元件(PE)302,用於執行資料計算(例如,乘法和累加(MAC)運算)和其他運算。PE 302可以利用諸如神經處理單元(NPU)、神經信號處理器(NSP)或記憶體內計算(CIM)電路的各種合適的電路中的任何電路來實現。處理架構300亦可以包括全域記憶體304(標記為「全域緩衝器」)、緊耦合記憶體(TCM)306、啟動緩衝器308、權重緩衝器310、數位後處理模組312、記憶體匯流排314、暫存器匯流排316和PE匯流排318。如本文所用,TCM通常指藉由專用連接從諸如PE 302的處理器存取的記憶體。啟動緩衝器308和權重緩衝器310可以各自被構造為多組暫存器盤(register tray)。被儲存在權重緩衝器310中的資料可以被廣播到並行輸入(例如,由PE 302並行地處理的輸入)。記憶體匯流排314可以將全域記憶體304耦合到TCM 306。暫存器匯流排316可以將TCM 306耦合到啟動緩衝器308、權重緩衝器310和數位後處理模組312。PE匯流排318可以將PE 302耦合到啟動緩衝器308、權重緩衝器310以及數位後處理模組312。以此方式,PE 302可以存取各種記憶體資源以從啟動緩衝器308及/或權重緩衝器310讀取資料,並將處理從啟動緩衝器308及/或權重緩衝器310讀取的資料得到的結果輸出到數位後處理模組312。
對輸入的深度的示例並行處理
並行處理通常允許處理單元(諸如神經信號處理器(NSP)或神經處理單元(NPU))基本上上同時地處理輸入的多個部分或分段。通常,並行處理可以利用各個輸入的獨立性以:使用相比在串列處理輸入集合時使用的計算資源及/或對計算資源的使用而言的、較少的計算資源(例如,時間)及/或對計算資源的較有效率的使用(例如,被使用的計算資源佔計算系統中的全部可用計算資源的比例),加速對輸入集合的處理並完成對關於輸入集合的運算的執行。通常,NSP或NPU可以被設計為:支援針對輸入的不同的部分(例如,二維輸入的經定義塊,諸如,圖像中的圖元區塊)的輸入並行性,並(例如,使用不同的核(深度)週期,如上文關於圖2所論述的)順序地處理輸入的在不同的深度(例如,不同的通道或時間)處的該等部分。亦即,對於輸入部分索引{1、2、3、…、
n}和深度
m,該等NSP或NPU可以被設計為處理在深度1處在輸入部分索引{1、2、3、…、
n}處的值,隨後處理在深度2處在輸入部分索引{1、2、3、…、
n}處的值,以此類推,直到深度
m。因為該等NSP和NPU可以被設計為支援深度連續處理,所以該等NSP或NPU的能力可能未被充分利用。此外,神經網路深度的增加可能加劇關於未充分利用NSP或NPU處理能力的影響,從而隨著神經網路的深度增加,對該等NSP或NPU的效能指標產生負面影響。例如,給定當使用NSP或NPU中的所有處理元件(PE)時NSP或NSU每秒可以支援的運算的某個最大數量,當使用深度連續處理時NSP或NPU每秒可以支援的運算的數量可能顯著較低。
為了允許提高效能,NSP或NPU中的處理元件可以被設計為支援增加的啟動深度。然而,增加由處理元件支援的啟動深度可能降低映射靈活性,降低時鐘頻率及/或減少可以使用相同硬體資源並行地處理的輸入的數量。
圖4示出神經網路處理架構中的處理元件利用的實例400,其中在神經網路中的不同的深度處串列地處理輸入。在實例400中,該架構可以支援輸入並行性和濾波器通道並行性,以便可以使用多個並行濾波器並行地處理輸入的多個分段(例如,在圖2中所示的維度X和Y中),但可能不支援深度並行性,其中可以在神經網路的不同的深度處(例如,使用不同的核)處理輸入的相同分段。如圖所示,實例400中的架構可以有32個計算單元(標記為「CU-1」到「CU-32」),並且該等計算單元中的每一個計算單元可以包括64個處理元件(PE),後者可以被用於並行地處理提供給架構的輸入的各部分。每個PE可以被配置為處理4個啟動和32個濾波器通道。在本實例中,ResNet50網路的一層可以有大小為7x7x512的輸入張量和一定數量個大小為3x3x512的對應核張量。對於任何7x7輸入通道,可以執行25個運算,以使用為1的步長距離利用3x3核來迴旋25個不同的但可能重疊的感受場。在本實例中,可以產生5x5特徵圖作為該層的輸出。如圖所示,輸入分段1至25可以經由架構中的計算單元1至16中的對應處理元件來處理。然而,由於架構可能不支援逐深度並行性,因此可以被用於處理在另一深度處的輸入的計算資源可能未被使用。
因此,在實例400中,大量計算資源可能未被使用,並且效能可能不可調節。例如,資源利用可以被計算為在其上執行問題的計算單元的數量、輸入的數量、啟動的數量和濾波器通道的數量的乘積。在本實例中,如所論述,可以根據以下參數來定義問題:深度=512(depth=512)、輸入X=7(InputX=7)、輸入Y=7(InputY=7)、濾波器X=3(FilterX=3)、濾波器Y=3(FilterY=3)、步長X=1(StrideX=1)和步長Y=1(StrideY=1)。如圖所示,針對每個PE有四個啟動和32個濾波器通道,並且在32個計算單元中的16個計算單元上處理了25個輸入分段,這是因為512個濾波器通道被映射在16個計算單元上,其中每個計算單元具有32個濾波器通道;及25個輸入分段被映射在128個啟動輸入中的25個上。32個計算單元中剩下的16個沒有被進一步利用,這是因為在實例400中使用的架構不支援逐深度並行性。為完成此問題而執行的深度週期的數量可以被計算為濾波器X*濾波器Y*深度/啟動(FilterX*FilterY*Depth/Activations)=3*3*512/4=1152個深度週期,並且與最大理論使用相比而言的利用效率可以為(16*25*4*32)/(32*64*4*32*)=20%。此外,由於利用效率較低,在給定的時間段內支援的運算的數量可能類似地小於在假設充分利用架構的資源的情況下在該給定的時間段內支援的運算的最大理論數量。
本揭示內容的各態樣提供了用於執行對在神經網路處理架構中的輸入部分的逐深度並行處理的技術。藉由允許輸入並行性和深度並行性,本揭示內容的各態樣可以允許在此種架構中增加對計算資源(例如,處理元件)的利用。從而,在本文描述的技術可以藉由神經網路處理架構來改進推理效能,這是因為在該架構中對可用計算資源的利用的增加可以導致由該架構相對於被設計用於支援深度連續處理的架構而言可以執行的運算的數量增加。
此外,本揭示內容的各態樣提供了可調節的處理架構,其允許針對任何給定的工作負載實現各種類型的並行處理。在本文描述的處理架構允許關於使用並行輸入、並行核或並行深度來處理工作負載的選擇。此外,由於輸入的(部分)可以在不同的深度處被並行地處理,本揭示內容的各態樣可以減少為處理神經網路中一定數量個深度週期所需的處理週期的數量。
圖5示出神經網路處理架構500的實例,其中根據本揭示內容的某些態樣,多個處理元件組被配置為在複數個深度處並行地處理輸入的複數個部分。通常,輸入的部分可以由被用於劃分輸入的分塊模式(tiling pattern)來定義。分塊(tile)的數量較少的分塊模式可以通常將輸入劃分成較大的子部分,而分塊的數量較多的分塊模式可以通常將輸入劃分成較小的子部分。對在將輸入劃分成不同的部分以進行處理時使用的分塊模式的選擇可以代表由神經網路產生的推理的效能和精度之間的折衷。使用較大數量的分塊可以允許在神經網路中以較精細的級別處理資料,但具有較大的計算管理負擔,然而,使用較小數量的分塊(以及對應地,輸入的較大子部分)可以允許以較小的計算管理負擔在神經網路中處理資料,但是具有較高程度的通用性。
如圖所示,神經網路處理架構500可以包括複數個處理元件組510,其被配置為在複數個深度處並行地處理複數個輸入(或輸入的部分)。在該示例架構中,圖示了兩個處理元件組510A和510B,但是讀者需要理解可以有兩個以上的處理元件組。每個處理元件組510可以包括複數個處理元件512,並且每個處理元件的輸出可以被輸出到相關聯的分接點暫存器514。在此實例中,處理元件組510A包括四個處理元件512A-512D,而處理元件組510B包括四個處理元件512E-512H,但是讀者要理解,每個處理元件組可以包括多於或少於四個處理元件。如圖所示,每個處理元件512包括乘法和累加(MAC)電路516和具有被耦合到MAC電路的輸出的輸入的局部累加器518。處理元件512中的局部累加器518的輸出可以被耦合到對應分接點暫存器514的輸入。在一些態樣中,MAC電路516可以包括複數個乘法器電路,其被配置為基於將輸入值與權重值相乘來產生部分乘積,以及局部累加器518可以被實現為加法器電路,其被配置為將由MAC電路516中的獨立乘法器產生的部分乘積合併為局部和。
通常,處理元件組510內的分接點暫存器514可以被耦合,使得一個分接點暫存器514的輸出用作另一個分接點暫存器514的輸入。處理元件組510內的最後分接點暫存器(例如,分接點暫存器514D或514H)的輸出可以被耦合到全域累加器電路520(亦稱為「最後累加器」,並被標記為「FINAL-ACC」)的輸入。對於被並行地處理的每個深度週期,給定的分接點暫存器514可以被配置為將作為來自前任分接點暫存器514的輸入來提供的資料移位,同時由對應於給定的分接點暫存器514的處理元件512執行乘法和累加運算。例如,分接點暫存器514B可以被配置為與處理元件512B執行的運算同時地將作為來自分接點暫存器514A的輸入來提供的資料移位。
全域累加器電路520的輸出可以被耦合到匯流排530,該匯流排530將處理元件組510與數位後處理邏輯540連接。通常,可以由數位後處理邏輯540使用全域累加器電路520的值以進一步處理(例如,偏置、批量正規化(BN)、線性/非線性閾值化、量化等)據其產生了全域累加器電路520的值的輸入資料。在一些態樣中,分接點暫存器514的輸出亦可以被耦合到匯流排530。在此種情況下,匯流排530可以是可定址匯流排,以允許數位後處理邏輯540選擇性地獲得由全域累加器電路520(和分接點暫存器514)放置在匯流排530上的資料。
圖6示出根據本揭示內容的某些態樣,用於並行地處理多個輸入的不同的深度的示例資料流時序圖600。在此實例中,輸入可以被定義為較大的輸入資料集合的一部分,諸如,具有
X、
Y和
Z軸的三維空間中的座標集合處的資料值,其中深度維度對應於三維空間中的
Z軸。如時序圖600所示,處理架構500支援在
Z軸的複數個深度週期上並行地處理複數個輸入。通常,每個深度週期可以與在模型中定義的被用於計算該深度週期處的結果的權重集合相關聯。
如圖所示,在數量
E個深度週期中,可以同時處理輸入的部分。例如,在
E個深度週期上,可以同時地處理輸入的位於在第一和第二維度中相同位置處且在第三維度中不同位置處的部分。在處理該等輸入時,在分接點暫存器中儲存的針對輸入的值可以經由全域累加器被累加(例如,經由串列移位)。在執行給定的深度週期之後,在全域累加器中儲存的值可以被輸出到數位後處理邏輯以供進一步使用。為了最小化對由神經網路處理架構支援的在時間段內的運算的數量的負面影響,可以基於在其上提供並並行地處理輸入的部分的深度週期的數量
E來決定(例如,計算或選擇)分接點的數量
T(例如,8個分接點,如圖6所示)。例如,在
E=總深度週期
D/分接點的數量
T的情況下,當
E>
T+2時,對神經網路處理架構的處理能力的負面影響可以很小或沒有(例如,很少的或沒有未被使用的處理元件)。在
E<
T+2的情況下,可以添加虛擬週期,以最小化對由神經網路處理架構支援的在時間段內的運算的數量的負面影響。
圖7是根據本揭示內容的某些態樣,用於對輸入部分的逐深度並行處理的示例電路的方塊圖。圖7中的示例電路包括圖5中的處理元件512的更詳細版本。如圖7所示,被配置為同時地處理輸入部分的複數個深度的神經網路處理電路的處理元件組510可以包括複數個處理元件512和全域累加器電路520。神經網路處理電路可以包括多個處理元件組510,並且神經網路處理電路中的每一個處理元件組540可以被配置為在複數個深度處處理輸入的不同部分。
如圖所示,每個處理元件512通常包括乘法和累加(MAC)電路516(例如,MAC加法器樹)和局部累加器518。通常,MAC電路516可以產生對給定輸入的數學運算的結果,並將數學運算的結果輸出到局部累加器518。局部累加器518的輸出可以與在相應分接點暫存器514中儲存的值一起作為輸入提供給選擇電路712。例如,選擇電路711可以是多工器電路(例如,2:1多工器,其中輸入到多工器的兩個值中的一個值是基於選擇器控制信號的值輸出的)、三態緩衝器、複數個開關、或其他電路(其允許從局部累加器518選擇輸出值716或從分接點暫存器514選擇輸出值718以輸出到分接點暫存器514的輸入)。通常,當局部累加器518在
E個深度週期的結尾處(例如,在
E個深度週期被處理之後)完成計算最後累加器結果時,選擇器控制信號可以控制選擇電路712,以選擇局部累加器518的輸出作為到分接點暫存器514的輸入。亦即,當深度週期的數量達到
E時,選擇器控制信號可以變為高值。否則,選擇電路712可以選擇分接點暫存器514的當前值作為分接點暫存器514的輸入,以保存當前在分接點暫存器中儲存的資料。
在一些處理元件512處,第二選擇電路714可以被用於影響在分接點暫存器514中儲存的值。例如,第二選擇電路714可以被用於在第一深度週期處的輸入的初始處理元件之後的處理元件中。亦即,對於由初始處理元件512A處理的在第一深度週期處的輸入,後續處理元件512B和512C(以及在處理元件512A之後的其他處理元件)可以使用相應的第二選擇電路714以影響在針對處理元件的相應的分接點暫存器514中儲存的值。與選擇電路712一樣,第二選擇電路714可以例如藉由多工器電路(例如,2:1多工器,其中被輸入到多工器的兩個值中的一個值是基於選擇器輸入的值來輸出的)、三態暫存器、複數個開關、或其他電路(其允許選擇複數個值中的一個值)來實現。控制信號(諸如,用以在等於分接點的數量
T的一定數量個深度週期上經由移位輸出(shift out)分接點暫存器514的值的信號)可以被用於控制在分接點暫存器512中儲存的值。由第二選擇電路714選擇的值可以是分接點暫存器514的當前值,亦可以是前任處理元件中的分接點暫存器514的值(例如,如圖所示,在處理元件512B處,處理元件512A的分接點暫存器514A的輸出)。從而,對於處理元件512B和512C,分接點暫存器514B(和514C)可以具有被耦合到選擇電路712B(和712C)的輸出的第一輸入、以及被耦合到第二選擇電路714B(和714C)的輸出的第二輸入。
全域累加器電路520包括選擇電路722和全域累加器724。選擇電路722可以將全域累加器724中的當前值和分接點暫存器514的輸出取作輸入,該分接點暫存器514與被用於在定義數量個深度處處理輸入的最後一個處理元件相關聯(例如,如圖所示,分接點暫存器514C與處理元件512C相關聯)。到選擇電路722中的選擇器輸入可以被用於設置全域累加器724的值,使得在多個深度週期上累加在全域累加器724中儲存的值。通常,在
E個週期被處理之後(例如,在深度週期
E+1處),在全域累加器724中儲存的值可以被輸出到匯流排530,並且全域累加器電路520可以被重置。
匯流排530通常與同一或多個處理元件512相關聯的一或多個分接點暫存器514的輸出以及累加器電路520中的全域累加器724的輸出耦合。通常,匯流排530可以仲裁來自數位後處理邏輯540的資料請求以及向其發送的資料。例如,匯流排530可以基於針對在神經網路處理電路上執行的神經網路定義的分塊,來選擇哪些輸出可用於數位後處理邏輯540。從而,經由匯流排530可用於數位後處理邏輯540的值可以包括由處理元件512輸出的值、由複數個處理元件512輸出的輸出、及/或在全域累加器724中儲存並輸出到匯流排530的值中的一或多個。
圖8示出神經網路處理架構中的處理元件利用的實例800,其中對輸入的部分的不同的深度並行地處理。如圖所示,可以聚合複數個計算單元以支援在多個深度處處理輸入的部分。在此實例中,對於支援64個輸入部分的計算單元,可以聚合兩個計算單元以形成支援128個輸入的虛擬計算單元。每個處理元件可以使用四個啟動和32個濾波器通道來處理輸入。如圖所示,輸入的25個部分(例如,圖像的25個不同的分段)可以在四個不同的深度處被並行地處理(例如,基於ResNet 50層,該層具有大小為7x7x512的輸入張量和一定數量個大小為3x3x512的對應核張量,並且對25個不同的場進行迴旋)。由於輸入部分可以在神經網路的不同的深度處被並行地處理,所以,相對於圖4中所示的未被使用的處理元件電路的數量,未被使用的處理元件電路的數量可以少得多。在此實例中,可以根據上文關於圖4論述的參數(例如,depth=512、InputX=7、inputY=7、FilterX=3、FilterY=3、StrideX=1和StrideY=1)來定義使用在本文描述的神經網路處理架構處理的問題,其中可以並行地處理輸入的不同深度。在其上處理問題的時鐘週期的數量可以被定義為:FilterX*FilterY*Depth/Activations=3*3*512/4/5=231個週期,或者在上文論述的深度連續處理中使用的週期的數量的約20%。與最大理論使用相比較的利用效率可以是(32*50*4*32)/(32*64*4*31)=78%。此外,每秒的運算的數量可以相對於可以在經由以相同時鐘速率運算的神經處理架構對輸入進行深度連續處理時執行的每秒的運算的數量,而被顯著增加。從而,如圖所示,藉由使用深度並行性來處理輸入可以浪費較少的計算資源,並且神經處理架構的整體效能可以比使用深度連續處理處理輸入的神經處理架構的效能改進。
示例操作
圖9是根據本揭示內容的某些態樣,示出用於神經網路處理的示例操作900的流程圖。例如,操作900可以由諸如圖5或圖7的神經網路處理架構500的神經網路處理電路執行。
操作900可以在方塊910開始於:接收用於處理的輸入。輸入可以是多維資料陣列或多維張量,其可以被分段以用於在神經網路中的並行處理。
在一些態樣中,輸入可以包括對應於三維空間的資料。三維空間中的第一維度可以對應於水平維度。三維空間中的第二維度可以對應於垂直維度。三維空間中的第三維度可以對應於深度維度。例如,三維空間可以是歐氏空間,其中資料以高度、寬度和深度的維度來表示,諸如來自物體的三維圖像的資料。在另一實例中,三維空間可以包括二維平面上的空間資料,其中第三維度對應於輸入中的時間通道。例如,此三維資料可以包括視訊資料、音訊資料或其他以時間為維度的資訊。
在一些態樣中,輸入可以包括複數個分段。例如,分段的大小可以使得輸入的相同部分可以在神經網路的不同的深度處被並行地或基本上並行地處理。例如,複數個分段中的每一個分段可以是對應於三維圖像中的不同的深度或對應於時間資料中的不同的時間戳記(例如,視訊中的不同的訊框)的不同的圖像中的相同圖元區塊(例如,就水平和垂直座標而言)。在一些態樣中,複數個分段可以基於被用於定義神經網路將如何處理輸入的分塊。複數個分段中的每一個分段可以表示輸入的子部分或分塊,該子部分或分塊的大小可以由輸入被劃分成的分塊的數量來定義。例如,對於數量
i個分塊,具有水平軸上的圖元
X和垂直軸上的圖元
Y的圖像輸入可以被劃分成大小為(
X*
Y)/
i個圖元的分塊。
在方塊920,對於輸入的複數個分段中的一個分段,在神經網路中的複數個深度中的每一個深度處,基本上並行地產生中間輸出。中間輸出可以是基於與濾波器或核相關聯的在神經網路中的權重來產生的,該濾波器或核被用於在神經網路中給定的深度處處理輸入的部分。
在一些態樣中,產生中間輸出可以包括經由乘法和累加(MAC)電路產生中間輸出。由MAC電路產生的值可以被儲存在分接點暫存器中。在一些態樣中,產生中間輸出可以進一步包括在複數個處理週期中的每一個處理週期期間移位分接點暫存器中的值。
在方塊930,對於輸入的複數個分段中的分段,每個中間輸出被累加到最後輸出中。在一些態樣中,將中間輸出累加到最後輸出中可以包括累加在複數個處理週期上的來自與相應值中的每一個相應值相關聯的分接點暫存器的被移位的值。如所論述地,複數個處理週期可以對應於在神經處理單元中並行地處理的深度的數量。
在方塊940,至少最後輸出被輸出到記憶體匯流排。在一些態樣中,最後輸出可以基於指示已經針對閾值數量個深度週期完成了處理的信號而被輸出給記憶體匯流排。藉由基於此信號將最後輸出輸出給記憶體匯流排,未完成的資料可以不被放置在匯流排上。
如所論述地,記憶體匯流排可以是選擇性匯流排,其允許選擇性地將資料發送或提供給數位後處理區塊以供進一步使用。在一些態樣中,每個中間輸出亦可以被輸出給記憶體匯流排。記憶體匯流排可以基於例如關於如何在神經網路中對輸入進行分塊以用於處理的資訊,選擇性地向數位後處理區塊提供值。
具有深度並行處理的示例設備
圖10示出示例電子設備1000。電子設備1000可以被配置為執行在本文描述的方法,包括關於圖9描述的操作900。
電子設備1000包括中央處理器(CPU)1002,其在一些態樣中可以是多核CPU。在CPU 1002處執行的指令可以從與CPU 1002相關聯的程式記憶體載入,亦可以從記憶體1024載入。
電子設備1000亦包括為特定功能定製的附加處理區塊,諸如圖形處理單元(GPU)1004、數位訊號處理器(DSP)1006、帶有一組PE 1009(用以實現對向神經網路電路的輸入的深度並行處理)的神經網路電路1007、多媒體處理區塊1010、以及無線連接處理區塊1012。在一個實現方式中,神經網路電路1007被實現在CPU 1002、GPU 1004及/或DSP 1006中的一或多個中。
在一些態樣中,無線連接處理區塊1012可以包括部件,例如,用於第三代(3G)連接、第四代(4G)連接(例如,4G LTE)、第五代連接(例如,5G或NR)、Wi-Fi連接、藍芽連接及/或無線資料傳輸標準。無線連接處理區塊1012進一步被連接到一或多個天線1014以促進無線通訊。
電子設備1000亦可以包括一或多個與任何形式的感測器相關聯的感測器處理器1016、一或多個與任何形式的圖像感測器相關聯的圖像信號處理器(ISP)1018及/或導航處理器1020,其可以包括基於衛星的定位系統部件(例如,全球定位系統(GPS)或全球導航衛星系統(GLONASS))、以及慣性定位系統部件。
電子設備1000亦可以包括一或多個輸入及/或輸出設備1022,諸如,螢幕、觸摸敏感表面(包括觸摸敏感顯示器)、實體按鈕、揚聲器、麥克風等。在一些態樣中,電子設備1000的一或多個處理器可以是基於先進RISC機器(ARM)指令集的,其中RISC表示「精簡指令集計算」。
電子設備1000亦包括記憶體1024,其代表一或多個靜態及/或動態記憶體,諸如,動態隨機存取記憶體(DRAM)、基於快閃記憶體的靜態記憶體等。在此實例中,記憶體1024包括電腦可執行部件,其可以由(包括神經網路電路1007的)電子設備1000的上述處理器中的一或多個執行。所描繪的部件和其他未描繪的部件可以被配置為執行在本文描述的方法的各個態樣。
在一些態樣中,諸如在電子設備1000是伺服器設備的情況下,可以從在圖10描繪的實例中省略各個態樣,諸如多媒體處理區塊1010、無線連接處理區塊1012、天線1014、感測器處理器1016、ISP 1018或導航處理器1020中的一或多個。
示例條款
除上述各個態樣外,各態樣的特定組合亦在本揭示內容的範圍內,其中一些組合在以下條款中有詳細說明:
條款1:一種處理電路,包括複數組處理元件(PE)電路,其中:每組PE電路包括複數個PE電路,其被配置為在複數個深度處並行地處理輸入,並且每個PE電路包括:一或多個乘法電路,每個乘法電路被配置為計算部分乘積,以及具有被耦合到一或多個乘法電路的輸出的輸入的局部累加器,局部累加器被配置為根據由一或多個乘法電路中的每一個乘法電路產生的部分乘積來產生和。
條款2:如條款1所述的處理電路,其中每個PE電路進一步包括:暫存器,其具有被耦合到局部累加器的輸出的輸入。
條款3:如條款2所述的處理電路,進一步包括複數個全域累加器,其中每個PE電路中的暫存器的輸出被耦合到該組PE電路中的另一PE電路中的另一暫存器的輸入,或被耦合到全域累加器中的一個全域累加器的輸入。
條款4:如條款3所述的處理電路,進一步包括匯流排,其中每個PE電路中的暫存器的另一輸出被耦合到匯流排。
條款5:如條款4所述的處理電路,其中全域累加器中的每一個全域累加器的輸出進一步被耦合到匯流排。
條款6:如條款2至5中任何條款所述的處理電路,其中每個PE電路進一步包括第一選擇電路,其具有被耦合到局部累加器的輸出的第一輸入,並且具有被耦合到暫存器的輸入的輸出。
條款7:如條款6所述的處理電路,其中每個PE電路中的第一選擇電路具有被耦合到暫存器的輸出的第二輸入。
條款8:如條款7所述的處理電路,其中第一選擇電路包括2:1多工器、三態緩衝器或複數個開關。
條款9:如條款6至8中任何條款所述的處理電路,其中每組PE電路中的至少一些PE電路進一步包括第二選擇電路,第二選擇電路具有被耦合到暫存器的輸入的輸出,具有被耦合到暫存器的輸出的第一輸入,以及具有被耦合到該組PE電路中的另一PE電路中的另一暫存器的輸出的第二輸入。
條款10:如條款9所述的處理電路,其中第二選擇電路包括2:1多工器、三態緩衝器或複數個開關。
條款11:如條款1至10中任何條款所述的處理電路,進一步包括複數個全域累加器,其中每個全域累加器具有被耦合到該組PE電路中的一個PE電路的輸出的輸入。
條款12:如條款1至11中任何條款所述的處理電路,其中複數個PE電路進一步被配置為並行地處理複數個輸入的複數個深度。
條款13:一種神經網路處理的方法,包括:接收用於處理的輸入;及對於所接收的輸入的複數個分段中的每一個分段:基於與神經網路中的複數個深度的相應深度相關聯的在神經網路中的權重,基本上並行地產生針對神經網路中的該相應深度的中間輸出;將針對每個相應深度的中間輸出累加到最後輸出中;及將最後輸出輸出給記憶體匯流排。
條款14:如條款13所述的方法,其中:輸入包括來自三維空間的資料,三維空間中的第一維度對應於水平維度,三維空間中的第二維度對應於垂直維度,並且三維空間中的第三維度對應於深度維度。
條款15:如條款14所述的方法,其中:來自三維空間的資料包括視訊資料,並且深度維度對應於視訊資料中的時間通道。
條款16:如條款13至15中任何條款所述的方法,其中產生針對神經網路中的相應深度的中間輸出包括:經由乘法和累加(MAC)電路來產生中間輸出;及將MAC電路的值儲存在分接點暫存器中。
條款17:如條款16條所述的方法,其中產生針對神經網路中的相應深度的中間輸出進一步包括在複數個處理週期中的每一個處理週期期間移位分接點暫存器中的值。
條款18:如條款13至17中任何條款所述的方法,其中將針對每個相應深度的中間輸出累加到最後輸出中包括:累加在一或多個分接點暫存器中儲存的在複數個處理週期上的與相應深度中的每一個深度相關聯的被移位的值。
條款19:如條款13至18中任何條款所述的方法,其中將最後輸出輸出給記憶體匯流排包括將每個中間輸出輸出給記憶體匯流排。
條款20:如條款13至19中任何條款所述的方法,其中將最後輸出輸出給記憶體匯流排是基於指示已經針對閾值數量個深度週期完成了處理的信號的。
條款21:一種裝置,包括:記憶體匯流排、數位後處理區塊和處理器,其被配置用於執行如條款13至20中任何條款所述的操作。
條款22:一種裝置,包括:用於執行如條款13至20中任何條款所述的操作的構件。
額外注意事項
提供上述描述是為了使本領域技藝人士能夠實踐在本文描述的各個態樣。在本文論述的實例並不限制請求項中闡述的範圍、適用性或各態樣。對於本領域技藝人士來說,對該等態樣的各種修改將是顯而易見的,並且在本文定義的一般原則可以被應用於其他態樣。例如,在不偏離本揭示內容的範圍的情況下,可以對所論述的元件的功能和佈置進行更改。各種實例可以酌情省略、替換或添加各種程序或部件。例如,所描述的方法可以以不同於所描述的順序執行,並且可以添加、省略或組合各種步驟。此外,可以在其他一些實例中合併關於一些實例描述的特徵。例如,可以使用本文闡述的任何數量的態樣來實現設備或實踐方法。此外,本揭示內容的範圍意欲涵蓋使用除了或不同於在本文闡述的本揭示內容的各個態樣的其他結構、功能或結構和功能實踐的此類裝置或方法。應當理解,在本文揭示的本揭示內容的任何態樣皆可以由請求項的一或多個要素體現。
如本文所用,「示例性的」一詞意味著「用作示例、實例或說明」。在本文描述為「示例性的」任何態樣不一定被解釋為優於或有利於其他態樣。
如本文所用,提及項目列表「中的至少一個」的片語是指該等項目的任何組合,包括單個成員。例如,「a、b或c中的至少一個」已於涵蓋a、b、c、a-b、a-c、b-c和a-b-c、以及具有相同元素的倍數的任何組合(例如,a-a、a-a-a、a-a-b、a-a-c、a-b-b、a-c-c、b-b、b-b-b、b-b-c、c-c和c-c-c或a、b和c的任何其他順序)。
如本文所用,術語「決定」包括各種各樣的行動。例如,「決定」可以包括計算、估算、處理、推導、調查、檢視(例如,在表、資料庫或其他資料結構中檢視)、核定等。此外,「決定」可以包括接收(例如,接收資訊)、存取(例如,存取記憶體中的資料)等。此外,「決定」可以包括解決、選擇、選取、建立等。
在本文揭示的方法包括用於實現該等方法的一或多個步驟或動作。方法步驟及/或動作可以相互互換,而不偏離申請專利範圍的範圍。換言之,除非指定了步驟或動作的特定順序,否則可以修改特定步驟及/或動作的順序及/或使用,而不偏離申請專利範圍的範圍。此外,上述方法的各種操作可以藉由能夠執行對應功能的任何合適構件來執行。構件可以包括各種硬體及/或軟體部件及/或模組,包括但不限於電路、特殊應用積體電路(ASIC)或處理器。通常,若有附圖中所示的操作,該等操作可以有具有類似編號的對應的相當的構件加功能部件。示例構件加功能部件可以包括用於接收的構件、用於產生的構件、用於累加的構件和用於輸出的構件等。用於接收的構件可以包括輸入/輸出區塊(諸如圖10中所描繪的輸入/輸出區塊1012)、無線通訊區塊(例如,收發機)(諸如圖10中描繪的無線通訊區塊1012)等。用於產生的構件可以包括一或多個處理器或處理電路,諸如圖10中所示的神經網路電路1007及/或處理元件1009。用於累加的構件可以包含一或多個處理器或處理電路,諸如圖10中所示的神經網路電路100及/或處理元件1009。用於輸出的構件可以包括輸入/輸出區塊(諸如圖10中描繪的輸入/輸出區塊1012)、無線通訊區塊(例如,收發機)(諸如圖10中描述的無線通訊區塊1012)等。
以下請求項並不已於限於本文所示的態樣,而是應被符合與請求項的語言一致的全部範圍。在請求項中,除非特別如此說明,否則對單數元素的引用不意欲意味著「一個且只有一個」,而是「一或多個」。除非另有特別說明,否則術語「一些」是指一或多個。不得根據專利法. § 112(f)的規定對任何請求項的要素進行解釋,除非該要素使用片語「用於…的構件」來明確敘述,或者在方法請求項的情況下,該要素是使用片語「用於…的步驟」敘述。在本揭示內容中描述的各個態樣的元素的、對於本領域的一般技藝人士來說是已知的或以後知道的、所有結構和功能均等物,均藉由引用明確併入本文中,並且意欲涵蓋在請求項中。此外,在本文揭示的任何內容皆不打算貢獻給公眾,而無論在請求項中是否明確敘述了此類揭示內容。
30:元素
50:元素
60:元素
70:元素
80:元素
90:元素
100:DCN
102:全連接神經網路
104:局部連接神經網路
106:迴旋神經網路
108:局部區域
110:局部區域
112:局部區域
114:局部區域
116:局部區域
118:第一特徵圖集合
120:第二特徵圖集合
122:輸出
124:全連接層
126:圖像
128:輸出特徵向量
130:圖像擷取設備
132:迴旋層
210:輸入
220:迴旋核
230:輸出
300:神經網路處理架構
302:處理元件(PE)
304:全域記憶體
306:緊耦合記憶體(TCM)
308:啟動緩衝器
310:權重緩衝器
312:數位後處理模組
314:記憶體匯流排
316:暫存器匯流排
318:PE匯流排
400:實例
500:神經網路處理架構
510:處理元件組
510A:處理元件組
510B:處理元件組
512A:處理元件
512B:處理元件
512C:處理元件
512D:處理元件
512E:處理元件
512F:處理元件
512G:處理元件
512H:處理元件
514A:分接點暫存器
514B:分接點暫存器
514C:分接點暫存器
514D:分接點暫存器
514E:分接點暫存器
514F:分接點暫存器
514G:分接點暫存器
514H:分接點暫存器
516:乘法和累加(MAC)電路
518:局部累加器
520:全域累加器電路
530:匯流排
540:數位後處理邏輯
600:資料流時序圖
712:選擇電路
712B:選擇電路
712C:選擇電路
714:第二選擇電路
714B:第二選擇電路
714C:第二選擇電路
716:輸出值
718:輸出值
722:選擇電路
724:全域累加器
800:實例
900:操作
910:方塊
920:方塊
930:方塊
940:方塊
1000:電子設備
1002:中央處理器(CPU)
1004:圖形處理單元(GPU)
1006:數位訊號處理器(DSP)
1007:神經網路電路
1009:PE
1010:多媒體處理區塊
1012:無線連接處理區塊
1014:天線
1016:感測器處理器
1018:圖像信號處理器(ISP)
1020:導航處理器
1022:輸入及/或輸出設備
1024:記憶體
CU-1:計算單元
CU-16:計算單元
CU-17:計算單元
CU-2:計算單元
CU-3:計算單元
CU-32:計算單元
NSP/NPU:神經信號處理器/神經處理單元
PE:處理元件
TCM:緊耦合記憶體
為了能夠實現用於詳細理解本揭示內容的上述特徵的方式,可以藉由參照各態樣來獲得在上文簡要概述的更特定的描述,其中一些態樣在附圖中示出。然而,要注意地是,附圖僅示出本揭示內容的某些典型態樣,並且因此不被認為是對其範圍的限制,因為該描述可以適於其他等效的態樣。
圖1A至圖1D描繪了可以藉由本揭示內容的各態樣實現的各種類型的神經網路的實例。
圖2描繪了可以藉由本揭示內容的各態樣實現的傳統迴旋運算的實例。
圖3是在其中可以實現本揭示內容的某些態樣的具有緊耦合記憶體(TCM)和處理元件(PE)的示例神經網路處理架構的方塊圖。
圖4示出了神經網路處理架構中的處理元件利用,其中對輸入的不同的深度串列地處理。
圖5示出了根據本揭示內容的某些態樣的示例神經網路處理架構,在其中多個處理元件組被配置為並行地處理複數個輸入的複數個深度。
圖6示出了根據本揭示內容的某些態樣的用於並行地處理多個輸入的不同的深度的示例資料流時序圖。
圖7是根據本揭示內容的某些態樣的用於對輸入的逐深度並行處理的示例電路的方塊圖。
圖8示出了神經網路處理架構中的處理元件利用,其中對輸入的不同的深度並行地處理。
圖9示出了根據本揭示內容的某些態樣,由處理系統可以執行以並行地處理輸入的複數個深度的示例操作。
圖10是根據本揭示內容的某些態樣,示出了具有在其中並行地處理輸入的複數個深度的神經網路處理電路的示例電子設備的方塊圖。
為了便於理解,在可能的情況下已經使用相同的元件符號來指示對於各附圖公共的相同元素。預期地是,一個態樣的元素和特徵可以有利地併入其他態樣而無需進一步敘述。
國內寄存資訊(請依寄存機構、日期、號碼順序註記)
無
國外寄存資訊(請依寄存國家、機構、日期、號碼順序註記)
無
500:神經網路處理架構
510:處理元件組
510A:處理元件組
510B:處理元件組
512A:處理元件
512B:處理元件
512C:處理元件
512D:處理元件
512E:處理元件
512F:處理元件
512G:處理元件
512H:處理元件
514A:分接點暫存器
514B:分接點暫存器
514C:分接點暫存器
514D:分接點暫存器
514E:分接點暫存器
514F:分接點暫存器
514G:分接點暫存器
514H:分接點暫存器
516:乘法和累加(MAC)電路
518:局部累加器
520:全域累加器電路
530:匯流排
540:數位後處理邏輯
Claims (29)
- 一種處理電路,包括複數組處理元件(PE)電路,其中: 每組PE電路包括複數個PE電路,該複數個PE電路被配置為在複數個深度處並行地處理一輸入,以及 每個PE電路包括: 一或多個乘法電路,每個乘法電路被配置為計算一部分乘積,以及 一局部累加器,其具有被耦合到該一或多個乘法電路的一輸出的一輸入,該局部累加器被配置為根據由該一或多個乘法電路中的每一個乘法電路計算的該部分乘積來產生一和。
- 如請求項1所述的處理電路,其中每個PE電路進一步包括: 一暫存器,其具有被耦合到該局部累加器的一輸出的一輸入。
- 如請求項2所述的處理電路,進一步包括複數個全域累加器,其中每個PE電路中的該暫存器的一輸出被耦合到該組PE電路中的另一PE電路中的另一暫存器的該輸入,或被耦合到該等全域累加器中的一個全域累加器的一輸入。
- 如請求項3所述的處理電路,進一步包括一匯流排,其中每個PE電路中的該暫存器的另一輸出被耦合到該匯流排。
- 如請求項4所述的處理電路,其中該等全域累加器中的每一個全域累加器的一輸出進一步被耦合到該匯流排。
- 如請求項2所述的處理電路,其中每個PE電路進一步包括一第一選擇電路,該第一選擇電路具有被耦合到該局部累加器的該輸出的一第一輸入並且具有被耦合到該暫存器的該輸入的一輸出。
- 如請求項6所述的處理電路,其中每個PE電路中的該第一選擇電路具有被耦合到該暫存器的一輸出的一第二輸入。
- 如請求項7所述的處理電路,其中該第一選擇電路包括一2:1多工器、一三態緩衝器、或複數個開關。
- 如請求項6所述的處理電路,其中每組PE電路中的該等PE電路中的至少一些PE電路進一步包括一第二選擇電路,該第二選擇電路具有被耦合到該暫存器的該輸入的一輸出,具有被耦合到該暫存器的一輸出的一第一輸入,以及具有被耦合到該組PE電路中的另一PE電路中的另一暫存器的一輸出的一第二輸入。
- 如請求項9所述的處理電路,其中該第二選擇電路包括一2:1多工器、一三態緩衝器、或複數個開關。
- 如請求項1所述的處理電路,進一步包括一全域累加器,其中每個全域累加器具有被耦合到該組PE電路中的一個PE電路的一輸出的一輸入。
- 如請求項1所述的處理電路,其中該複數個PE電路進一步被配置為在複數個深度處並行地處理複數個輸入。
- 一種神經網路處理的方法,包括以下步驟: 接收用於處理的一輸入;及 對於所接收的該輸入的複數個分段中的每一個分段: 基於一神經網路中的與該神經網路中的複數個深度的一相應深度相關聯的權重,基本上並行地產生針對該神經網路中的該相應深度的一相應的中間輸出; 將針對每個相應深度的該中間輸出累加到一最後輸出中;及 將該最後輸出輸出給一記憶體匯流排。
- 如請求項13所述的方法,其中: 該輸入包括來自一三維空間的資料, 該三維空間中的一第一維度對應於一水平維度, 該三維空間中的一第二維度對應於一垂直維度,以及 該三維空間中的一第三維度對應於一深度維度。
- 如請求項14所述的方法,其中: 來自該三維空間的該資料包括視訊資料,以及 該深度維度對應於該視訊資料中的一時間通道。
- 如請求項13所述的方法,其中產生針對該神經網路中的該相應深度的該中間輸出包括以下步驟: 經由一乘法和累加(MAC)電路來產生該中間輸出;及 將該MAC電路的一值儲存在一分接點暫存器中。
- 如請求項16所述的方法,其中產生針對該神經網路中的該相應深度的該中間輸出進一步包括以下步驟:在複數個處理週期中的每一個處理週期期間移位該分接點暫存器中的該值。
- 如請求項13所述的方法,其中將針對每個相應深度的該中間輸出累加到該最後輸出中包括以下步驟:累加在一或多個分接點暫存器中儲存的在複數個處理週期上的與該等相應深度中的每一個深度相關聯的被移位的值。
- 如請求項13所述的方法,其中將該最後輸出輸出給該記憶體匯流排包括將每個中間輸出輸出給該記憶體匯流排。
- 如請求項13所述的方法,其中將該最後輸出輸出給該記憶體匯流排是基於一信號的,該信號指示已經針對一閾值數量個深度週期完成了處理。
- 一種裝置,包括: 一記憶體匯流排; 一處理器,其被配置為: 接收用於處理的一輸入;及 對於所接收的該輸入的複數個分段中的每一個分段: 基於一神經網路中的與該神經網路中的複數個深度的一相應深度相關聯的權重,基本上並行地產生針對該神經網路中的該相應深度的一相應的中間輸出; 將針對每個相應深度的該中間輸出累加到一最後輸出中;及 將該最後輸出輸出給該記憶體匯流排;及 一數位後處理區塊,其被配置為從該記憶體匯流排獲取該最後輸出以及基於該最後輸出執行一或多個運算。
- 如請求項21所述的裝置,其中: 該輸入包括來自一三維空間的資料, 該三維空間中的一第一維度對應於一水平維度, 該三維空間中的一第二維度對應於一垂直維度,以及 該三維空間中的一第三維度對應於一深度維度。
- 如請求項22所述的裝置,其中: 來自該三維空間的該資料包括視訊資料,以及 該深度維度對應於該視訊資料中的一時間通道。
- 如請求項21所述的裝置,其中為了產生針對該神經網路中的該相應深度的該中間輸出,該處理器被配置為: 經由一乘法和累加(MAC)電路來產生該中間輸出;及 將該MAC電路的一值儲存在一分接點暫存器中。
- 如請求項24所述的裝置,其中為了產生針對該神經網路中的該相應深度的該中間輸出,該處理器進一步被配置為:在複數個處理週期中的每一個處理週期期間移位該分接點暫存器中的該值。
- 如請求項21所述的裝置,其中為了將針對每個相應深度的該中間輸出累加到該最後輸出中,該處理器被配置為:累加在一或多個分接點暫存器中儲存的在複數個處理週期上的與該等相應深度中的每一個深度相關聯的被移位的值。
- 如請求項21所述的裝置,其中為了將該最後輸出輸出給該記憶體匯流排,該處理器被配置為:針對每個中間輸出,將值輸出給該記憶體匯流排。
- 如請求項21所述的裝置,其中為了將該最後輸出輸出給該記憶體匯流排,該處理器被配置為:基於指示已經針對一閾值數量個深度週期完成了處理的一信號,輸出該最後輸出。
- 一種裝置,包括: 用於接收用於處理的一輸入的構件; 用於對於所接收的該輸入的複數個分段中的每一個分段,並且基本上並行地,基於一神經網路中的與該神經網路中的複數個深度的一相應深度相關聯的權重,產生針對該神經網路中的該相應深度的一中間輸出的構件; 用於對於所接收的該輸入的複數個分段中的每一個分段,將針對每個相應深度的該中間輸出累加到一最後輸出中的構件;及 用於對於所接收的該輸入的複數個分段中的每一個分段,將該最後輸出輸出給一記憶體匯流排的構件。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/465,550 US20230065725A1 (en) | 2021-09-02 | 2021-09-02 | Parallel depth-wise processing architectures for neural networks |
US17/465,550 | 2021-09-02 |
Publications (1)
Publication Number | Publication Date |
---|---|
TW202316325A true TW202316325A (zh) | 2023-04-16 |
Family
ID=83506452
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW111131684A TW202316325A (zh) | 2021-09-02 | 2022-08-23 | 用於神經網路的並行逐深度處理架構 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20230065725A1 (zh) |
KR (1) | KR20240058084A (zh) |
CN (1) | CN117897708A (zh) |
TW (1) | TW202316325A (zh) |
WO (1) | WO2023034696A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20230123864A (ko) * | 2022-02-17 | 2023-08-24 | 주식회사 마키나락스 | 인공지능 기반의 반도체 설계 방법 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102642853B1 (ko) * | 2017-01-05 | 2024-03-05 | 한국전자통신연구원 | 컨볼루션 회로, 그것을 포함하는 어플리케이션 프로세서 및 그것의 동작 방법 |
-
2021
- 2021-09-02 US US17/465,550 patent/US20230065725A1/en active Pending
-
2022
- 2022-08-22 WO PCT/US2022/075255 patent/WO2023034696A1/en active Application Filing
- 2022-08-22 CN CN202280058042.3A patent/CN117897708A/zh active Pending
- 2022-08-22 KR KR1020247006183A patent/KR20240058084A/ko unknown
- 2022-08-23 TW TW111131684A patent/TW202316325A/zh unknown
Also Published As
Publication number | Publication date |
---|---|
CN117897708A (zh) | 2024-04-16 |
KR20240058084A (ko) | 2024-05-03 |
US20230065725A1 (en) | 2023-03-02 |
WO2023034696A1 (en) | 2023-03-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7329533B2 (ja) | 演算を加速するための方法および加速器装置 | |
TWI759361B (zh) | 用於稀疏神經網路加速的架構、方法、電腦可讀取媒體和裝備 | |
US10997496B2 (en) | Sparse convolutional neural network accelerator | |
Mahmoud et al. | Diffy: A Déjà vu-free differential deep neural network accelerator | |
US20190212981A1 (en) | Neural network processing unit including approximate multiplier and system on chip including the same | |
US10936943B2 (en) | Providing flexible matrix processors for performing neural network convolution in matrix-processor-based devices | |
US11915118B2 (en) | Method and apparatus for processing computation of zero value in processing of layers in neural network | |
JP7321372B2 (ja) | 微細構造化重みプルーニング・重み統合によるニューラルネットワークモデルの圧縮のための方法、装置およびコンピュータプログラム | |
US20200356809A1 (en) | Flexible pipelined backpropagation | |
TW202324210A (zh) | 支援深度式迴旋神經網路(cnn)的記憶體內計算(cim)架構和資料串流 | |
TW202316325A (zh) | 用於神經網路的並行逐深度處理架構 | |
Struharik et al. | Conna–compressed cnn hardware accelerator | |
WO2022163861A1 (ja) | ニューラルネットワーク生成装置、ニューラルネットワーク演算装置、エッジデバイス、ニューラルネットワーク制御方法およびソフトウェア生成プログラム | |
Shocher et al. | From discrete to continuous convolution layers | |
CN111523642A (zh) | 用于卷积运算的数据重用方法、运算方法及装置、芯片 | |
US20230025068A1 (en) | Hybrid machine learning architecture with neural processing unit and compute-in-memory processing elements | |
CN116090518A (zh) | 基于脉动运算阵列的特征图处理方法、装置以及存储介质 | |
WO2023019103A1 (en) | Partial sum management and reconfigurable systolic flow architectures for in-memory computation | |
TW202319966A (zh) | 消除深度迴旋的記憶體瓶頸 | |
TW202324205A (zh) | 用於分階段逐深度迴旋的記憶體內計算架構 | |
CN115699022A (zh) | 结构化卷积和相关联加速 | |
CN112561050A (zh) | 一种神经网络模型训练方法及装置 | |
Guo et al. | BOOST: Block Minifloat-Based On-Device CNN Training Accelerator with Transfer Learning | |
WO2023004570A1 (en) | Activation buffer architecture for data-reuse in a neural network accelerator | |
WO2023004374A1 (en) | Hybrid machine learning architecture with neural processing unit and compute-in-memory processing elements |