[go: up one dir, main page]

TW201824094A - 用於稀疏神經網路的低功率架構 - Google Patents

用於稀疏神經網路的低功率架構 Download PDF

Info

Publication number
TW201824094A
TW201824094A TW106139123A TW106139123A TW201824094A TW 201824094 A TW201824094 A TW 201824094A TW 106139123 A TW106139123 A TW 106139123A TW 106139123 A TW106139123 A TW 106139123A TW 201824094 A TW201824094 A TW 201824094A
Authority
TW
Taiwan
Prior art keywords
value
tag
zero
weight
tag value
Prior art date
Application number
TW106139123A
Other languages
English (en)
Inventor
葉堤許吉瑞許 土拉克西亞
賈維德 賈法瑞
艾姆瑞特 潘達
卡蘭維爾 恰薩
Original Assignee
美商高通公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 美商高通公司 filed Critical 美商高通公司
Publication of TW201824094A publication Critical patent/TW201824094A/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3206Monitoring of events, devices or parameters that trigger a change in power modality
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/0464Convolutional networks [CNN, ConvNet]
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/0495Quantised networks; Sparse networks; Compressed networks
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/09Supervised learning
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Biophysics (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Neurology (AREA)
  • Image Analysis (AREA)
  • Complex Calculations (AREA)
  • Power Sources (AREA)

Abstract

提供了用於減少神經網路的功耗的方法、電腦可讀取媒體和裝置。該裝置可以從標籤儲存器中取得用於神經網路中的權重的第一標籤值或者用於神經網路中的啟用的第二標籤值中的至少一個標籤值。第一標籤值可以指示權重是否為零,並且第二標籤值可以指示啟用是否為零。該權重和啟用將作為一對運算元被載入到乘法器-累加器單元的乘法器。該裝置可以決定該至少一個標籤值是否指示零值。當該至少一個標籤值指示零值時,該裝置可以禁止將該權重和啟用載入到乘法器。該裝置可以禁止對零值啟用的更新。

Description

用於稀疏神經網路的低功率架構
本專利申請案主張享受2016年12月13日提出申請的並且標題為「LOW-POWER ARCHITECTURE FOR SPARSE NEURAL NETWORK」的美國專利申請案第15/377,858的權益,故以引用方式將其全部內容明確地併入本文。
大體而言,本案內容係關於用於人工神經網路的計算系統,具體而言,本案內容係關於用於深度神經網路的硬體加速器。
可以包括相互連接的一組人工神經元的人工神經網路可以是計算設備,或者可以表示由計算設備執行的方法。人工神經網路可以具有生物神經網路中的相應結構及/或功能。但是,人工神經網路可以為某些應用提供創新並有用的計算技術,在該等應用中傳統計算技術可能是繁瑣、不切實際或者不充分的。由於人工神經網路可以根據觀測來推斷函數,因此此種網路在任務或者資料的複雜性使習知技術的功能設計變得繁重的應用中尤其有用。
在計算時,硬體加速是使用電腦硬體,以比利用執行在更為通用的CPU上的軟體所可能實現的,來更為高效地執行一些功能。用於執行加速的硬體可以被稱為硬體加速器。硬體加速器可以經由允許更大的併發性、具有用於演算法中的臨時物件的特定資料路徑並可能減少指令控制的管理負擔,來改良特定演算法的執行。
迴旋神經網路是一種類型的前饋人工神經網路。迴旋神經網路可以包括神經元的集合,每個神經元皆具有一個接受域,並共同地拼接一個輸入空間。迴旋神經網路(CNN)具有眾多應用。特別是,在模式辨識和分類領域已廣泛地使用CNN。
深度迴旋神經網路(DCN)在分類問題(例如,圖像辨識)中已經表現出很好的效能。可以構建專用的硬體加速器,以在類似行動計算和雲端計算的領域中實現DCN技術的各種應用。DCN中的功率密集型操作可以是矩陣乘法和迴旋。
一些技術可以減少計算管理負擔並提高DCN分類器的品質。但是,此種技術可能導致乘法運算元的稀疏性增加(例如,由於非零運算元的數量減少,零值運算元的百分比更高)。例如,權重修剪可能導致DCN中的大約30-70%的稀疏度。對修正線性單元(ReLU)啟用的使用可能導致DCN中的大約50%的稀疏性。DCN的退出(僅僅用於訓練)可能導致DCN中的25-75%的稀疏性。由權重修剪引起的稀疏性可以是靜態稀疏性,而由ReLU和退出引起的稀疏性可以是動態稀疏性。具有較高百分比的零值運算元的神經網路可以稱為稀疏神經網路。
為了對本發明的一或多個態樣有一個基本的理解,下文提供了該等態樣的簡單概括。該概括部分不是對所有預期態樣的詳盡概述,亦不是意欲標識所有態樣的關鍵或重要要素,或者描述任意或全部態樣的範疇。其唯一目的是用簡單的形式呈現一或多個態樣的一些概念,以此作為後面提供的更為詳細說明的前奏。
一些技術可以減少計算管理負擔,並提高DCN分類器的品質。但是,該等技術可能引起乘法運算元的稀疏性增加。硬體加速器設計可以考慮稀疏性,以降低功耗。例如,硬體加速器可以被配置為避免提取零值運算元,避免乘以零值運算元,以及避免累加零值運算元。
在本案內容的一個態樣,提供了用於減少神經網路的功耗的方法、電腦可讀取媒體和裝置。該裝置可以包括硬體加速器。該裝置可以從標籤儲存器中取得用於神經網路中的權重的第一標籤值或者用於神經網路中的啟用的第二標籤值中的至少一個標籤值。第一標籤值可以指示權重是否為零,並且第二標籤值可以指示啟用是否為零。該權重和啟用可以作為一對運算元被載入到乘法器-累加器(MAC)單元的乘法器。該裝置可以決定該至少一個標籤值是否指示零值。當該至少一個標籤值指示零值時,該裝置可以禁止將該權重和啟用載入到乘法器。該裝置可以禁止對零值啟用的更新。
為了實現前述和有關的目的,一或多個態樣包括下文所詳細描述和申請專利範圍中具體指出的特徵。下文描述和附圖詳細闡述了一或多個態樣的某些說明性特徵。但是,該等特徵僅僅說明可採用該等各個態樣之基本原理的各種方法中的一些方法,並且該描述意欲包括所有該等態樣及其均等物。
下文結合附圖闡述的具體實施方式,意欲對各種配置進行描述,而不是意欲表示僅在該等配置中才可以實現本文所描述的概念。為了對各種概念有一個透徹理解,具體實施方式包括特定的細節。但是,對熟習此項技術者而言顯而易見的是,可以在不使用該等特定細節的情況下實現該等概念。在一些實例中,為了避免對該等概念造成模糊,公知的結構和元件以方塊圖形式圖示。
現在將參照各種裝置和方法來提供用於人工神經網路的計算系統的一些態樣。該等裝置和方法將經由各種方塊、元件、電路、過程、演算法等等(其統稱為「要素」),在下文的具體實施方式中進行描述並在附圖中來進行圖示。可以使用電子硬體、電腦軟體或者其任意組合來實現該等要素。至於該等要素是實現成硬體還是實現成軟體,取決於特定的應用和對整體系統所施加的設計約束。
舉例而言,要素或者要素的任何部分或者要素的任意組合,可以實現成包括一或多個處理器的「處理系統」。處理器的實例係包括微處理器、微控制器、圖形處理單元(GPU)、中央處理單元(CPU)、應用處理器、數位信號處理器(DSP)、精簡指令集計算(RISC)處理器、晶片上系統(SoC)、基頻處理器、現場可程式設計閘陣列(FPGA)、可程式設計邏輯設備(PLD)、狀態機、閘控邏輯、分離硬體電路和被配置為執行貫穿本案內容描述的各種功能的其他適當硬體。處理系統中的一或多個處理器可以執行軟體。軟體應當被廣泛地解釋為意味著指令、指令集、代碼、程式碼片段、程式碼、程式、副程式、軟體元件、應用、軟體應用、套裝軟體、常式、子常式、物件、可執行檔案、執行的執行緒、程序、函數等等,而無論其被稱為軟體、韌體、中間軟體、微代碼、硬體描述語言還是其他術語。
因此,在一或多個示例性實施例中,本文所描述的功能可以用硬體、軟體或者其任意組合來實現。當使用軟體實現時,可以將該等功能儲存在電腦可讀取媒體上,或編碼成電腦可讀取媒體上的一或多個指令或代碼。電腦可讀取媒體包括電腦儲存媒體。儲存媒體可以是電腦能夠存取的任何可用媒體。經由實例的方式而不是限制的方式,此種電腦可讀取媒體可以包括隨機存取記憶體(RAM)、唯讀記憶體(ROM)、電子可抹除可程式設計ROM(EEPROM)、光碟儲存設備、磁碟儲存設備、其他磁儲存設備、前述類型的電腦可讀取媒體的組合,或者能夠用於儲存具有指令或資料結構形式的電腦可執行代碼並能夠由電腦存取的任何其他媒體。
可以經由三種類型的參數來定義人工神經網路:1)神經元的不同層之間的互連模式;2)用於更新該等互連的權重的學習過程;3)用於將神經元的加權輸入轉換為其輸出啟用的啟用函數。可以將神經網路設計成具有多種連接模式。在前饋網路中,將資訊從低層傳遞到高層,其中給定層之每一者神經元與高層中的神經元進行通訊。可以在前饋網路的連續層中,建立分層表示。神經網路亦可以具有回歸性或回饋(其亦稱為自上而下)連接。在回歸性連接中,來自給定層中的神經元的輸出可以被傳送到同一層中的另一個神經元。回歸性架構可以有助於辨識跨度輸入資料區塊中的多於一個輸入資料區塊的模式,其中該等輸入資料區塊被按順序地傳送到神經網路。從給定層中的神經元到更低層中的神經元的連接被稱為回饋(或者自上而下)連接。當對高層級概念的辨識可以有助於區分輸入的特定低層級特徵時,具有很多回饋連接的網路可以是有幫助的。
圖1是根據本案內容的態樣,圖示神經網路的圖。如圖1中所示,神經網路的層之間的連接可以是完全連接的102,亦可以是局部連接的104。在完全連接的網路102中,第一層中的神經元可以將其輸出傳送到第二層之每一者神經元,使得第二層之每一者神經元將從第一層之每一者神經元接收輸入。或者,在局部連接的網路104中,第一層中的神經元可以連接到第二層中的有限數量的神經元。迴旋網路106可以是局部連接的,並且亦被配置為使得與針對第二層之每一者神經元的輸入相關聯的連接強度是共享的(例如,108)。具體而言,可以對網路的局部連接的層進行配置,使得層之每一者神經元將具有相同或者類似的連接模式,但具有可能包含不同的值(例如,110、112、114和116)的連接強度。局部連接的連接模式可以引起更高層中的空間不同的接受域,是因為給定區域中的更高層神經元可以接收經由針對網路的總輸入的受限制部分的屬性進行訓練而被調整的輸入。
局部連接的神經網路可能非常適合於其中輸入的空間位置是有意義的問題。例如,被設計成辨識來自車載攝像機的視覺特徵的網路100可以開發具有不同屬性的高層神經元,此舉取決於該等高層神經元與圖像的下部對照上部的關聯。例如,與圖像下部相關聯的神經元可以學習辨識車道標記,而與圖像上部相關聯的神經元可以學習辨識交通信號燈、交通標誌等等。
深度迴旋網路(DCN)可以使用監督式學習來訓練。在訓練期間,可以向DCN呈現圖像(例如,速度限制標誌的裁剪圖像126),隨後可以計算「前向傳遞」以產生輸出122。輸出122可以是對應於諸如「標誌」、「60」和「100」之類的特徵的值向量。網路設計者可能希望DCN為輸出特徵向量中的一些神經元輸出高分,例如,如針對於已經訓練的網路100的輸出122中圖示的與「標誌」和「60」相對應的。在訓練之前,由DCN產生的輸出可能是不正確的,因此可能會計算實際輸出和目標輸出之間的誤差。隨後,可以調整DCN的權重,使得DCN的輸出分數更接近於與目標對準。
為了調整權重,學習演算法可以計算權重的梯度向量。梯度可以指示若對權重進行輕微地調整,則誤差將增加或者減少的量。在頂層,梯度可以直接對應於:連接倒數第二層中的啟用神經元和輸出層中的神經元的權重的值。在較低層中,梯度可以取決於權重的值以及較高層的計算的誤差梯度。隨後,可以對權重進行調整以減少誤差。此種調整權重的方式可以稱為「反向傳播」,因為該方式涉及經由神經網路的「反向傳遞」。
實際上,權重的誤差梯度可以經由少量的實例來計算,使得所計算的梯度近似於真實的誤差梯度。此種近似方法可以稱為隨機梯度下降。可以重複隨機梯度下降,直到整個系統的可實現的誤差率已經停止下降,或者直到誤差率已經達到目標水平為止。
在學習之後,可以向DCN呈現新的圖像126,並且經由網路的前向傳遞可以產生被認為是DCN的推斷或者預測的輸出122。
深度迴旋網路(DCN)是迴旋網路的網路,其被配置有額外的池化(pooling)和正規化層。DCN已經在許多任務上取得了最先進的效能。可以使用監督式學習來訓練DCN,其中輸入和輸出目標二者對於許多取樣是已知的,並且用於經由利用梯度下降方法來修改網路的權重。
DCN可以是前饋網路。另外,如前述,從DCN的第一層中的神經元到下一個更高層中的一組神經元的連接在第一層中的神經元之間共享。DCN的前饋和共享連接可以用於快速處理。例如,DCN的計算負擔可能比包括回歸性或回饋連接的類似大小的神經網路的計算負擔要小得多。
可以將迴旋網路的每一層的處理認為是空間不變的範本或基礎投影。若首先將輸入分解成多個通道(例如,彩色圖像的紅色、綠色和藍色通道),則在該輸入上訓練的迴旋網路可以認為是三維的,其中沿著圖像的軸的兩個空間維度和擷取顏色資訊的第三維度。可以認為迴旋連接的輸出在後續層118和120中形成特徵映射,其中特徵映射(例如,120)的每個要素從前一層(例如,118)中的一系列神經元和從該多個通道中的每一個通道接收輸入。特徵映射中的值可以進一步經由非線性來處理,諸如修正max(0,x)。可以對來自相鄰神經元的值進行進一步池化,其對應於下取樣,並可以提供額外的局部不變性和維度減少。亦可以經由特徵映射中的神經元之間的橫向抑制,來應用與白化相對應的正規化。
圖2是圖示一種示例性深度迴旋網路200的方塊圖。深度迴旋網路200可以包括基於連接性和權重共享的多種不同類型的層。如圖2中所示,示例性深度迴旋網路200包括多個迴旋區塊(例如,C1和C2)。該等迴旋區塊中的每一個迴旋區塊可以被配置有迴旋層、正規化層(LNorm)和池化層。迴旋層可以包括一或多個迴旋濾波器,該等迴旋濾波器可以應用於輸入資料以產生特徵映射。儘管僅圖示兩個迴旋區塊,但是本案內容並不限制於此,而是根據設計偏好,在深度迴旋網路200中可以包括任何數量的迴旋區塊。正規化層可以用於對迴旋濾波器的輸出進行正規化。例如,正規化層可以提供白化或者橫向抑制。池化層可以在空間上提供下取樣聚合以實現局部不變性和維度減少。
例如,深度迴旋網路的並行濾波器組可以被載入到SOC的CPU或GPU上、可選地基於高級RISC機器(ARM)指令集,以實現高效能和低功耗。在替代的實施例中,並行濾波器組可以被載入在DSP或者SOC的圖像信號處理器(ISP)上。另外,DCN可以存取可能存在於SOC上的其他處理區塊(例如,專用於感測器和導航的處理區塊)。
此外,深度迴旋網路200亦可以包括一或多個完全連接的層(例如,FC1和FC2)。深度迴旋網路200可以進一步包括邏輯回歸(LR)層。深度迴旋網路200的每個層之間是要進行更新的權重(未圖示)。每個層的輸出可以用作深度迴旋網路200中的後續層的輸入,以從在第一迴旋區塊C1處提供的輸入資料(例如,圖像、音訊、視訊、感測器資料及/或其他輸入資料)中學習分層特徵表示。
可以經由通用處理器、數位信號處理器(DSP)、特殊應用積體電路(ASIC)、現場可程式設計閘陣列(FPGA)或者其他可程式設計邏輯設備(PLD)、分離閘門或電晶體邏輯裝置、分離硬體元件、由處理器執行的軟體模組或者其任意組合,來模擬網路100或者深度迴旋網路200。網路100或者深度迴旋網路200可以用於大量的各種各樣的應用,諸如圖像和模式辨識、機器學習、電動機控制等等。可以將神經網路100或者深度迴旋網路200之每一者神經元實現成一個神經元電路。
在某些態樣,網路100或者深度迴旋網路200可以被配置為經由考慮神經網路中的權重和啟用的稀疏性,來減少功耗。例如,網路100或者深度迴旋網路200可以被配置為避免提取零值運算元,避免與零值運算元相乘,以及避免累加零值運算元,如下文將參照圖3-圖8所描述的。
圖3是圖示減少用於稀疏神經網路的功耗的設備300的實例的圖。設備300可以是任何計算設備。在一種配置中,設備300可以包括硬體加速器,後者被配置為避免提取零值運算元,避免與零值運算元相乘,以及避免累加零值運算元。如圖3中所示,設備300可以包括一些位址產生器302、一些載入單元304、一些計算單元314、非線性區塊310、儲存單元312、運算元儲存器308、標籤儲存器306和三個資料閘控電路320、322、324。
計算單元314中的每一個計算單元可以包括乘法器-累加器(MAC)單元,後者計算兩個運算元的乘積,並將該乘積填加到累加器上,在累加器中對計算的運算元的乘積進行累加和儲存。在一種配置中,計算單元314可以執行針對神經網路的計算/運算。MAC單元可以包括乘法器、乘法器之後的加法器和累加器暫存器,其中累加器暫存器用於儲存加法器的輸出。乘法器的輸出可以被提供給加法器的第一輸入。可以將累加器暫存器的輸出回饋回給加法器的第二輸入,使得在每個時鐘週期上,將乘法器的輸出加到累加器暫存器上。在一種配置中,可以利用組合邏輯來實現乘法器。
運算元儲存器308可以是用於儲存將被載入到計算單元314的乘法器的運算元的記憶體或快取記憶體。在一種配置中,對於每一對運算元而言,第一運算元可以是神經網路的權重,第二運算元可以是神經網路的啟用。
標籤儲存器306可以是用於儲存運算元的標籤的記憶體或者快取記憶體。運算元儲存器308中儲存的每個運算元可以具有儲存在標籤儲存器306中的相應標籤。每個標籤可以指示運算元儲存器308中的相應運算元是否為零。在一種配置中,標籤儲存器306之每一者標籤可以佔用單個位元。該單個位元的第一值(例如,「1」)可以指示運算元儲存器308中的相應運算元為零,而該單個位元的第二值(例如,「0」)可以指示運算元儲存器308中的相應運算元為非零。在一種配置中,標籤儲存器306和運算元儲存器308可以位於不同的實體記憶體或快取記憶體中。在一種配置中,標籤儲存器306和運算元儲存器308可以位於相同的實體記憶體或快取記憶體中。例如,可以保留用於儲存運算元的一或多個位元組中的一個位元,來儲存與該運算元相對應的標籤。在一種配置中,運算元儲存器308中的運算元和標籤儲存器306中的相應標籤可以共享相同的位址。例如,一個位址可以指向記憶體或者快取記憶體中的一或多個位元組,其中一個位元可以被保留用於儲存標籤,其餘位元可以被保留用於儲存相應的運算元。用於標籤儲存器306的區域或者功率管理負擔可能較低。例如,用於每個運算元的標籤可以佔用儲存空間的1位元。因此,存取該標籤所消耗的功率可以較低。
載入單元304可以被配置為將運算元從運算元儲存器308載入到計算單元314。具體而言,載入單元(例如,304a、304b或304c)可以將一對運算元從運算元儲存器308載入到計算單元314中的乘法器。
非線性區塊310可以被配置為接收計算單元314的輸出,並對計算單元314的輸出執行非線性操作。該非線性操作可以是其輸出與輸入不直接成比例的操作。在一種配置中,非線性區塊310可以是修正線性單元(ReLU)。在一種配置中,非線性區塊310可以針對神經網路的神經元,執行啟用函數的至少一部分。
儲存單元312可以接收非線性區塊310的輸出,並將非線性區塊310的輸出儲存到運算元儲存器308中。在一種配置中,非線性區塊310的輸出可以包括針對神經網路的更新的啟用。
位址產生器302可以被配置為產生用於存取運算元儲存器308及/或標籤儲存器306的位址。在一種配置中,位址產生器(例如,302a)可以產生要被載入到計算單元314中的乘法器的一對運算元的位址,並且向載入單元(例如,304a)發送該等位址,其中載入單元(例如,304a)可以基於該等位址,從運算元儲存器308中載入該對運算元。在一種配置中,位址產生器(例如,302a)亦可以產生與該對運算元相對應的一對標籤的位址,並基於該等位址從標籤儲存器306中讀取該對標籤。在一種配置中,位址產生器(例如,302d)可以產生用於非線性區塊310的輸出的位址,並將該位址發送給儲存單元312,其中儲存單元312可以基於該位址,將非線性區塊310的輸出儲存到運算元儲存器308上。
可以在運算元儲存器308的輸出和載入單元(例如,304a、304b或304c)的輸入之間,佈置資料閘控電路320、322、324中的每一個資料閘控電路。每個資料閘控電路(例如,320)可以被配置為:若一對運算元中的至少一個運算元為零,則防止用於該對運算元中的兩個運算元的運算元儲存器308的輸出線連通(toggling)。為了決定該對運算元中的至少一個運算元是否為零,可以在運算元儲存器308中存取該對運算元之前,在標籤儲存器306中存取與該對運算元相對應的兩個標籤中的一個或兩個標籤。若與該對運算元相對應的兩個標籤中的至少一個標籤指示零值,則資料閘控電路(例如,320)可以防止用於該兩個運算元的輸出線連通,從而節省了輸出線以及MAC單元(其中該對運算元本應載入到該MAC單元的)中的功率。
在一種配置中,對於要被載入單元(例如,304a)載入到計算單元314中的乘法器的每對運算元而言,在從運算元儲存器308中提取該對運算元之前,資料閘控電路(例如,320)可以從標籤儲存器306中讀取與該對運算元相對應的兩個標籤中的一個或兩個標籤。若與該對運算元相對應的兩個標籤中的至少一個標籤指示零值(其意味著該對運算元中的至少一個運算元是零),則資料閘控電路(例如,320)可以防止用於該對運算元的兩個運算元的輸出線連通,從而節省用於將該對運算元從運算元儲存器308提取到計算單元的功率/能量。
此外,計算單元亦可以在從MAC單元的累加器暫存器(未圖示)提取先前的累加值之前,從標籤儲存器306中讀取與該對運算元相對應的兩個標籤中的一個或兩個標籤。若與該對運算元相對應的兩個標籤中的至少一個標籤指示零值,則MAC單元可以防止累加器暫存器的輸出線或者累加器暫存器的輸出連通,從而節省用於從累加器暫存器提取先前的累加值的功率/能量。此外,若與該對運算元相對應的兩個標籤中的至少一個標籤指示零值,則MAC單元亦可以丟棄MAC單元的加法器的輸出。事實上,當與該對運算元相對應的兩個標籤中的至少一個標籤指示零值時,MAC單元可以將先前的累加值用作新的累加值。在一種配置中,若與該對運算元相對應的兩個標籤中的至少一個標籤指示零值,則MAC單元可以旁路乘法器和加法器,從而節省執行該等計算的功率。下文將參照圖5來更詳細地描述MAC單元的細節。
在一種配置中,當在運算元儲存器308中儲存或者更新運算元時,可以決定相應的標籤並將其儲存在標籤儲存器306中或在標籤儲存器306中進行更新。該相應的標籤可以指示該運算元是否為零。在一種配置中,若運算元為零,則可以在標籤儲存器306中儲存或者更新與該運算元相對應的標籤以指示該運算元為零,而不在運算元儲存器308中儲存或者更新該運算元的值,從而節省了用於在運算元儲存器308中儲存或者更新該運算元的功率。在一種配置中,在運算元儲存器308中儲存或者更新一對運算元中的第一運算元之前,可以從標籤儲存器306中讀取該對運算元中的第二運算元的相應標籤。若第二運算元的相應標籤指示第二運算元為零,則可以不在運算元儲存器308中儲存或者更新第一運算元的值,從而節省了用於在運算元儲存器308中儲存或者更新第一運算元的功率。
例如,當儲存單元312接收到非線性區塊310的輸出時,儲存單元312可以決定非線性區塊310的輸出是否為零。若非線性區塊310的輸出為零,則儲存單元312可以針對與非線性區塊310的輸出相對應的第一運算元,在標籤儲存器306中儲存或者更新第一標籤,而旁路對運算元儲存器308中的第一運算元的儲存或者更新。若非線性區塊310的輸出不是零,則儲存單元312可以決定與第一運算元相配對的第二運算元的第二標籤是否指示第二運算元為零。若第二運算元為零,則儲存單元312可以針對與非線性區塊310的輸出相對應的第一運算元,在標籤儲存器306中儲存或者更新第一標籤,而旁路對運算元儲存器308中的第一運算元的儲存或者更新。若第一運算元和第二運算元均不為零,則儲存單元312可以針對與非線性區塊310的輸出相對應的第一運算元,在標籤儲存器306中儲存或者更新第一標籤,以及在運算元儲存器308中儲存或者更新第一運算元。
圖4是圖示用於防止運算元儲存器406的輸出線連通的資料閘控電路402的實例的圖400。在一種配置中,運算元儲存器406可以是上文參照圖3所描述的運算元儲存器308,資料閘控電路402可以是上文參照圖3所描述的資料閘控電路320、322或者324。在一種配置中,資料閘控電路402可以是暫存器(例如,正反器)。在一種配置中,資料閘控電路402可以是三態緩衝器。
如圖所示,資料閘控電路402可以從運算元儲存器406接收運算元Rm 。該運算元Rm 可以被傳播通過資料閘控電路402,並被輸出成閘控的運算元Rm ’。此外,資料閘控電路402亦可以接收賦能信號408。運算元Rm 和另一個運算元Rn 可以形成要被載入到MAC單元的乘法器的一對運算元。賦能信號408可以取決於該兩個運算元Rm 和Rn 是否為非零。在一種配置中,若兩個運算元Rm 和Rn 均為非零,則可以將賦能信號408設置為「1」,從而使得閘控的運算元Rm ’能夠連通(例如,經由使得閘控電路輸出能夠連通)。若運算元Rm 和Rn 中的至少一者為零,則可以將賦能信號408設置為「0」,從而防止了閘控的運算元Rm ’連通。
在一種配置中,為了決定運算元Rm 和Rn 二者是否為非零,從標籤儲存器306中讀取與運算元Rm 和Rn 相對應的兩個標籤中的一個或二者,如上文參照圖3所描述的。在一種配置中,若運算元Rm 和Rn 中的至少一者為零,則閘控的運算元Rm ’可以不連通,從而節省了用於提取運算元Rm 的功率。
圖5是圖示當用於乘法器的運算元中的至少一個運算元是零時,對乘法器和加法器進行旁路的修改的乘法器-累加器單元500的實例的圖。在該實例中,MAC單元500可以包括乘法器502、加法器504、閘控電路506和多工器510。
乘法器502可以接收兩個運算元Rm ’和Rn ’。在一種配置中,運算元Rm ’和Rn ’中的每一者可以是上文參照圖4所描述的資料閘控電路402的輸出。在此種配置中,運算元Rm ’和Rn ’可以是運算元Rm 和Rn 的閘控值。乘法器502可以輸出運算元Rm ’和Rn ’的乘積。
在一種配置中,閘控電路506可以是暫存器(例如,正反器)。在一種配置中,閘控電路506可以是三態緩衝器。如圖所示,閘控電路506可以從累加器暫存器(未圖示)接收先前的累加值Rd 。該先前的累加值Rd 可以被傳播通過閘控電路506,並被輸出成閘控的累加值Rd ’。此外,閘控電路506亦可以接收賦能信號508。賦能信號508可以取決於運算元Rm 和Rn 二者是否為非零。在一種配置中,若兩個運算元Rm 和Rn 均為非零,則可以將賦能信號508設置為「1」,從而使閘控的累加值Rd ’能夠連通或者能夠被傳播。若運算元Rm 和Rn 中的至少一者為零,則可以將賦能信號508設置為「0」,從而防止了閘控的累加值Rd ’連通或者進行傳播。在一種配置中,賦能信號508可以等同於上文參照圖4所描述的賦能信號408。
在一種配置中,為了決定運算元Rm 和Rn 二者是否為非零,從標籤儲存器306中讀取與運算元Rm 和Rn 相對應的兩個標籤中的一個或二者,如上文參照圖3所描述的。在一種配置中,若運算元Rm 和Rn 中的至少一者為零,則閘控的累加值Rd ’可以不連通或者不被傳播,從而節省了用於提取先前的累加值Rd 的功率。
加法器504從乘法器502的輸出接收一個輸入,以及從閘控電路506的輸出接收另一個輸入,以及輸出閘控的累加值Rd ’與運算元Rm ’和Rn ’的乘積的和。
多工器510可以接收先前的累加值Rd 作為第一輸入,以及接收加法器504的輸出作為第二輸入。多工器510可以接收賦能信號508作為控制信號。在一種配置中,若賦能信號508是「1」,其意味著運算元Rm 和Rn 二者均是非零,則多工器510可以選擇加法器504的輸出作為多工器510的輸出。若賦能信號508是「0」,其意味著運算元Rm 和Rn 中的至少一者是零,則多工器510可以選擇先前的累加值Rd 作為多工器510的輸出。可以將多工器510的輸出儲存到累加器暫存器(未圖示)中,作為新的累加值。因此,若運算元Rm 和Rn 中的至少一者是零,則MAC單元500可以對乘法器502和加法器504進行旁路,並且選擇先前的累加值Rd 作為新的累加值。
圖6是減少用於神經網路的功耗的方法的流程圖600。在一種配置中,該神經網路可以是深度迴旋神經網路(DCN)。可以由計算設備(例如,設備300或者裝置702/702’)來執行該方法。在602處,該設備可以可選地決定用於該神經網路中的權重的第一標籤值和用於該神經網路中的啟用的第二標籤值。第一標籤值可以指示權重是否為零,第二標籤值可以指示啟用是否為零。權重和啟用可以形成要被載入到MAC(例如,MAC單元500,其可以位於計算單元314中)的乘法器(例如,乘法器502)上的一對運算元。在一種配置中,為了決定權重或者啟用是否為零,可以將權重或啟用與零值進行比較。在一種配置中,可以將標籤設置為1以指示零值,而設置為0以指示非零值。在一種配置中,可以將標籤設置為0以指示零值,而設置為1以指示非零值。在一種配置中,可以將權重和啟用儲存在運算元儲存器(例如,運算元儲存器308)中。
在604處,設備可以可選地將第一標籤值和第二標籤值儲存在標籤儲存器(例如,標籤儲存器306)中。在一種配置中,當啟用被更新時,設備可以更新標籤儲存器處的第二標籤值。在一種配置中,當第二標籤值指示啟用為零時,設備可以禁止更新運算元儲存器中的啟用。在一種配置中,即使第二標籤值可能指示啟用為非零,但當第一標籤值指示權重為零時,設備亦可以禁止更新運算元儲存器中的啟用。
在606處,設備可以從標籤儲存器中取得第一標籤值或者第二標籤值中的至少一個標籤值。在一種配置中,設備可以首先取得一個標籤值(例如,第一標籤值或者第二標籤值)。若取得的標籤值指示非零值,則設備可以取得另一個標籤值。
在608處,設備可以決定至少一個標籤值是否指示用於權重或者啟用的零值。若至少一個標籤值指示用於權重或者啟用的零值,則設備可以轉到612處。若至少一個標籤值指示該權重或者啟用為非零,則設備可以轉到610。
在612處,設備可以禁止將權重和啟用載入到MAC的乘法器。在一種配置中,為了禁止將權重和啟用載入到乘法器,設備可以防止用於輸出權重和啟用的運算元儲存器的輸出線進行連通。在一種配置中,設備可以使用資料閘控電路(例如,資料閘控電路320、322、324或402),來禁止將權重和啟用載入到乘法器。
在614處,設備可以可選地禁止將先前的累加值從儲存器載入到MAC的加法器(例如,加法器504)。在一種配置中,為了禁止將先前的累加值從儲存器載入到加法器,設備可以防止用於儲存先前的累加值的儲存器(例如,累加器暫存器)的輸出線進行連通。在一種配置中,設備可以使用閘控電路(例如,儲存器和加法器之間的閘控電路506),來禁止將先前的累加值從儲存器載入到加法器。
在616處,設備可以可選地經由多工器(例如,多工器510)選擇先前的累加值作為新的累加值。在一種配置中,多工器的第一輸入可以是先前的累加值,而多工器的第二輸入可以是加法器的輸出。例如,當權重或者啟用中的至少一者為零時,多工器可以接收被設置為0的控制信號,其可以選擇多工器的第一輸入作為該多工器的輸出。從而,先前的累加值被選擇作為多工器的輸出,並被儲存到累加器暫存器上作為新的累加值。
在610處,設備可以可選地決定權重和啟用二者是否為非零。若權重和啟用二者均為非零,則設備可以轉到618處。若權重和啟用中的一者為非零,但另一者為零,則設備可以轉到612處。
在618處,設備可以可選地將權重和啟用載入到MAC的乘法器。在一種配置中,乘法器可以計算該權重和啟用的乘積,並將該權重和啟用的乘積提供成為針對加法器的輸入。
在620處,設備可以可選地將先前的累加值載入到MAC的加法器。在一種配置中,加法器可以計算先前的累加值與該權重和啟用的乘積的和,並將該和提供成為針對多工器的輸入。
在622處,設備可以可選地經由多工器將加法器的輸出選擇成為新的累加值。例如,當權重和啟用二者均為非零時,多工器可以接收被設置為1的控制信號,其可以選擇多工器的第二輸入作為該多工器的輸出。從而,加法器的輸出被選擇作為多工器的輸出,並被儲存到累加器暫存器上作為新的累加值。
圖7是圖示示例性裝置702中的不同構件/元件之間的資料流程的概念性資料流程圖700。該裝置702可以是計算設備(例如,設備300)。該裝置702可以包括儲存元件710,後者用於儲存要被載入到MAC單元的乘法器的運算元。在一種配置中,儲存元件710可以包括上文所描述的運算元儲存器308。
裝置702可以包括標籤產生元件704,後者用於產生儲存元件710中儲存的運算元的零標籤。每個零標籤可以指示相對應的運算元是否為零。在一種配置中,該等零標籤可以儲存在標籤儲存器(例如,標籤儲存器306)中。在一種配置中,標籤產生元件704可以執行上文參照圖6中的602或604所描述的操作。在一種配置中,可以針對每個運算元來儲存標籤值,可以基於相應的運算元的初始值,對每個標籤值進行初始化。
裝置702可以包括零值偵測元件706,後者用於基於相應的零標籤,偵測一對運算元中的至少一個運算元是否為零。該對運算元可以包括神經網路的權重和神經網路的啟用。在一種配置中,零值偵測元件706可以執行上文參照圖6中的606、608或610所描述的操作。
裝置702可以包括計算元件712,後者用於計算每對運算元的乘積。在一種配置中,計算元件712可以包括上文參照圖3所描述的計算單元314。
裝置702可以包括資料閘控元件708,後者用於基於從零值偵測元件706接收的零值偵測,啟用或者禁止將運算元從儲存元件710載入到計算元件712上。在一種配置中,資料閘控元件708可以包括上文所描述的資料閘控電路320、322、324或402。在一種配置中,資料閘控元件708可以執行上文參照圖6中的612或618所描述的操作。
該裝置可以包括用於執行圖6的前述流程圖中的演算法裡的每一個方塊的額外元件。因此,圖6的前述流程圖中的每一個方塊可以由一個元件來執行,而該裝置可以包括該等元件中的一或多個元件。該等元件可以是專門被配置為執行所陳述的過程/演算法的一或多個硬體元件、該等元件可以由被配置為執行所陳述的過程/演算法的處理器來實現、儲存在電腦可讀取媒體之中以便由處理器實現,或者是其某種組合。
圖8是圖示用於使用處理系統814的裝置702’的硬體實現的實例的圖800。處理系統814可以使用匯流排架構來實現,其中該匯流排架構通常用匯流排824來表示。根據處理系統814的具體應用和整體設計約束,匯流排824可以包括任意數量的相互連接匯流排和橋接。匯流排824將包括一或多個處理器及/或硬體元件(其用處理器804、元件704、706、708、710、712表示),以及電腦可讀取媒體/記憶體806的各種電路連結在一起。此外,匯流排824亦可以連結諸如定時源、周邊設備、電壓調節器和功率管理電路等等之類的各種其他電路,其中該等電路是本領域所公知的,因此沒有做任何進一步的描述。
處理系統814可以耦合到收發機810。收發機810可以耦合到一或多個天線820。收發機810提供用於經由傳輸媒體與各種其他裝置進行通訊的構件。收發機810從該一或多個天線820接收信號,從所接收的信號中提取資訊,並將提取的資訊提供給處理系統814。此外,收發機810亦從處理系統814接收資訊,並基於所接收的資訊,產生要應用於該一或多個天線820的信號。處理系統814包括耦合到電腦可讀取媒體/記憶體806的處理器804。處理器804負責通用處理,其包括執行電腦可讀取媒體/記憶體806上儲存的軟體。當該軟體由處理器804執行時,使得處理系統814執行上文針對任何特定裝置所描述的各種功能。電腦可讀取媒體/記憶體806亦可以用於儲存當執行軟體時由處理器804所操作的資料。此外,該處理系統814亦包括元件704、706、708、710、712中的至少一個元件。該等元件可以是在處理器804中執行、常駐/儲存在電腦可讀取媒體/記憶體806中的軟體元件、耦合到處理器804的一或多個硬體元件,或者其某種組合。
在一種配置中,裝置702/702’可以包括用於取得用於神經網路中的權重的第一標籤值或者用於神經網路中的啟用的第二標籤值中的至少一個標籤值的構件。在一種配置中,用於取得第一標籤值或者第二標籤值中的至少一個標籤值的構件可以執行上文參照圖6中的606所描述的操作。在一種配置中,用於取得第一標籤值或者第二標籤值中的至少一個標籤值的構件可以包括位址產生器302、載入單元304或者處理器804。
在一種配置中,裝置702/702’可以包括:用於決定至少一個標籤值是否指示零值的構件。在一種配置中,用於決定至少一個標籤值是否指示零值的構件可以執行上文參照圖6中的608所描述的操作。在一種配置中,用於決定至少一個標籤值是否指示零值的構件可以包括零值偵測元件706或者處理器804。
在一種配置中,裝置702/702’可以包括:用於當至少一個標籤值指示零值時,禁止將權重和啟用載入到乘法器的構件。在一種配置中,用於禁止將權重和啟用載入到乘法器的構件可以執行上文參照圖6中的612所描述的操作。在一種配置中,用於禁止將權重和啟用載入到乘法器的構件可以包括資料閘控電路320、322、324或402或者資料閘控元件708。在一種配置中,用於禁止將權重和啟用載入到乘法器的構件可以被配置為:防止用於輸出權重和啟用的運算元儲存器的輸出線進行連通。
在一種配置中,裝置702/702’可以包括:用於當啟用被更新時,更新標籤儲存器處的第二標籤值的構件。在一種配置中,用於當啟用被更新時,更新標籤儲存器處的第二標籤值的構件可以包括儲存單元312、位址產生器302或者處理器804。
在一種配置中,裝置702/702’可以包括:用於當第二標籤值指示啟用為零時,禁止更新運算元儲存器中的啟用的構件。在一種配置中,用於禁止更新運算元儲存器中的啟用的構件可以包括儲存單元312或者處理器804。
在一種配置中,裝置702/702’可以包括:用於當至少一個標籤值指示零值時,禁止將先前的累加值載入到MAC的加法器的構件。在一種配置中,用於禁止將先前的累加值載入到MAC的加法器的構件可以執行上文參照圖6中的614所描述的操作。在一種配置中,用於禁止將先前的累加值載入到MAC的加法器的構件可以包括閘控電路506。在一種配置中,用於禁止將先前的累加值載入到加法器的構件可以被配置為:防止用於儲存先前的累加值的儲存器的輸出線進行連通。
在一種配置中,裝置702/702’可以包括:用於當至少一個標籤值指示零值時,選擇先前的累加值作為新的累加值的構件。在一種配置中,用於選擇先前的累加值作為新的累加值的構件可以執行上文參照圖6中的616所描述的操作。在一種配置中,用於選擇先前的累加值作為新的累加值的構件可以包括多工器510、計算元件712或者處理器804。
在一種配置中,裝置702/702’可以包括:用於當第一標籤值和第二標籤值指示權重和啟用均為非零時,選擇加法器的輸出作為新的累加值的構件。在一種配置中,用於選擇加法器的輸出作為新的累加值的構件可以執行上文參照圖6中的622所描述的操作。在一種配置中,用於選擇加法器的輸出作為新的累加值的構件可以包括多工器510、計算元件712或者處理器804。
在一種配置中,裝置702/702’可以包括:用於決定用於權重的第一標籤值的構件。在一種配置中,用於決定用於權重的第一標籤值的構件可以執行上文參照圖6中的602所描述的操作。在一種配置中,用於決定用於權重的第一標籤值的構件可以包括標籤產生元件704或者處理器804。
在一種配置中,裝置702/702’可以包括:用於決定用於啟用的第二標籤值的構件。在一種配置中,用於決定用於啟用的第二標籤值的構件可以執行上文參照圖6中的602所描述的操作。在一種配置中,用於決定用於啟用的第二標籤值的構件可以包括標籤產生元件704或者處理器804。
在一種配置中,裝置702/702’可以包括:用於將第一標籤值和第二標籤值儲存在標籤儲存器中的構件。在一種配置中,用於將第一標籤值和第二標籤值儲存在標籤儲存器中的構件可以執行上文參照圖6中的604所描述的操作。在一種配置中,用於將第一標籤值和第二標籤值儲存在標籤儲存器中的構件可以包括標籤產生元件704或者處理器804。
前述的構件可以是裝置702的前述元件中的一或多個元件,及/或被配置為執行經由該等前述構件所記載的功能的裝置702’的處理系統814。
應當理解的是,本文所揭示的過程/流程圖中的方塊的特定順序或者層次僅是示例性方法的一個說明。應當理解的是,根據設計優先選擇,可以重新排列該等過程/流程圖中的方塊的特定順序或層次。此外,可以對一些方塊進行組合或省略。所附的方法請求項以示例性順序提供各種方塊的要素,但並不意味著其受到提供的特定順序或層次的限制。
為使任何熟習此項技術者能夠實現本文所描述的各個態樣,上文圍繞各個態樣進行了描述。對於熟習此項技術者而言,對該等態樣的各種修改將是顯而易見的,並且本文定義的整體原理亦可以適用於其他態樣。因此,申請專利範圍並不限於本文所展示的態樣,而是符合與申請專利範圍文字相一致的全部範疇,其中除非特別說明,否則用單數形式修飾某一要素並不意味著「一個和僅僅一個」,而可以是「一或多個」。本文所使用的「示例性」一詞意味著「用作示例、實例或說明」。本文中描述為「示例性」的任何態樣不一定被解釋為比其他態樣更佳或更具優勢。除非另外特別說明,否則術語「一些」代表一或多個。諸如「A、B或C中的至少一個」、「A、B或C中的一或多個」、「A、B和C中的至少一個」、「A、B和C中的一或多個」以及「A、B、C或者其任意組合」之類的組合,包括A、B及/或C的任意組合,並且其可以包括多個A、多個B或者多個C。具體而言,諸如「A、B或C中的至少一個」、「A、B或C中的一或多個」、「A、B和C中的至少一個」、「A、B和C中的一或多個」以及「A、B、C或者其任意組合」之類的組合,可以是僅僅A、僅僅B、僅僅C、A和B、A和C、B和C或者A和B和C,其中任意的此種組合可以包含A、B或C中的一或多個成員。以引用方式將針對貫穿本案內容描述的各個態樣的要素的所有結構和功能均等物明確地併入本文中,並且意欲由請求項所涵蓋,該等結構和功能均等物對於一般技術者而言是公知的或將要是公知的。此外,本文中沒有任何揭示內容是想要奉獻給公眾的,不管此種揭示內容是否明確記載在申請專利範圍中。「模組」、「機制」、「要素」、「設備」等等之類的詞語,可能並不是詞語「構件」的替代詞。因此,請求項的要素不應被解釋為功能構件,除非該要素明確地採用了「用於……的構件」的措辭進行記載。
100‧‧‧網路
102‧‧‧完全連接的網路
104‧‧‧局部連接的網路
106‧‧‧迴旋網路
108‧‧‧連接強度
110‧‧‧連接強度
112‧‧‧連接強度
114‧‧‧連接強度
116‧‧‧連接強度
118‧‧‧後續層
120‧‧‧後續層
122‧‧‧輸出
126‧‧‧裁剪圖像
200‧‧‧深度迴旋網路
300‧‧‧設備
302a‧‧‧位址產生器
302b‧‧‧位址產生器
302c‧‧‧位址產生器
302d‧‧‧位址產生器
304a‧‧‧載入單元
304b‧‧‧載入單元
304c‧‧‧載入單元
306‧‧‧標籤儲存器
308‧‧‧運算元儲存器
310‧‧‧非線性區塊
312‧‧‧儲存單元
314‧‧‧計算單元
320‧‧‧資料閘控電路
322‧‧‧資料閘控電路
324‧‧‧資料閘控電路
400‧‧‧圖
402‧‧‧資料閘控電路
406‧‧‧運算元儲存器
408‧‧‧賦能信號
500‧‧‧MAC單元
502‧‧‧乘法器
504‧‧‧加法器
506‧‧‧閘控電路
508‧‧‧賦能信號
510‧‧‧多工器
600‧‧‧流程圖
602‧‧‧步驟
604‧‧‧步驟
606‧‧‧步驟
608‧‧‧步驟
610‧‧‧步驟
612‧‧‧步驟
614‧‧‧步驟
616‧‧‧步驟
618‧‧‧步驟
620‧‧‧步驟
622‧‧‧步驟
700‧‧‧概念性資料流程圖
702‧‧‧裝置
702'‧‧‧裝置
704‧‧‧標籤產生元件
706‧‧‧零值偵測元件
708‧‧‧資料閘控元件
710‧‧‧儲存元件
712‧‧‧計算元件
800‧‧‧圖
804‧‧‧處理器
806‧‧‧電腦可讀取媒體/記憶體
810‧‧‧收發機
814‧‧‧處理系統
820‧‧‧天線
824‧‧‧匯流排
C1‧‧‧迴旋區塊
C2‧‧‧迴旋區塊
圖1是根據本案內容的態樣,圖示神經網路的圖。
圖2是根據本案內容的態樣,圖示一種示例性深度迴旋網路(DCN)的方塊圖。
圖3是圖示減少用於稀疏神經網路的功耗的設備的實例的圖。
圖4是圖示用於防止運算元儲存器的輸出線進行連通(toggle)的資料閘控電路的實例的圖。
圖5是圖示當用於乘法器的運算元中的至少一個運算元是零時,旁路乘法器和加法器的修改的乘法器-累加器單元的實例的圖。
圖6是減少用於神經網路的功耗的方法的流程圖。
圖7是圖示示例性裝置中的不同構件/元件之間的資料流程的概念性資料流程圖。
圖8是圖示用於使用處理系統的裝置的硬體實現的實例的圖。
國內寄存資訊 (請依寄存機構、日期、號碼順序註記) 無
國外寄存資訊 (請依寄存國家、機構、日期、號碼順序註記) 無

Claims (30)

  1. 一種減少一神經網路的功耗的方法,包括以下步驟: 從一標籤儲存器中取得用於該神經網路中的一權重的一第一標籤值或者用於該神經網路中的一啟用的一第二標籤值中的至少一個標籤值,該第一標籤值指示該權重是否為零並且該第二標籤值指示該啟用是否為零,其中該權重和該啟用將作為一對運算元被載入到一乘法器-累加器(MAC)的一乘法器;決定該至少一個標籤值是否指示一零值;及當該至少一個標籤值指示該零值時,禁止將該權重和該啟用載入到該乘法器。
  2. 根據請求項1之方法,其中該權重和該啟用被儲存在一運算元儲存器中。
  3. 根據請求項2之方法,其中該禁止將該權重和該啟用載入到該乘法器之步驟包括以下步驟:防止用於輸出該權重和該啟用的該運算元儲存器的輸出線進行連通。
  4. 根據請求項2之方法,亦包括以下步驟: 當該啟用被更新時,更新該標籤儲存器處的該第二標籤值;及當該第二標籤值指示該啟用為零時,禁止更新該運算元儲存器中的該啟用。
  5. 根據請求項1之方法,其中該神經網路是一深度迴旋神經網路(DCN)。
  6. 根據請求項1之方法,亦包括以下步驟: 當該至少一個標籤值指示該零值時,禁止將一先前的累加值載入到該MAC的一加法器。
  7. 根據請求項6之方法,其中該禁止將該先前的累加值載入到該加法器之步驟包括以下步驟:防止用於儲存該先前的累加值的一儲存器的一輸出線進行連通。
  8. 根據請求項6之方法,亦包括以下步驟:當該至少一個標籤值指示該零值時,由一多工器選擇該先前的累加值作為一新的累加值,該多工器的一第一輸入是該先前的累加值,該多工器的一第二輸入是該加法器的一輸出。
  9. 根據請求項8之方法,亦包括以下步驟:當該第一標籤值和該第二標籤值指示該權重和該啟用均為非零時,由該多工器選擇該加法器的該輸出作為該新的累加值。
  10. 根據請求項1之方法,亦包括以下步驟: 決定用於該權重的該第一標籤值;決定用於該啟用的該第二標籤值;及將該第一標籤值和該第二標籤值儲存在該標籤儲存器中。
  11. 一種用於減少一神經網路的功耗的裝置,包括: 用於從一標籤儲存器中取得用於該神經網路中的一權重的一第一標籤值或者用於該神經網路中的一啟用的一第二標籤值中的至少一個標籤值的構件,該第一標籤值指示該權重是否為零並且該第二標籤值指示該啟用是否為零,其中該權重和該啟用將作為一對運算元被載入到一乘法器-累加器(MAC)的一乘法器;用於決定該至少一個標籤值是否指示一零值的構件;及用於當該至少一個標籤值指示該零值時,禁止將該權重和該啟用載入到該乘法器的構件。
  12. 根據請求項11之裝置,其中該權重和該啟用被儲存在一運算元儲存器中。
  13. 根據請求項12之裝置,其中該用於禁止將該權重和該啟用載入到該乘法器的構件被配置為:防止用於輸出該權重和該啟用的該運算元儲存器的輸出線進行連通。
  14. 根據請求項12之裝置,亦包括: 用於當該啟用被更新時,更新該標籤儲存器處的該第二標籤值的構件;及用於當該第二標籤值指示該啟用為零時,禁止更新該運算元儲存器中的該啟用的構件。
  15. 根據請求項11之裝置,其中該神經網路是一深度迴旋神經網路(DCN)。
  16. 根據請求項11之裝置,亦包括: 用於當該至少一個標籤值指示該零值時,禁止將一先前的累加值載入到該MAC的一加法器的構件。
  17. 根據請求項16之裝置,其中該用於禁止將該先前的累加值載入到該加法器的構件被配置為:防止用於儲存該先前的累加值的一儲存器的一輸出線進行連通。
  18. 根據請求項16之裝置,亦包括:用於當該至少一個標籤值指示該零值時,選擇該先前的累加值作為一新的累加值的構件。
  19. 根據請求項18之裝置,亦包括:用於當該第一標籤值和該第二標籤值指示該權重和該啟用均為非零時,選擇該加法器的一輸出作為該新的累加值的構件。
  20. 根據請求項11之裝置,亦包括: 用於決定用於該權重的該第一標籤值的構件;用於決定用於該啟用的該第二標籤值的構件;及用於將該第一標籤值和該第二標籤值儲存在該標籤儲存器中的構件。
  21. 一種用於減少一神經網路的功耗的裝置,包括: 一標籤儲存器;至少一個處理器,其被配置為:從該標籤儲存器中取得用於該神經網路中的一權重的一第一標籤值或者用於該神經網路中的一啟用的一第二標籤值中的至少一個標籤值,該第一標籤值指示該權重是否為零並且該第二標籤值指示該啟用是否為零,其中該權重和該啟用將作為一對運算元被載入到一乘法器-累加器(MAC)的一乘法器;及決定該至少一個標籤值是否指示一零值;及一閘控電路,其被配置為當該至少一個標籤值指示該零值時,禁止將該權重和該啟用載入到該乘法器。
  22. 根據請求項21之裝置,其中該權重和該啟用被儲存在一運算元儲存器中。
  23. 根據請求項22之裝置,其中為了禁止將該權重和該啟用載入到該乘法器,該閘控電路被配置為:防止用於輸出該權重和該啟用的該運算元儲存器的輸出線進行連通。
  24. 根據請求項22之裝置,其中該至少一個處理器亦被配置為: 當該啟用被更新時,更新該標籤儲存器處的該第二標籤值;及當該第二標籤值指示該啟用為零時,禁止更新該運算元儲存器中的該啟用。
  25. 根據請求項21之裝置,亦包括一第二閘控電路,其被配置為: 當該至少一個標籤值指示該零值時,禁止將一先前的累加值載入到該MAC的一加法器。
  26. 根據請求項25之裝置,其中為了禁止將該先前的累加值載入到該加法器,該第二閘控電路被配置為:防止用於儲存該先前的累加值的一儲存器的一輸出線進行連通。
  27. 根據請求項25之裝置,亦包括:一多工器,其被配置為:當該至少一個標籤值指示該零值時,選擇該先前的累加值作為一新的累加值,該多工器的一第一輸入是該先前的累加值,該多工器的一第二輸入是該加法器的一輸出。
  28. 根據請求項27之裝置,其中該多工器亦被配置為:當該第一標籤值和該第二標籤值指示該權重和該啟用均為非零時,選擇該加法器的該輸出作為該新的累加值。
  29. 根據請求項21之裝置,其中該至少一個處理器亦被配置為: 決定用於該權重的該第一標籤值;決定用於該啟用的該第二標籤值;及將該第一標籤值和該第二標籤值儲存在該標籤儲存器中。
  30. 一種儲存電腦可執行代碼的電腦可讀取媒體,包括用於以下操作的代碼: 從一標籤儲存器中取得用於一神經網路中的一權重的一第一標籤值或者用於該神經網路中的一啟用的一第二標籤值中的至少一個標籤值,該第一標籤值指示該權重是否為零並且該第二標籤值指示該啟用是否為零,其中該權重和該啟用將作為一對運算元被載入到一乘法器-累加器(MAC)的一乘法器;決定該至少一個標籤值是否指示一零值;及當該至少一個標籤值指示該零值時,禁止將該權重和該啟用載入到該乘法器。
TW106139123A 2016-12-13 2017-11-13 用於稀疏神經網路的低功率架構 TW201824094A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/377,858 US20180164866A1 (en) 2016-12-13 2016-12-13 Low-power architecture for sparse neural network
US15/377,858 2016-12-13

Publications (1)

Publication Number Publication Date
TW201824094A true TW201824094A (zh) 2018-07-01

Family

ID=60543707

Family Applications (1)

Application Number Title Priority Date Filing Date
TW106139123A TW201824094A (zh) 2016-12-13 2017-11-13 用於稀疏神經網路的低功率架構

Country Status (4)

Country Link
US (1) US20180164866A1 (zh)
CN (1) CN110073370A (zh)
TW (1) TW201824094A (zh)
WO (1) WO2018111477A1 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI688871B (zh) * 2019-08-27 2020-03-21 國立清華大學 矩陣乘法裝置及其操作方法
TWI847030B (zh) * 2021-05-05 2024-07-01 創鑫智慧股份有限公司 矩陣乘法器及其操作方法
TWI851057B (zh) * 2022-05-23 2024-08-01 美商萬國商業機器公司 脈衝神經網路之神經元電路、設備、電腦實施方式及電腦系統

Families Citing this family (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10795836B2 (en) * 2017-04-17 2020-10-06 Microsoft Technology Licensing, Llc Data processing performance enhancement for neural networks using a virtualized data iterator
US11164071B2 (en) 2017-04-18 2021-11-02 Samsung Electronics Co., Ltd. Method and apparatus for reducing computational complexity of convolutional neural networks
US10372416B2 (en) 2017-04-28 2019-08-06 Intel Corporation Multiply-accumulate “0” data gating
CN110059811B (zh) * 2017-11-06 2024-08-02 畅想科技有限公司 权重缓冲器
US11248930B2 (en) * 2018-03-02 2022-02-15 International Business Machines Corporation Microclimate wind forecasting
US12518146B1 (en) 2018-04-20 2026-01-06 Amazon Technologies, Inc. Address decoding by neural network inference circuit read controller
US11403530B1 (en) 2018-04-20 2022-08-02 Perceive Corporation Using quinary weights with neural network inference circuit designed for ternary weights
US11210586B1 (en) 2018-04-20 2021-12-28 Perceive Corporation Weight value decoder of neural network inference circuit
US10740434B1 (en) 2018-04-20 2020-08-11 Perceive Corporation Reduced dot product computation circuit
US11783167B1 (en) 2018-04-20 2023-10-10 Perceive Corporation Data transfer for non-dot product computations on neural network inference circuit
US11481612B1 (en) 2018-04-20 2022-10-25 Perceive Corporation Storage of input values across multiple cores of neural network inference circuit
US11687759B2 (en) 2018-05-01 2023-06-27 Semiconductor Components Industries, Llc Neural network accelerator
US10817260B1 (en) * 2018-06-13 2020-10-27 Amazon Technologies, Inc. Reducing dynamic power consumption in arrays
US12205012B2 (en) * 2018-08-24 2025-01-21 Samsung Electronics Co., Ltd. Method of accelerating training process of neural network and neural network device thereof
US10747845B2 (en) * 2018-08-31 2020-08-18 Arm Limited System, method and apparatus for computationally efficient data manipulation
US11281974B2 (en) * 2018-10-25 2022-03-22 GM Global Technology Operations LLC Activation zero-bypass and weight pruning in neural networks for vehicle perception systems
US11995533B1 (en) 2018-12-05 2024-05-28 Perceive Corporation Executing replicated neural network layers on inference circuit
KR102744307B1 (ko) 2018-12-12 2024-12-18 삼성전자주식회사 뉴럴 네트워크에서의 부하 균형을 위한 장치 및 방법
CN109740754B (zh) * 2018-12-29 2020-04-14 中科寒武纪科技股份有限公司 神经网络计算装置、神经网络计算方法及相关产品
US11347297B1 (en) 2019-01-23 2022-05-31 Perceive Corporation Neural network inference circuit employing dynamic memory sleep
WO2020168423A1 (en) * 2019-02-19 2020-08-27 Lei Zhang Method and system for convolution model multi-mode hardware accelerator
KR102746968B1 (ko) * 2019-03-20 2024-12-27 에스케이하이닉스 주식회사 신경망 가속 장치 및 그것의 동작 방법
US11494624B2 (en) * 2019-05-20 2022-11-08 Mipsology SAS Accelerating neuron computations in artificial neural networks with dual sparsity
WO2020234625A1 (en) * 2019-05-20 2020-11-26 Mipsology SAS Accelerating neuron computations in artificial neural networks with dual sparsity
US12260317B1 (en) 2019-05-21 2025-03-25 Amazon Technologies, Inc. Compiler for implementing gating functions for neural network configuration
US11507349B2 (en) 2019-06-26 2022-11-22 Microsoft Technology Licensing, Llc Neural processing element with single instruction multiple data (SIMD) compute lanes
US11222092B2 (en) * 2019-07-16 2022-01-11 Facebook Technologies, Llc Optimization for deconvolution
CN110458285B (zh) * 2019-08-14 2021-05-14 中科寒武纪科技股份有限公司 数据处理方法、装置、计算机设备和存储介质
US11842169B1 (en) * 2019-09-25 2023-12-12 Amazon Technologies, Inc. Systolic multiply delayed accumulate processor architecture
US20210117799A1 (en) * 2019-10-17 2021-04-22 EMC IP Holding Company LLC Monitoring performance of a storage system using paired neural networks
US11816446B2 (en) 2019-11-27 2023-11-14 Amazon Technologies, Inc. Systolic array component combining multiple integer and floating-point data types
US11467806B2 (en) 2019-11-27 2022-10-11 Amazon Technologies, Inc. Systolic array including fused multiply accumulate with efficient prenormalization and extended dynamic range
US12450486B2 (en) * 2019-12-13 2025-10-21 Qualcomm Incorporated Depth-first deep convolutional neural network inference
US11562047B2 (en) * 2020-01-31 2023-01-24 Microsoft Technology Licensing, Llc Accelerator for dense and sparse matrix computations
US12288152B2 (en) 2020-03-12 2025-04-29 Semiconductor Components Industries, Llc Neural network weight encoding
US11614920B2 (en) * 2020-05-07 2023-03-28 Meta Platforms, Inc. Bypassing zero-value multiplications in a hardware multiplier
CN111882028B (zh) * 2020-06-08 2022-04-19 北京大学深圳研究生院 用于卷积神经网络的卷积运算装置
US11308027B1 (en) 2020-06-29 2022-04-19 Amazon Technologies, Inc. Multiple accumulate busses in a systolic array
US12182621B2 (en) * 2020-07-21 2024-12-31 The Governing Council Of The University Of Toronto System and method for using sparsity to accelerate deep learning networks
CN112489012A (zh) * 2020-11-27 2021-03-12 大连东软教育科技集团有限公司 一种用于ct图像识别的神经网络架构方法
US20230316059A1 (en) * 2020-12-10 2023-10-05 Neuronix AI Labs Inc. Neural networks processing units redundancy removal
US20220253692A1 (en) * 2021-02-05 2022-08-11 Samsung Electronics Co., Ltd. Method and apparatus of operating a neural network
US20220309314A1 (en) * 2021-03-24 2022-09-29 Qualcomm Incorporated Artificial Intelligence Processor Architecture For Dynamic Scaling Of Neural Network Quantization
US12217160B1 (en) 2021-04-23 2025-02-04 Amazon Technologies, Inc. Allocating blocks of unified memory for integrated circuit executing neural network
CN113962376B (zh) * 2021-05-17 2024-11-29 南京风兴科技有限公司 基于混层级精度运算的稀疏神经网络处理器、方法
US12423058B2 (en) 2021-06-30 2025-09-23 Amazon Technologies, Inc. Systolic array with input reduction to multiple reduced inputs
US11880682B2 (en) 2021-06-30 2024-01-23 Amazon Technologies, Inc. Systolic array with efficient input reduction and extended array performance
US12288142B2 (en) * 2021-08-09 2025-04-29 Qualcomm Incorporated Sparsity-aware compute-in-memory
US20230065725A1 (en) * 2021-09-02 2023-03-02 Qualcomm Incorporated Parallel depth-wise processing architectures for neural networks
US12517700B1 (en) 2022-03-30 2026-01-06 Amazon Technologies, Inc. Systolic array with output rounding for multiple source/destination data type pairs
US12007885B2 (en) * 2022-04-26 2024-06-11 Microsoft Technology Licensing, Llc Fetching non-zero data
US20230325665A1 (en) * 2023-05-30 2023-10-12 Intel Corporation Sparsity-based reduction of gate switching in deep neural network accelerators

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9015096B2 (en) * 2012-05-30 2015-04-21 Qualcomm Incorporated Continuous time spiking neural network event-based simulation that schedules co-pending events using an indexable list of nodes
US20150206050A1 (en) * 2014-01-23 2015-07-23 Qualcomm Incorporated Configuring neural network for low spiking rate
CN105488565A (zh) * 2015-11-17 2016-04-13 中国科学院计算技术研究所 加速深度神经网络算法的加速芯片的运算装置及方法
CN105488563A (zh) * 2015-12-16 2016-04-13 重庆大学 面向深度学习的稀疏自适应神经网络、算法及实现装置

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI688871B (zh) * 2019-08-27 2020-03-21 國立清華大學 矩陣乘法裝置及其操作方法
TWI847030B (zh) * 2021-05-05 2024-07-01 創鑫智慧股份有限公司 矩陣乘法器及其操作方法
US12086206B2 (en) 2021-05-05 2024-09-10 Neuchips Corporation Matrix multiplier and operation method thereof
TWI851057B (zh) * 2022-05-23 2024-08-01 美商萬國商業機器公司 脈衝神經網路之神經元電路、設備、電腦實施方式及電腦系統

Also Published As

Publication number Publication date
CN110073370A (zh) 2019-07-30
WO2018111477A1 (en) 2018-06-21
US20180164866A1 (en) 2018-06-14

Similar Documents

Publication Publication Date Title
TW201824094A (zh) 用於稀疏神經網路的低功率架構
TWI759361B (zh) 用於稀疏神經網路加速的架構、方法、電腦可讀取媒體和裝備
Fang et al. Tinier-YOLO: A real-time object detection method for constrained environments
Li et al. A high performance FPGA-based accelerator for large-scale convolutional neural networks
KR102637735B1 (ko) 근사 곱셈기를 구비하는 뉴럴 네트워크 처리 장치 및 이를 포함하는 시스템온 칩
US20180260710A1 (en) Calculating device and method for a sparsely connected artificial neural network
US20200073636A1 (en) Multiply-accumulate (mac) operations for convolutional neural networks
Lee Architecture of neural processing unit for deep neural networks
TW201917566A (zh) 深度視覺處理器
US12223289B2 (en) Neural network device for neural network operation, operating method of the neural network device, and application processor including the same
Pannu et al. Design and fabrication of flow-based edge detection memristor crossbar circuits
Shan et al. A dynamic multi-precision fixed-point data quantization strategy for convolutional neural network
KR20220142333A (ko) 데이터 재사용이 가능한 신경 프로세싱 유닛 및 그 방법
Qu et al. Design of low-power YOLO accelerator based on FPGA
Kala et al. A deep neural network for image classification using mixed analog and digital infrastructure
Yu et al. Optimizing FPGA-based convolutional encoder-decoder architecture for semantic segmentation
CN113313171A (zh) 基于fpga实现图像识别的方法、装置、设备及存储介质
Hu et al. On-chip instruction generation for cross-layer CNN accelerator on FPGA
Bai et al. An OpenCL-based FPGA accelerator with the Winograd’s minimal filtering algorithm for convolution neuron networks
Tan et al. FPGA-Based Convolution Accelerator and Memristor IP Core for Cooperative Acceleration of the YOLO Network
Chen et al. Dandelion: Boosting dnn usability under dataset scarcity
Xin et al. Lightweight convolutional neural network of YOLO v3-Tiny algorithm on FPGA for target detection
CN111178492A (zh) 计算装置及相关产品、执行人工神经网络模型的计算方法
Huo et al. Towards Low-Cost and Energy-Optimized Underwater Image Classification Based-on FPGA
Aydin et al. Optimal hardware implementation for end-to-end CNN-based classification