TWI791331B - 神經處理單元(npus)與使用該神經處理單元的計算系統 - Google Patents
神經處理單元(npus)與使用該神經處理單元的計算系統 Download PDFInfo
- Publication number
- TWI791331B TWI791331B TW110143431A TW110143431A TWI791331B TW I791331 B TWI791331 B TW I791331B TW 110143431 A TW110143431 A TW 110143431A TW 110143431 A TW110143431 A TW 110143431A TW I791331 B TWI791331 B TW I791331B
- Authority
- TW
- Taiwan
- Prior art keywords
- overlap
- neuron
- neural processing
- processing unit
- digital
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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)
- Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Theoretical Computer Science (AREA)
- Evolutionary Computation (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Computational Linguistics (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Neurology (AREA)
- Feedback Control In General (AREA)
- Memory System (AREA)
- Burglar Alarm Systems (AREA)
- Radar Systems Or Details Thereof (AREA)
Abstract
本發明涉及一種可在神經處理單元中實現的積體電路(也稱為「晶片」)。在高層次上,該些晶片的目標是為機器學習演算法提供比傳統處理單元更高的效能。為了實現這一點,神經處理單元可包括多個計算組件,每個計算組件都可獨立地重疊加以確定,該重疊位於作為輸入而提供的編碼資料與儲存於記憶體中的值之間。
Description
本發明請求標題為「神經處理單元(NPU)與使用該神經處理單元的人工智慧(AI)和/或機器學習(ML)系統」的美國臨時申請案63/116,608(申請日:2020年11月20日)、標題為「使用編碼器、神經處理單元(NPU)和分類器的可解釋機器學習(ML)和人工智慧(AI)方法與系統」的美國臨時申請案63/227,590(申請日:2021年7月30日)的優先權,其全部內容以引用方式併入本文。
本發明的各種實施例涉及具有適用於人工智慧和機器學習程序的硬體架構的處理單元,以及能夠採用相同硬體架構的計算系統。
從技術發展的歷史來上看,人工智慧(AI)和機器學習(ML)程序乃是由使用傳統的處理單元執行複雜軟體的計算系統(或簡稱「系統」)加以實現,例如中央處理單元(CPU)和圖形處理單元(GPU)。雖然這些傳統處理單元的硬體架構能夠執行必要的計算,但其實際效能相對於所需的效能而言仍為緩慢。簡單地來說,效能受到影響是因為需要太多的資料和過多的計算。
這種效能上的衝擊可能具有顯著的延伸影響。例如,如果效能受到由於延遲所造成的一定程度影響,那麼人工智慧和機器學習程序在某些情況下可能無法實施。例如,不到一秒的延遲可能會妨礙在需要及時性的地方實施人工智慧和機器學習程序,例如自動駕駛系統,其中實時人工智慧和機器學習程序可對乘員安全造成影響。另一個實時系統的例子是軍事目標系統,其必須在造成生命損失之前做出敵友判定並採取行動。任何實時決策可能影響生命、安全或資本資產的情境都需要更快的人工智慧和機器學習程序的應用。
研究機構曾經試圖透過增加系統可用的計算資源來解決這種對效能的影響。然而,這種方法有幾個缺點。首先,增加計算資源可能不切實際或為不可能。如果人工智慧和機器學習程序由包含於計算設備(例如行動電話、平板電腦等)中的系統實現,則尤其如此。其次,增加計算資源會導致功率消耗的增加。系統可用的功率可能會受到限制(例如,由於電池限制),因此限制功率消耗是開發新技術的一個要點。
於此說明的是可在神經處理單元中實現的積體電路設備(也稱為「晶片」)。用語「神經處理單元」、「神經處理器」和「NPU」可用於指稱電子電路,該電路旨在實現執行機器學習演算法所需的部分或全部控制和算術邏輯,其通常具有獨立的資料記憶體(或簡稱「記憶體」)和專用的指令集架構。在較高級別上,神經處理單元的目標是為這些機器學習演算法提供比傳統處理單元(例如CPU和GPU)更高的效能。為了實現這一點,神經處理單元可使用大量計算組件來利用高階資料等級的並行性,如下文進一步討論。由於神經處理單元可模仿人腦的工作方式,因此這些計算組件可能被稱為「數位神經元」。
神經處理單元可以利用各種技術以改進的方式執行人工智慧和機器學習程序。然而,此處說明的晶片可在允許以有效的方式在本地(即晶片上)執行必要的計算方面發揮關鍵作用。這些晶片可具有硬體架構,從而將人工智慧和機器學習程序的效能提高幾個數量級,同時還可將執行該些人工智慧和機器學習程序所需的功率降低幾個數量級。例如,該些晶片的硬體架構可在模型訓練期間允許數位圖像視框的處理速度比人工神經網路(ANN)快大約1,200倍,並在推理期間允許數位圖像視框的處理速度比人工神經網路快10.3倍。與傳統的處理單元相比,神經處理單元可以透過使用此處所描述的硬體架構來實現更佳的效能。
雖然底層硬體架構可能很大一部分維持不變,但可以考量到不同的應用來設計、構建和/或訓練晶片。因此,於此說明的晶片可設計為或在專為特定應用中所設計的特定應用積體電路(ASIC)中實現,或該些晶片可設計為或在現場可程式化閘陣列(FPGA)中實現,其可為多種應用重新程式化。本發明描述了幾種不同的硬體架構,並且無論底層電路是可重新配置的或是永久性設置的,該些硬體架構都是可實現的。
具有數位神經元的神經處理單元概述
圖1包括可在NPU中實現的數位神經元100的基於硬體的架構的圖解說明。數位神經元100可將任何感官輸入視為不同資訊位元的陣列資料結構(或簡稱為「陣列」)。感官輸入(或簡稱為「輸入」)的示例包括數位圖像的像素、由感測器生成的值等。該輸入的性質可根據數位神經元100的預期應用而改變。出於說明的目的,該陣列可稱為「輸入框」,其由數位神經元作為輸入而獲得。在較高級別上,輸入框代表包含一組元素的資料結構,每個元素都可透過至少一個陣列索引或按鍵來識別。
數位神經元100可被設計、建造和/或訓練以允許NPU以類似於人腦的方式處理輸入框。對於輸入框,數位神經元100可被程式化為偵測某些資訊位元而忽略其他資訊位元。換句話說,數位神經元100可以偵測儲存在陣列的一些元素中的資訊並且忽略儲存在陣列的其他元素中的資訊。這種關係,也就是哪些元素被偵測與忽略,稱為數位神經元100與輸入框的「重疊」。掌控重疊的位元遮罩(也稱為「遮罩」)可被程式化到重疊記憶體102中。遮罩可為包括零值和非零值的二進制圖像,其維度可以與輸入框相同。因此,遮罩可包括一系列值,並且每個值可對應於輸入框中的相應元素。
一般來說,重疊記憶體102是數位神經元100的一部分,因此專用於儲存與數位神經元100相關的資訊。如果包含在輸入框中的資訊將用作記憶體或資料結構的位址,則數位神經元100可以執行如下邏輯AND函數:
[(Input Frame Address)AND(Overlap Enabled)] 方程式1
為了加以實現,重疊記憶體102可為輸入框中的每個元素包含一個值。請注意,因為數位神經元100旨在模仿生物神經元,所以這些值及其對應的輸入框中每個元素的偏移位址可以稱為「突觸」。因此,「突觸」可以由其值及其在輸入框中的偏移位址來加以表示。因此,數位神經元100的重疊記憶體102可包括每個突觸的單獨值。在NPU含有多個數位神經元的實施例中,NPU所包含的突觸總數將是數位神經元的數量乘以輸入框所包含的元素數量。
輸入框的位址可透過多種方式獲得。在一些實施例中,該些位址是透過將輸入框中的資訊(以一系列n位元位址呈現)簡單映射到重疊記憶體102來獲得。或者,可透過編碼方案來獲得位址,該方案可產生一系列n位元位址以作為輸出。例如,如圖1所示,數位神經元100可將輸入框編碼為稀疏分佈式表示,使得編碼資料僅可包括陣列中某些元素的位址。不論採用何種方法,獲得輸入框的位址都允許數位神經元100執行方程式的邏輯與功能。在方程式1中,(Input Frame Address)代表輸入框的位址,而(Overlap Enabled)代表一個值,該值決定突觸是否連接到該位址處的輸入框的資料空間。
圖1中所示的示例說明,對於具有1位元重疊值的可能的64,000位元SDR資料空間,數位神經元100具有64,000 x 1個的記憶體。在本示例中,突觸可為連接的(即,重疊值等於1),或是不連接的(即,重疊值等於0)。同時,用於對輸入框進行編碼的SDR可能會以16位元來表示64,000位元SDR資料空間的所有可能位置。
一給定NPU所需的數位神經元數量將決定圖1中所示的硬體架構被複製的次數。當包含在NPU中的每個數位神經元正常地具有其自己的專用重疊記憶體102和重疊計數電路104(也稱為「重疊計數器」)時,重疊評分排序模組106(也稱為「評分模組」)可為數位神經元之間的共用電路,其將每個重疊計數器產生的計數作為輸入並比較計數以輸出至少一個「勝出的」數位神經元的列表。例如,如果需要1,000個數位神經元,則可以將圖1中所示硬體架構的1,000個副本互相連接以創建NPU。因此,一個NPU可以包括n個數位神經元。雖然n可以是任何整數值,但n通常會在數百至數千的範圍內,以實現高階資料等級的並行性。數位神經元的數量n也會改變以適應問題的複雜性。許多人工智慧和機器學習的應用程式只需要不超過1,000個數位神經元,而更複雜的圖像處理應用程式可能需要20,000個或更多數位神經元。請注意,NPU中包含的所有數位神經元都可獨立但並行地處理相同的輸入框。
NPU中包含的每個數位神經元都可透過對重疊記憶體102中適當位元來設定值加以程式化,以響應或「重疊」最大可能輸入框元素的子集(例如,整個SDR的資料空間)。如此,多個數位神經元可以共同覆蓋整個最大可能的資料空間。當每次數位神經元100的位址參考該些設定值的其中之一時,重疊計數器104可增加其重疊計數。當已處理整個輸入框時,重疊計數可被提供給重疊評分排序模組106。重疊評分排序模組106可基於重疊計數以產生重疊評分,以量化輸入框與重疊記憶體102中的遮罩重疊的程度。如下文進一步討論的,在一些實施例中,重疊評分可簡單地是重疊計數,而在其他實施例中,可以修改重疊計數(例如,使用增強因子)以產生重疊評分。在一些實施例中,重疊評分排序模組106可透過作為數位神經元100的一部分的軟體、韌體和/或硬體來實現。在其他實施例中,重疊評分排序模組106可透過數位神經元100的可存取軟體、韌體和/或硬體來實現。例如,重疊評分排序模組106可在NPU的板上實現,使得重疊評分排序模組106可以通訊方式連接到NPU的所有數位神經元。
重疊評分排序模組106可從包含於NPU中的所有數位神經元獲得重疊評分以用於比較。具有最高重疊評分的該些數位神經元可被重疊評分排序模組106識別為「勝出的」數位神經元。例如,重疊評分排序模組106可以透過統計顯著餘量來執行叢集操作以識別重疊評分最大的一個或多個數位神經元。作為另一示例,重疊評分排序模組106可設計為使得最高重疊評分的可程式化數量成為「勝出」的數位神經元。勝出的神經元的數量通常選擇為稀疏結果(從系統中的數位神經元總數中選出少數勝出者),這樣的稀疏結果在系統中提供了具有抗噪性和高學習能力的數學優勢。「勝出」的數位神經元的身份或位址可由重疊評分排序模組106產生以作為輸出。該輸出允許NPU可從每個數位神經元處理的輸入框中得出有意義的結論。
為人工智慧和機器學習程序設計的系統可包括一個以上的NPU。例如,可將兩個或更多的NPU設計到系統中(例如,在單板或多板上),以進一步提高人工智慧和機器學習程序的效能。在這樣的實施例中,由每個NPU產生的列表可代表潛在的「勝出」的數位神經元。為了識別實際的「勝出」的數位神經元,跨多個NPU的重疊計數器產生的計數可由重疊評分排序模組106進行比較。例如,假設一個系統包括兩個NPU。於此情況下,重疊評分排序模組106或另一計算組件(例如,以通訊方式耦合至多個NPU的控制器)不僅可以將一個NPU(也稱為「第一NPU」)中的給定重疊計數器的計數輸出與第一NPU上的其他重疊計數器計數輸出進行比較,也可與另一NPU(也稱為「第二NPU」)上的重疊計數器計數輸出進行比較。為了加以實現,重疊評分排序模組106可將為第一NPU生成的「勝出」的數位神經元列表與為第二NPU產生的「勝出」的數位神經元列表加以比較,以確定真正「勝出」的數位神經元。
該程序的輸出可為次序表,從最高重疊計數值向最低重疊計數值排序。相同的計數值可以可預測的(例如,預定的)方式處理,例如,基於分配給NPU、數位神經元等的優先級。包含在次序表中的實際「勝出」的數位神經元的數量可以由系統中所配置的設置來規定。例如,可以在每個NPU中定義配置設置,以掌控每個NPU所產生的潛在「勝出」的數位神經元的次序表的大小。實際的「勝出」的數位神經元的次序表的大小可基於潛在「勝出」的數位神經元的該些次序表的大小。例如,這些次序表可能大小相同,或者實際的「勝出」的數位神經元的次序表可能代表這些潛在「勝出」的數位神經元次序表的重新排序連接。
在生成實際的「勝出」的數位神經元的次序表之後,可將確定為實際「勝出」的數位神經元通知給每個NPU。作為示例,重疊評分排序模組106或另一計算組件(例如,以通訊方式地耦合至多個NPU的控制器)可向多個NPU中的每個傳輸識別實際的「勝出」的數位神經元的訊號。然後,每個NPU可根據需要來實施一學習週期(例如,對於SSV或增強因子)。由於每個NPU可能需要收到有關「勝出」的數位神經元的通知,每個NPU所產生的輸出不僅可包括其重疊計數器產生的計數,還可包括資訊(例如,位址)以允許識別其數位神經元。
重疊記憶體102可以各種方式加以建構和/或組織。建構和/或組織的不同方法可允許不同大小的數位神經元。例如,重疊記憶體102可代表動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM)、查找表(LUT)、暫存器檔案或任何其他記憶體元件、單元或可寫入資料的模組。
如圖1所示,重疊評分排序模組106還可採用排序位元遮罩(也稱為「排序遮罩」),其可依序遮蔽從最高至最低重疊的每個數位神經元來協助勝出的數位神經元的排序作業。一旦識別出一個數位神經元在區塊內具有最高的重疊,就可在下一輪排序中遮蔽該數位神經元,直到區塊內的所有數位神經元都被遮蔽(並因此排序至一個次序表中)。因此,重疊評分排序模組106可使用排序遮罩從最高到最低重疊迭代地遮蔽區塊內的數位神經元,從而生成數位神經元的次序表。
總而言之,數個核心概念允許可以高效方式執行複雜計算的NPU的實現。首先,每個數位神經元可使用編碼(例如,作為SDR)的輸入框作為對應重疊記憶體的位址。其次,每個數位神經元中的重疊記憶體能實現可程式化重疊映射能力,其中儲存的值表示是否與相應位址處的輸入框的資料空間存在連接。例如,數值1可表示與輸入框的資料空間的連接,而數值0可表示與輸入框的資料空間沒有連接。第三,每個數位神經元中的重疊計數器可能能夠計算重疊評分,該重疊評分表示一位址引用重疊記憶體中一位元的次數,其數值設置為1。第四,NPU可以實現邏輯對數位神經元的重疊評分進行排序,接著輸出「勝出」的數位神經元的次序表。作為示例,重疊評分排序模組可負責輸出具有最高重疊評分的數位神經元的程式化數量的次序表。
具有基本學習能力的 NPU 概覽
涉及人工智慧和機器學習程序的系統可能需要比上述參考圖1所討論的基本功能更多的功能。例如,單一數位神經元可能與一個或多個其他數位神經元具有「重疊連接」,其類似於人類腦部的生物突觸。隨著NPU隨著時間的推移學習,該些跨越編碼輸入框寬度的「重疊連接」可以連接和/或斷開。術語「編碼輸入框寬度」是指在編碼輸入框中可能出現的位址的總範圍。例如,術語「SDR寬度」可指SDR上可能值的總範圍(例如,SDR[15:0])。
這種連接/斷開功能可用於指示給定的突觸是連接還是斷開以外的更多資訊。其還可指示給定的突觸與連接/斷開臨界值的「距離」,類似於類比組件。因此,其可指示任何給定突觸與連接或斷開的距離,從而指示突觸連接的「強度」。
圖2包括能夠實現基本學習機制的數位神經元200的基於硬體的架構的圖解說明。圖2的數位神經元200通常與圖1的數位神經元100相當,並且使用虛線以表示增加。如圖2所示,圖1的重疊記憶體102被突觸強度值記憶體(SSVM)202代替。在較高級別上,SSVM 202是一種記憶體,其允許每個突觸為多位元值而非單一位元值。例如,在圖2中,每個突觸都是一個8位元值,而非簡單的1或0。
基於給定突觸的強度,當與突觸強度臨界值(也稱為「SSV臨界值」或簡稱為「臨界值」)204相比時,給定的突觸可識別為與輸入框的資料空間連接或斷開。在一些實施例中,SSV臨界值204可全域地跨越NPU的所有數位神經元。在其他實施例中,SSV臨界值204可於本地跨越NPU的一個或多個數位神經元。例如,SSV臨界值204可應用於代表NPU的所有數位神經元的子集的一組數位神經元。作為另一示例,每個數位神經元可具有其各自的SSV臨界值204。
若一給定突觸包含在SSVM202中的突觸強度值(SSV)大於或等於SSV臨界值204,接著可將給定的突觸識別為已連接。相反地,若一給定突觸包含在SSVM 202中的SSV小於SSV臨界值204,接著可將給定的突觸識別為未連接。一般來說,該比較由比較器電路210(或簡稱為「比較器」)執行,該比較器電路210設計為指示一輸入(例如,SSV)是否已達到預定值(例如,SSV臨界值204)。若突觸被識別為已連接,則重疊計數器206可以遞增。如果突觸被識別為未連接,那麼重疊計數器206可能不會增加,或者甚至可能會減少或以其他方式被「懲罰」以解決斷開的突觸所造成的影響。當整個輸入框(例如,整個SDR)進行處理後,NPU中所包括的所有數位神經元的重疊評分可由如上所討論的重疊評分排序模組208進行檢查。
特定的SSV(例如,SSV=00h或SSV=FFh)可保留以指示給定數位神經元中的相應突觸是否存在。例如,「00h」的SSV可能表示相應的突觸永遠不會「觸發」,永遠不會與輸入框「重疊」,因此在學習週期中永遠不會更新。換句話說,「00h」的SSV可能表明相應的突觸並非是出於所有意圖與目的而存在的。
與圖1中的數位神經元100相比,圖2中的數位神經元200允許NPU執行基本學習。該學習可透過在每個數位神經元中實施能夠儲存多位元值的記憶體(例如,SSVM 202)來實現,以允許可程式化數值映射能力。此外,每個數位神經元可包括比較器210,其負責將從記憶體輸出的值與臨界值(例如,SSV臨界值204)進行比較,從而產生可由重疊計數器206用以計算、推斷或以其他方式確定重疊計數的訊號。如上所述,比較器210可比較兩個訊號(例如,代表SSV和SSV臨界值204),然後輸出1或0以指示兩個訊號中的較大者。
在圖2中,SSV臨界值204顯示為沿著一個通道提供給比較器210的單獨輸入。類似地,來自記憶體的SSV輸出顯示為單獨的輸入,該輸入透過另一個通道提供給比較器。然而,情況並非一定如此。例如,這些通道中的每個都可包括於在相應來源與比較器210之間互連的一系列連接(也稱為「匯流排」)中。匯流排中包含的連接數可取決於每個突觸中所包含的位元數。例如,若每個突觸為如圖2所示的八位元值,那麼在SSVM202和比較器210之間互連的匯流排可具有八個通道。類似地,匯流排可以具有八個通道,其中SSV臨界值204沿著匯流排向比較器210提供臨界值。
具有增強學習能力的 NPU 概述
雖然圖2所示的NPU200具有基本的學習能力,但在某些情況下可能無法提供最佳的學習結果。增強法可被認為是一種避免在至少一個學習週期後產生一組次優的「勝出」的數位神經元的方法。例如,假設一NPU包括一組以列的方式排列的數位神經元,其中每列包括至少一個數位神經元並相互連結。如果某一列「丟失」,則學習不會發生-即使該列比其他一般「勝出」的列有更佳的連接(例如,潛在的突觸連接)。增強法為連接突觸較少的數位神經元提供了「勝出」的機會,從而使學習發生並加強其突觸。若可確定數位神經元對於一給定模式更佳(即更優),則該數位神經元將得到適當的訓練。因此,增強法可調節數位神經元的學習,以使所有的列都有機會學習並變得更強大。
圖3包括能夠實現增強學習機制的數位神經元300的基於硬體架構的圖解說明。圖3的數位神經元300通常相當於圖2的數位神經元200,並使用虛線顯示增加處。如圖3所示,圖2的重疊計數器206被重疊計算器電路306(或簡稱為「重疊計算器」)替代。
為允許改進的學習,當基於比較器310產生的輸出確定包含在SSVM 302中的SSV大於或等於SSV臨界值304時,重疊計算器306可被程式化為以添加不同的值-其非為簡單地增加。換句話說,當數位神經元300與輸入框重疊時,重疊計算器306可添加不同的值。這可使得遠離連接/斷開臨界值的突觸能夠在更少的學習週期內達到該臨界值。
圖3還示出了向重疊計算器306添加重疊增強運算元312。在較高級別上,重疊增強運算元312可指定由重疊計算器306運算的資料,並同時表示該資料本身。一般來說,重疊增強運算元312是可程式化的多位元值,其被饋送至重疊計算器306中,然後藉由增加與輸入框重疊的突觸的影響來「增強」學習。由於重疊增強運算元312會影響數位神經元300的學習成效,於軟體、韌體、硬體或其組合中實施的演算法-可負責調整重疊增強運算元312,以達到預期的學習成效目標。例如,重疊增強運算元312可以是非線性函數,其中當數位神經元的「勝出」越少,其增加得越快,並且當數位神經元的「勝出」越多,其降低得越快。如此,重疊增強運算元312可以變強以在函數曲線的「駝峰」處丟失多個數位神經元,並給它們一個勝出、學習和增強的機會。重疊增強運算元函數曲線的形狀可為靜態的,也可程式化以隨著系統學習而隨時間改變形狀。
圖3所示的基於硬體的架構將導致NPU的數位神經元具有個別而非全域的重疊增強運算元,其允許透過調整相應的重疊增強運算元來個別地操縱每個數位神經元的學習效能。其他的NPU可設計為具有多個全域重疊增強運算元(即,所有數位神經元都具有相同的重疊增強運算元)或多個半全域重疊增強運算元(即,數位神經元的不同子集具有不同的重疊增強運算元)。於全域或半全域重疊增強運算元的實施例中,重疊增強運算元可由NPU的另一個計算組件而非數位神經元本身來管理、儲存或提供。
當已處理整個輸入框(例如,整個SDR)時,NPU中的所有數位神經元的溢出評分可由上述的重疊評分排序模組308進行檢查。
SSV 的本地更新
根據定義,任何進行「學習」的NPU將在整個學習程序中改變和調整其行為。然而,這將可能緩慢的發生。例如,考慮一個能夠處理64,000位元的輸入框並包括512個數位神經元的NPU。該NPU將包括總共32,768,000個突觸(即64,000乘以512)。每個突觸都可以根據(i)經處理的輸入框(例如SDR)、(ii)相應的數位神經元是否被視為「勝出」的數位神經元、和/或(iii)該突觸的目前SSV來進行調整。當由遠端處理單元(也稱為「外部處理單元」或「晶片外部處理單元」)執行時,學習程序可能非常緩慢。
透過在本地調整突觸-即在NPU上,學習程序可以顯著地加快。其還允許確定並由數位神經元以並行方式執行該調整。圖4顯示了能夠在本地執行學習程序的數位神經元400的基於硬體的架構的圖解說明,以便根據需要來確定並實施對SSV的調整。圖4的數位神經元400通常相當於圖3的數位神經元300,並且使用虛線來顯示出添加處。
如圖4所示,更新數學單元414可負責實施用於學習目的的演算法。換言之,更新數學單元414可負責確定是否針對一給定突觸,將目前儲存於SSVM 402中的SSV更新為新的SSV。於較高級別,更新數學單元414可代表算術邏輯單元,其可允許數位神經元400基於一個或多個輸入來執行數學運算以確定是否需要更新SSV。如果更新數學單元414確定應該為給定的突觸更新SSV,則新的SSV可能是(i)SSV、(ii)對應的數位神經元是否為處理中的輸入框的「勝出者」、(iii)給定突觸的輸入框位置是否為「set=1」、和/或(iv)更新的增量值和減量值的函數。因此,除了增量值與減量值之外,如圖4所示,更新數學單元414可以接收(i)來自第一個暫存器(也稱為「輸入框擷取暫存器」)的輸入框位置與(ii)來自第二個暫存器(也稱為「勝出者擷取暫存器」)的「勝出」數位神經元的ID作為輸入。作為輸出,更新數學單元414可產生更新訊號,其可指示是否應該更新SSVM 402中的SSV。
如上所述,數位神經元400可另外與圖3中的數位神經元300進行類似的操作。因此,比較器410可以負責產生輸出,該輸出可指出包含在SSVM 402中的SSV是否大於或等於SSV臨界值404,而重疊計算器406可負責基於該輸出以計算數位神經元400的重疊出現次數。此外,重疊計算器406可產生基於重疊出現次數的重疊評分,並在一些實施例中,產生如上所述的重疊增強運算元412。當整個輸入框(例如,整個SDR)經處理後,NPU中的所有數位神經元的重疊評分可由如上所述的重疊評分排序模組408進行檢查。
圖5包括圖4中的更新數學單元414的一種可能實現的簡化方塊圖。如圖5所示,更新數學單元414可將(i)目前的SSV、(ii)輸入框位置、(iii)表示相應的數位神經元是否為「勝出者」、(iv)遞增值、和/或(v)遞減值作為輸入。該些輸入可以提供給加法器502,加法器502可產生一更新訊號作為輸出。加法器502可代表設計為執行數位相加的數位電路,以便基於輸入產生更新訊號。雖然在包含加法器502的數學單元414的相關敘述中描述了圖5所示的實施例,但本領域技術人員將了解數學單元414可包括或實施除了加法器502之外的功能來產生更新訊號。例如,數學單元414可使用浮點單元(FPU)來執行浮點運算。於此情況下,增量值與減量值可能不為整數,而是可由生成非線性值曲線的浮點函數所生成。
關於可由更新數學單元414實現的演算法的示例的附加細節將在表I中提供。請注意,該演算法的一部分為僅對與已被識別為「獲勝者」的數位神經元相對應的SSV進行更新。在一實施例中,某一值(例如,SSV=0)為一保留值,其用於指示相應的突觸被完全地禁用,因此其從未更新。不同的SSV可用於和/或保留以用於不同的目的。
表I: 可由圖4的更新數學單元414實現的示例性演算法
| 輸入 | 輸出 | ||
| 勝出者 ID | 輸入框位置 | SSV | 更新 訊 號 |
| X | X | 0 | 0 |
| 0 | X | SSV | SSV |
| 1 | 0 | SSV | (SSV-遞減值) |
| 1 | 1 | SSV | (SSV+遞增值) |
總結來說,數個核心概念允許透過數位神經元對SSVM進行局部更新。首先,可以在處理其內容時擷取整個輸入框,這樣整個輸入框可用於更新SSVM。其次,可擷取「勝出」的數位神經元,然後當SSVM更新時用於識別欲調整的數位神經元。第三,每個數位神經元可包括一更新數學單元,該單元可負責確定是否應該更新SSV(如果是,則計算新的SSV)。第四,更新SSVM所需的控制和多工邏輯可在每個數位神經元上在本地實現。例如,控制與多工邏輯可部分或全部地在包含於每個數位神經元中的更新數學單元上實現。
代替僅對在輸入框中識別的該些突觸進行更新,「勝出」的數位神經元中的每個突觸的SSV可根據上述程序進行更新。為此,可透過邏輯以重構或擷取整個輸入框的寬度。在一些實施例中,不包含於輸入框中的該些突觸被假定為零。因此,如果輸入框擷取暫存器在圖像框開始時被清除,其可能會擷取到輸入框寬度的所有「0」位元。接著,對於輸入框中的每個突觸,可將輸入框擷取暫存器中的相應位設置為「1」。
當更新數學單元對SSVM進行更新時,還可希望知道作為「全域勝出」的數位神經元。由於NPU可以作為多晶片或多電路板系統的一部分來實現,還可希望知道來自欲收集的所有晶片或電路板的「潛在勝出」或「本地勝出」的數位神經元並進行分析,從而確定「全域勝出」的數位神經元。可以隨著對一個或多個確定為「真實勝出者」的數位神經元的識別來通知包含「真實勝出者」的晶片或電路板(例如,透過重疊評分排序模組)。然後,這些「真實勝出者」可處理由相應的更新數學單元計算的相應SSVM的更新。在一些實施例中,該些通知會導致在至少一個勝出擷取暫寄存器中將位元設置為給定值(例如,「1」)。在一些實施例中,單一勝出者擷取暫存器由NPU維護,而在其他實施例中,每個數位神經元包括屬於其自己的勝出者擷取暫存器。勝出者擷取暫存器中的該些設置位元可幫助NPU處理對相應SSVM的更新。
用於本地加速更新的增強因子
如上所述,「增強」為學習程序的其中一個方面,其允許在某些情況下對學習進行提升與改進。「增強」為,假設在操作程序中,每個數位神經元都應該至少以一定次數成為「勝出者」,以確保每個數位神經元都經過訓練。為了實現這一點,「增強」可能需要以非線性方式修改、調整或以其他方式操縱重疊評分。例如,由重疊計算器確定的給定SSV的重疊評分(OS)可乘以增強因子(BF)以產生增強的重疊評分(BOS),如下所示:
OS x BF = BOS 方程式2
作為另一示例,由重疊計算器確定的給定SSV的重疊評分(OS)可添加至增強因子(BF)以產生增強的重疊評分(BOS),如下所示:
OS + BF = BOS 方程式3
無論以何種方式計算,增強的重疊評分(BOS)均可用來識別「勝出」的數位神經元。
增強因子通常在可調節時最為有效,因為這允許對訓練進行「調整」。增強因子可定期調整以優化數位神經元(以及NPU)的效能。然而請注意,當由NPU外部的遠端處理單元執行時,此程序可能會十分緩慢。透過在本地調整增強因子,就可以解決該效能瓶頸。換句話說,可透過在本地(即在NPU上)執行以加速更新增強因子的程序。
圖6包括數位神經元600基於硬體的架構的圖解說明,其可以透過加速方式本地更新增強因子。如圖6所示,可使用以下三個組件來加速增強因子的更新,即(i)每個數位神經元的活動監視器電路616、(ii)每個數位神經元的增強因子表618,以及(ii)每個數位神經元的增強因子更新控制電路620。一般來說,增強因子表618儲存於NPU的記憶體中,儘管增強因子表618可備選地儲存於NPU可存取記憶體中(例如,在另一晶片或電路板上)。
數位神經元600可與圖4中的數位神經元400以類似方式操作。因此,比較器610可負責產生一輸出,該輸出可指示包含在SSVM 602中的SSV是否大於或等於SSV臨界值604,並且重疊計算器606可基於該輸出負責計算SSV的重疊評分。如上所述,由重疊計算器606計算的重疊評分可以重疊增強運算元612為基礎。然而,此處的增強因子表618提供了由重疊計算器606使用的增強因子。每當「觸發」數位神經元600的一個突觸時,重疊計算器606可與增強因子結合,以產生一個增強的重疊評分,該評分等於重疊評分乘以增強因子或添加至增強因子的重疊評分。當整個輸入框(例如,整個SDR)已處理後,NPU中的所有數位神經元的溢出評分可由如上所述的重疊評分排序模組608檢查。
在一些實施例中,活動監視器電路616可週期性地或連續地監視NPU中的每個數位神經元的活動。圖7包括圖6的活動監視器電路616的圖解說明。根據數位神經元基於硬體的底層架構和NPU的預期應用,可以透過各種方式來對「活動」加以定義。
在一些實施例中,「活動」乃是指數位神經元是否被認為是「勝出者」。在「活動」為數位神經元是否被認為是「勝出者」的實施例中,活動監視器電路616可以用作計數器(因此被稱為「勝出計數器」)。因此,活動監視器電路616可以運算、計算或以其他方式產生系統中包含的每個數位神經元的相關活動計數。對於數位神經元「贏得」的每個輸入框,活動計數可能會增加。對於數位神經元「丟失」的每個輸入框,活動計數可能會減少。當活動計數達到可程式化的上限或下限時,可以對增強因子進行調整。例如,當活動計數達到上限(表示「勝出」過多)時,增強因子可能會降低,而當活動計數達到下限(表示「丟失」過多)時,增強因子可能會增加。在達到上限或下限後,該數位神經元的活動計數可重置為零。
在其他實施例中,「活動」乃是指數位神經元是否不被認為是「勝出者」,而是在成為「勝出者」的臨界值距離範圍內。在「活動」為數位神經元是否被認為是「接近勝出者」的實施例中,活動監視器電路616也可以用作計數器(因此被稱為「接近勝出計數器」)。因此,除了或代替數位神經元被視為「勝出者」的次數之外,活動監視器電路616可追蹤數位神經元被視為「接近勝出」的次數。
活動監視器電路616所監視的「活動」的時間間隔也可以以各種方式定義。例如,這個「活動週期」可以全域地定義,使得NPU中所有數位神經元的時間間隔相同。作為另一示例,「活動週期」可以在代表不同組的數位神經元的子集中加以定義。作為另一示例,對於NPU中包含的每個數位神經元,「活動週期」可為單獨的。在包含於NPU中的所有數位神經元的活動週期相同的實施例中,可能會有一個全域定時器電路(或簡稱「定時器」)來設置此時間間隔。同時,在包含於NPU中的每個數位神經元的活動週期不同的實施例中,每個數位神經元可以與設置相應時間間隔的相應本地計時器相關聯。
活動監視器電路616可以允許具有上限和下限的可程式化窗口,其可控制數位神經元600的活動計數是否應該增加或減少。該窗口可代表其上限和下限可程式化的範圍。一般來說,窗口的上限和下限會在運行前加以程式化。然而,窗口的上限和下限可在學習期間進行修改(例如,在部署之後)。只要數位神經元600的活動計數落在窗口內,就不會發生任何事情。然而,若數位神經元600的活動計數落在窗口之外,活動監視器電路616會產生使重疊增強運算元612增加或減少的指令。例如,如果給定數位神經元的活動計數太低,活動監視器電路616可生成增加重疊增強運算元612的指令(即,低於窗口的下限),而如果給定數位神經元的活動計數太高,則活動監視器電路616會生成減少重疊增強運算元612的指令(即,高於窗口的上限)。
從定時器接收的週期訊號可將活動監視器電路616加以遞減。同時,通知數位神經元600是「勝出者」的動作可增加活動監視器電路616,以及設置勝出者擷取暫存器中的相應位元。
增強因子更新控制電路620可負責更新儲存於增強因子表618中的增強因子,因此其可為數位神經元600使用。當接收到增強因子更新命令(也稱為「BFU命令」)時,增強因子更新控制電路620可評估由活動監視器電路616產生的輸出以確定是否需要更新。如果確定有必要進行更新,增強因子更新控制電路620可以生成增強因子加載命令(也稱為「BFL命令」)以提示加載新的增強因子作為重疊增強運算元612。接著,增強因子更新控制電路620可將活動監視器電路616重置於窗口的中間處。
為了便於實現圖6中基於硬體的架構,可採取額外的步驟。例如,假設已編碼的輸入框代表具有64,000個元素的SDR。為了確保整個SDR的儲存不會顯著地影響SSVM 602的效能,可將元素「散佈」在多個區塊(也稱為「核心」)上。例如,構成SDR的最大尺寸(例如,64,000個元素)的8個雙行可分佈在多個區塊中。這將導致每個數位神經元的SSVM 602分佈在多個區塊上,從而進一步加速本地更新。
備註
為了說明和描述之目的,本說明書提供了要求保護的主題的各種實施例的前述描述。其非旨在窮舉或將要求保護的主題限制為所公開的精確形式。許多的修改與變化對於本領域技術人員來說是顯而易見的。對實施例加以選擇與描述是為了最佳地描述本發明的原理及其實際應用,從而使相關領域的技術人員能夠理解要求保護的主題、各種實施例以及適合預期的特定用途的各種修改。
儘管該詳細描述已描述了某些實施例和預期的最佳模式,無論該詳細描述多麼詳細,該技術都可以透過多種方式加以實施。實施例在其實施細節上可能有很大不同,但仍由規範所涵蓋。在描述各種實施例的某些特徵或方面時使用的特定術語不應被理解為暗示該術語在本文中重新定義為限定於與該術語相關聯的技術的任何特定特性、特徵或方面。一般而言,以下權利要求中使用的術語不應解釋為將技術限制於說明書中所公開的特定實施例,除非這些術語在本文中有明確的定義。因此,本技術的實際範圍不僅包括所公開的實施例,還包括實現或實行實施例的所有相同方式。
在說明書中使用的文字用法主要是為了可讀性和指導目的而選擇的,但可能沒有被選擇來描述或限制主題。因此,該技術的範圍並不打算由該詳細描述來限制,而是由基於本發明的申請所公開的任何權利要求來限制。因此,各種實施例的公開旨在說明而非限制例如以下權利要求中所闡述的技術範圍。
100:數位神經元
102:重疊記憶體
104:重疊計數電路
106:重疊評分排序模組
200:數位神經元
202:突觸強度值記憶體
204:突觸強度臨界值
206:重疊計數器
208:重疊評分排序模組
210:比較器電路
300:數位神經元
302:突觸強度值記憶體
304:突觸強度臨界值
306:重疊計算器電路
308:重疊評分排序模組
310:比較器
312:重疊增強運算元
400:數位神經元
402:突觸強度值記憶體
404:突觸強度臨界值
406:重疊計算器
408:重疊評分排序模組
410:比較器
412:重疊增強運算元
414:更新數學單元
502:加法器
600:數位神經元
602:突觸強度值記憶體
604:突觸強度臨界值
606:重疊計算器
608:重疊評分排序模組
610:比較器
612:重疊增強運算元
614:更新數學單元
616:活動監視器電路
618:增強因子表
620:增強因子更新控制電路
圖1包括可在神經處理單元(NPU)中實現的數位神經元的基於硬體的架構的圖解說明;
圖2包括能夠實現基本學習機制的數位神經元的基於硬體的架構的圖解說明;
圖3包括能夠實現增強學習機制的數位神經元的基於硬體的架構的圖解說明;
圖4包括能夠在本地執行學習程序的數位神經元的基於硬體的架構的圖解說明,以確定並根據需要來對儲存在記憶體中的突觸強度值(SSV)進行調整;
圖5包括圖4中的更新數學單元的一種可能實施例的簡化方塊圖;
圖6包括數位神經元的基於硬體的架構的圖解說明,該架構可以加速的方式於本地更新增強因子;及
圖7包括圖6的活動監視器電路的圖解說明。
透過對結合圖式的詳細描述的研究,本領域技術人員將對本文中描述的技術特徵更加清楚。出於說明的目的,圖式中描繪了各種實施例。然而,本領域技術人員將了解在不脫離本公開原理的情況下可採用替代的實施例。因此,儘管在圖式中示出了特定實施例,但該技術仍可進行各種修改。
100:數位神經元
102:重疊記憶體
104:重疊計數電路
106:重疊評分排序模組
Claims (10)
- 一種神經處理單元,包括:一記憶體,其中儲存了具有多個多位元值的一陣列;一比較器電路,其配置為將該多個多位元值的每一個與一臨界值進行比較,以產生一訊號作為輸出;及一計算器電路,其配置為:基於該訊號來識別超過該臨界值的各該多位元值,以確定所識別的該多個多位元值的一計數,及透過(i)將該計數乘以一可程式化運算元以及(ii)將該計數與該可程式化運算元相加來調制該計數,以產生一提升的計數。
- 如請求項1所述之神經處理單元,其中該可程式化運算元是一多位元值,其作為輸入提供給該計算器電路。
- 如請求項1所述之神經處理單元,還包括:一數學單元,其配置為實現一演算法,該演算法在操作中指示是否應該更新該多個多位元值。
- 如請求項3所述之神經處理單元,其中該數學單元代表一算術邏輯單元,該算術邏輯單元為各該多位元值確定是否需要基於一個或多個輸入進行更新。
- 如請求項4所述之神經處理單元,其中該算術邏輯單元包括一加法器,該加法器可將一個或多個輸入相加以產生一訊號,該訊號可對各該多位元值是否需要更新加以指示。
- 如請求項1所述之神經處理單元,其中該記憶體、該比較器電路與該計算器電路共同代表一計算組件, 該計算組件是多個計算組件之一,以及該神經處理單元還包括:一活動監視器電路,其配置為對提升的計數在由該多個計算組件輸出的最高提升計數的一可程式化數量之中的次數進行監視。
- 如請求項6所述之神經處理單元,還包括:一增強因子表,其中儲存了該可程式化運算元。
- 如請求項7所述之神經處理單元,還包括:一更新控制電路,其配置為評估該活動監視器電路產生的一輸出以確定是否需要更新該可程式化運算元。
- 如請求項8所述之神經處理單元,其中,響應於確定該次數低於一視窗的一下限,該活動監視器電路還配置為生成可增加該可程式化運算元的一指令,以及該更新控制電路還配置為根據該指令生成一加載命令。
- 如請求項8所述之神經處理單元,其中,響應於確定該次數超過一視窗的一上限,該活動監視器電路還配置為生成可減少該可程式化運算元的一指令,以及該更新控制電路還配置為根據該指令生成一加載命令。
Applications Claiming Priority (4)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US202063116608P | 2020-11-20 | 2020-11-20 | |
| US63/116,608 | 2020-11-20 | ||
| US202163227590P | 2021-07-30 | 2021-07-30 | |
| US63/227,590 | 2021-07-30 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| TW202230223A TW202230223A (zh) | 2022-08-01 |
| TWI791331B true TWI791331B (zh) | 2023-02-01 |
Family
ID=81657775
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| TW110143431A TWI791331B (zh) | 2020-11-20 | 2021-11-22 | 神經處理單元(npus)與使用該神經處理單元的計算系統 |
Country Status (3)
| Country | Link |
|---|---|
| US (1) | US20220164637A1 (zh) |
| TW (1) | TWI791331B (zh) |
| WO (1) | WO2022109333A1 (zh) |
Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20150039546A1 (en) * | 2013-08-02 | 2015-02-05 | International Business Machines Corporation | Dual deterministic and stochastic neurosynaptic core circuit |
| US10096134B2 (en) * | 2017-02-01 | 2018-10-09 | Nvidia Corporation | Data compaction and memory bandwidth reduction for sparse neural networks |
| US10732972B2 (en) * | 2018-08-23 | 2020-08-04 | International Business Machines Corporation | Non-overlapping substring detection within a data element string |
| US20200336153A1 (en) * | 2019-04-17 | 2020-10-22 | Samsung Electronics Co., Ltd. | Zero-collapsing compression with random access |
Family Cites Families (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US10395165B2 (en) * | 2016-12-01 | 2019-08-27 | Via Alliance Semiconductor Co., Ltd | Neural network unit with neural memory and array of neural processing units that collectively perform multi-word distance rotates of row of data received from neural memory |
-
2021
- 2021-11-19 US US17/531,576 patent/US20220164637A1/en active Pending
- 2021-11-19 WO PCT/US2021/060191 patent/WO2022109333A1/en not_active Ceased
- 2021-11-22 TW TW110143431A patent/TWI791331B/zh active
Patent Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20150039546A1 (en) * | 2013-08-02 | 2015-02-05 | International Business Machines Corporation | Dual deterministic and stochastic neurosynaptic core circuit |
| US10096134B2 (en) * | 2017-02-01 | 2018-10-09 | Nvidia Corporation | Data compaction and memory bandwidth reduction for sparse neural networks |
| US10732972B2 (en) * | 2018-08-23 | 2020-08-04 | International Business Machines Corporation | Non-overlapping substring detection within a data element string |
| US20200336153A1 (en) * | 2019-04-17 | 2020-10-22 | Samsung Electronics Co., Ltd. | Zero-collapsing compression with random access |
Also Published As
| Publication number | Publication date |
|---|---|
| TW202230223A (zh) | 2022-08-01 |
| US20220164637A1 (en) | 2022-05-26 |
| TW202316322A (zh) | 2023-04-16 |
| WO2022109333A1 (en) | 2022-05-27 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US20230123828A1 (en) | Neural processing unit capable of reusing data and method thereof | |
| Neil et al. | Minitaur, an event-driven FPGA-based spiking network accelerator | |
| US5717832A (en) | Neural semiconductor chip and neural networks incorporated therein | |
| US5621863A (en) | Neuron circuit | |
| US10019669B2 (en) | Unsupervised, supervised and reinforced learning via spiking computation | |
| US5740326A (en) | Circuit for searching/sorting data in neural networks | |
| US5710869A (en) | Daisy chain circuit for serial connection of neuron circuits | |
| US9449257B2 (en) | Dynamically reconstructable multistage parallel single instruction multiple data array processing system | |
| US5701397A (en) | Circuit for pre-charging a free neuron circuit | |
| US4254474A (en) | Information processing system using threshold passive modification | |
| US12265904B2 (en) | Apparatus and method for neural network computation | |
| CN111095302A (zh) | 稀疏深度卷积网络权重的压缩 | |
| KR102618546B1 (ko) | 2차원 어레이 기반 뉴로모픽 프로세서 및 그 동작 방법 | |
| Liu et al. | Memristor-based HTM spatial pooler with on-device learning for pattern recognition | |
| Kim et al. | Efficient synapse memory structure for reconfigurable digital neuromorphic hardware | |
| Qiao et al. | A neuromorphic-hardware oriented bio-plausible online-learning spiking neural network model | |
| CN113837350A (zh) | 神经形态设备和训练用于图像识别的神经网络的方法 | |
| CN117933312A (zh) | 一种模型剪枝方法及相关装置 | |
| JPWO2021038793A1 (ja) | 学習システム、学習方法、及びプログラム | |
| TWI791331B (zh) | 神經處理單元(npus)與使用該神經處理單元的計算系統 | |
| EP3617960B1 (en) | Neuromorphic method and apparatus with multi-bit neuromorphic operation | |
| US12020143B2 (en) | Digital neuromorphic code processor | |
| TWI912573B (zh) | 神經處理單元(npus)與使用該神經處理單元的計算系統 | |
| EP4035083B1 (en) | Hardware architecture for spiking neural networks and method of operating | |
| CN116802645A (zh) | 神经处理单元(npu)与使用该神经处理单元的计算系统 |