TW202026858A - 在深度神經網路中利用啟動稀疏性 - Google Patents
在深度神經網路中利用啟動稀疏性 Download PDFInfo
- Publication number
- TW202026858A TW202026858A TW108135184A TW108135184A TW202026858A TW 202026858 A TW202026858 A TW 202026858A TW 108135184 A TW108135184 A TW 108135184A TW 108135184 A TW108135184 A TW 108135184A TW 202026858 A TW202026858 A TW 202026858A
- Authority
- TW
- Taiwan
- Prior art keywords
- tensor
- zero
- activation
- startup
- vector
- Prior art date
Links
- 230000004913 activation Effects 0.000 title claims abstract description 168
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 76
- 238000001994 activation Methods 0.000 claims abstract description 168
- 238000012545 processing Methods 0.000 claims abstract description 67
- 238000000034 method Methods 0.000 claims abstract description 56
- 239000000872 buffer Substances 0.000 claims description 47
- 230000006835 compression Effects 0.000 claims description 21
- 238000007906 compression Methods 0.000 claims description 21
- 238000004364 calculation method Methods 0.000 claims description 20
- 238000012856 packing Methods 0.000 claims description 9
- 238000009825 accumulation Methods 0.000 claims description 7
- 230000037361 pathway Effects 0.000 claims description 2
- 239000012536 storage buffer Substances 0.000 claims 2
- 230000000875 corresponding effect Effects 0.000 description 33
- 230000006870 function Effects 0.000 description 33
- 210000002569 neuron Anatomy 0.000 description 32
- 238000010586 diagram Methods 0.000 description 15
- 238000013135 deep learning Methods 0.000 description 12
- 238000013473 artificial intelligence Methods 0.000 description 11
- 230000008901 benefit Effects 0.000 description 10
- 238000013527 convolutional neural network Methods 0.000 description 10
- 238000012549 training Methods 0.000 description 9
- 238000004590 computer program Methods 0.000 description 6
- 238000013461 design Methods 0.000 description 6
- 238000010606 normalization Methods 0.000 description 6
- 238000011176 pooling Methods 0.000 description 6
- 238000009826 distribution Methods 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 230000000007 visual effect Effects 0.000 description 5
- 238000004422 calculation algorithm Methods 0.000 description 4
- 238000001514 detection method Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 238000010801 machine learning Methods 0.000 description 4
- 239000000463 material Substances 0.000 description 4
- 238000009877 rendering Methods 0.000 description 3
- 238000005070 sampling Methods 0.000 description 3
- 238000012216 screening Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 238000003780 insertion Methods 0.000 description 2
- 230000037431 insertion Effects 0.000 description 2
- 238000007477 logistic regression Methods 0.000 description 2
- 238000003058 natural language processing Methods 0.000 description 2
- 230000001537 neural effect Effects 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 239000005022 packaging material Substances 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 230000002087 whitening effect Effects 0.000 description 2
- 101100268665 Caenorhabditis elegans acc-1 gene Proteins 0.000 description 1
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 238000011478 gradient descent method Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000011835 investigation Methods 0.000 description 1
- 230000023886 lateral inhibition Effects 0.000 description 1
- 238000012886 linear function Methods 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 210000000653 nervous system Anatomy 0.000 description 1
- 238000012536 packaging technology Methods 0.000 description 1
- 238000003909 pattern recognition Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 230000003595 spectral effect Effects 0.000 description 1
- 230000001629 suppression Effects 0.000 description 1
- 230000000946 synaptic effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- 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
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F5/06—Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/0464—Convolutional networks [CNN, ConvNet]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Molecular Biology (AREA)
- Software Systems (AREA)
- Evolutionary Computation (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Mathematical Physics (AREA)
- General Health & Medical Sciences (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Neurology (AREA)
- Image Analysis (AREA)
- Measurement Of Velocity Or Position Using Acoustic Or Ultrasonic Waves (AREA)
- Ultra Sonic Daignosis Equipment (AREA)
Abstract
描述了在深度神經網路中利用啟動稀疏性的方法。該方法包括取回啟動張量和權重張量,其中啟動張量是稀疏啟動張量。該方法亦包括產生包括啟動張量的非零啟動的壓縮啟動張量,其中壓縮啟動張量的列少於啟動張量的列。該方法亦包括處理壓縮啟動張量和權重張量以產生輸出張量。
Description
本專利申請案主張享有於2018年9月28日提出申請的題為「EXPLOITING ACTIVATION SPARSITY IN DEEP NEURAL NETWORKS」的非臨時申請案第16/147,297號的優先權,該非臨時申請轉案讓給本案的受讓人,由此經由引用的方式明確地併入本文。
本案內容的某些態樣整體上係關於機器學習,具體而言,係關於在深度神經網路(DNN)中利用啟動稀疏性。
可以由互連的人工神經元組(例如,神經元模型)組成的人工神經網路是計算設備,或表示由計算設備執行的方法。這些神經網路可以用於各種應用及/或設備,諸如網際網路協定(IP)攝像機、物聯網路(IoT)設備、自動駕駛汽車及/或服務機器人。
迴旋神經網路是一種前饋人工神經網路。迴旋神經網路可以包括神經元集合,每個神經元都具有接收場並共同平鋪輸入空間。迴旋神經網路(CNN)有許多應用。尤其是,CNN已廣泛用於模式辨識和分類領域。
諸如深度信念網路和深度神經網路(DNN)的深度學習架構是分層的神經網路架構。在這些分層的神經網路架構中,第一層神經元的輸出成為第二層神經元的輸入,第二層神經元的輸出成為第三層神經元的輸入,依此類推。深度神經網路可以被訓練來辨識特徵的層級結構,因此它們已越來越多地用於物件辨識應用中。像迴旋神經網路一樣,這些深度學習架構中的計算可以分佈在一組處理節點上,這些處理節點可以配置在一或多個計算鏈中。這些多層架構可以一次被訓練一層,並且可以使用反向傳播進行微調。
具有迴旋層或完全連接層的深度學習神經網路使得能夠進行用於影像辨識、物件偵測和自然語言處理的處理。這些功能使得能夠支援自動駕駛應用以及內容感知相機處理。深度迴旋神經網路(DCN)在新興的嵌入式、可穿戴和物聯網路(IoT)市場中具有廣闊的應用前景。
儘管這些深度神經網路解決方案獲得了優異的結果,但是它們的計算複雜度卻過高。另外,模型的訓練可能具有挑戰性。
描述了一種在深度神經網路中利用啟動稀疏性的方法。該方法包括取回啟動張量和權重張量,其中啟動張量是稀疏啟動張量。該方法亦包括產生啟動張量的非零啟動的壓縮啟動張量,其中壓縮啟動張量的列少於啟動張量的列。該方法亦包括處理壓縮啟動張量和權重張量以產生輸出張量。
描述了用於利用啟動稀疏性的深度神經網路。深度神經網路包括乘法累加(MAC)硬體。深度神經網路亦包括耦合到MAC硬體的處理器。處理器被配置為取回啟動張量和權重張量,其中啟動張量是稀疏啟動張量。處理器亦被配置為產生包括啟動張量的非零啟動的壓縮啟動張量,其中壓縮啟動張量的列少於啟動張量的列。處理器亦被配置為處理壓縮啟動張量和權重張量以產生輸出張量。
描述了用於利用啟動稀疏性的深度神經網路。深度神經網路包括用於取回啟動張量和權重張量的單元,其中啟動張量是稀疏啟動張量。深度神經網路亦包括用於產生包括啟動張量的非零啟動的壓縮啟動張量的單元。壓縮啟動張量的列少於啟動張量的列。深度神經網路亦包括用於處理壓縮啟動張量和權重張量以產生輸出張量的單元。
已經相當廣泛地概述了本案內容的特徵和技術優點,以便可以更好地理解以下的實施方式。下面將描述本案內容的另外的特徵和優點。本發明所屬領域中具有通常知識者應當理解,本案內容可以容易地用作修改或設計用於實現本案內容的相同目的的其他結構的基礎。本發明所屬領域中具有通常知識者還應該認識到,這種等同構造不脫離如所附請求項中闡述的本案內容的教導。當結合附圖考慮時,將從以下描述中更好地理解被認為是本案內容的特徵的新穎特徵,關於其組織和操作方法,以及進一步的目的和優點。然而,應當明確地理解,提供每個附圖僅出於說明和描述的目的,並且不意欲作為對本案內容的限制的定義。
以下結合附圖闡述的實施方式意欲作為各種配置的描述,並非意欲表示可以實踐本文所述的概念的唯一配置。本實施方式包括具體細節,目的是提供對各種概念的透徹理解。然而,對於本發明所屬領域中具有通常知識者顯而易見的是,可以在沒有這些具體細節的情況下實踐這些概念。在某些情況下,以方塊圖形式圖示各種公知的結構和部件,以避免使得這些概念難以理解。
基於這些教導,本發明所屬領域中具有通常知識者應該理解,本案內容的範疇意欲覆蓋本案內容的任何態樣,無論是與本案內容的任何其他態樣獨立地實施還是組合地實施。例如,可以使用本文所闡述的任何數量的態樣來實施裝置或者實踐方法。此外,本案內容的範疇意欲涵蓋使用附加於所闡述的本案內容的各個態樣的或除所闡述的本案內容的各個態樣之外的其他結構、功能或結構和功能來實踐的這種裝置或方法。應當理解,所揭示的本案內容的任何態樣可以由請求項的一或多個要素體現。
在本文中使用詞語「示例性」來表示「用作實例、例子或說明」。本文描述為「示例性」的任何態樣不一定被解釋為優選的或優於其他態樣。
儘管本文描述了特定態樣,但是這些態樣的許多變化和排列皆屬於本案內容的範疇內。儘管提及了優選態樣的一些益處和優點,但是本案內容的範疇並非意欲限於特定的益處、用途或目的。相反,本案內容的各態樣意欲廣泛地應用於不同的無線技術、系統組態、網路和協定,其中一些在優選態樣的附圖和以下說明中作為實例示出。實施方式和附圖僅僅是對本案內容的說明而不是限制,本案內容的範疇由所附請求項及其等同變換限定。
具有迴旋層或完全連接層的深度學習神經網路使得能夠進行用於影像辨識、物件偵測和自然語言處理處理。這些特徵使得能夠支援用於自動駕駛應用以及內容感知相機處理。深度迴旋神經網路(DCN)在新興的嵌入式、可穿戴和物聯網路(IoT)市場中具有廣闊的應用前景。
在操作中,深度迴旋網路(或DCN)可以由大量的權重張量乘以啟動張量構成。這些權重張量和啟動張量使得在DCN的各種篩檢程式中能夠將輸入資料乘以權重。例如,可以經由非線性函數(例如,在DCN的前層中)饋送啟動張量。在使用校正線性單元(ReLU)非線性啟動函數的DCN中,相當大數量的啟動值為零。產生零啟動是因為ReLU非線性啟動函數通常被配置為將小於零的啟動值鉗制到零啟動值。因此,非零啟動值在使用ReLU非線性啟動函數的DCN中可以是稀疏的。
DCN通常由大量權重張量乘以啟動張量構成,以執行任務。因此,DCN在處理大量權重張量和啟動張量的乘法累加(MAC)運算時會消耗相當大量計算能力。但是,將權重乘以零啟動不會影響產生的MAC總和。因此,當在下一網路層處理零啟動時,MAC硬體時槽被浪費了。根據非零啟動值的數量,大量資源可能被浪費在零啟動上。相反,這些MAC時槽可以更好地用於有用的(非零)啟動計算。本案內容的各態樣描述了在深度神經網路(DNN)中利用啟動稀疏性的方法。
圖1圖示片上系統(SOC)100的實例實施方式,該片上系統100可以包括被配置為根據本案內容的各態樣利用啟動稀疏性的中央處理單元(CPU)102或多核CPU。變數(例如,神經訊號和突觸權重)、與計算設備相關聯的系統參數(例如,具有權重的神經網路)、延遲、頻點資訊和任務資訊可以儲存在與神經處理單元(NPU)108關聯的儲存塊中、與CPU 102相關聯的儲存塊中、與圖形處理單元(GPU)104相關聯的儲存塊中、與數位訊號處理器(DSP)106相關聯的儲存塊中、儲存塊118中,或可以跨多個塊分佈。在CPU 102處執行的指令可以從與CPU 102相關聯的程式記憶體中載入,或者可以從記憶體塊118中載入。
SOC 100亦可以包括針對特定功能而定製的附加處理塊,諸如連線性塊130,其可以包括第五代(5G)連線性、第四代長期進化(4G LTE)連線性、非授權的Wi-Fi連線性、USB連線性、藍芽連線性等,以及可以例如偵測和辨識手勢的多媒體處理器112。在一種實施方式中,NPU在CPU、DSP及/或GPU中實施。SOC 100亦可以包括感測器處理器114、影像訊號處理器(ISP)116及/或導航模組120,其可以包括全球定位系統。
SOC 100可以基於ARM指令集。在本案內容的態樣,載入到NPU 108中的指令可以包括用於在深度神經網路(DNN)中利用啟動稀疏性的代碼。
深度學習架構可以經由學習表示每層中相繼的更高級別抽象處的輸入,從而構建輸入資料的有用特徵表示來執行物件辨識任務。這樣,深度學習解決了傳統機器學習的主要瓶頸。在深度學習問世之前,針對物件辨識問題的機器學習方法可能嚴重依賴於人工設計的特徵,或者可能與淺分類器結合使用。淺分類器可以是兩類線性分類器,例如,其中可以將特徵向量分量的加權和與閾值進行比較,以預測輸入所屬的類別。人工設計的特徵可以是具有領域專業知識的工程師針對特定問題領域定製的範本或核心。相比之下,深度學習架構可以學習表示與人類工程師可能設計的特徵類似的特徵,但要經由訓練。此外,深度網路可以學習表示和辨識人類可能尚未考慮過的新型特徵。
深度學習架構可以學習特徵的層級。例如,若以視覺資料呈現,則第一層可以學習辨識輸入串流中的相對簡單的特徵,諸如邊緣。在另一實例中,若以聽覺資料呈現,則第一層可以學習辨識特定頻率中的頻譜功率。以第一層的輸出作為輸入的第二層可以學習辨識特徵的組合,諸如用於視覺資料的簡單形狀或用於聽覺資料的聲音的組合。例如,較高層可以學習表示視覺資料中的複雜形狀或聽覺資料中的詞語。更高層可以學習辨識常見的視覺物件或口頭短語。
深度學習架構在應用於具有自然層級結構的問題時可以表現特別出色。例如,機動車輛的分類可受益於首先學習辨識車輪、擋風玻璃和其他特徵。這些功能可以以不同方式在較高層被組合,以辨識汽車、卡車和飛機。
可以以各種連接模式設計神經網路。在前饋網路中,資訊從較低層傳遞到較高層,給定層之每一者神經元都與較高層中的神經元進行通訊。如前述,可以在前饋網路的連續層中構建層級表示。神經網路亦可以具有遞迴或回饋(亦稱為自上而下)連接。在遞迴連接中,來自給定層中的神經元的輸出可以被傳送到同一層中的另一神經元。遞迴架構可以有助於辨識跨以序列傳遞到神經網路的多於一個的輸入資料區塊的模式。從給定層中的神經元到較低層中的神經元的連接稱為回饋(或自上而下)連接。當高級概念的辨識可以幫助區分輸入的特定低級特徵時,具有許多回饋連接的網路可能會有所説明。
神經網路的各層之間的連接可以為完全連接或局部連接。圖2A圖示完全連接的神經網路202的實例。在完全連接的神經網路202中,第一層中的神經元可以將其輸出傳送給第二層之每一者神經元,從而第二層之每一者神經元將從第一層的每個神經元接收輸入。圖2B圖示局部連接的神經網路204的實例。在局部連接的神經網路204中,第一層中的神經元可以連接到第二層中的有限數量的神經元。更一般而言,局部連接的神經網路204的局部連接層可以被配置,以使該層之每一者神經元將具有相同或相似的連線性模式,但連接強度可能具有不同的值(例如210、212,214和216)。局部連接的連線性模式可以在較高層中引起空間上不同的接收場,因為給定區域中的較高層神經元可以接收到經由訓練而調整為網路總輸入的受限部分的屬性的輸入。
局部連接的神經網路的一個實例是迴旋神經網路。圖2C圖示迴旋神經網路206的實例。迴旋神經網路206可以被配置為使得與第二層中的對每個神經元的輸入相關聯的連接強度被共享(例如208)。迴旋神經網路可能非常適合輸入的空間位置有意義的問題。
一種類型的迴旋神經網路是深度迴旋網路(DCN)。圖2D圖示DCN 200的詳細實例,該DCN 200被設計為從來自影像擷取裝置230(例如車載攝像機)輸入的影像226中辨識視覺特徵。當前實例的DCN 200可以被訓練以辨識交通標誌和在交通標誌上提供的數位。當然,DCN 200可以被訓練用於其他任務,諸如辨識通道標記或辨識交通訊號燈。
可以利用監督學習訓練DCN 200。在訓練期間,DCN 200可以呈現影像,諸如限速標誌的影像226,隨後可以計算前向傳遞以產生輸出222。DCN 200可以包括特徵提取部分和分類部分。在接收到影像226時,迴旋層232可以將迴旋核(未圖示)應用於影像226以產生第一特徵圖集合218。作為實例,用於迴旋層232的迴旋核可以是5×5核心,其產生28×28個特徵圖。在本實例中,因為在迴旋層232處將四個不同的迴旋核應用於影像226,所以四個不同的特徵圖在第一特徵圖集合218中被產生。迴旋核亦可以稱為篩檢程式或迴旋篩檢程式。
第一特徵圖集合218可經由最大池化層(未圖示)被二次取樣以產生第二特徵圖集合220。最大池化層減小了第一特徵圖集合218的大小。亦即,第二特徵圖集合220的大小,諸如14×14,小於第一特徵圖集合218的大小,諸如28×28。減小的大小為後續層提供了類似的資訊,同時減少了記憶體消耗。可以經由一或多個後續迴旋層(未圖示)進一步對第二特徵圖集合220進行迴旋以產生一或多個後續特徵圖集合(未圖示)。
在圖2D的實例中,對第二特徵圖集合220進行迴旋以產生第一特徵向量224。此外,進一步對第一特徵向量224進行迴旋以產生第二特徵向量228。第二特徵向量228的每個特徵可以包括與影像226的可能特徵相對應的數位,諸如「標記」、「60」和「100」。softmax函數(未圖示)可以將第二特徵向量228中的數位轉換為概率。這樣,DCN 200的輸出222是影像226包括一或多個特徵的概率。
在本實例中,輸出222中「標記」和「60」的概率高於輸出222中其他(諸如「30」、「40」、「50」、「70、「80」、「90」和「100」 ) 的概率。在訓練之前,DCN200產生的輸出222可能不正確。因此,可以在輸出222和目標輸出之間計算誤差。目標輸出是影像226的實測資料(例如,「標記」和「60」)。隨後DCN 200的權重可以被調整,以使DCN200的輸出222與目標輸出更緊密地對準。
為了調整權重,學習演算法可以計算權重的梯度向量。梯度可以指示若權重被調整則誤差將增加或減少的量。在頂層,梯度可以直接對應於連接倒數第二層中的啟動神經元和輸出層中的神經元的權重的值。在較低層中,梯度可以取決於權重的值以及較高層的計算出的誤差梯度。隨後權重可以被調整以減小誤差。這種調整權重的方式可以稱為「反向傳播」,因為它涉及經由神經網路的「反向傳遞」。
實際上,可以在少量實例上計算權重的誤差梯度,使得計算出的梯度逼近真實誤差梯度。該逼近方法可以被稱為隨機梯度下降。隨機梯度下降可以被重複,直到整個系統可達到的誤差率停止降低或直到誤差率達到目標水平為止。在學習之後,DCN可以呈現新影像(例如,影像226的限速標誌),並且經由網路的前向傳遞可以產生可以被認為是DCN的推斷或預測的輸出222。
深度信念網路(DBN)是包括多個隱藏節點層的概率模型。DBN可以用於提取訓練資料集的分層表示。DBN可以經由堆疊限制性Boltzmann機器(RBM)的層來獲得。RBM是一種人工神經網路,其能夠學習輸入集合的概率分佈。由於RBM能夠在沒有有關每個輸入應被分類到的類別的資訊的情況下學習概率分佈,因此RBM經常用於無監督學習中。使用混合的無監督和有監督範式,DBN的底部RBM可以以無監督的方式被訓練,並且可以充當特徵提取器,頂部RBM可以以有監督的方式(在來自前一層的輸入和目標類別的聯合分佈上)被訓練,並可用作分類器。
深度迴旋網路(DCN)是迴旋網路的網路,其配置有附加的池化和正規化層。DCN在許多工上都達到了最先進的效能。DCN能夠使用有監督的學習進行訓練,其中輸入和輸出目標對於許多實例都是已知的,並且可以用於經由使用梯度下降方法來修改網路的權重。
DCN可以是前饋網路。另外,如前述,從DCN的第一層中的神經元到下一個更高層中的神經元組的連接跨第一層的神經元被共享。DCN的前饋和共用連接可用於快速處理。例如,與包含遞迴或回饋連接的類似大小的神經網路相比,DCN的計算負擔可以小得多。
迴旋網路的每一層的處理可以被認為是空間不變的範本或基礎投影。若首先將輸入分解為多個通道,例如彩色影像的紅色、綠色和藍色通道,則可以將在該輸入上訓練的迴旋網路認為是三維的,其中沿影像的軸具有兩個空間維度,第三維擷取顏色資訊。迴旋連接的輸出可以被認為在後續層318和320中形成了特徵圖,其中特徵圖(例如320)的每個元素皆從前一層(例如318)中的一系列神經元並從多個通道之每一者通道接收輸入。特徵圖中的值可以用非線性(諸如校正)max(0, x)進一步處理。來自相鄰神經元的值可以被進一步池化,這對應於向下取樣,並且可以提供附加的局部不變性和降維。對應於白化的正規化亦可以經由特徵圖中神經元之間的橫向抑制來被應用。
深度學習架構的效能可以隨著更多有標籤資料點變得可用或隨著計算能力增加而提高。對現代深度神經網路的一般訓練使用比僅十五年前典型研究人員可用的大數千倍的計算資源。新的架構和訓練範例可以進一步提高深度學習的效能。校正後的線性單位可以減少稱為消失梯度的訓練問題。新的訓練技術可以減少過度擬合,從而使較大的模型能夠實現更好的泛化。封裝技術可以提取給定接收場中的資料,並進一步提高整體效能。
圖3是示出深度迴旋網路350的方塊圖。深度迴旋網路350可以包括基於連線性和權重共用的多種不同類型的層。如圖3所示,深度迴旋網路350包括迴旋塊354A、354B。迴旋塊354A、354B之每一者迴旋塊可以配置有迴旋層(CONV)356、正規化層(LNorm)358和最大池化層(MAX POOL)360。
迴旋層356可以包括一或多個迴旋篩檢程式,該迴旋篩檢程式可以被應用於輸入資料以產生特徵圖。儘管僅圖示迴旋塊中的兩個迴旋塊354A、354B,但是本案內容不限於此,而是根據設計偏好,任何數量的迴旋塊354A、354B可以包括在深度迴旋網路350中。正規化層358可以正規化迴旋篩檢程式的輸出。例如,正規化層358可以提供白化或橫向抑制。最大池化層360可以提供空間上的下取樣聚合以用於局部不變性和降維。
例如,深層迴旋網路的並行篩檢程式組可以被載入在SOC 100的CPU 102或GPU 104上,以實現高效能和低功耗。在替代實施例中,並行篩檢程式組可以被載入在SOC 100的DSP 106或ISP 116上。此外,深度迴旋網路350可以存取SOC 100上可以存在的其他處理塊,諸如分別專用於感測器和導航的感測器處理器114和導航模組120。
深度迴旋網路350亦可以包括一或多個完全連接的層362(FC1和FC2)。深度迴旋網路350可以進一步包括邏輯回歸(LR)層364。在深度迴旋網路350的每層356、358、360、362、364之間是要更新的權重(未圖示)。層(例如356、358、360、362、364)中的每層的輸出可以用作深度迴旋網路350中的層(例如356、358、360、362、364)中的一個後續層的輸入,以從在第一個迴旋塊354A處提供的輸入資料352(例如,影像、音訊、視訊、感測器資料及/或其他輸入資料)中學習分層特徵表示。深度迴旋網路350的輸出是對輸入資料352的分類分數366。分類分數366可以是概率集合,其中每個概率是輸入資料包括來自特徵集合中的一個特徵的概率。
圖4是圖示可以模組化人工智慧(AI)功能的示例性軟體架構400的方塊圖。根據本案內容的各態樣,使用該架構,應用程式可以被設計為可以導致SOC 420的各種處理塊(例如,CPU 422、DSP 424、GPU 426及/或NPU 428)在AI應用402的執行時操作期間在計算中來利用啟動稀疏性。
AI應用402可以被配置為調用在使用者空間404中定義的功能,該等功能可以例如提供對指示設備當前在其中操作的位置的場景的偵測和辨識。AI應用402可以例如根據所辨識的場景是辦公室、演講廳、飯店還是例如湖泊的室外環境來不同地配置麥克風和照相機。AI應用程式402可以請求與AI功能應用程式設計發展介面(API)406中定義的庫相關聯的編譯器代碼。該請求最終可以依賴於深度神經網路的輸出,該深度神經網路被配置為基於例如視訊和定位資料提供推斷回應。
可以是執行時框架的編譯代碼的執行時引擎408可以由AI應用程式402進一步存取。AI應用程式402可以使執行時引擎例如以特定的時間間隔或由應用程式的使用者介面偵測到的事件觸發來請求推斷。當導致提供推斷回應時,執行時引擎可以繼而將訊號發送到在SOC 420上執行的作業系統(OS)空間410(諸如Linux核心412)中的作業系統。作業系統繼而可以在CPU 422、DSP 424、GPU 426、NPU 428或其某種組合上執行的計算中利用啟動稀疏性。CPU 422可以直接被作業系統存取,並且可以經由驅動程式(諸如分別用於DSP 424、GPU 426或NPU 428的驅動程式414、416或418)存取其他處理塊。在該示例性實例中,深度神經網路可以被配置為在處理塊的組合上執行,諸如CPU 422、DSP 424和GPU 426,或者可以在NPU 428上執行。
圖5是示出用於計算深度神經網路(DNN)500中的啟動和權重的點積的向量通路的方塊圖。該實例圖示處理DNN 500層的一部分,其中X*I啟動張量和W*I權重張量從記憶體中被取回。圖5示出其中X=5、I=8和W=9的簡化實例,以避免使本案內容的細節難以理解。處理DNN 500的層可以包括使用乘法累加(MAC)硬體540計算啟動張量510的每一列與權重張量550的每一列的點積。在此實例中,360(=5*8*9)個乘積的計算能夠在45(X*W)個時鐘週期內完成。值得注意的是,啟動張量510具有許多零值。具有零值的啟動的處理可能是浪費的。本案內容的各態樣利用由零值啟動引起的啟動稀疏性來減少所執行的乘法的總數。如下詳述,壓縮和重新佈置啟動張量510的非零值允許在更少的時鐘週期中計算DNN 500的層的輸出。
DNN 500中的啟動可以被理解為表示為3D啟動張量的啟動塊,包括X分量、Y分量和位置分量(例如,啟動在音訊/視訊串流中的相應取樣位置/圖元位置)。在該實例中,啟動張量510可以被表示為具有從A(1, 1)到A(I, X)的元素的I*X陣列。另外,權重張量550可以被表示為具有從B(1, 1)到B(I, W)的元素的I*W陣列。然而,為了避免使附圖過於擁擠,在附圖中圖示啟動張量510和權重張量550的元素,其中數位元表示通道(例如,I通道的),陰影表示列。啟動張量510和權重張量550的計算乘積可以被儲存在記憶體中,以用於在DNN 500的下一層進行處理。
如圖5所示,啟動張量510的每個陰影(例如,源列)可以對應於來自不同輸入位置的啟動。不同輸入位置(例如,源列的編號)可以與DNN 500的前一層中的不同元素(例如,元素的編號)相關。此外,啟動張量510的每個通道標籤(例如0-7)可以包括不同的啟動值。亦即,啟動張量510的通道標籤(例如,0-7)不指示啟動的值。例如,I個通道可以與DNN 500的前一層中的篩檢程式的數量相關。此外,權重張量550的值從記憶體中讀取。權重張量550的權重W的數量可以與當前層的篩檢程式的數量相關,其應該對應於下一層中的通道的數量。
在操作中,乘法累加(MAC)硬體540計算權重張量550的每個權重列與啟動張量510的每一列的點積,每個時鐘週期一個點積。在該實例中,MAC硬體540利用對應的MAC單元處理每個乘法器/向量通路(例如,541、542、543、544、545、546、547和548)。值得注意的是,零啟動對點積沒有任何貢獻,但是消耗了乘法器/向量通路(例如,541、542、543、544、545、546、547和548)以及時鐘週期。這浪費了DNN 500可用的寶貴資源。
特別地,當在去除零值啟動的情況下啟動張量510被查看時,在DNN 500的前一層中應用校正線性單元(ReLU)非線性啟動函數來計算啟動張量510會導致稀疏啟動520。值得注意的是,相當大量的啟動值是零,其中零啟動值被顯示為空白(例如,零啟動521)。產生零啟動的原因是因為ReLU非線性啟動函數通常被配置為將小於零的啟動值鉗位到前一層的零啟動值。圖示稀疏啟動520中的非零啟動值,包括其對應的通道及其陰影以指示其原始位置。
如在稀疏啟動520中進一步示出的,圖示列530,其包括在通道0、3、5和6(對應於乘法器/向量通路541、544、546和547)中的零啟動。如前述,在與列530相對應的時鐘週期期間,經由MAC硬體540在這些零啟動上計算點積會浪費MAC硬體540的資源。在列530中,空白行中沒有執行有價值的工作,因為當啟動值為零時,由MAC單元計算的點積為零。亦即,乘以零時沒有任何有用的工作要執行。因此,對於零啟動值,MAC硬體540的乘法器/向量通路(例如541、544、546和547)實際上是空的。
如經由稀疏啟動520應該認識到的,啟動張量510的給定行可以高度相關。例如,與MAC硬體540的乘法器/向量通路相對應的啟動張量510的一些通道具有大量要執行的計算。相比之下,啟動張量510的其他通道所對應的MAC硬體540的向量通路(例如541、542、543、544、545、546、547和548)由於增大數量的零啟動而具有最少量要執行的計算。在本案內容的各態樣中,例如,如圖6所示,非零啟動在時間(和時鐘週期)上被重新分配給MAC硬體540的空乘法器/向量通路。如本文所述,非零啟動在時間和時鐘週期上的重新分配給空乘法器/向量通路可以稱為通路晃動。當在時鐘週期內處理非零啟動的乘法器/向量通路數量小於MAC硬體540的向量寬度(例如=八(8))時,將出現空的乘法器/向量通路。
圖6是根據本案內容的各態樣的進一步示出圖5的乘法累加(MAC)硬體的乘法器/向量通路,以計算深度神經網路(DNN)600中的稀疏啟動和權重的點積。在本案內容的這個態樣,非零啟動被打包到MAC硬體540的乘法器/向量通路中,以避免由於處理零啟動值而在時鐘週期期間浪費處理資源。
在此實例中,將啟動張量510示出為X個啟動的s行(例如0-3)的第一多通路段610(例如,第一輸入串流),該X個啟動可以使用MAC硬體540的乘法器/向量通路(例如,541至544)中的任何相應的一個乘法器/向量通路。此外,X個啟動的s行的第二多通路段612(例如,第二輸入串流)可以被重新分配(例如,啟動晃動)給乘法器/向量通路(例如545至548)中的任何相應的一個乘法器/向量通路。亦即,跨MAC硬體540的乘法器/向量通路(例如,541到544或545到548)的啟動晃動增大了對非零啟動的處理。在該實例中,來自第一多通路段610的啟動經由使用段內通路晃動以最大密集的形式被打包(例如壓縮)到先進先出(FIFO)緩衝區660(或記憶體緩衝區)中。亦即,FIFO緩衝區660僅包括在第一壓縮啟動列662和第二壓縮啟動列664中的第一多通路段610的非零啟動。
根據圖6所示的配置,第一多通路段610的稀疏啟動520顯示為五列。第一列522包括來自通道一(1)和二(2)的非零啟動。第二列524包括來自通道0和2的啟動。第三列526包括來自通道1的單個啟動。第四列528包括來自通道0和3的啟動。此外,第五列529包括來自通道0和2的啟動。應該認識到,各個列(例如522-529)包括具有相同源列(此處顯示為灰階級陰影)的非零啟動。為了簡化對本案內容的解釋,圖示各種灰階級陰影以表示不同的列。儘管描述為灰色陰影,但僅出於說明目的而提供,使得陰影通常指示相應的輸入位置。
在此配置中,FIFO緩衝區660之每一者FIFO緩衝區在FIFO緩衝區660之每一者FIFO緩衝區的輸入處包括S:1多工器(未圖示)。S:1多工器能夠將稀疏啟動520打包到FIFO緩衝區660中。在該實例中,來自第二列524的啟動與來自稀疏啟動520的第一列522的啟動被打包到FIFO緩衝區660的第一列662中。類似地,來自稀疏啟動520的第三列526、第四列528和第五列529的啟動被打包到FIFO緩衝區660的第二列664中。來自稀疏啟動520的第五列529的通道2的啟動被儲存在FIFO緩衝區660的未滿的第三列668中。
繪製演算法可以將啟動打包在FIFO緩衝區660中。例如,繪製演算法可以用於從啟動張量510的第一多通路段610填充FIFO緩衝區660。在該實例中,繪製功能經由向下遍歷經由稀疏啟動520並用非零啟動值填充FIFO緩衝區660來進行操作。例如,圖示箭頭以圖示將稀疏啟動520的第一列522和第二列524打包在FIFO緩衝區660的第一列中。根據本案內容的各態樣,FIFO緩衝區可以包括多工器(未圖示),其可以用於實現啟動張量510的非零啟動的繪製功能和壓縮功能。
根據本案內容的各態樣,經由限制FIFO緩衝區660的壓縮啟動列(例如662、664和668)來控制硬體複雜度。在該配置中,FIFO緩衝區的壓縮啟動列限於K個(例如兩個)源列。因此,來自稀疏啟動520的源列(例如522、524、526、528和529)的啟動值可以被移動到FIFO緩衝區660的其他壓縮啟動列,以當儲存在記憶體中以供MAC硬體540進行處理時,滿足但不超過源列約束,如下面進一步詳細描述的。
一旦載入到FIFO緩衝區660的壓縮啟動列中,來自FIFO緩衝區660的壓縮啟動列的啟動就可以從FIFO緩衝區660中彈出,並以其中繼資料寫入緊密耦合的記憶體(TCM 670)中以供MAC硬體540在乘法器/向量通路(例如541、542、543或544)的相應的一個乘法器/向量通路上進行處理。但是,在此實例中,將啟動寫入與TCM 670的列(例如672、674、678)相對應的向量通路(例如541、542、543和544)與啟動在FIFO緩衝區660的壓縮啟動列(例如662、664、668)中的佈置不匹配。不匹配是由於對FIFO緩衝區660的每個壓縮啟動列的不同源列(例如灰階級啟動)數量實施限制引起的。亦即,在TCM 670的單個列中僅來自啟動張量510的第一多通路段610的兩個源列(例如兩個灰階級)的啟動被允許。在該實例中,源列約束是每列的K個源列啟動(例如,兩個灰階級啟動),可以稱為最大乘積數量。
在本案內容的這一態樣,因為通道0的啟動被寫入TCM 670的第三列678,所以FIFO緩衝區660的第二列664與TCM 670的第二列674不匹配。亦即,在TCM 670的第二列674中包括通道0的啟動將由於在TCM 670的壓縮啟動的第二列674中具有三個不同灰階級啟動而違反源列約束。如本文所述,TCM 670的啟動列可以稱為壓縮啟動列,而TCM 670的內容可以稱為壓縮啟動張量。結果,零啟動值676被載入到TCM 670中並被載入到乘法器/向量通路544上。此外,非零啟動677被載入到TCM 670中並映射到乘法器/向量通路544上以供在隨後的時鐘週期期間進行處理。在本案內容的各態樣,耦合到MAC硬體540的至少一個處理器(未圖示)被配置為將啟動張量510的非零啟動重新分配到可用位置。
在操作中,與啟動的灰階級(原始源列)和數量(原始行/通道)有關的中繼資料儲存在TCM 670中,以指導例如多工器提供權重張量550的相應權重列。中繼資料被寫入TCM 670,以便MAC硬體540的每個乘法器將權重張量550的權重行與相應啟動的通道通路相匹配。MAC硬體540可以包括算數邏輯單位(ALU),以計算非零啟動乘以權重張量550對應於通道的一個權重的點積。在該實例中,與啟動張量510相關聯的數位可以指示輸入通道。另外,啟動張量510的陰影指示來自輸入的取樣(例如,具有許多輸入通道值的圖元)。權重張量550的陰影指示輸出通道(或篩檢程式)。例如,來自TCM 670的第一列672中的通道1的啟動乘以權重張量550的列552中的權重(例如,對應於通道一(1)),其中還顯示了列554。在每個時鐘週期中針對TCM 670的相應列中的啟動之每一者啟動來執行該操作。
圖7是示出根據本案內容各態樣的支援圖6的DNN 600的配置的乘法累加(MAC)硬體700的方塊圖。在該配置中,圖示S個乘法器740以及K個累加器樹。第一累加器樹780包括第一加法器782和第一累加器784。另外,第二累加器樹包括第二加法器786和第二累加器788。儘管針對啟動的兩個源列(例如,K=2)和八個乘法器(例如,S=8)圖示MAC硬體的這種配置,但應該認識到其他配置也是可能的。在所示的配置中,相對於K個累加器樹的K值,可以降低並且可以調整硬體成本。在這種配置中,每個時鐘週期可以計算多達K個不同的點積結果,其中K個累加器樹可以在每個時鐘週期之後被清空,並根據源列約束分配給新的乘法器/向量通路。
在該實例中,MAC硬體700被配置為處理在TCM記憶體670中重新排列的第一多通路段610和第二多通路段612的啟動,以減少零值啟動的處理,如圖6所述。如圖7所示,TCM記憶體670,包括重新排列的/晃動的啟動,經受到多個不同的源列(=2)。使用TCM 670中的啟動的不同陰影來顯示該約束。由於該實例限於兩個不同數量的源列的源列約束,因此簡化了用於MAC硬體700的累加器的實現。特別地,該配置可以用兩個加法器(例如782和792)和兩個相應的累加器(例如784和794)來實現,如下文更詳細地描述。
在該實例中,在不使本案內容的細節難以理解的情況下,來自圖6中的權重張量550的列552和列554被水平旋轉以表示權重張量550。在每個時鐘週期期間,使用多工器750(750-1、750-2、750-3、750-4、750-5、750-6、750-7和750-8)將TCM 670列的啟動乘以相應的權重。例如,對於TCM 670的第一列672中的第一啟動730,多工器750-1被配置為路由與通道1相對應的每個權重以匹配第一啟動730的通道。類似地,對於第二啟動732,多工器750-2被配置為路由與通道2相對應的每個權重以匹配第二啟動732的通道。此外,多工器750-3被配置為路由與通道0相對應的每個權重以匹配第一列672中的第三啟動734的通道。多工器750-4亦被配置為路由與通道2相對應的每個權重以匹配第一列中的第四啟動736的通道。
取決於啟動的源列(以填充圖案顯示),乘積被發送到K個累加器的適當累加器樹。如本文所述,累加器樹集體代表加法器和累加器的組合。例如,第一累加器樹可以代表第一加法器782和第一累加器784的組合。另外,第二累加器樹可以代表第二加法器786和第二累加器788的組合。
在該配置中,儲存的中繼資料用於決定點積被發送到的累加器樹。例如,來自TCM 670的第一列672的第一啟動730和第二啟動732具有相同的源列,因此被路由到第一累加器樹780的第一加法器782和第一累加器784(acc0)。相反,來自TCM 670的第一列672的第三啟動734和第四啟動736被路由到第二累加器樹790的第二加法器792和第二累加器794(acc1)。加法器(例如,782和792)將乘積相加並將其發送到相應的累加器(例如784和794)。在源列的處理完成之後,第一累加器樹780被彈出,並且啟動的源列被發送到第一累加器樹780和第二累加器樹790,以用於TCM 670的下一列。非零啟動輸入張量和權重張量的處理是由第一累加器樹780和第二累加器樹790執行的以產生輸出張量702。
圖8是示出根據本案內容各態樣的當偵測到啟動張量810的空串流(例如,第二多通路814)時乘法累加(MAC)硬體的乘法器/向量通路(例如,541、……、548)的方塊圖800。在該實例中,第一多通路段812和第二多通路段814被示出為啟動張量810的第一輸入串流和第二輸入串流。與圖5-7中所示的配置相反,第二多通路段814的通道(例如,4-7)為空。當啟動張量810的通道數量小於MAC硬體540的向量寬度(例如,八)時,會發生這種情況。亦即,儘管在該實例中MAC硬體540的向量寬度為八,但是由於第二多通路段814為空,所以啟動張量810限於第一多通路段812中的四個通道。然而,代替允許一半的MAC硬體540保持閒置,引入了人工稀疏性以在MAC硬體540上分佈第一多通路段812的四個通道以使資源利用最大化。
一旦第二多通路段814被偵測到為空,則控制邏輯(例如,SOC 100)可以被配置為跨MAC硬體540的乘法器/向量通路分佈啟動張量810的第一多通路段812。該程序包括將來自不同通道通路的非零啟動封包到啟動組820中,包括第一啟動組822和第二啟動組824。如圖8所示,啟動的啟動組的數量(例如822和824)小於啟動張量810的第一多通路段812的通道深度。啟動組(例如822和824)包括多個非零通道和零通道。另外,組深度乘以組的數量等於MAC硬體540的處理向量寬度。在該配置中,來自第一啟動組822的非零啟動被打包到FIFO緩衝區860中。類似地,來自第二啟動組824的非零啟動被打包到FIFO緩衝區862中。隨後,非零啟動從FIFO緩衝區860和FIFO緩衝區862中彈出並儲存在TCM記憶體870和TCM記憶體872中以供在MAC硬體540的向量通路上進行處理,以計算啟動和權重張量850的權重的點積。
如圖8所示,到FIFO緩衝區(例如860和862)和TCM記憶體(例如870和872)的打包程序類似於圖6中所示的方法。儘管MAC硬體540的一些資源在某些時鐘週期期間可以不使用,但根據源列啟動約束,使用人工稀疏性和FIFO緩衝區(例如860和862)和TCM記憶體(例如870和872)的打包減少了遇到空的啟動通道時浪費的資源量。圖9中圖示利用啟動稀疏性的程序。
圖9圖示根據本案內容各態樣的利用啟動稀疏性來提高乘法累加(MAC)硬體的效率的方法。方法900開始於方塊902,其中當啟動張量的通道數量小於機器的處理向量寬度時,稀疏啟動的啟動張量的多通路段的可變數量的通道被重新分配到數量小於第一多通路段的通道深度的多個啟動組中。例如,如圖8所示,圖示啟動張量810的第一多通路段812(例如,第一輸入串流)和第二多通路段814(第二輸入串流)。第一多通路段812具有四個啟動通路的通道深度。因為啟動張量810的通道的數量(= 4)小於機器的處理向量寬度(= 8),所以第一多通路段812包括啟動,而第二多通路段814為空。在該實例中,啟動張量810的第一多通路段812被分配到啟動組中,包括第一啟動組822和第二啟動組824。
再次參考圖9,在方塊904中,來自每組的非零啟動被打包到向量通路中。例如,如圖8所示,來自第一啟動組822的非零啟動被打包到FIFO緩衝區860中。類似地,來自第二啟動組824的非零啟動被打包到FIFO緩衝區862中。隨後,非零啟動從FIFO緩衝區860和FIFO緩衝區862彈出,並儲存在TCM記憶體870和TCM記憶體872中,以供在MAC硬體540的向量通路上進行處理。
在方塊904中,當對每個向量運算的唯一計算數量的約束被超出時,人工零啟動被插入到向量通路中。例如,如圖6所示,零啟動值676被插入到對應於通道3的向量通路的第二列674中。此外,非零啟動(通道0)被載入到對應於向量通路的第三列678處的通道3的向量通路上,其對應於下一時鐘週期。當打包到MAC硬體540的向量通路上的非零啟動輸入值組包括數量大於MAC硬體540的最大乘積數的多個不同源位置(例如,通道號)時,可能會違反該約束。
在方塊906中,啟動的輸入張量被處理以獲得輸出張量。例如,如圖7所示,啟動的輸入張量(例如,啟動張量510)和權重張量(例如,權重張量550)的處理是由MAC硬體執行的以產生輸出張量702。該程序可以包括決定啟動的輸入張量的非零啟動的原始通道通路(例如,通道),以辨識相應的權重張量。該程序亦包括在方塊908處計算啟動張量的非零啟動與對應於非零啟動的原始通道通路的權重張量的點積,以獲得輸出張量。
在一種配置中,機器學習模型被配置用於從DNN的中間層接收啟動。該模型亦被配置用於根據閒置向量通路分佈稀疏啟動。該模型亦被配置用於追蹤啟動的分佈,以實現啟動與相應權重張量的點積計算,並在空的啟動通道被偵測到時引入人工稀疏性。
在某些態樣,方法900可以由SOC 100(圖1)執行。亦即,方法900的元素之每一者元素可以例如但不限於由SOC 100或一或多個處理器(例如,CPU 102及/或NPU 108)及/或其中包括的其他部件來執行。
本案內容的各態樣跨乘法累加(MAC)硬體的向量通路分佈工作,以提高乘法器利用率。經由將稀疏啟動壓縮到向量通路上以最小化用於每個時鐘週期的空的(例如,包括零啟動)向量通路的數量,來跨MAC硬體的向量通路分佈工作。另外,經由在寫入到片上記憶體之前從啟動資料中去除壓縮的零來減少片上記憶體的頻寬和功率,從而提高了深度神經網路(DNN)的操作效率。本案內容的各態樣亦使用了晃動約束(跨S行的最大晃動)和累加器約束(最大不同源列數量)來權衡面積/功率成本與效率。當輸入通道的數量小於機器的向量寬度時,導致空的啟動通道,因此人工稀疏性被引入,以跨MAC硬體的向量通路分佈非空通道的啟動。本案內容的各態樣支援有效執行形狀不完美地映射到向量單位寬度的層(例如,圖元值/音訊取樣)。本案內容的各態樣壓縮稀疏啟動以加速處理。亦即,將向量中的多個元素被重新映射以避免閒置時槽。
該模型包括用於分配的單元、用於打包非零啟動的單元、用於插入的單元以及用於處理的單元。該模型亦包括用於計算的單元、用於偵測的單元、用於決定啟動的輸入張量的原始通道通路的單元、用於繪製的單元、用於重新分配的單元以及用於多工權重張量的權重的單元。在一態樣,分配單元、打包單元、插入單元、用於多工的單元、用於繪製的單元、用於重新分配的單元及/或處理單元可以是被配置為執行所述功能的多工器750、CPU 102、與CPU 102關聯的程式記憶體、記憶體塊118、與NPU 108相關聯的NPU 108程式記憶體、CPU 422及/或NPU 428。在另一種配置中,前述單元可以是配置成執行前述單元所列舉的功能的任何模組或任何裝置。
上述方法的各種操作可以由能夠執行相應功能的任何合適的單元來執行。該單元可以包括各種硬體及/或軟體部件及/或模組,包括但不限於電路、特殊應用積體電路(ASIC)或處理器。一般而言,在圖中示出的操作的情況下,這些操作可以具有對應的具有相似編號的單元加功能部件。
如本文所使用的,術語「決定」包含各種各樣的操作。例如,「決定」可以包括計算、運算、處理、匯出、調查、檢視(例如在表、資料庫或其他資料結構中檢視)、查明等。此外,「決定」可以包括接收(例如,接收資訊)、存取(例如,存取記憶體中的資料)等。此外,「決定」可以包括求解、選擇、選取、建立等。
如本文所使用的,提及項目列表中的「至少一個」的短語是指這些項目的任何組合,包括單個成員。作為實例,「a,b或c中的至少一個」意欲覆蓋a、b、c、a-b、a-c、b-c和a-b-c。
結合本案內容說明的各種說明性邏輯區塊、模組和電路可以用設計為執行本文所述功能的通用處理器、數位訊號處理器(DSP)、特殊應用積體電路(ASIC)、現場可程式設計閘陣列(FPGA)或其他可程式設計邏輯裝置(PLD)、個別閘門或電晶體邏輯、個別硬體部件或其任何組合來實施或執行。通用處理器可以是微處理器,但是在可替換方案中,處理器可以是任何商業上可獲得的處理器、控制器、微控制器或狀態機。處理器亦可以實施為計算設備的組合,例如DSP和微處理器的組合、複數個微處理器、一或多個微處理器結合DSP核心或任何其他此類配置。
結合本案內容描述的方法或演算法的步驟可以直接體現在硬體中、由處理器執行的軟體模組中或兩者的組合中。軟體模組可以常駐在本發明所屬領域已知的任何形式的儲存媒體中。可以使用的儲存媒體的一些實例包括隨機存取記憶體(RAM)、唯讀記憶體(ROM)、快閃記憶體、可抹除可程式設計唯讀記憶體(EPROM)、電子可抹除可程式設計唯讀記憶體(EEPROM)、暫存器、硬碟、抽取式磁碟、CD-ROM等。軟體模組可以包括單個指令或多個指令,並且可以分佈在幾個不同程式碼片段上、不同程式中,以及多個儲存媒體上。可以將儲存媒體耦合到處理器,使得處理器可以從該儲存媒體讀取資訊,並可以向該儲存媒體寫入資訊。可替換地,儲存媒體可以與處理器整合在一起。
本文揭示的方法包括用於實現該方法的一或多個步驟或操作。方法步驟及/或操作可以彼此互換而不脫離請求項的範疇。亦即,除非指定了步驟或操作的特定順序,否則在不脫離請求項的範疇的情況下,可以修改具體步驟及/或操作的順序及/或使用。
所描述的功能可以以硬體、軟體、韌體或其任何組合來實現。若以硬體實現,則實例硬體設定可以包括設備中的處理系統。處理系統可以用匯流排架構來實施。匯流排可以包括任何數量的互連匯流排和橋接器,這取決於處理系統的具體應用和整體設計約束。匯流排可以將各種電路連結在一起,包括處理器、機器可讀取媒體和匯流排介面。匯流排介面可以用於經由匯流排將網路介面卡等連接到處理系統。網路配接器可以用於實施訊號處理功能。對於某些態樣,使用者介面(例如輔助鍵盤、顯示器、滑鼠、操縱桿等)亦可以連接到匯流排。匯流排亦可以連結諸如定時源、周邊設備、電壓調節器、電源管理電路等的各種其他電路,這在本發明所屬領域中是公知的,因此將不再進一步說明。
處理器可以負責管理匯流排和一般處理,包括執行儲存在機器可讀取媒體上的軟體。處理器可以用一或多個通用及/或專用處理器實施。實例包括微處理器、微控制器、DSP處理器以及可以執行軟體的其他電路。不論被稱為軟體、韌體、仲介軟體、微代碼、硬體描述語言或其他的,軟體應被廣義地解釋為表示指令、資料或其任何組合。作為實例,機器可讀取媒體可以包括例如隨機存取記憶體(RAM)、快閃記憶體、唯讀記憶體(ROM)、可程式設計唯讀記憶體(PROM)、可抹除可程式設計唯讀記憶體(EPROM)、電子可抹除可程式設計唯讀記憶體(EEPROM)、暫存器、磁碟、光碟、硬碟或任何其他合適的儲存媒體或其任何組合。機器可讀取媒體可以體現在電腦程式產品中。該電腦程式產品可以包括包裝材料。
在硬體實施方式中,機器可讀取媒體可以是與處理器分離的處理系統的一部分。然而,如本發明所屬領域中具有通常知識者將容易理解的,機器可讀取媒體或其任何部分可以在處理系統外部。作為實例,機器可讀取媒體可以包括傳輸線,由資料調制的載波及/或與設備分離的電腦產品,所有這些皆可以由處理器經由匯流排介面來存取。可替代地或補充地,機器可讀取媒體或其任何部分可以被整合到處理器中,例如快取記憶體及/或通用暫存器檔的情況。儘管可以將所論述的各種部件描述為具有特定位置,例如本機部件,但是它們亦可以以各種方式進行配置,例如將某些部件配置為分散式運算系統的一部分。
處理系統可以被配置為通用處理系統,其中一或多個微處理器提供處理器功能,而外部記憶體提供機器可讀取媒體的至少一部分,所有這些都經由外部匯流排架構與其他支援電路連結在一起。可替換地,處理系統可以包括一或多個神經形態處理器,用於實現本文所述的神經元模型和神經系統模型。作為另一種選擇,處理系統可以使用具有處理器的特殊應用積體電路(ASIC)、匯流排介面、使用者介面、支援電路以及整合在單個晶片中的機器可讀取媒體的至少一部分,或者使用一或多個現場可程式設計閘陣列(FPGA)、可程式設計邏輯裝置(PLD)、控制器、狀態機、閘控邏輯、個別硬體部件或任何其他合適的電路,或能夠執行貫穿本案內容描述的各種功能的電路的任何組合來實現。本發明所屬領域中具有通常知識者將認識到,根據特定應用和施加在整個系統上的整體設計約束,如何最好地實現針對處理系統的所描述功能。
機器可讀取媒體可以包括多個軟體模組。軟體模組包括當由諸如處理器的裝置執行時使處理系統執行各種功能的指令。軟體模組可以包括傳輸模組和接收模組。每個軟體模組可以常駐在單個儲存設備中或者分佈在多個儲存設備上。作為實例,當觸發事件發生時,軟體模組可以從硬碟載入到RAM中。在執行軟體模組期間,處理器可以將一些指令載入到快取記憶體中以增加存取速度。隨後可以將一或多個快取記憶體行載入到通用暫存器檔中以供處理器執行。當下面提及軟體模組的功能時,應當理解,當從該軟體模組執行指令時,這種功能由處理器來實現。此外,應當理解,本案內容的各態樣導致對實現這些態樣的處理器、電腦、機器或其他系統的功能的改進。
若以軟體實施,則可以作為電腦可讀取媒體上的一或多個指令或代碼來儲存或發送功能。電腦可讀取媒體包括電腦儲存媒體和通訊媒體,通訊媒體包括有助於將電腦程式從一個地方傳送到另一個地方的任何媒體。儲存媒體可以是能夠由電腦存取的任何可用媒體。作為實例而非限制,這種電腦可讀取媒體可以包括RAM、ROM、EEPROM、CD-ROM或其他光碟儲存、磁碟儲存或其他磁性存放裝置,或可用於以指令或資料結構的形式承載或儲存所需的程式碼並且可以由電腦存取的任何其他媒體。此外,任何連接被適當地稱為電腦可讀取媒體。例如,若使用同軸電纜、光纖電纜、雙絞線、數位用戶線路(DSL)或諸如紅外(IR)、無線電和微波的無線技術從網站、伺服器或其他遠端源傳送軟體,則同軸電纜、光纖電纜、雙絞線,DSL或諸如紅外、無線電和微波的無線技術包括在媒體的定義中。如本文所使用的磁碟和光碟包括壓縮磁碟(CD)、雷射光碟、光碟、數位多功能光碟(DVD)、軟碟和藍光光碟,其中磁碟通常磁性地再現資料,而光碟用鐳射光學地再現資料。因此,在一些態樣,電腦可讀取媒體可以包括非暫時性電腦可讀取媒體(例如,實體媒體)。另外,對於其他態樣,電腦可讀取媒體可以包括暫時性電腦可讀取媒體(例如,訊號)。上述的組合亦包括在電腦可讀取媒體的範疇內。
因此,某些態樣可以包括用於執行本文呈現的操作的電腦程式產品。例如,此類電腦程式產品可以包括其上儲存(及/或編碼)有指令的電腦可讀取媒體,該等指令可由一或多個處理器執行以執行本文所述的操作。對於某些態樣,電腦程式產品可以包括包裝材料。
此外,應當理解,用於執行本文所說明的方法和技術的模組及/或其他適當的單元可以由使用者終端及/或基地台適當地下載及/或以其他方式獲得。例如,此類設備可以耦合到伺服器以便於傳送用於執行本文說明的方法的單元。可替換地,可以經由儲存單元(例如RAM、ROM、諸如壓縮磁碟(CD)或軟碟等的實體儲存媒體等)來提供本文說明的各種方法,使得使用者終端及/或基地台在將儲存單元耦合或提供給設備時可以獲得各種方法。此外,可以利用用於將本文所述的方法和技術提供給設備的任何其他適合的技術。
應當理解,申請專利範圍不限於上文所示的精確配置和部件。在不脫離申請專利範圍的範疇的情況下,可以對上述方法和裝置的佈置、操作和細節進行各種修改、改變和變化。
100:片上系統(SOC)
102:中央處理單元(CPU)
104:圖形處理單元(GPU)
106:數位訊號處理器(DSP)
108:NPU
110:連線性
112:多媒體處理器
114:感測器處理器
116:圖像信號處理器(ISP)
118:記憶體塊
120:導航模組
200:DCN
202:神經網路
204:神經網路
206:迴旋神經網路
208:迴旋神經網路
210:值
212:值
214:值
216:值
218:第一特徵圖集合
220:第二特徵圖集合
222:輸出
224:第一特徵向量
226:影像
228:第二特徵向量
230:影像擷取裝置
232:迴旋層
350:深度迴旋網路
352:輸入資料
354A:迴旋塊
354B:迴旋塊
356:迴旋層(CONV)
358:正規化層
360:最大池化層
362:層
364:層
366:分類分數
400:軟體架構
402:AI應用
404:使用者空間
406:AI功能應用程式設計發展介面(API)
408:執行時引擎
410:作業系統(OS)空間
412:Linux核心
414:驅動程式
416:驅動程式
418:驅動程式
420:SOC
422:CPU
424:DSP
426:GPU
428:NPU
500:計算深度神經網路(DNN)
510:啟動張量
520:稀疏啟動
521:零啟動
522:第一列
524:第二列
526:第三列
528:第四列
529:第五列
530:列
540:MAC硬體
541:向量通路
542:向量通路
543:向量通路
544:向量通路
545:向量通路
546:向量通路
547:向量通路
548:向量通路
550:權重張量
552:列
554:列
600:深度神經網路(DNN)
610:深度神經網路(DNN)
612:第二多通路段
660:先進先出(FIFO)緩衝區
662:第一壓縮啟動列
664:第二壓縮啟動列
668:第三列
670:TCM
672:列
674:列
676:零啟動值
677:非零啟動
678:列
700:乘法累加(MAC)硬體
702:輸出張量
730:第一啟動
732:第二啟動
734:第三啟動
736:第四啟動
740:乘法器
750-1:多工器
750-2:多工器
750-3:多工器
750-4:多工器
750-5:多工器
750-6:多工器
750-7:多工器
750-8:多工器
780:第一累加器樹
782:第一加法器
784:第一累加器
790:第二累加器樹
792:第二加法器
794:第二累加器
800:方塊圖
810:啟動張量
812:第一多通路段
814:第一多通路段
820:啟動組
822:第一啟動組
824:第二啟動組
850:啟動和權重張量
860:FIFO緩衝區
862:FIFO緩衝區
870:TCM記憶體
872:TCM記憶體
900:方法
902:方塊
904:方塊
906:方塊
908:方塊
當結合附圖時,根據以下闡述的實施方式,本案內容的特徵、性質和優點將變得更加明顯,在附圖中,相似的元件符號在全部附圖中相應地標識。
圖1圖示根據本案內容某些態樣的使用包括通用處理器的片上系統(SOC)設計神經網路的實例實施方式。
圖2A、2B和2C是示出根據本案內容各態樣的神經網路的圖。
圖2D是示出根據本案內容各態樣的神經網路的圖。
圖3是示出根據本案內容各態樣的示例性深度迴旋網路(DCN)的方塊圖。
圖4是示出根據本案內容各態樣的可以模組化人工智慧(AI)功能的示例性軟體架構的方塊圖。
圖5是示出根據公知常識的乘法累加(MAC)硬體的向量通路以計算稀疏啟動和權重的點積的方塊圖。
圖6是示出根據本案內容各態樣的乘法累加(MAC)硬體的向量通路以計算稀疏啟動和權重的點積的方塊圖。
圖7是進一步示出根據本案內容各態樣的圖6的乘法累加(MAC)硬體的方塊圖。
圖8是示出根據本本案內容各態樣的當空通道被偵測時的乘法累加(MAC)硬體的向量通路的方塊圖800。
圖9示出根據本案內容各態樣的用於利用啟動稀疏性來提高乘法累加(MAC)硬體的效率的方法。
國內寄存資訊 (請依寄存機構、日期、號碼順序註記)
無
國外寄存資訊 (請依寄存國家、機構、日期、號碼順序註記)
無
552:列
554:列
670:TCM
672:列
678:列
700:乘法累加(MAC)硬體
702:輸出張量
730:第一啟動
732:第二啟動
734:第三啟動
736:第四啟動
740:乘法器
750-1:多工器
750-2:多工器
750-3:多工器
750-4:多工器
750-5:多工器
750-6:多工器
750-7:多工器
750-8:多工器
780:第一累加器樹
782:第一加法器
784:第一累加器
790:第二累加器樹
792:第二加法器
794:第二累加器
Claims (26)
- 一種在深度神經網路中利用啟動稀疏性的方法,包括以下步驟: 取回一啟動張量和一權重張量,其中該啟動張量是一稀疏啟動張量; 產生包括該啟動張量的非零啟動的一壓縮啟動張量,其中與該啟動張量相比,該壓縮啟動張量具有較少的列;及 處理該壓縮啟動張量和該權重張量以產生一輸出張量。
- 根據請求項1之方法,其中產生該壓縮啟動張量包括以下步驟: 將該啟動張量的該等非零啟動繪製到一記憶體緩衝區中;及 在一時鐘週期期間,將該記憶體緩衝區內的該等非零啟動重新分配到該記憶體緩衝區中的、被映射到一乘法累加(MAC)硬體的一空向量通路的一位置。
- 根據請求項2之方法,亦包括當對每向量運算的唯一計算的一數量的一約束被超過時,在該記憶體緩衝區的、被映射到一向量通路的一位置中插入一人工零啟動。
- 根據請求項1之方法,亦包括當在一時鐘週期期間具有該等非零啟動中的一個非零啟動的向量通路的一數量小於該MAC硬體的一處理向量寬度時,偵測到一空向量通路。
- 根據請求項1之方法,其中產生該壓縮啟動張量包括根據對每向量運算的唯一計算的一數量的一約束,將非零啟動打包到乘法累加(MAC)硬體的向量通路上。
- 根據請求項1之方法,亦包括以下步驟: 決定該壓縮啟動張量的該等非零啟動的原始通道通路;及 計算該壓縮啟動張量的該等非零啟動與該權重張量的權重的一點積,該權重張量對應於該壓縮啟動張量的該等非零啟動的該等原始通道通路。
- 根據請求項6之方法,其中指示該壓縮啟動張量的該等非零啟動的該等原始通道通路的中繼資料被儲存在片上記憶體中。
- 根據請求項1之方法,其中處理該壓縮啟動張量包括對與該等非零啟動乘法累加(MAC)硬體相對應的該權重張量的權重進行多工處理,以計算該輸出張量。
- 根據請求項1之方法,其中處理該壓縮啟動張量包括在一時鐘週期期間,將一非零啟動和來自該權重張量的一權重的點積分配到一乘法累加(MAC)硬體的一累加器樹,其中與該權重相關聯的一通道號是該非零啟動的該通道號。
- 根據請求項1之方法,亦包括以下步驟: 當該啟動張量的一通道數量小於一機器的處理向量寬度時,將該啟動張量的多通路段的一可變數量的通道分配到多個啟動組中,該等啟動組的數量小於一第一多通路段的一通道深度; 將來自該等啟動組之每一者啟動組的非零啟動打包到一乘法累加(MAC)硬體的向量通路上;及 當對每個向量運算的唯一計算的一數量的一約束被超過時,在該等向量通路中的至少一個向量通路中插入一人工零啟動。
- 一種用於利用啟動稀疏性的深度神經網路,該深度神經網路包括: 乘法累加(MAC)硬體;及 耦合到該MAC硬體的至少一個處理器,該處理器被配置為進行以下操作: 取回一啟動張量和一權重張量,其中該啟動張量是一稀疏啟動張量; 產生包括該啟動張量的非零啟動的一壓縮啟動張量,其中與該啟動張量相比,該壓縮啟動張量具有較少的列;及 處理該壓縮啟動張量和該權重張量以產生一輸出張量。
- 根據請求項11之深度神經網路,亦包括: 先進先出(FIFO)緩衝區,其被配置為儲存該等非零啟動中打包的非零啟動;及 一片上記憶體,其被配置為儲存關於該等非零啟動的中繼資料。
- 根據請求項11之深度神經網路,亦包括多工器,其被配置為: 將該啟動張量的該等非零啟動繪製到一記憶體緩衝區中;及 在一即將到來的時鐘週期期間,將該儲存緩衝區內的該等非零啟動重新分配到該記憶體緩衝區中的、被映射到該MAC硬體的一空向量通路的一位置。
- 根據請求項13之深度神經網路,其中為了產生該壓縮啟動張量,該處理器亦被配置為根據對每向量運算的唯一計算的一數量的一約束,將非零啟動打包到該MAC硬體的向量通路上。
- 根據請求項14之深度神經網路,其中該處理器亦被配置為當該約束被超出時,在該儲存緩衝區的、被映射到一向量通路的一位置中插入一人工零啟動。
- 根據請求項11之深度神經網路,其中該處理器亦被配置為: 當該啟動張量的一通道數量小於一機器的處理向量寬度時,將該啟動張量的多通路段的一可變數量的通道分配到多個啟動組中,該啟動組的數量小於一第一多通路段的一通道深度; 將來自該等啟動組之每一者啟動組的該非零啟動打包到向量通路中;及 當對向量運算的唯一計算的一數量的一約束被超過時,在該等向量通路中的至少一個向量通路中插入一人工零啟動。
- 一種用於利用啟動稀疏性的深度神經網路,該深度神經網路包括: 用於取回一啟動張量和一權重張量的單元,其中該啟動張量是一稀疏啟動張量; 用於產生包括該啟動張量的非零啟動的一壓縮啟動張量的單元,其中與該啟動張量相比,該壓縮啟動張量具有較少的列;及 用於處理該壓縮啟動張量和該權重張量以產生一輸出張量的單元。
- 根據請求項17之深度神經網路,其中用於產生該壓縮啟動張量的單元包括: 用於將該啟動張量的該等非零啟動繪製到一記憶體緩衝區中的單元;及 用於在一即將到來的時鐘週期期間,將該記憶體緩衝區內的該等非零啟動重新分配到該記憶體緩衝區的、被映射到一乘法累加(MAC)硬體的一空向量通路的一位置的單元。
- 根據請求項18之深度神經網路,亦包括用於當對每向量運算的唯一計算的一數量的一約束被超過時,在該記憶體緩衝區的、被映射到向量通路的一位置中插入一人工零啟動的單元。
- 根據請求項17之深度神經網路,亦包括用於當在一時鐘週期期間具有該等非零啟動中的一個非零啟動的向量通路的一數量小於該MAC硬體的一處理向量寬度時,偵測一空向量通路的單元。
- 根據請求項17之深度神經網路,其中用於產生該壓縮啟動張量的單元包括用於根據對每向量運算的唯一計算的一數量的一約束,將非零啟動打包到乘法累加(MAC)硬體的向量通路上的單元。
- 根據請求項21之深度神經網路,亦包括: 用於決定該壓縮啟動張量的該非零啟動的原始通道通路的單元;及 用於計算該壓縮啟動張量的該等非零啟動與該權重張量的權重的一點積的單元,該權重張量對應於該壓縮啟動張量的該等非零啟動的原始通道通路。
- 根據請求項22之深度神經網路,其中指示該壓縮啟動張量的該等非零啟動的該等原始通道通路的中繼資料被儲存在片上記憶體中。
- 根據請求項17之深度神經網路,其中用於處理該壓縮啟動張量的單元包括用於在一時鐘週期期間,將一非零啟動和來自該權重張量的權重的點積分配到一乘法累加(MAC)硬體的一累加器樹的單元,其中該權重的通道號是該非零啟動的該通道號。
- 根據請求項17之深度神經網路,其中用於處理該壓縮啟動張量的單元包括用於將與該非零啟動相對應的該權重張量的權重多工到乘法累加(MAC)硬體,以計算該輸出張量的單元。
- 根據請求項17之深度神經網路,亦包括: 用於當該啟動張量的一通道數量小於一機器的處理向量寬度時,將該啟動張量的多通路段的一可變數量的通道分配到多個啟動組中的單元,該啟動組的一數量小於一第一多通路段的一通道深度; 用於將來自該等啟動組之每一者啟動組的非零啟動打包到向量通路中的單元;及 用於當對每個向量運算的唯一計算的一數量的一約束被超過時,在該等向量通路中的至少一個向量通路中插入一人工零啟動的單元。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/147,297 | 2018-09-28 | ||
US16/147,297 US11586417B2 (en) | 2018-09-28 | 2018-09-28 | Exploiting activation sparsity in deep neural networks |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202026858A true TW202026858A (zh) | 2020-07-16 |
TWI804684B TWI804684B (zh) | 2023-06-11 |
Family
ID=68165894
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW108135184A TWI804684B (zh) | 2018-09-28 | 2019-09-27 | 用於在深度神經網路中利用啟動稀疏性的方法與裝置 |
Country Status (5)
Country | Link |
---|---|
US (2) | US11586417B2 (zh) |
EP (1) | EP3857462A1 (zh) |
CN (1) | CN112740236A (zh) |
TW (1) | TWI804684B (zh) |
WO (1) | WO2020069239A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI753630B (zh) * | 2020-10-13 | 2022-01-21 | 財團法人工業技術研究院 | 基於神經網路的分類器及分類方法 |
TWI779626B (zh) * | 2021-05-25 | 2022-10-01 | 宏碁股份有限公司 | 載入人工智慧模組的方法 |
TWI844116B (zh) * | 2022-05-18 | 2024-06-01 | 美商谷歌有限責任公司 | 在機器學習硬體加速器處利用資料稀疏性 |
Families Citing this family (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11586417B2 (en) | 2018-09-28 | 2023-02-21 | Qualcomm Incorporated | Exploiting activation sparsity in deep neural networks |
US11588499B2 (en) * | 2018-11-05 | 2023-02-21 | Samsung Electronics Co., Ltd. | Lossless compression of neural network weights |
US11562214B2 (en) * | 2019-03-14 | 2023-01-24 | Baidu Usa Llc | Methods for improving AI engine MAC utilization |
US11704573B2 (en) * | 2019-03-25 | 2023-07-18 | Here Global B.V. | Method, apparatus, and computer program product for identifying and compensating content contributors |
US11531869B1 (en) * | 2019-03-28 | 2022-12-20 | Xilinx, Inc. | Neural-network pooling |
US11301545B2 (en) * | 2019-07-11 | 2022-04-12 | Facebook Technologies, Llc | Power efficient multiply-accumulate circuitry |
US11526328B2 (en) * | 2020-02-04 | 2022-12-13 | Macronix International Co., Ltd. | Computation method and apparatus exploiting weight sparsity |
US20210357748A1 (en) * | 2020-05-14 | 2021-11-18 | Samsung Electronics Co., Ltd. | Hierarchical weight preprocessing for neural network accelerator |
JP2022012624A (ja) * | 2020-07-02 | 2022-01-17 | ルネサスエレクトロニクス株式会社 | 半導体装置、それに用いるデータ生成方法およびその制御方法 |
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 |
US11947928B2 (en) * | 2020-09-10 | 2024-04-02 | Hewlett Packard Enterprise Development Lp | Multi-die dot-product engine to provision large scale machine learning inference applications |
CN116324742A (zh) * | 2020-09-15 | 2023-06-23 | 高通股份有限公司 | 针对ai推断的权重布局变换辅助式嵌套循环优化 |
US20220108156A1 (en) * | 2020-10-05 | 2022-04-07 | Numenta, Inc. | Hardware architecture for processing data in sparse neural network |
US20220164663A1 (en) * | 2020-11-24 | 2022-05-26 | Arm Limited | Activation Compression Method for Deep Learning Acceleration |
US20220188611A1 (en) * | 2020-12-10 | 2022-06-16 | Neuronix AI Labs Inc. | Neural networks processing units performance optimization |
WO2022205685A1 (zh) * | 2021-03-29 | 2022-10-06 | 泉州装备制造研究所 | 一种基于轻量化网络的交通标志识别方法 |
US11922178B2 (en) * | 2021-06-25 | 2024-03-05 | Intel Corporation | Methods and apparatus to load data within a machine learning accelerator |
WO2023004570A1 (en) * | 2021-07-27 | 2023-02-02 | Qualcomm Incorporated | Activation buffer architecture for data-reuse in a neural network accelerator |
US11429864B1 (en) * | 2021-08-16 | 2022-08-30 | Moffett International Co., Limited | System and method for bank-balanced sparse activation and joint-activation-weight-sparse training of neural networks |
CN113642713B (zh) * | 2021-08-19 | 2023-08-01 | 厦门壹普智慧科技有限公司 | 一种用于神经网络张量处理器的4d计算装置 |
US12040821B2 (en) * | 2022-08-03 | 2024-07-16 | Arm Limited | Weight processing for a neural network |
US20240046078A1 (en) * | 2022-08-04 | 2024-02-08 | Qualcomm Incorporated | Desparsified convolution for sparse activations |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160328644A1 (en) | 2015-05-08 | 2016-11-10 | Qualcomm Incorporated | Adaptive selection of artificial neural networks |
US20170193361A1 (en) | 2015-12-31 | 2017-07-06 | Microsoft Technology Licensing, Llc | Neural network training performance optimization framework |
CN107025228B (zh) * | 2016-01-29 | 2021-01-26 | 阿里巴巴集团控股有限公司 | 一种问题推荐方法及设备 |
CN107133865B (zh) * | 2016-02-29 | 2021-06-01 | 阿里巴巴集团控股有限公司 | 一种信用分的获取、特征向量值的输出方法及其装置 |
US10565207B2 (en) | 2016-04-12 | 2020-02-18 | Hsilin Huang | Method, system and program product for mask-based compression of a sparse matrix |
CN109328361B (zh) * | 2016-06-14 | 2020-03-27 | 多伦多大学管理委员会 | 用于深度神经网络的加速器 |
US10528864B2 (en) | 2016-08-11 | 2020-01-07 | Nvidia Corporation | Sparse convolutional neural network accelerator |
US10242311B2 (en) | 2016-08-11 | 2019-03-26 | Vivante Corporation | Zero coefficient skipping convolution neural network engine |
US10810484B2 (en) | 2016-08-12 | 2020-10-20 | Xilinx, Inc. | Hardware accelerator for compressed GRU on FPGA |
CN107239823A (zh) | 2016-08-12 | 2017-10-10 | 北京深鉴科技有限公司 | 一种用于实现稀疏神经网络的装置和方法 |
US10360163B2 (en) * | 2016-10-27 | 2019-07-23 | Google Llc | Exploiting input data sparsity in neural network compute units |
US9959498B1 (en) * | 2016-10-27 | 2018-05-01 | Google Llc | Neural network instruction set architecture |
US10096134B2 (en) | 2017-02-01 | 2018-10-09 | Nvidia Corporation | Data compaction and memory bandwidth reduction for sparse neural networks |
US20190340499A1 (en) * | 2018-05-04 | 2019-11-07 | Microsoft Technology Licensing, Llc | Quantization for dnn accelerators |
US11645493B2 (en) * | 2018-05-04 | 2023-05-09 | Microsoft Technology Licensing, Llc | Flow for quantized neural networks |
US11966835B2 (en) * | 2018-06-05 | 2024-04-23 | Nvidia Corp. | Deep neural network accelerator with fine-grained parallelism discovery |
US11586417B2 (en) | 2018-09-28 | 2023-02-21 | Qualcomm Incorporated | Exploiting activation sparsity in deep neural networks |
-
2018
- 2018-09-28 US US16/147,297 patent/US11586417B2/en active Active
-
2019
- 2019-09-27 WO PCT/US2019/053325 patent/WO2020069239A1/en unknown
- 2019-09-27 TW TW108135184A patent/TWI804684B/zh active
- 2019-09-27 EP EP19783954.1A patent/EP3857462A1/en active Pending
- 2019-09-27 CN CN201980062020.2A patent/CN112740236A/zh active Pending
-
2023
- 2023-02-02 US US18/105,159 patent/US12131130B2/en active Active
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI753630B (zh) * | 2020-10-13 | 2022-01-21 | 財團法人工業技術研究院 | 基於神經網路的分類器及分類方法 |
TWI779626B (zh) * | 2021-05-25 | 2022-10-01 | 宏碁股份有限公司 | 載入人工智慧模組的方法 |
TWI844116B (zh) * | 2022-05-18 | 2024-06-01 | 美商谷歌有限責任公司 | 在機器學習硬體加速器處利用資料稀疏性 |
Also Published As
Publication number | Publication date |
---|---|
US20230185532A1 (en) | 2023-06-15 |
WO2020069239A1 (en) | 2020-04-02 |
TWI804684B (zh) | 2023-06-11 |
US20200104692A1 (en) | 2020-04-02 |
EP3857462A1 (en) | 2021-08-04 |
US11586417B2 (en) | 2023-02-21 |
US12131130B2 (en) | 2024-10-29 |
CN112740236A (zh) | 2021-04-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI804684B (zh) | 用於在深度神經網路中利用啟動稀疏性的方法與裝置 | |
US20190087713A1 (en) | Compression of sparse deep convolutional network weights | |
US11861484B2 (en) | Neural processing unit (NPU) direct memory access (NDMA) hardware pre-processing and post-processing | |
US20160239706A1 (en) | Convolution matrix multiply with callback for deep tiling for deep convolutional neural networks | |
US20200073636A1 (en) | Multiply-accumulate (mac) operations for convolutional neural networks | |
US11410040B2 (en) | Efficient dropout inference for bayesian deep learning | |
US11567778B2 (en) | Neural network operation reordering for parallel execution | |
US20200293864A1 (en) | Data-aware layer decomposition for neural network compression | |
US12079734B1 (en) | Compilation time reduction for memory and compute bound neural networks | |
US11449758B2 (en) | Quantization and inferencing for low-bitwidth neural networks | |
US11556798B2 (en) | Optimizing machine learning model performance | |
TW202427274A (zh) | 機器學習編譯器優化中的節點對稱性 | |
US20220284260A1 (en) | Variable quantization for neural networks | |
US20240037150A1 (en) | Scheduling optimization in sequence space | |
US20240070441A1 (en) | Reconfigurable architecture for fused depth-wise separable convolution (dsc) | |
US20240232585A1 (en) | Channel-guided nested loop transformation and scalar replacement | |
US20230306233A1 (en) | Simulated low bit-width quantization using bit shifted neural network parameters | |
CN115861862A (zh) | 识别图像的方法和设备 | |
WO2024049660A1 (en) | Reconfigurable architecture for fused depth-wise separable convolution (dsc) | |
TW202117609A (zh) | 具有快速逐點迴旋的高效推斷 | |
TW202416219A (zh) | 支援機器學習加速的記憶體儲存格式 | |
JP2023024960A (ja) | 効率的なニューラルネットワーク実行のためのメモリ使用の最適化 | |
CN118786437A (zh) | 使用位移神经网络参数的模拟低位宽量化 |