TW201931216A - 集成電路芯片裝置及相關產品 - Google Patents
集成電路芯片裝置及相關產品 Download PDFInfo
- Publication number
- TW201931216A TW201931216A TW107147413A TW107147413A TW201931216A TW 201931216 A TW201931216 A TW 201931216A TW 107147413 A TW107147413 A TW 107147413A TW 107147413 A TW107147413 A TW 107147413A TW 201931216 A TW201931216 A TW 201931216A
- Authority
- TW
- Taiwan
- Prior art keywords
- data
- connection relationship
- input
- circuit
- processing circuit
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/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)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Stabilization Of Oscillater, Synchronisation, Frequency Synthesizers (AREA)
Abstract
一種集成電路芯片裝置及相關產品,所述集成電路芯片裝置包括:主處理電路以及多個基礎處理電路;所述基礎處理電路包括:壓縮映射電路;所述壓縮映射電路,用於執行神經網絡運算中的各個數據的壓縮處理;所述主處理電路,用於執行神經網絡運算中的各個連續的運算以及向所述多個基礎處理電路傳輸數據;所述多個基礎處理電路,用於依據所述傳輸數據的運算控制是否啓動所述壓縮映射電路對所述傳輸數據進行壓縮處理;依據所述傳輸數據或壓縮處理後的傳輸數據以並行方式執行神經網絡中的運算,並將運算結果傳輸給所述主處理電路。
Description
本披露涉及神經網絡領域,尤其涉及一種集成電路芯片裝置及相關產品。
人工神經網絡(Artificial Neural Network,ANN),是20世紀80 年代以來人工智能領域興起的研究熱點。它從信息處理角度對人腦神經元網絡進行抽象, 建立某種簡單模型,按不同的連接方式組成不同的網絡。在工程與學術界也常直接簡稱為神經網絡或類神經網絡。神經網絡是一種運算模型,由大量的節點(或稱神經元)之間相互聯接構成。現有的神經網絡的運算基於中央處理器(Central Processing Unit,CPU)或圖形處理器(Graphics Processing Unit,GPU)來實現神經網絡的運算,此種運算的計算量大,功耗高。
本披露實施例提供了一種集成電路芯片裝置及相關產品,可提升計算裝置的處理速度,提高效率。
第一方面,提供一種集成電路芯片裝置,所述集成電路芯片裝置包括:主處理電路以及多個基礎處理電路;
所述基礎處理電路包括:壓縮映射電路包括;所述壓縮映射電路,用於執行神經網絡運算中的各個數據的壓縮處理;
所述主處理電路,用於執行神經網絡運算中的各個連續的運算以及向所述多個基礎處理電路傳輸數據;
所述多個基礎處理電路,用於依據所述傳輸數據的運算控制是否啓動所述壓縮映射電路對所述傳輸數據進行壓縮處理;依據所述傳輸數據或壓縮處理後的傳輸數據以並行方式執行神經網絡中的運算,並將運算結果傳輸給所述主處理電路。
第二方面,提供一種神經網絡運算裝置,所述神經網絡運算裝置包括一個或多個第一方面提供的集成電路芯片裝置。
第三方面,提供一種組合處理裝置,所述組合處理裝置包括:第二方面提供的神經網絡運算裝置、通用互聯介面和通用處理裝置;
所述神經網絡運算裝置通過所述通用互聯介面與所述通用處理裝置連接。
第四方面,提供一種芯片,所述芯片集成第一方面的裝置、第二方面的裝置或第三方面的裝置。
第五方面,提供一種電子設備,所述電子設備包括第四方面的芯片。
第六方面,提供一種神經網絡的運算方法,所述方法應用在集成電路芯片裝置內,所述集成電路芯片裝置包括:第一方面所述的集成電路芯片裝置,所述集成電路芯片裝置用於執行神經網絡的運算。
可以看出,通過本披露實施例,提供壓縮映射電路將數據塊進行壓縮處理後再運算,節省了傳輸資源以及計算資源,所以其具有功耗低,計算量小的優點。
為了使本技術領域的人員更好地理解本披露方案,下面將結合本披露實施例中的圖式,對本披露實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本披露一部分實施例,而不是全部的實施例。基於本披露中的實施例,所屬技術領域中具有通常知識者在沒有作出創造性勞動前提下所獲得的所有其他實施例,都屬於本披露保護的範圍。
在第一方面提供的裝置中,所述裝置還包括分支處理電路,所述分支處理電路設置在所述主處理電路與多個基礎處理電路之間,用於在所述主處理電路與所述多個基礎處理電路之間轉發傳輸數據。
在第一方面提供的裝置中,所述主處理電路,用於獲取待計算的數據塊以及運算指令,依據該運算指令對所述待計算的數據塊劃分成分發數據塊以及廣播數據塊;對所述分發數據塊進行拆分處理得到多個基本數據塊,將所述多個基本數據塊分發至與其連接的電路,將所述廣播數據塊廣播至與其連接的電路;
所述基礎處理電路,用於依據所述運算啓動所述基礎處理電路對所述基本數據塊與所述廣播數據塊進行壓縮處理後再執行內積運算得到運算結果,將所述運算結果發送至主處理電路;
所述主處理電路,用於對所述運算結果處理得到所述待計算的數據塊以及運算指令的指令結果。
在第一方面提供的裝置中,所述主處理電路,具體用於將所述廣播數據塊通過一次廣播至所述多個基礎處理電路。
在第一方面提供的裝置中,所述主處理電路,具體用於將所述廣播數據塊分成多個部分廣播數據塊,將所述多個部分廣播數據塊通過多次廣播至所述多個基礎處理電路。
在第一方面提供的裝置中,所述基礎處理電路,具體用於將壓縮處理後的所述部分廣播數據塊與壓縮處理後的所述基本數據塊執行一次內積處理後得到內積處理結果,將所述內積處理結果累加得到部分運算結果,將所述部分運算結果發送至所述主處理電路。
在第一方面提供的裝置中,所述基礎處理電路,具體用於復用n次該部分廣播數據塊執行該部分廣播數據塊與該n個基本數據塊內積運算得到n個部分處理結果,將n個部分處理結果分別累加後得到n個部分運算結果,將所述n個部分運算結果發送至所述主處理電路,所述n為大於等於2的整數。
在第一方面提供的裝置中,所述主處理電路包括:主寄存器或主片上緩存電路;
或所述基礎處理電路包括:基本寄存器或基本片上緩存電路。
在第一方面提供的裝置中,所述主處理電路包括:向量運算器電路、算數邏輯單元電路、累加器電路、矩陣轉置電路、直接內存存取電路、壓縮映射電路或數據重排電路中的一種或任意組合。
在第一方面提供的裝置中,所述數據包括:向量、矩陣、三維數據塊、四維數據塊以及n維數據塊中一種或任意組合。
在第一方面提供的裝置中,如所述運算指令為乘法指令,所述主處理電路確定乘數數據塊為廣播數據塊,被乘數數據塊為分發數據塊;
如所述運算指令為卷積指令,所述主處理電路確定輸入數據塊為廣播數據塊,卷積核為分發數據塊。
在第六方面提供的方法中,所述神經網絡的運算包括:卷積運算、矩陣乘矩陣運算、矩陣乘向量運算、偏執運算、全連接運算、通用矩陣乘法(General Matrix Multiplication,GEMM)運算、通用矩陣向量乘法(General Matrix Vector Multiplication,GEMV)運算、激活運算中的一種或任意組合。
參閱圖1a,圖1a為一種集成電路芯片裝置的結構示意圖,如圖1a所示,該芯片裝置包括:主處理電路、基本處理電路和分支處理電路(可選的)。其中,
主處理電路可以包括寄存器和/或片上緩存電路,該主處理電路還可以包括:控制電路、向量運算器電路、算數邏輯單元(arithmetic and logic unit,ALU)電路、累加器電路、直接內存存取 (Direct Memory Access,DMA)電路等電路,當然在實際應用中,上述主處理電路還可以添加,轉換電路(例如矩陣轉置電路)、數據重排電路或激活電路等等其他的電路;
可選的,主處理電路可以包括:壓縮映射電路,壓縮映射電路可以用於對接收或發送的數據進行壓縮處理,在實際應用中例如將為0或者小於預設閾值(如0.1)的數據進行剔除。所述預設閾值為用戶側或終端設備側自定義設置的,例如0.1、0.05等等。本發明並不限制上述壓縮映射電路的具體形式。關於所述壓縮處理將在下文進行具體闡述。
主處理電路還包括數據發送電路、數據接收電路或介面,該數據發送電路可以集成數據分發電路以及數據廣播電路,當然在實際應用中,數據分發電路以及數據廣播電路也可以分別設置;在實際應用中上述數據發送電路以及數據接收電路也可以集成在一起形成數據收發電路。對於廣播數據,即需要發送給每個基礎處理電路的數據。對於分發數據,即需要有選擇的發送給部分基礎處理電路的數據,具體的選擇方式可以由主處理電路依據負載以及計算方式進行具體的確定。對於廣播發送方式,即將廣播數據以廣播形式發送至每個基礎處理電路。(在實際應用中,通過一次廣播的方式將廣播數據發送至每個基礎處理電路,也可以通過多次廣播的方式將廣播數據發送至每個基礎處理電路,本申請具體實施方式並不限制上述廣播的次數),對於分發發送方式,即將分發數據有選擇的發送給部分基礎處理電路。
在實現分發數據時,主處理電路的控制電路向部分或者全部基礎處理電路傳輸數據(該數據可以相同,也可以不同,具體的,如果採用分發的方式發送數據,各個接收數據的基礎處理電路收到的數據可以不同,當然也可以有部分基礎處理電路收到的數據相同;
具體地,廣播數據時,主處理電路的控制電路向部分或者全部基礎處理電路傳輸數據,各個接收數據的基礎處理電路可以收到相同的數據。
可選的,上述主處理電路的向量運算器電路可以執行向量運算,包括但不限於:兩個向量加減乘除,向量與常數加、減、乘、除運算,或者對向量中的每個元素執行任意運算。其中,連續的運算具體可以為,向量與常數加、減、乘、除運算、激活運算、累加運算等等。
每個基礎處理電路可以包括基礎寄存器和/或基礎片上緩存電路;每個基礎處理電路還可以包括:內積運算器電路、向量運算器電路、累加器電路等中一個或任意組合。上述內積運算器電路、向量運算器電路、累加器電路都可以是集成電路,上述內積運算器電路、向量運算器電路、累加器電路也可以為單獨設置的電路。
該芯片裝置可選的還可以包括一個或多個分支處理電路,如具有分支處理電路時,其中主處理電路與分支處理電路連接,該分支處理電路與基本處理電路連接,該基本處理電路的內積運算器電路用於執行數據塊之間的內積運算,該主處理電路的控制電路控制數據接收電路或數據發送電路收發外部數據,以及通過控制電路控制數據發送電路將外部數據分發至分支處理電路,該分支處理電路用於收發主處理電路或基本處理電路的數據。如圖1a所示的結構適合複雜數據的計算,因為對於主處理電路來說,其連接的單元的數量有限,所以需要在主處理電路與基本處理電路之間添加分支處理電路以實現更多的基本處理電路的接入,從而實現對複雜數據塊的計算。分支處理電路和基礎處理電路的連接結構可以是任意的,不局限在圖1a的H型結構。可選的,主處理電路到基礎處理電路是廣播或分發的結構,基礎處理電路到主處理電路是收集(gather)的結構。廣播,分發和收集的定義如下,對於分發或廣播結構,此時的基礎處理電路的數量大於主處理電路,即1個主處理電路對應多個基礎處理電路,即從主處理電路到多個基礎處理電路為廣播或分發的結構,反之,從多個基礎處理電路到主處理電路可以為收集結構。
基礎處理電路,接收主處理電路分發或者廣播的數據保存到基礎處理電路的片上緩存中,可以進行運算產生結果,可以向主處理電路發送數據。
基礎處理電路中所涉及到的數據可以是經過壓縮處理後的數據,其中壓縮處理涉及的具體實施方式將在後續進行闡述。
可選的,每個基礎處理電路均可以包括壓縮映射電路,也可以在部分基礎處理電路配置壓縮映射電路;壓縮映射電路可以用於對接收或發送的數據進行壓縮處理。本發明並不限制上述壓縮映射電路的具體形式。
可選的,該基礎處理電路的向量運算器電路可以對壓縮處理後的兩個向量執行的向量運算,當然在實際應用中,基礎處理電路的內積運算器電路可以對壓縮處理後的兩個向量執行內積運算,累加器電路也可以對內積運算的結果進行累加。
在一種可選方案中,兩個向量可以存放在片上緩存和/或寄存器中,基礎處理電路可以根據實際計算的需要提取兩個向量執行運算。該運算包括但不限於:內積運算、乘法運算、加法運算或其他的運算。
在一種可選方案中,內積運算的結果可以累加到片上緩存和/或寄存器上;其可選方案的優點是,減少了基礎處理電路和主處理電路之間的數據傳輸量,提高了運算效率,降低了數據傳輸功耗。
在一種可選方案中,內積運算的結果不進行累加,直接作為結果傳輸;此技術方案的優點是,減少了基礎處理電路內部的運算量,提高基礎處理電路的運算效率。
在一種可選方案中,每個基礎處理電路可以執行多組兩個向量的內積運算,也可以對多組內積運算的結果分別進行累加;
在一種可選方案中,多組的兩個向量數據可以存放在片上緩存和/或寄存器中;
在一種可選方案中,多組內積運算的結果可以分別累加到片上緩存和/或寄存器中;
在一種可選方案中,各組內積運算的結果可以不進行累加,直接作為結果傳輸;
在一種可選方案中,每個基礎處理電路可以執行同一個向量與多個向量分別進行內積運算的操作(「一對多」內積,即多組內積里每組的兩個向量中有一個向量是共享的),並將每個向量對應的內積結果分別進行累加。此技術方案可以實現同一套權值對不同的輸入數據進行多次計算,增加了數據復用,減少基礎處理電路內部數據的數據傳輸量,提高計算效率,降低功耗。
具體地,計算內積使用的數據中,各組共享的向量和每組的另一個向量(即每組之間不同的那個向量)的數據來源可以不同:
在一種可選方案中,在計算內積時,各組共享的向量來自主處理電路或者分支處理電路的廣播或者分發;
在一種可選方案中,在計算內積時,各組共享的向量來自片上緩存;
在一種可選方案中,在計算內積時,各組共享的向量來自寄存器;
在一種可選方案中,在計算內積時,每組的另一個非共享向量來自主處理電路或者分支處理電路的廣播或者分發;
在一種可選方案中,在計算內積時,每組的另一個非共享向量來自從片上緩存;
在一種可選方案中,在計算內積時,每組的另一個非共享向量來自寄存器;
在一種可選方案中,在進行多組的內積運算時,每組共享的向量在基礎處理電路的片上緩存和/寄存器中保留任意份數;
在一種可選方案中,共享向量可以對應每組內積各保留一份;
在一種可選方案中,共享向量可以只保留一份;
具體地,多組內積運算的結果可以分別累加到片上緩存和/或寄存器中;
具體地,各組內積運算的結果可以不進行累加,直接作為結果傳輸;
參閱圖1a所示的結構,其包含一主處理電路(可以執行向量操作),多基礎處理電路(可以執行內積操作)。這樣組合的好處是:裝置不僅能使用基礎處理電路執行矩陣和向量乘法運算,也能使用主處理電路執行其他任意的向量運算,使裝置在有限的硬件電路的配置下,能夠更快的完成更多的運算,減少了與裝置外部進行數據傳輸的次數,提高了計算效率,降低了功耗。另外,本芯片在基礎處理電路和/或主處理電路均可以設置壓縮映射電路,這樣在進行神經網絡計算時能夠減少計算的數據量,並且本芯片可以依據各個電路(主要是主處理電路和基礎處理電路)的運算量(即負載量)動態的分配由那個電路來進行數據的壓縮處理,這樣能夠減少數據計算的複雜程式,降低功耗,並且動態的分配數據的壓縮處理能夠實現不影響芯片的計算效率。該分配的方式包括但不限於:負載均衡、負載最小值分配等等方式。
參閱圖1b所示的裝置,圖1b所示的裝置為無分支處理電路的計算裝置,如圖1b所示的裝置,其包括:主處理電路以及N個基礎處理電路,其中,主處理電路(具體的結構如圖1c所示)與N個基礎處理電路可以直接或間接連接,如為間接連接的方式時 ,一種可選的方案如圖1a所示可以包括N/4個分支處理電路,每個分支處理電路分別連接4個基礎處理電路,對於主處理電路以及N個基礎處理電路分別包含的電路可以參見上述如圖1a所示的描述,這裡不再贅述,這裡需要說明的是,上述基礎處理電路還可以設置在分支處理電路內,另外,每個分支處理電路連接基礎處理電路的數量也可以不局限於4個,廠家可以根據實際需要進行配置。該上述主處理電路和/或N個基礎處理電路均可以包括壓縮映射電路,具體的,可以是主處理電路包括壓縮映射電路,也可以是N個基礎處理電路或其中的一部分包括壓縮映射電路,也可以是主處理電路和N個基礎處理電路或其中的一部分均包括。上述主處理電路可以根據神經網絡計算指令動態的分配數據壓縮處理步驟的操作實體,具體的,主處理電路可以根據自身的負載確定是否對接收到的數據執行數據壓縮處理步驟,具體的,可以將負載的值設置多個區間,每個區間對應分配數據壓縮處理的執行主體,例如,以3個區間為例,區間1的負載值較低,可以由主處理電路單獨執行數據壓縮處理步驟,區間2負載值位於區間1以及區間3之間,可以由主處理電路或N個基礎處理電路共同執行數據壓縮處理步驟,區間3負載值較高,可以由N個基礎處理電路執行數據壓縮處理步驟。對此,可以以明示的方式來執行,例如主處理電路可以配置一個特殊指示或指令,當基礎處理電路接收到該特殊指示或指令時 ,確定執行數據壓縮處理步驟,如基礎處理電路未接收到特殊指示或指令時,確定不執行數據壓縮處理步驟。又如,可以以暗示的方式來執行,例如,基礎處理電路接收到稀疏數據(即含0,或包括小於預設閾值的數據大於預設數量)且確定需要執行內積運算時, 將該稀疏數據進行壓縮處理。
下面闡述本申請涉及的數據壓縮處理的相關實施例。需要說明的是,本申請中的數據可以是神經網絡中的輸入神經元或權值,其具體可為矩陣數據或向量數據等,本申請不做限定。也即是本申請下文闡述的數據或數據塊可為神經網絡中的輸入神經元或權值,它們可以矩陣或向量等形式體現。
由於神經網絡是一個高計算量和高訪存的算法,權值越多,計算量和訪存量都會增大。特別是,針對權值較小(如為0,或小於設定數值的權值)的情況下,為提高計算速率、減小開銷需對這些權值較小的數據進行壓縮處理。在實際應用中,數據壓縮處理在稀疏神經網絡中應用,效果最為明顯,如減小數據計算的工作量、減小數據額外開銷,提高數據計算速率等。
以輸入數據為例,具體闡述所述壓縮映射電路的數據壓縮處理實施例。所述輸入數據包括但不限於至少一個輸入神經元和/或至少一個權值。
第一種實施例中:壓縮映射電路對輸入神經元和權值均進行壓縮處理
壓縮映射電路101接收到輸入數據(具體可為主壓縮處理電路發送的所述待計算的數據塊)之後,可對所述輸入數據進行壓縮處理,以得到壓縮處理後的輸入數據,所述輸入數據包括至少一個輸入神經元和至少一個權值,所述壓縮處理後的輸入數據包括壓縮處理後的輸入神經元和壓縮處理後的權值。
上述輸入數據包括至少一個輸入神經元和至少一個權值。上述壓縮映射電路101確定所述至少一個輸入神經元中每個輸入神經元的絕對值是否大於第一閾值。當上述輸入神經元的絕對值小於或者等於該第一閾值時,上述壓縮映射電路101將該輸入神經元刪除;當上述輸入神經元的絕對值大於上述第一閾值時,上述壓縮映射電路101保留該輸入神經元,該壓縮映射電路101將刪除後的輸出神經元輸出,作為壓縮處理後的輸入神經元。上述壓縮映射電路101獲取輸入神經元的連接關係數據,該輸入神經元的連接關係數據表示上述至少一個輸入神經元中絕對值大於上述第一閾值的輸入神經元的位置信息。上述壓縮映射電路101確定上述至少一個權值中每個權值的絕對值是否大於第二閾值。當權值的絕對值小於或者等於上述第二閾值時,上述壓縮映射電路101將該權值刪除,並根據上述輸入神經元的連接關係數據將從上述刪除後的權值中選擇相關的權值輸出,作為壓縮處理後的權值。
在一種可行的實施例中,上述輸入數據包括至少一個輸入神經元和至少一個權值。上述壓縮映射電路101確定所述至少一個權值中每個權值的絕對值是否大於第二閾值。當上述權值的絕對值小於或者等於該第二閾值時,上述壓縮映射電路101將該權值刪除;當上述權值的絕對值大於上述第二閾值時,上述壓縮映射電路101保留該權值,該壓縮映射電路101將刪除後的權值輸出,作為壓縮處理後的權值。上述壓縮映射電路101獲取權值的連接關係數據,該權值的連接關係數據表示上述至少一個輸入神經元與輸出神經元之間的連接關係的數據。上述壓縮映射電路101確定上述至少一個輸入神經元中每個輸入神經元的絕對值是否大於第一閾值。當輸入神經元的絕對值小於或者等於上述第一閾值時,上述壓縮映射電路101將該輸入神經元刪除,並根據上述權值的連接關係數據將從上述刪除後的輸入神經元中選擇相關的輸入神經元輸出,作為壓縮處理後的輸入神經元。
進一步地,上述壓縮映射電路101將上述壓縮處理後的輸入神經元和壓縮處理後的權值按照一一對應的格式存儲到存儲電路中。
具體地,上述壓縮映射電路101對上述壓縮處理後的輸入神經元和上述壓縮處理後的權值按照一一對應的格式進行存儲的具體方式是將上述壓縮處理後的輸入神經元中的每個壓縮處理後的輸入神經元和與其對應的壓縮處理後的權值作為一個數據集,並將該數據集存儲到存儲電路中。
具體地,如圖1d所示,上述壓縮映射電路101包括:
第一稀疏處理單元1011,用於對第二輸入數據進行壓縮處理,以得到第三輸出數據和第二輸出數據,並將所述第三輸出數據傳輸至第一數據處理單元1012。
第一數據處理單元1012,用於接收第一輸入數據和接收所述第三輸出數據,並根據上述第三輸出數據和第一輸入數據輸出第一輸出數據。
其中,當所述第一輸入數據包括至少一個輸入神經元,所述第二輸入數據包括至少一個權值時,所述第一輸出數據為壓縮處理後的輸入神經元,所述第二輸出數據為壓縮處理後的權值,所述第三輸出數據為權值的連接關係數據;當所述第一輸入數據包括至少一個權值,所述第二輸入數據包括至少一個輸入神經元時,所述第一輸出數據為壓縮處理後的權值,所述第二輸出數據為壓縮處理後的輸入神經元,所述第三輸出數據為輸入神經元的連接關係數據。
具體地,當上述第二輸入數據為權值時,且權值的形式為wij,該wij表示第i個輸入神經元與第j個輸出神經元之間的權值;上述第一稀疏處理單元1011根據權值確定上述連接關係數據(即上述第三輸出數據),並將上述權值中絕對值小於或者等於第二閾值的權值刪除,得到壓縮處理後的權值(即上述第二輸出數據);當上述第二輸入數據為輸入神經元時,上述第一稀疏處理單元1011根據輸入神經元得到連接關係數據,並將該輸入神經元中的絕對值小於或等於上述第一閾值的輸入神經元刪除,以得到壓縮處理後的輸入神經元。
可選地,上述第一閾值可為0.1、0.08、0.05、0.02、0.01、0或者其他值。上述第二閾值可為0.1、0.08、0.06、0.05、0.02、0.01、0或者其他值。上述第一閾值和上述第二閾值可以一致,也可以不一致。
其中,上述連接關係數據可以步長索引或者直接索引的形式表示。
具體地,以直接索引形式表示的連接關係數據為由0和1組成的字符串,當上述第二輸入數據為權值時,0表示該權值的絕對值小於或者等於上述第二閾值,即該權值對應的輸入神經元與輸出神經元之間沒有連接,1表示該權值的絕對值大於上述第二閾值,即該權值對應的輸入神經元與輸出神經元之間有連接。以直接索引形式表示的連接關係數據有兩種表示順序:以每個輸出神經元與所有輸入神經元的連接狀態組成一個0和1的字符串來表示權值的連接關係;或者每個輸入神經元與所有輸出神經元的連接狀態組成一個0和1的字符串來表示權值的連接關係。當上述第二輸入數據為輸入神經元時,0表示該輸入神經元的絕對值小於或者等於上述第一閾值,1表示該輸入神經元的絕對值大於上述第一閾值。
應理解的,所述連接關係數據也可用向量/矩陣等形式體現,其中,0表示該位置對應的輸入神經元/權值的數據為0或者小於第一閾值;相應地,1表示該位置對應的輸入神經元/權值的數據不為0或者大於第一閾值等,本申請不做限定。可選的,所述數據的連接關係數據也可稱為標記mask矩陣/mask向量。
當上述第二輸入數據為權值時,以步長索引形式表示的連接關係數據為與輸出神經元有連接的輸入神經元與上一個與該輸出神經元有連接的輸入神經元之間的距離值組成的字符串;當上述第二輸入數據為輸入神經元時,以步長索引表示的數據以當前絕對值大於上述第一閾值的輸入神經元與上一個絕對值大於上述第一閾值的輸入神經元之間的距離值組成的字符串表示。
舉例說明,假設上述第一閾值和上述第二閾值均為為0.01,參見圖1e,圖1e為本發明實施例提供的一種神經網絡的示意圖。如圖1e中的a圖所示,上述第一輸入數據為輸入神經元,包括輸入神經元i1、i2、i3和i4,上述第二輸入數據為權值。對於輸出神經元o1,權值為w11,w21,w31和w41;對於輸出神經元o2,權值w12,w22,w32和w42,其中權值w21,w12和w42的值為0,其絕對值均小於上述第一閾值0.01,上述第一稀疏處理單元1011確定上述輸入神經元i2和輸出神經元o1沒有連接,上述輸入神經元i1和i4與輸出神經元o2沒有連接,上述輸入神經元i1、i3和i4與上述輸出神經元o1有連接,上述輸入神經元i2和i3與輸出神經元o2有連接。以每個輸出神經元與所有輸入神經元的連接狀態表示上述連接關係數據,則上述輸出神經元o1的連接關係數據為「1011」,輸出神經元o2的連接關係數據為「0110」(即上述連接關係數據為「10110110」);以每個輸入神經元與所有輸出神經元的連接關係,則輸入神經元i1的連接關係數據為「10」,輸入神經元i2的連接關係數據為「01」,輸入神經元i3的連接關係數據為「11」,輸入神經元i4的連接關係數據為「10」(即上述連接關係數據為「10011110」)。
對於上述輸出神經元o1,上述壓縮映射電路101將上述i1與w11,i3與w31和i4與w41分別作為一個數據集,並將該數據集存儲到存儲電路中;對於輸出神經元o2,上述壓縮映射電路101將上述i2與w22和i3與w32分別作為一個數據集,並將該數據集存儲到存儲電路中。
針對上述輸出神經元o1,上述第二輸出數據為w11,w31和w41;針對上述輸出神經元o2,上述第二輸出數據為w22和w32。
當上述第二輸入數據為輸入神經元i1、i2、i3和i4,且該輸入神經元的值分別為1,0,3,5則上述連接關係數據(即上述第三輸出數據)為「1011」,上述第二輸出數據為1,3,5。
如圖1e中的b圖所示,上述第一輸入數據包括輸入神經元i1、i2、i3和i4,上述第二輸入數據為權值。對於輸出神經元o1,權值為w11,w21,w31和w41;對於輸出神經元o2,權值w12,w22,w32和w42,其中權值w21,w12和w42的值為0,上述稀疏處理單元1011確定上述輸入神經元i1、i3和i4與上述輸出神經元o1有連接,上述輸入神經元i2和i3與輸出神經元o2有連接。上述輸出神經元o1與輸入神經元之間的連接關係數據為「021」。其中,該連接關係數據中第一個數字「0」表示第一個與輸出神經元o1有連接的輸入神經元與第一個輸入神經元之間的距離為0,即第一個與輸出神經元o1有連接的輸入神經元為輸入神經元i1;上述連接關係數據中第二個數字「2」表示第二個與輸出神經元o1有連接的輸入神經元與第一個與輸出神經元o1有連接的輸入神經元(即輸入神經元i1)之間的距離為2,即第二個與輸出神經元o1有連接的輸入神經元為輸入神經元i3;上述連接關係數據中第三個數字「1」表示第三個與輸出神經元o1有連接的輸入神經元與第二個與該輸出神經元o1有連接的輸入神經元之間的距離為1,即第三個與輸出神經元o1有連接的輸入神經元為輸入神經元i4。
上述輸出神經元o2與輸入神經元之間的連接關係數據為「11」。其中,該連接關係數據中的第一數字「1」表示第一個與輸出神經元o2有連接的輸入神經元與第一個輸入神經元(即輸入神經元i1)之間的距離為,即該第一個與輸出神經元o2有連接關係的輸入神經元為輸出神經元i2;上述連接關係數據中的第二數字「1」表示第二個與輸出神經元o2有連接的輸入神經元與第一個與輸出神經元o2有連接的輸入神經元的距離為1,即第二個與輸出神經元o2有連接的輸入神經元為輸入神經元i3。
對於上述輸出神經元o1,上述壓縮映射電路101將上述i1與w11,i3與w31和i4與w41分別作為一個數據集,並將該數據集存儲到存儲電路中;對於輸出神經元o2,上述壓縮映射電路101將上述i2與w22和i3與w32分別作為一個數據集,並將該數據集存儲到存儲電路中。
針對上述輸出神經元o1,上述第二輸出數據為w11,w31和w41;針對上述輸出神經元o2,上述第二輸出數據為w22和w32。
當上述第二輸入數據為輸入神經元i1、i2、i3和i4,且該輸入神經元的值分別為1,0,3,5則上述連接關係數據即上述第三輸出數據為「021」,上述第二輸出數據為1,3,5。
當上述第一輸入數據為輸入神經元時,則上述第二輸入數據為權值,上述第三輸出數據為輸出神經元與上述輸入神經元之間的連接關係數據。上述第一數據處理單元1012接收到上述輸入神經元後,將該輸入神經元中絕對值小於或等於上述第二閾值的輸入神經元剔除,並根據上述連接關係數據,從剔除後的輸入神經元中選擇與上述權值相關的輸入神經元,作為第一輸出數據輸出。
舉例說明,假設上述第一閾值為0,上述輸入神經元i1、i2、i3和i4,其值分別為1,0,3和5,對於輸出神經元o1,上述第三輸出數據(即連接關係數據)為「021」,上述第二輸出數據為w11,w31和w41。上述第一數據處理單元1012將上述輸入神經元i1、i2、i3和i4中值為0的輸入神經元剔除,得到輸入神經元i1、i3和i4。該第一數據處理單元1012根據上述第三輸出數據「021」確定上述輸入神經元i1、i3和i4均與上述輸出神經元均有連接,故上述數據處理單元1012將上述輸入神經元i1、i3和i4作為第一輸出數據輸出,即輸出1,3,5。
當上述第一輸入數據為權值,上述第二輸入數據為輸入神經元時,上述第三輸出數據為上述輸入神經元的連接關係數據。上述第一數據處理單元1012接收到上述權值w11,w21,w31和w41後,將該權值中絕對值小於上述第一閾值的權值剔除,並根據上述連接關係數據,從上述剔除後的權值中選擇與該上述輸入神經元相關的權值,作為第一輸出數據並輸出。
舉例說明,假設上述第二閾值為0,上述權值w11,w21,w31和w41,其值分別為1,0,3和4,對於輸出神經元o1,上述第三輸出數據(即連接關係數據)為「1011」,上述第二輸出數據為i1,i3和i5。上述第一數據處理單元1012將上述權值w11,w21,w31和w41中值為0的輸入神經元剔除,得到權值w11,w21,w31和w41。該第一數據處理單元1012根據上述第三輸出數據「1011」確定上述輸入神經元i1、i2,i3和i4中的輸入神經元i2的值為0,故上述第一數據處理單元1012將上述輸入神經元1,3和4作為第一輸出數據輸出。
在一種可行的實施例中,第三輸入數據和第四輸入數據分別為至少一個權值和至少一個輸入神經元,上述壓縮映射電路101確定上述至少一個輸入神經元中絕對值大於上述第一閾值的輸入神經元的位置,並獲取輸入神經元的連接關係數據;上述壓縮映射電路101確定上述至少一個權值中絕對值大於上述第二閾值的權值的位置,並獲取權值的連接關係數據。上述壓縮映射電路101根據上述權值的連接關係數據和輸入神經元的連接關係數據得到一個新的連接關係數據,該連接關係數據表示上述至少一個輸入神經元中絕對值大於上述第一閾值的輸入神經元與輸出神經元之間的關係和對應的權值的值。壓縮映射電路101根據該新的連接關係數據、上述至少一個輸入神經元和上述至少一個權值獲取壓縮處理後的輸入神經元和壓縮處理後的權值。
進一步地,上述壓縮映射電路101將上述壓縮處理後的輸入神經元和壓縮處理後的權值按照一一對應的格式存儲到存儲電路中。
具體地,上述壓縮映射電路101對上述壓縮處理後的輸入神經元和上述壓縮處理後的權值按照一一對應的格式進行存儲的具體方式是將上述壓縮處理後的輸入神經元中的每個壓縮處理後的輸入神經元和與其對應的壓縮處理後的權值作為一個數據集,並將該數據集存儲到存儲電路中。
對於壓縮映射電路101包括第一稀疏處理單元1011和第一數據處理單元1012的情況,壓縮映射電路101中的稀疏處理單元1011對輸入神經元或者權值進行稀疏化壓縮處理,減小了權值或者輸入神經元的數量,進而減小了運算單元進行運算的次數,提高了運算效率。
具體地,如圖1f所示,上述壓縮映射電路101包括:
第二稀疏處理單元1013,用於接收到第三輸入數據後,根據所述第三輸入數據得到第一連接關係數據,並將該第一連接關係數據傳輸至連接關係處理單元1015;
第三稀疏處理單元1014,用於接收到第四輸入數據後,根據所述第四輸入數據得到第二連接關係數據,並將該第二連接關係數據傳輸至所述連接關係處理單元1015;
所述連接關係處理單元1015,用於根據所述第一連接關係數據和所述第二連接關係數據,以得到第三連接關係數據,並將該第三連接關係數據傳輸至第二數據處理單元1016;
所述第二數據處理單元1016,用於在接收到所述第三輸入數據,所述第四輸入數據和所述第三連接關係數據後,根據所述第三連接關係數據對所述第三輸入數據和所述第四輸入數據進行壓縮處理,以得到第四輸出數據和第五輸出數據;
其中,當所述第三輸入數據包括至少一個輸入神經元,第四輸入數據包括至少一個權值時,所述第一連接關係數據為輸入神經元的連接關係數據,所述第二連接關係數據為權值的連接關係數據,所述第四輸出數據為壓縮處理後的輸入神經元,所述第五輸出數據為壓縮處理後的權值;當所述第三輸入數據包括至少一個權值,所述第四輸入數據包括至少一個輸入神經元時,所述第一連接關係數據為權值的連接關係數據,所述第二連接關係數據為輸入神經元的連接關係數據,所述第四輸出數據為壓縮處理後的權值,所述第五輸出數據為壓縮處理後的輸入神經元。
當上述第三輸入數據包括至少一個輸入神經元時,上述第一連接關係數據為用於表示該至少一個輸入神經元中絕對值大於上述第一閾值的輸入神經元的位置的字符串;當上述第三輸入數據包括至少一個權值時,上述第一連接關係數據為用於表示輸入神經元與輸出神經元之間是否有連接的字符串。
當上述第四輸入數據包括至少一個輸入神經元時,上述第二連接關係數據為用於表示該至少一個輸入神經元中絕對值大於上述第一閾值的輸入神經元的位置的字符串;當上述第四輸入數據包括至少一個權值時,上述第二連接關係數據為用於表示輸入神經元與輸出神經元之間是否有連接的字符串。
需要說明的是,上述第一連接關係數據、第二連接關係數據和第三連接關係數據均可以步長索引或者直接索引的形式表示,具體可參見上述相關描述。
換句話說,上述連接關係處理單元1015對上述第一連接關係數據和上述第二連接關係數據進行壓縮處理,以得到第三連接關係數據。該第三連接關係數據可以直接索引或者步長索引的形式表示。
具體地,上述當上述第一連接關係數據和上述第二連接關係數據均以直接索引的形式表示時,上述連接關係處理單元1015對上述第一連接關係數據和上述第二連接關係數據進行與操作,以得到第三連接關係數據,該第三連接關係數據是以直接索引的形式表示的。
需要說明的是,表示上述第一連接關係數據和第二連接關係數據的字符串在內存中是按照物理地址高低的順序存儲的,可以是由高到低的順序存儲的,也可以是由低到高的順序存儲的。
當上述第一連接關係數據和上述第二連接關係數據均以步長索引的形式表示,且表示上述第一連接關係數據和第二連接關係數據的字符串是按照物理地址由低到高的順序存儲時,上述連接關係處理單元1015將上述第一連接關係數據的字符串中的每一個元素與存儲物理地址低於該元素存儲的物理地址的元素進行累加,得到的新的元素組成第四連接關係數據;同理,上述連接關係處理單元1015對上述第二連接關係數據的字符串進行同樣的壓縮處理,得到第五連接關係數據。然後上述連接關係處理單元1015從上述第四連接關係數據的字符串和上述第五連接關係數據的字符串中,選取相同的元素,按照元素值從小到大的順序排序,組成一個新的字符串。上述連接關係處理單元1015將上述新的字符串中將每一個元素與其相鄰且值小於該元素值的元素進行相減,以得到一個新的元素。按照該方法,對上述新的字串中的每個元素進行相應的操作,以得到上述第三連接關係數據。
舉例說明,假設以步長索引的形式表示上述第一連接關係數據和上述第二連接關係數據,上述第一連接關係數據的字符串為「01111」,上述第二連接關係數據的字符串為「022」,上述連接關係處理單元1015將上述第一連接關係數據的字符串中的每個元素與其相鄰的前一個元素相加,得到第四連接關係數據「01234」;同理,上述連接關係處理單元1015對上述第二連接關係數據的字符串進行相同的壓縮處理後得到的第五連接關係數據為「024」。上述連接關係處理單元1015從上述第四連接關係數據「01234」和上述第五連接關係數據「024」選組相同的元素,以得到新的字符串「024」。上述連接關係處理單元1015將該新的字符串中的每個元素與其相鄰的前一個元素進行相減,即0,(2-0),(4-2),以得到上述第三連接數據「022」。
當上述第一連接關係數據和上述第二連接關係數據中的任意一個以步長索引的形式表示,另一個以直接索引的形式表示時,上述連接關係處理單元1015將上述以步長索引表示的連接關係數據轉換成以直接索引的表示形式或者將以直接索引表示的連接關係數據轉換成以步長索引表示的形式。然後上述連接關係處理單元1015按照上述方法進行壓縮處理,以得到上述第三連接關係數據(即上述第五輸出數據)。
可選地,當上述第一連接關係數據和上述第二連接關係數據均以直接索引的形式表示時,上述連接關係處理單元1015將上述第一連接關係數據和上述第二連接關係數據均轉換成以步長索引的形式表示的連接關係數據,然後按照上述方法對上述第一連接關係數據和上述第二連接關係數據進行壓縮處理,以得到上述第三連接關係數據。
具體地,上述第三輸入數據可為輸入神經元或者權值、第四輸入數據可為輸入神經元或者權值,且上述第三輸入數據和第四輸入數據不一致。上述第二數據處理單元1016根據上述第三連接關係數據從上述第三輸入數據(即輸入神經元或者權值)中選取與該第三連接關係數據相關的數據,作為第四輸出數據;上述第二數據處理單元1016根據上述第三連接關係數據從上述第四輸入數據中選取與該第三連接關係數據相關的數據,作為第五輸出數據。
進一步地,上述第二數據處理單元1016將上述壓縮處理後的輸入神經元中的每個壓縮處理後的輸入神經元與其對應的壓縮處理後的權值作為一個數據集,將該數據集存儲出存儲電路中。
舉例說明,假設上述第三輸入數據包括輸入神經元i1,i2,i3和i4,上述第四輸入數據包括權值w11,w21,w31和w41,上述第三連接關係數據以直接索引方式表示,為「1010」,則上述第二數據處理單元1016輸出的第四輸出數據為輸入神經元i1和i3,輸出的第五輸出數據為權值w11和w31。上述第二數據處理單元1016將輸入神經元i1與權值w11和輸入神經元i3與權值w31分別作為一個數據集,並將該數據集存儲到存儲電路中。
對於壓縮映射電路101包括第二稀疏處理單元1013,第三稀疏處理單元1014、連接關係處理單元1015和第二數據處理單元1016的情況,壓縮映射電路101中的稀疏處理單元對輸入神經元和權值均進行稀疏化壓縮處理,使得輸入神經元和權值的數量進一步減小,進而減小了運算單元的運算量,提高了運算效率。
可選地,所述壓縮映射電路101對所述輸入數據進行壓縮處理之前,所述壓縮映射電路101還用於:
對所述至少一個輸入神經元進行分組,以得到M組輸入神經元,所述M為大於或者等於1的整數;
判斷所述M組輸入神經元的每一組輸入神經元是否滿足第一預設條件,所述第一預設條件包括一組輸入神經元中絕對值小於或者等於第三閾值的輸入神經元的個數小於或者等於第四閾值;
當所述M組輸入神經元任意一組輸入神經元不滿足所述第一預設條件時,將該組輸入神經元刪除;
對所述至少一個權值進行分組,以得到N組權值,所述N為大於或者等於1的整數;
判斷所述N組權值的每一組權值是否滿足第二預設條件,所述第二預設條件包括一組權值中絕對值小於或者等於第五閾值的權值的個數小於或者等於第六閾值;
當所述N組權值任意一組權值不滿足所述第二預設條件時,將該組權值刪除。
可選地,上述第三閾值可為0.5,0.2,0.1,0.05,0.025,0.0,0或者其他值。上述第四閾值與上述一組輸入神經元中輸入神經元的個數相關。可選地,該第四閾值=一組輸入神經元中的輸入神經元個數-1或者該第四閾值為其他值。可選地,上述第五閾值可為0.5,0.2,0.1,0.05,0.025,0.01,0或者其他值。其中,上述第六閾值與上述一組權值中的權值個數相關。可選地,該第六閾值=一組權值中的權值個數-1或者該第六閾值為其他值。
需要說明的是,上述第三閾值和上述第五閾值可相同或者不同,上述第四閾值和上述第六閾值可相同或者不同。可選的,存儲電路可用於存儲上述壓縮處理後的輸入神經元、壓縮處理後的權值和相關的運算指令。
在可選實施例中,如圖1g所示的壓縮映射電路在已知輸入數據的連接關係數據的情況下,可利用該輸入數據的連接關係數據對所述輸入數據進行壓縮處理。所述輸入數據包括至少一個輸入神經元或者至少一個權值。具體如圖1g所示,上述壓縮映射電路601包括:
輸入數據緩存單元6011,用於緩存第一輸入數據,該第一輸入數據包括至少一個輸入神經元或者至少一個權值。
連接關係緩存單元6012,用於緩存第一輸入數據的連接關係數據,即上述輸入神經元的連接關係數據或者上述權值的連接關係數據。
其中,上述輸入神經元的連接關係數據為用於表示該輸入神經元中絕對值是否小於或者等於第一閾值的字符串,上述權值的連接關係數據為表示該權值絕對值是否小於或者等於上述第一閾值的字符串,或者為表示該權值對應的輸入神經元和輸出神經元之間是否有連接的字符串。該輸入神經元的連接關係數據和權值的連接關係數據可以直接索引或者步長索引的形式表示。
需要說明的是,上述直接索引和步長索引的描述可參見上述圖1b所示實施例的相關描述。
第四稀疏處理單元6013,用於根據所述第一輸入數據的連接關係數據對所述第一輸入數據進行壓縮處理,以得到壓縮處理後的第一輸入數據,並將該壓縮處理後的第一輸入數據存儲到上述第一輸入緩存單元中605。
其中,當上述第一輸入數據為至少一個輸入神經元時,上述第四稀疏處理單元6013在一個時鐘週期壓縮處理一個輸入神經元和一個連接關係,即在一個時鐘週期從S1個輸入神經元中選擇一個有效的輸入神經元,S1為大於1的整數。
在一種可行的實施例中,上述第四稀疏處理單元6013在一個時鐘週期壓縮處理多個輸入神經元和多個連接關係數據,即一個時鐘週期從S1個輸入神經元中選出有效的S2個輸入數據,上述S2為大於0且小於或者等於該S1的整數。
舉例說明,如圖1h所示,上述輸入神經元為i1,i2,i3和i4,以直接索引的形式表示的連接關係數據為「1011」,並且上述第四稀疏處理單元6013在一個時鐘週期可從4個輸入神經元選擇1個有連接(即有效)的輸入神經元。上述第四稀疏處理單元6013從上述輸入數據緩存單元6011和上述連接關係緩存單元6012中分別獲取上述輸入神經元i1,i2,i3和i4和上述連接關係數據「1011」後,上述第四稀疏處理單元6013根據該連接關係數據「1011」從上述輸入神經元i1,i2,i3和i4選取有連接的輸入神經元i1,i3和i4。由於上述第四稀疏處理單元6013在一個時鐘週期可從4個輸入神經元選擇1個有連接(即有效)的輸入神經元,該第四稀疏處理單元6013在三個時鐘週期內依次輸出輸入神經元i1,i3和i4,如圖1h所示。上述第四稀疏處理單元6013將上述輸入神經元i1,i3和i4存儲到第一輸入緩存單元中。
再舉例說明,如圖1i所示,輸入神經元為i1,i2,i3和i4,以直接索引的形式表示的連接關係數據有兩組,分別為「1011」和「0101」,上述第四稀疏處理單元6013在一個時鐘週期可從4個輸入神經元中選擇2個有連接(即有效)的輸入神經元。上述第四稀疏處理單元6013根據上述連接關係數據「1011」從上述輸入神經元i1,i2,i3和i4中選擇有連接的輸入神經元i1,i3和i4;根據上述連接關係數據「0101」從上述輸入神經元i1,i2,i3和i4中選擇有連接的輸入神經元i2和i4。由於上述第四稀疏處理單元6013在一個時鐘週期可從4個輸入神經元選擇2個有連接(即有效)的輸入神經元,對於連接關係數據「1011」,該第四稀疏處理單元6013在第一個時鐘週期從選擇輸入神經元i1和i3,並將該輸入神經元i1和i3存儲到上述第一輸入緩存單元606中,在第二個時鐘週期從選擇輸入神經元i4,並將該輸入神經元i4存儲到上述第一輸入緩存單元606中;對於連接關係數據「0101」,該第四稀疏處理單元6013在一個時鐘週期從選擇輸入神經元i2和i4,如圖1i所示。上述第四稀疏處理單元6013將上述輸出神經元i2和i4和存儲到第一輸入緩存單元中。
舉例說明,如圖1j所示,輸入數據為輸入神經元i1,i2,i3和i4,以步長索引的形式表示的連接關係數據為「021」,並且上述第四稀疏處理單元6013在一個時鐘週期可從4個輸入神經元選擇1個有連接(即有效)的輸入神經元。上述第四稀疏處理單元6013從上述輸入數據緩存單元6011和上述連接關係緩存單元6012中分別獲取上述輸入神經元i1,i2,i3和i4和上述連接關係數據「021」後,上述第四稀疏處理單元6013根據該連接關係數據「1011」從上述輸入神經元i1,i2,i3和i4選取有連接的輸入神經元i1,i3和i4。由於上述第四稀疏處理單元6013在一個時鐘週期可從4個輸入神經元選擇1個有連接(即有效)的輸入神經元,該第四稀疏處理單元6013在三個時鐘週期內依次輸出輸入神經元i1,i3和i4,如圖1j所示。上述第四稀疏處理單元6013將上述輸入神經元i1,i3和i4存儲到第一輸入緩存單元中。
再舉例說明,如圖1k所示,輸入數據為輸入神經元i1,i2,i3和i4,以步長索引的形式表示的連接關係數據有兩組,分別為「021」和「22」,上述第四稀疏處理單元6013在一個時鐘週期可從4個輸入神經元中選擇2個有連接(即有效)的輸入神經元。上述第四稀疏處理單元6013根據上述連接關係數據「021」從上述輸入神經元i1,i2,i3和i4中選擇有連接的輸入神經元i1,i3和i4;根據上述連接關係數據「22」從上述輸入神經元i1,i2,i3和i4中選擇有連接的輸入神經元i2和i4。由於上述第四稀疏處理單元6013在一個時鐘週期可從4個輸入神經元選擇2個有連接(即有效)的輸入神經元,對於連接關係數據「021」,該第四稀疏處理單元6013在第一個時鐘週期從選擇輸入神經元i1和i3,並將該輸入神經元i1和i3存儲到上述第一輸入緩存單元606中。在第二個時鐘週期從選擇輸入神經元i4並將該輸入神經元i4存儲到上述第一輸入緩存單元606中;對於連接關係數據「22」,該第四稀疏處理單元6013在一個時鐘週期從選擇輸入神經元i2和i4並輸出,如圖1k所示。上述第四稀疏處理單元6013將上述輸入神經元i2和i4存儲到第一輸入緩存單元中。
在一種可行的實施例中,上述輸入數據緩存單元6011用於緩存的第一輸入數據包括至少一個權值,上述連接關係緩存單元6012緩存的數據為上述權值的連接關係數據,且上述至少一個權值的絕對值均大於第一閾值時,上述第四稀疏處理單元6013根據上述權值的連接關係數據,將沒有連接關係的輸入神經元和輸出神經元之間的權值的值置為0,並將該值為0的權值和上述至少一個權值存儲到第二輸入緩存單元中。
舉例說明,權值的形式為wij,表示第i個輸入神經元與第j個輸出神經元之間的權值。假設輸入神經元包括i1,i2,i3和i4,輸出神經元包括o1,上述第一輸入數據(權值)為w11,w31,w41,上述第一輸入數據的連接關係數據(即上述權值的連接關係數據)以直接索引的形式表示,為1011,上述第四稀疏處理單元6013根據上述第二輸入數據確定上述輸入神經元i2與上述輸出神經元o1之間沒有連接,上述第四稀疏處理單元6013將該上述輸入神經元i2與上述輸出神經元o1之間的權值w21的值置為0,並將w11,w21(0),w31,w41存儲到第二輸入緩存單元中。
上述第一輸入緩存單元,用於緩存上述壓縮處理後的輸入神經元。上述第二輸入緩存單元,用於緩存從存儲電路中讀取的壓縮處理的權值。
在一種可行的實施例中,當上述第一輸入數據為至少一個權值時,上述第四稀疏處理單元6013在一個時鐘週期壓縮處理一個權值和一個連接關係,即在一個時鐘週期從S3個權值中選擇一個有效的權值,該S3為大於1的整數。
可選地,上述第四稀疏處理單元6013在一個時鐘週期壓縮處理多個權值和多個連接關係數據,即一個時鐘週期從S3個權值中選出有效的S4個權值,上述S4為大於0且小於或者等於該S3的整數。
上述第一輸入緩存單元,用於緩存上述壓縮處理後的權值。上述第二輸入緩存單元,用於緩存從存儲電路中讀取的壓縮處理的輸入神經元。
需要說明的是,上述相關描述可參見前述實施例中的相關描述,在此不再敘述。
可選地,所述壓縮映射電路601對所述第一輸入數據進行壓縮處理之前,所述壓縮映射電路601還用於:
對所述至少一個輸入神經元進行分組,以得到M組輸入神經元,所述M為大於或者等於1的整數;
判斷所述M組輸入神經元的每一組輸入神經元是否滿足第一預設條件,所述第一預設條件包括一組輸入神經元中絕對值小於或者等於第三閾值的輸入神經元的個數小於或者等於第四閾值;
當所述M組輸入神經元任意一組輸入神經元不滿足所述第一預設條件時,將該組輸入神經元刪除;
對所述至少一個權值進行分組,以得到N組權值,所述N為大於或者等於1的整數;
判斷所述N組權值的每一組權值是否滿足第二預設條件,所述第二預設條件包括一組權值中絕對值小於或者等於第五閾值的權值的個數小於或者等於第六閾值;
當所述N組權值任意一組權值不滿足所述第二預設條件時,將該組權值刪除。
需要說明的是,上述相關描述可參見前述實施例中的相關描述,在此不再敘述。上述第一閾值、第二閾值、第三閾值、第四閾值、第五閾值和第六閾值可均存儲在存儲電路或者第一輸出緩存單元中;上述第一閾值、第二閾值、第三閾值、第四閾值、第五閾值和第六閾值中部分閾值存儲在存儲電路、部分閾值存儲在第一輸出緩存單元中。
上述第一輸入緩存單元、上述第二輸入緩存單元和上述輸出緩存單元均可為所述壓縮映射電路或所述主處理電路中的功能單元,也可為其他處理電路共享的功能單元,本申請不做限定。
在一種可選實施例中,所述輸入神經元的連接關係數據和所述權值的連接關係數據是由0或1表示的字符串/矩陣組成,其中0表示所述輸入神經元/所述權值的絕對值小於或等於第一閾值,1表示所述輸入神經元/所述權值的絕對值大於第一閾值且與輸出神經元無關。例如,輸入數據為矩陣S,假設第一閾值為0,則對應的連接關係數據為。本實施例中,連接關係數據(如所述神經元/權值的連接關係數據)也可稱為mask矩陣。
本申請中數據的連接關係數據(具體為權值的連接關係數據或神經元的連接關係數據)的表示方式除了直接索引和步長索引之外,還可為以下幾種情況:列表的列表(List of Lists,LIL)、坐標列表(Coordinate list,COO)、壓縮稀疏行(Compressed Sparse Row,CSR)、壓縮稀疏列(Compressed Sparse Column,CSC)、ELL(ELL Pack)以及混合(Hybird,HYB)等等,本申請不做詳述。
此外,本發明實施例中提到的輸入神經元和輸出神經元並非是指整個神經網絡的輸入層中的神經元和輸出層中的神經元,而是對於神經網絡中任意相鄰的兩層神經元,處於網絡前饋運算下層中的神經元即為輸入神經元,處於網絡前饋運算上層中的神經元即為輸出神經元。以卷積神經網絡為例,假設一個卷積神經網絡有L層,K=1,2,3…L-1,對於第K層和第K+1層來說,第K層被稱為輸入層,該層中的神經元為上述輸入神經元,第K+1層被稱為輸入層,該層中的神經元為上述輸出神經元,即除了頂層之外,每一層都可以作為輸入層,其下一層為對應的輸出層。
下面提供一種採用如圖1a所示的裝置實現計算的方法,該計算的方法具體可以為神經網絡的計算方式,例如神經網絡的正向運算,神經網絡的訓練,在實際應用中,正向運算依據不同的輸入數據可以執行矩陣乘矩陣、卷積運算、激活運算、變換運算等等運算,上述運算均可以採用如圖1a所示的裝置實現。
主處理單元的控制電路將數據傳輸給基礎處理電路運算。相應地,基礎處理處理的壓縮映射電路先先對數據進行壓縮處理後再運算,其優點是可以減少數據計算量,基礎處理電路執行數據運算的效率也更高,功耗更低。
如基礎處理電路接收到的數據為稀疏數據,那麼基礎處理電路可以收到數據後由壓縮映射電路對數據進行壓縮處理然後再進行計算,例如,基礎處理電路收到主處理電路傳輸過來的稀疏數據,壓縮映射電路將其進行壓縮處理,然後基礎處理電路的內積運算器電路、向量運算器電路或累加器電路對壓縮處理後的數據進行運算,提高運算效率,降低功耗。
主處理電路將待計算的數據傳輸到全部或者一部分基礎處理電路上;以矩陣乘以向量計算為例,主處理電路的控制電路可以將矩陣數據拆分每列作為一個基礎數據,例如m*n矩陣,可以拆分成n個m行的向量,主處理電路的控制電路將拆分後的n個m行的向量分發給多個基礎處理電路。對於向量,主處理電路的控制電路可以將向量整體廣播給每個基礎處理電路。如果m的值比較大,那麼控制電路可以先將m*n矩陣拆分成x*n個向量,以x=2為例,具體的可以拆分成,2n個向量,每個向量包含m/2行,即將n個m行的向量中每個向量均分成2個向量,以第一行為例,如n個m行的向量的第一個向量為1000行,那麼均分成2個向量可以為,將前500行組成第一向量,將後500行組成第二向量,控制電路通過2個廣播將2個向量廣播給多個基礎處理電路。
所述數據傳輸的方式可以是廣播或者分發,或者其他任何可能的傳輸方式;
基礎處理電路接收到數據後,根據該數據對應的運算指令(即運算控制)確定是否需先對數據進行壓縮處理然後執行運算,以得到運算結果;
基礎處理電路將運算結果傳輸回主處理電路;
所述運算結果可以是中間運算結果,也可以是最終運算結果。
使用如圖1a所示裝置完成矩陣乘向量的運算;
(矩陣乘向量可以是矩陣中的每一行分別與向量進行內積運算,並將這些結果按對應行的順序擺放成一個向量。)
下面描述計算尺寸是M行L列的矩陣S和長度是L的向量B的乘法的運算,如下圖2a所示,(矩陣S中的每一行與向量B長度相同,他們中的數據按位置一一對應)所述神經網絡計算裝置擁有K個基礎處理電路:
參閱圖2,圖2提供了了一種矩陣乘向量的實現方法,具體可以包括:
步驟S201、主處理電路的控制電路將將矩陣S中的每一行數據分發到K個基礎處理電路中的某一個上,基礎處理電路將接收到的分發數據保存在基礎處理電路的片上緩存和/或寄存器中;
在一種可選方案中,如果矩陣S的行數M<=K則,主處理電路的控制電路給K個基礎處理電路分別分發S矩陣的一行;
在一種可選方案中,如果矩陣S的行數M>K,則主處理電路的控制電路給每個基礎處理電路分別分發S矩陣中一行或多行的數據。
分發到第i個基礎處理電路的S中的行的集合為Ai,共有Mi個行,如圖2c表示第i個基礎處理電路上將要執行的計算。
在一種可選方案中,在每個基礎處理電路中,例如第i個基礎處理電路中,可以將接收到的分發數據例如矩陣Ai保存在第i個基礎處理電路的寄存器和/或片上緩存中;優點是減少了之後的分發數據的數據傳輸量,提高了計算效率,降低了功耗。
步驟S202、 主處理電路的控制電路將向量B中各部分以廣播的方式傳輸給K個基礎處理電路;
在一種可選方案中,主處理電路的控制電路可以將向量B中各部分只廣播一次到各個基礎處理電路的寄存器或者片上緩存中,第i個基礎處理電路對這一次得到的向量B的數據進行充分地復用,完成對應與矩陣Ai中每一行的內積運算。優點是,減少從主處理電路到基礎處理電路的向量B的重複傳輸的數據傳輸量,提高執行效率,降低傳輸功耗。
在一種可選方案中,主處理電路的控制電路可以將向量B中各部分多次廣播到各個基礎處理電路的寄存器或者片上緩存中,第i個基礎處理電路對每次得到的向量B的數據不進行復用,分次完成對應於矩陣Ai中的每一行的內積運算;優點是,減少基礎處理電路內部的單次傳輸的向量B的數據傳輸量,並可以降低基礎處理電路緩存和/或寄存器的容量,提高執行效率,降低傳輸功耗,降低成本。
在一種可選方案中,主處理電路的控制電路可以將向量B中各部分多次廣播到各個基礎處理電路的寄存器或者片上緩存中,第i個基礎處理電路對每次得到的向量B的數據進行部分復用,完成對應於矩陣Ai中的每一行的內積運算;優點是,減少從主處理電路到基礎處理電路的數據傳輸量,也減少基礎處理電路內部的數據傳輸量,提高執行效率,降低傳輸功耗。
步驟S203、 K個基礎處理電路的內積運算器電路計算矩陣S和向量B的數據的內積,例如第i個基礎處理電路,計算矩陣Ai的數據和向量B的數據的內積;具體實現時,基礎處理電路接收到主處理電路發送的矩陣S和向量B後,可利用基礎處理電路中的壓縮映射電路先對矩陣S和向量B進行壓縮處理,然後再利用內積運算器電路計算壓縮處理後的矩陣S和向量B的數據的內積。
具體的,壓縮映射電路對輸入矩陣S(M1行L1列)進行壓縮處理得到壓縮處理後的矩陣S(M行L列)。例如,將輸入矩陣S和向量B中數據為指定數值(如0)和/或數據小於預設閾值(如0.1)所對應的數據剔除,具體實現時可根據矩陣S和向量B各自對應的mask矩陣來剔除,例如剔除mask矩陣中數據為0時對應的相同位置上矩陣S/向量B中的數據,具體可參見前述關於數據壓縮處理實施例中的相關闡述,這裡不再贅述。應理解的,這裡的矩陣S和向量B也可對應理解為前述實施例中的輸入神經元(也可稱為輸入神經元矩陣)和權值(也可稱為權值矩陣)等。
步驟S204、 K個基礎處理電路的累加器電路將內積運算的結果進行累加得到累加結果,將累加結果以定點類型形式傳輸回主處理電路。
在一種可選方案中,可以將每次基礎處理電路執行內積運算得到的部分和(部分和即累加結果的一部分,例如累加結果為:F1*G1+ F2*G2+ F3*G3+ F4*G4+ F5*G5,那麼部分和可以為:F1*G1+ F2*G2+ F3*G3的值)傳輸回主處理電路進行累加;優點是,減少了基礎處理電路內部的運算量,提高基礎處理電路的運算效率。
在一種可選方案中,也可以將每次基礎處理電路執行的內積運算得到的部分和保存在基礎處理電路的寄存器和/或片上緩存中,累加結束之後傳輸回主處理電路;優點是,減少了基礎處理電路和主處理電路之間的數據傳輸量,提高了運算效率,降低了數據傳輸功耗。
在一種可選方案中,也可以將每次基礎處理電路執行的內積運算得到的部分和在部分情況下保存在基礎處理電路的寄存器和/或片上緩存中進行累加,部分情況下傳輸到主處理電路進行累加,累加結束之後傳輸回主處理電路;優點是,減少了基礎處理電路和主處理電路之間的數據傳輸量,提高了運算效率,降低了數據傳輸功耗,減少了基礎處理電路內部的運算量,提高基礎處理電路的運算效率。
參閱圖2b,使用如圖1a所示的裝置完成矩陣乘矩陣的運算;
下面描述計算尺寸是M行L列的矩陣S和尺寸是L行N列的矩陣P的乘法的運算,(矩陣S中的每一行與矩陣P的每一列長度相同,如圖2d所示)所述神經網絡計算裝置擁有K個基礎處理電路:
步驟S201b、 主處理電路的控制電路將矩陣S中的每一行數據分發到K個基礎處理電路中的某一個上,基礎處理電路將接收到的數據保存在片上緩存和/或寄存器中;
在一種可選方案中,如果S的行數M<=K則,主處理電路的控制電路給M個基礎處理電路分別分發S矩陣的一行;
在一種可選方案中,如果S的行數M>K,主處理電路的控制電路給每個基礎處理電路分別分發S矩陣中一行或多行的數據。
S中有Mi行分發到第i個基礎處理電路,這Mi行的集合稱為Ai,如圖2e表示第i個基礎處理電路上將要執行的計算。
在一種可選方案中,在每個基礎處理電路中,例如第i個基礎處理電路中:
接收的由主處理電路分發的矩陣Ai,將矩陣Ai保存在第i個基礎處理電路寄存器和/或片上緩存中;優點是減少了之後的數據傳輸量,提高了計算效率,降低了功耗。
步驟S202b、 主處理電路的控制電路將矩陣P中各部分以廣播的方式傳輸給各個基礎處理電路;
在一種可選方案中,可以將矩陣P中各部分只廣播一次到各個基礎處理電路的寄存器或者片上緩存中,第i個基礎處理電路對這一次得到的矩陣P的數據進行充分地復用,完成對應與矩陣Ai中每一行的內積運算;本實施例中的復用具體可以為基礎處理電路在計算中重複使用,例如矩陣P的數據的復用,可以是對矩陣P的數據在多次使用。
在一種可選方案中,主處理電路的控制電路可以將矩陣P中各部分多次廣播到各個基礎處理電路的寄存器或者片上緩存中,第i個基礎處理電路對每次得到的矩陣P的數據不進行復用,分次完成對應於矩陣Ai中的每一行的內積運算;
在一種可選方案中,主處理電路的控制電路可以將矩陣P中各部分多次廣播到各個基礎處理電路的寄存器或者片上緩存中,第i個基礎處理電路對每次得到的矩陣P的數據進行部分復用,完成對應於矩陣Ai中的每一行的內積運算;
在一種可選方案中,每個基礎處理電路,例如第i個基礎處理電路,計算矩陣Ai的數據和矩陣P的數據的內積;
步驟S203b、每個基礎處理電路的累加器電路將內積運算的結果進行累加並傳輸回主處理電路。其中,內積運算的結果可為基礎處理電路對矩陣S和矩陣P進行壓縮處理後,再利用內積運算器電路計算壓縮處理後的矩陣S和向量B的數據的內積的結果。
具體的,壓縮映射電路對輸入矩陣S(M1行L1列)和輸入矩陣P(L1行N1列)進行壓縮處理得到壓縮處理後的矩陣S(M行L列)和矩陣P(L行N列);進一步地基礎處理單元的運算器可對壓縮處理後的矩陣S和矩陣P進行內積運算,以得到內積運算的結構。例如,將輸入矩陣S和矩陣P中數據為指定數值(如0)和/或數據小於預設閾值(如0.1)所對應的數據剔除,具體實現時可根據矩陣S和矩陣P各自對應的mask矩陣來剔除,例如剔除mask矩陣中數據為0時對應的相同位置上矩陣S/P中的數據,具體可參見前述關於數據壓縮處理實施例中的相關闡述,這裡不再贅述。應理解的,這裡的矩陣S和矩陣P也可對應理解為前述實施例中的輸入神經元(也可稱為輸入神經原矩陣)和權值(也可稱為權值矩陣)等。
在一種可選方案中,基礎處理電路可以將每次執行內積運算得到的部分和傳輸回主處理電路進行累加;
在一種可選方案中,也可以將每次基礎處理電路執行的內積運算得到的部分和保存在基礎處理電路的寄存器和/或片上緩存中,累加結束之後傳輸回主處理電路;
在一種可選方案中,也可以將每次基礎處理電路執行的內積運算得到的部分和在部分情況下保存在基礎處理電路的寄存器和/或片上緩存中進行累加,部分情況下傳輸到主處理電路進行累加,累加結束之後傳輸回主處理電路;
參閱圖3a,使用如圖1a所示的裝置完成全連接運算:
如果全連接層的輸入數據是一個向量(即神經網絡的輸入是單個樣本的情況),則以全連接層的權值矩陣作為矩陣S,輸入向量作為向量B,按照所述裝置的使用方法一執行如圖2所示的矩陣乘向量的運算;
如果全連接層的輸入數據是一個矩陣(即神經網絡的輸入是多個樣本作為batch的情況),則以全連接層的權值矩陣作為矩陣S,輸入向量作為矩陣P,或者以全連接層的權值矩陣作為矩陣P,輸入向量作為矩陣S,按照所述裝置的使用如圖2c所示的矩陣乘矩陣的執行運算;
參閱圖3b,使用如圖1a所示的裝置完成卷積運算:
對於一個卷積層,記其卷積核的數量為M;
步驟S301、主處理電路的控制電路將卷積層權值中的每一個卷積核的權值分發到K個基礎處理電路中的某一個上,保存在基礎處理電路的片上緩存和/或寄存器中;
在一種可選方案中,如果卷積核的個數M<=K則,主處理電路的控制電路給M個基礎處理電路分別分發一個卷積核的權值;
在一種可選方案中,如果卷積核的個數M>K,主處理電路的控制電路給每個基礎處理電路分別分發一個或多個卷積核的權值。
共有Mi個卷積核分發到第i個基礎處理電路,這些卷積核權值的集合稱為Ai。
在一種可選方案中,在每個基礎處理電路中,例如第i個基礎處理電路中:
將收到的由主處理電路分發的卷積核權值Ai保存在其寄存器和/或片上緩存中;
步驟S302、主處理電路的控制電路將輸入數據P中各部分以廣播的方式傳輸給各個基礎處理電路;
在一種可選方案中,主處理電路的控制電路可以將輸入數據P中各部分只廣播一次到各個基礎處理電路的寄存器或者片上緩存中,第i個基礎處理電路對這一次得到的輸入數據P的數據進行充分地復用,完成對應與Ai中每一個卷積核的內積運算;
在一種可選方案中,主處理電路的控制電路可以將輸入數據P中各部分多次廣播到各個基礎處理電路的寄存器或者片上緩存中,第i個基礎處理電路對每次得到的輸入數據P的數據不進行復用,分次完成對應於Ai中的每一個卷積核的內積運算;
在一種可選方案中,主處理電路的控制電路可以將輸入數據P中各部分多次廣播到各個基礎處理電路的寄存器或者片上緩存中,第i個基礎處理電路對每次得到的輸入數據P的數據進行部分復用,完成對應於Ai中的每一個卷積核的內積運算;
步驟S303、每個基礎處理電路計算卷積核和輸入數據P的數據內積,例如第i個基礎處理電路,計算Ai的每一個卷積核和輸入數據P的數據的內積;具體實現時,基礎處理電路接收到主處理電路發送的卷積核和輸入數據P後,可利用基礎處理電路中的壓縮映射電路先對卷積核和輸入數據P進行壓縮處理,然後再利用內積運算器電路計算壓縮處理後的卷積核和輸入數據P的數據的內積。例如,第i個基礎處理電路,計算壓縮處理後的Ai的每一個卷積核和壓縮處理後的輸入數據P的數據的內積。
步驟S304、每個基礎處理電路的累加器電路將內積運算的結果進行累加並傳輸回主處理電路:
在一種可選方案中,可基礎處理電路以將每次執行內積運算得到的部分和傳輸回主處理電路進行累加;
在一種可選方案中,基礎處理電路也可以將每次執行的內積運算得到的部分和保存在基礎處理電路的寄存器和/或片上緩存中,累加結束之後傳輸回主處理電路;
在一種可選方案中,基礎處理電路也可以將每次執行的內積運算得到的部分和在部分情況下保存在基礎處理電路的寄存器和/或片上緩存中進行累加,部分情況下傳輸到主處理電路進行累加,累加結束之後傳輸回主處理電路;
使用如圖1a所示的裝置更新權值的方法:
利用主處理電路的向量運算器電路實現神經網絡訓練過程中的權值更新功能,具體地,權值更新是指使用權值的梯度來更新權值的方法。
在一種可選方案中,使用主處理電路的向量運算器電路對權值和權值梯度這兩個向量進行加減運算得到運算結果,該運算結果即為更新權值。
在一種可選方案中,使用主處理電路的向量運算器電路在權值以及權值梯度乘以或除以一個數得到中間權值和中間權值梯度值,向量運算器電路對中間權值和中間權值梯度值進行加減運算得到運算結果,該運算結果即為更新權值。
在一種可選方案中,可以先使用權值的梯度計算出一組動量,然後再使用動量與權值進行加減計算得到更新後的權值。
本發明還提供一種芯片,該芯片包含計算裝置,該計算裝置包括:
包括一個主處理電路,主處理電路中所涉及到的數據可以是壓縮處理後的數據,在一種可選實施例中,所述壓縮處理後的數據包括至少一個輸入神經元或至少一個權值,所述至少一個神經元中的每個神經元大於第一閾值或者,所述至少一個權值中的每個權值大於第二閾值。所述第一閾值和所述第二閾值為用戶側自定義設置的,它們可以相同,也可不同。
在一種可選方案中,主處理電路包括壓縮映射電路;在一種可選方案中,主處理電路包括執行數據壓縮處理的運算單元,例如向量運算單元;具體地,包含接收輸入數據的數據輸入介面;
在一種可選方案中,所述接收的數據來源可以是:所述神經網絡運算電路裝置的外部或所述神經網絡運算電路裝置的部分或全部基礎處理電路;
在一種可選方案中,所述數據輸入介面可以有多個;具體地,可以包含輸出數據的數據輸出介面;
在一種可選方案中,所述輸出的數據的去向可以是:所述神經網絡運算裝置的外部或所述神經網絡運算電路裝置的部分或全部基礎處理電路;在一種可選方案中,所述數據輸出介面可以有多個;
在一種可選方案中,所述主處理電路包括片上緩存和/或寄存器;在一種可選方案中,所述主處理電路中包含運算單元,可以執行數據運算;在一種可選方案中,所述主處理電路中包含算術運算單元;在一種可選方案中,所述主處理電路中包含向量運算單元,可以同時對一組數據執行運算;具體地,所述算術運算和/或向量運算可以是任意類型的運算,包括但不限於:兩個數相加減乘除,一個數與常數加減乘除,對一個數執行指數運算,冪次運算,對數運算,以及各種非線性運算,對兩個數執行比較運算,邏輯運算等。兩個向量相加減乘除,一個向量中的每一個元素與常數加減乘除,對向量中的每一個元素執行指數運算,冪次運算,對數運算,以及各種非線性運算等,對一個向量中的每兩個對應的元素執行比較運算,邏輯運算等。
在一種可選方案中,所述主處理電路包括數據重排列單元,用於按照一定的順序向基礎處理電路傳輸數據,或者按照一定的順序原地重新排列數據;
在一種可選方案中,所述數據排列的順序包括:對一個多維數據塊進行維度順序的變換;所述數據排列的順序還可以包括:對一個數據塊進行分塊以發送到不同的基礎處理電路。
該計算裝置還包括多個基礎處理電路:每一個基礎處理電路用於計算兩個向量的內積,計算的方法是,基礎處理電路收到的兩組數,將這兩組數中的元素對應相乘,並且將相乘的結果累加起來;內積的結果傳輸出去,這裡傳輸出去根據基礎處理電路的位置,有可能傳輸給其他基礎處理電路,也可以直接傳輸給主處理電路。
基礎處理電路中所涉及到的數據可以是壓縮處理後的數據,在一種可選實施例中,所述壓縮處理後的數據包括至少一個輸入神經元或至少一個權值,所述至少一個神經元中的每個神經元大於第一閾值或者,所述至少一個權值中的每個權值大於第二閾值。所述第一閾值和所述第二閾值為用戶側自定義設置的,它們可以相同,也可不同。
在一種可選方案中,基礎處理電路包括壓縮映射電路;
在一種可選方案中,基礎處理電路包括執行數據壓縮處理的運算單元,如運算單元;
具體地,包括由片上緩存和/或寄存器構成的存儲單元;具體地,包括一個或多個接收數據的數據輸入介面;
在一種可選方案中,包括兩個數據輸入介面,每次從兩個數據輸入介面處可以分別獲得一個或多個數據;
在一種可選方案中,基礎處理電路可以將從數據輸入介面接收到輸入數據後保存在寄存器和/或片上緩存中;
上述數據輸入介面接收數據的來源可以是:其他基礎處理電路和/或主處理電路。
所述神經網絡運算電路裝置的主處理電路;
所述神經網絡運算電路裝置的其他基礎處理電路(所述神經網絡運算電路裝置擁有多個基礎處理電路);
具體地,包括一個或多個傳輸輸出數據的數據輸出介面;
在一種可選方案中,可以將一個或多個數據從數據輸出介面傳輸出去;
具體地,通過數據輸出介面傳輸出去的數據可以是:從數據輸入介面接收到的數據、保存在片上緩存和/或寄存器中的數據、乘法器運算結果、累加器運算結果或內積運算器運算結果中的一種或任意組合。
在一種可選方案中,包含三個數據輸出介面,其中的兩個分別對應於兩個數據輸入介面,每一層出上一層從數據輸入介面接收到的數據,第三個數據輸出介面負責輸出運算結果;
具體地,所述數據輸出介面傳輸數據的去向可以是:上文數據來源和此處的數據去向決定了基礎處理電路在裝置中的連接關係。
所述神經網絡運算電路裝置的主處理電路;
所述神經網絡運算電路裝置的其他基礎處理電路,所述神經網絡運算電路裝置擁有多個基礎處理電路;具體地,包括算術運算電路:該算術運算電路具體可以為:一個或多個乘法器電路、一個或多個累加器電路、一個或多個執行兩組數內積運算的電路中的一個或任意組合。
在一種可選方案中,可以執行兩個數的乘法運算,其結果可以保存在片上緩存和/或寄存器上,也可以直接累加到寄存器和/或片上緩存中;
在一種可選方案中,可以執行兩組數據的內積運算,其結果可以保存在片上緩存和/或寄存器中,也可以直接累加到寄存器和/或片上緩存中;
在一種可選方案中,可以執行數據的累加運算,將數據累加到片上緩存和或寄存器中;
具體地,累加器電路被累加的數據,可以是:從數據輸入介面接收到的數據、保存在片上緩存和/或寄存器中的數據、乘法器運算結果、累加器運算結果、內積運算器運算結果中的一個或任意組合。
需要說明的是,上述對基礎處理電路的描述中所用到的「數據輸入介面」和「數據輸出介面」是指每一個基礎處理電路的數據輸入與輸出介面,而不是整個裝置的數據輸入與輸出介面。
在一個實施例中,本發明公開了一種神經網絡運算裝置,其包括用於執行如上所述方法實施例中提供的所有或部分實施方式所對應的功能單元。
在一個實施例裏,本發明公開了一種芯片,用於執行如上所述方法實施例中提供的所有或部分實施方式。
在一個實施例裏,本發明公開了一種電子裝置,其包括用於執行如上所述方法實施例中的所有或部分實施方式的功能單元。
電子裝置包括數據處理裝置、機器人、電腦、打印機、掃描儀、平板電腦、智能終端、手機、行車記錄儀、導航儀、傳感器、攝像頭、伺服器、相機、攝像機、投影儀、手錶、耳機、移動存儲、可穿戴設備、交通工具、家用電器、和/或醫療設備。
所述交通工具包括飛機、輪船和/或車輛;所述家用電器包括電視、空調、微波爐、冰箱、電飯煲、加濕器、洗衣機、電燈、燃氣灶、油煙機;所述醫療設備包括核磁共振儀、B型超音波掃描儀和/或心電圖儀。
以上所述的具體實施例,對本披露的目的、技術方案和有益效果進行了進一步詳細說明,所應理解的是,以上所述僅為本披露的具體實施例而已,並不用於限制本披露,凡在本披露的精神和原則之內,所做的任何修改、等同替換、改進等,均應包含在本披露的保護範圍之內。
101、601‧‧‧壓縮映射電路
1011‧‧‧第一稀疏處理單元
1012‧‧‧第一數據處理單元
1013‧‧‧第二稀疏處理單元
1014‧‧‧第三稀疏處理單元
1015‧‧‧第一連接關係處理單元
1016‧‧‧第二數據處理單元
6011‧‧‧輸入數據緩存單元
6012‧‧‧連接關係緩存單元
6013‧‧‧第四稀疏處理單元
i1、i2、i3、i4‧‧‧輸入神經元
o1、o2‧‧‧輸出神經元
S201、S202、S203、S204、S201b、S202b、S203b、S301、S302、S303、S304‧‧‧步驟
S、P、Ai‧‧‧矩陣
B‧‧‧向量
圖1a是一種集成電路芯片裝置結構示意圖。
圖1b是另一種集成電路芯片裝置結構示意圖。
圖1c是一種基礎處理電路的結構示意圖。
圖1d為本發明實施例提供的一種壓縮映射電路的局部結構示意圖。
圖1e為本發明實施例提供的一種神經網絡結構示意圖。
圖1f為本發明實施例提供的另一種壓縮映射電路的局部結構示意圖。
圖1g為本發明實施例提供的另一種壓縮映射電路的局部結構示意圖。
圖1h為本發明實施例提供的另一種壓縮映射電路的局部結構示意圖。
圖1i為本發明實施例提供的另一種壓縮映射電路的局部結構示意圖。
圖1j為本發明實施例提供的另一種壓縮映射電路的局部結構示意圖。
圖1k為本發明實施例提供的另一種壓縮映射電路的局部結構示意圖。
圖2為一種矩陣乘以向量流程示意圖。
圖2a是矩陣乘以向量的示意圖。
圖2b為一種矩陣乘以矩陣流程示意圖。
圖2c是矩陣Ai乘以向量B的示意圖。
圖2d是矩陣S乘以矩陣P的示意圖。
圖2e是矩陣Ai乘以矩陣P的示意圖。
圖3a為神經網絡訓練示意圖。
圖3b為卷積運算示意圖。
Claims (15)
- 一種集成電路芯片裝置,其中,該集成電路芯片裝置包括:一主處理電路以及多個基礎處理電路; 該基礎處理電路包括一壓縮映射電路,其中該壓縮映射電路,用於執行神經網絡運算中的各個數據的壓縮處理; 該主處理電路,用於執行神經網絡運算中的各個連續的運算以及向該多個基礎處理電路傳輸數據; 該多個基礎處理電路,用於依據該傳輸數據的運算控制是否啓動該壓縮映射電路對該傳輸數據進行壓縮處理;依據該傳輸數據或壓縮處理後的該傳輸數據以並行方式執行神經網絡中的運算,並將運算結果傳輸給該主處理電路。
- 根據申請專利範圍第1項的裝置,其中, 該裝置還包括一分支處理電路,該分支處理電路設置在該主處理電路與該多個基礎處理電路之間,用於在該主處理電路與該多個基礎處理電路之間轉發該傳輸數據。
- 根據申請專利範圍第1項的集成電路芯片裝置,其中, 該主處理電路,用於獲取一待計算的數據塊以及一運算指令,依據該運算指令對該待計算的數據塊劃分成一分發數據塊以及一廣播數據塊;對該分發數據塊進行拆分處理得到多個基本數據塊,將該多個基本數據塊分發至與其連接的電路,將該廣播數據塊廣播至與其連接的電路; 該基礎處理電路,用於依據該運算控制啓動該壓縮映射電路對該基本數據塊與該廣播數據塊進行壓縮處理後再執行內積運算得到一運算結果,將該運算結果發送至該主處理電路; 該主處理電路,用於對該運算結果處理得到該待計算的數據塊以及該運算指令的指令結果; 其中,該待計算的數據塊為待計算的至少一個輸入神經元,和/或,至少一個權值。
- 根據申請專利範圍第3項的集成電路芯片裝置,其中,該壓縮映射電路包括一第二稀疏處理單元、一第三稀疏處理單元以及一連接關係處理單元; 該第二稀疏處理單元,用於接收到一第三輸入數據後,根據該第三輸入數據得到一第一連接關係數據,並將該第一連接關係數據傳輸至該連接關係處理單元; 該第三稀疏處理單元,用於接收到一第四輸入數據後,根據該第四輸入數據得到一第二連接關係數據,並將該第二連接關係數據傳輸至該連接關係處理單元; 該連接關係處理單元,用於根據該第一連接關係數據和該第二連接關係數據,以得到一第三連接關係數據,並將該第三連接關係數據傳輸至一第二數據處理單元; 該第二數據處理單元,用於在接收到該第三輸入數據,該第四輸入數據和該第三連接關係數據後,根據該第三連接關係數據對該第三輸入數據和該第四輸入數據進行壓縮處理,以得到一第四輸出數據和一第五輸出數據; 其中,當該第三輸入數據包括至少一個輸入神經元,該第四輸入數據包括至少一個權值時,該第一連接關係數據為輸入神經元的連接關係數據,該第二連接關係數據為權值的連接關係數據,該第四輸出數據為處理後的輸入神經元,該第五輸出數據為處理後的權值;當該第三輸入數據包括至少一個權值,該第四輸入數據包括至少一個輸入神經元時,該第一連接關係數據為權值的連接關係數據,該第二連接關係數據為輸入神經元的連接關係數據,該第四輸出數據為處理後的權值,該第五輸出數據為處理後的輸入神經元。
- 根據申請專利範圍第4項的集成電路芯片裝置,其中,該神經元的連接關係數據以及該權值的連接關係數據為由0和1組成的字符串或矩陣組成,且與輸出神經元無關;或者, 該輸入神經元的連接關係數據和該權值的連接關係數據均以直接索引或者步長索引的形式表示; 其中,當該輸入神經元的連接關係數據以直接索引的形式表示時,該連接關係數據為由0和1組成的字符串,0表示該輸入神經元的絕對值小於或者等於一第一閾值,1表示該輸入神經元的絕對值大於該第一閾值; 當該輸入神經元的連接關係數據以步長索引形式表示時,該連接關係數據為絕對值大於該第一閾值的輸入神經元與上一個絕對值大於該第一閾值的輸入神經元之間的距離值組成的字符串; 當該權值的連接關係數據以直接索引的形式表示時,該連接關係數據為由0和1組成的字符串,0表示該權值的絕對值小於或者等於一第二閾值,即該權值對應的輸入神經元與輸出神經元之間沒有連接,1表示該權值的絕對值大於該第二閾值,即該權值對應的輸入神經元與輸出神經元之間有連接;以直接索引形式表示權值的連接關係數據有兩種表示順序:以每個輸出神經元與所有輸入神經元的連接狀態組成一個0和1的字符串來表示該權值的連接關係數據;或者每個輸入神經元與所有輸出神經元的連接狀態組成一個0和1的字符串來表示該權值的連接關係數據; 當該權值的連接關係數據以步長索引的形式表示時,該連接關係數據為與輸出神經元有連接的輸入神經元與上一個與該輸出神經元有連接的輸入神經元之間的距離值組成的字符串。
- 根據申請專利範圍第5項的集成電路芯片裝置,其中,當該第一連接關係數據和該第二連接關係數據均以步長索引的形式表示,且表示該第一連接關係數據和該第二連接關係數據的字符串是按照物理地址由低到高的順序存儲時,該連接關係處理單元具體用於: 將該第一連接關係數據的字符串中的每一個元素與存儲物理地址低於該元素存儲的物理地址的元素進行累加,得到的新的元素組成一第四連接關係數據;同理,對該第二連接關係數據的字符串進行同樣的處理,得到一第五連接關係數據; 從該第四連接關係數據的字符串和該第五連接關係數據的字符串中,選取相同的元素,按照元素值從小到大的順序排序,組成一新的字符串; 將該新的字符串中每一個元素與其相鄰的且值小於該元素值的元素進行相減,得到的元素組成該第三連接關係數據。
- 根據申請專利範圍第5項的集成電路芯片裝置,其中,當該第一連接關係數據和該第二連接關係數據均以直接索引的形式表示時,該連接關係處理單元具體用於: 對該第一連接關係數據和該第二連接關係數據進行與操作,以得到該第三連接關係數據。
- 根據申請專利範圍第5項的集成電路芯片裝置,其中,當該第一連接關係數據與該第二連接關係數據中任意一個以步長索引的形式表示,另一個以直接索引的形式表示時,該連接關係處理單元具體用於: 若該第一連接關係數據是以步長索引的形式表示,將該第一連接關係數據轉換成以直接索引的形式表示的連接關係數據; 若該第二連接關係數據是以步長索引的形式表示,將該第二連接關係數據轉換成以直接索引的形式表示的連接關係數據; 對該第一連接關係數據和該第二連接關係數據進行與操作,以得到該第三連接關係數據。
- 根據申請專利範圍第5項的集成電路芯片裝置,其中,當該第一連接關係數據與該第二連接關係數據中任意一個以步長索引的形式表示,另一個以直接索引的形式表示,且表示該第一連接關係數據和該第二連接關係數據的字符串是按照物理地址由低到高的順序存儲時,該連接關係處理單元還具體用於: 若該第一連接關係數據是以步長索引的形式表示,將該第二連接關係數據轉換成以步長索引的形式表示的連接關係數據; 若該第二連接關係數據是以步長索引的形式表示,將該第一連接關係數據轉換成以步長索引的形式表示的連接關係數據; 將該第一連接關係數據的字符串中的每一個元素與存儲物理地址低於該元素存儲的物理地址的元素進行累加,得到的新的元素組成該第四連接關係數據;同理,對該第二連接關係數據的字符串進行同樣的處理,得到該第五連接關係數據; 從該第四連接關係數據的字符串和該第五連接關係數據的字符串中,選取相同的元素,按照元素值從小到大的順序排序,組成一新的字符串; 將該新的字符串中每一個元素與其相鄰的且值小於該元素值的元素進行相減,得到的元素組成該第三連接關係數據。
- 根據申請專利範圍第3項的集成電路芯片裝置,其中,啓動該壓縮映射電路對該基本數據塊與該廣播數據塊進行壓縮處理之前,還包括: 該基礎處理電路,還用於通過該壓縮映射電路對該至少一個輸入神經元進行分組,以得到M組輸入神經元,該M為大於或者等於1的整數;判斷該M組輸入神經元的每一組輸入神經元是否滿足一第一預設條件,該第一預設條件包括一組輸入神經元中絕對值小於或者等於第三閾值的輸入神經元的個數小於或者等於第四閾值;當該M組輸入神經元任意一組輸入神經元不滿足該第一預設條件時,將該組輸入神經元刪除;對該至少一個權值進行分組,以得到N組權值,該N為大於或者等於1的整數;判斷該N組權值的每一組權值是否滿足一第二預設條件,該第二預設條件包括一組權值中絕對值小於或者等於第五閾值的權值的個數小於或者等於第六閾值;當該N組權值任意一組權值不滿足該第二預設條件時,將該組權值刪除。
- 根據申請專利範圍第3項的集成電路芯片裝置,其中, 該主處理電路,具體用於將該廣播數據塊分成多個部分廣播數據塊,將該多個部分廣播數據塊通過多次廣播至該多個基礎處理電路; 該基礎處理電路,具體用於將啓動該壓縮映射電路該部分廣播數據塊與該基本數據塊進行壓縮處理後執行一次內積處理後得到一內積處理結果,將該內積處理結果累加得到部分運算結果,將該部分運算結果發送至該主處理電路。
- 根據申請專利範圍第11項的集成電路芯片裝置,其中, 該基礎處理電路,具體用於啓動該壓縮映射電路對該部分廣播數據塊與該基本數據塊進行壓縮處理後,復用n次該部分廣播數據塊執行該部分廣播數據塊與該n個基本數據塊內積運算得到n個部分處理結果,將該n個部分處理結果分別累加後得到n個部分運算結果,將該n個部分運算結果發送至該主處理電路,該n為大於等於2的整數。
- 一種芯片,其中,該芯片集成如申請專利範圍第1-12項任意一項的裝置。
- 一種智能設備,其中,該智能設備包括如申請專利範圍第13項的芯片。
- 一種神經網絡的運算方法,其中,該方法應用在集成電路芯片裝置內,該集成電路芯片裝置包括:如申請專利範圍第1-12項任意一項的集成電路芯片裝置,該集成電路芯片裝置用於執行神經網絡的運算; 其中,該神經網絡的運算包括:卷積運算、矩陣乘矩陣運算、矩陣乘向量運算、偏執運算、全連接運算、GEMM運算、GEMV運算、激活運算中的一種或任意組合。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711499267.XA CN109993291B (zh) | 2017-12-30 | 2017-12-30 | 集成电路芯片装置及相关产品 |
CN201711499267.X | 2017-12-30 | ||
??201711499267.X | 2017-12-30 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201931216A true TW201931216A (zh) | 2019-08-01 |
TWI768167B TWI768167B (zh) | 2022-06-21 |
Family
ID=67110942
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW107147413A TWI768167B (zh) | 2017-12-30 | 2018-12-27 | 集成電路芯片裝置及相關產品 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN109993291B (zh) |
TW (1) | TWI768167B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109902813B (zh) * | 2017-12-11 | 2020-08-04 | 中科寒武纪科技股份有限公司 | 神经网络运算模块和方法 |
CN110197272B (zh) * | 2018-02-27 | 2020-08-25 | 上海寒武纪信息科技有限公司 | 集成电路芯片装置及相关产品 |
KR20210012839A (ko) * | 2019-07-26 | 2021-02-03 | 에스케이하이닉스 주식회사 | 연산동작을 수행하는 방법 및 이를 수행하는 반도체장치 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8996430B2 (en) * | 2012-01-27 | 2015-03-31 | International Business Machines Corporation | Hierarchical scalable neuromorphic synaptronic system for synaptic and structural plasticity |
US10223635B2 (en) * | 2015-01-22 | 2019-03-05 | Qualcomm Incorporated | Model compression and fine-tuning |
CN105512723B (zh) * | 2016-01-20 | 2018-02-16 | 南京艾溪信息科技有限公司 | 一种用于稀疏连接的人工神经网络计算装置和方法 |
EP3374932B1 (en) * | 2016-02-03 | 2022-03-16 | Google LLC | Compressed recurrent neural network models |
CN105976408A (zh) * | 2016-04-28 | 2016-09-28 | 北京大学 | 一种量子逆向传播神经网络的数字全息压缩传输方法 |
CN107689948B (zh) * | 2016-08-22 | 2020-09-01 | 赛灵思公司 | 应用于神经网络硬件加速***的高效数据访存管理装置 |
CN106650817B (zh) * | 2016-12-29 | 2019-09-20 | 中国科学院福建物质结构研究所 | 一种基于深度学习的多模式数据融合方法 |
CN107220706A (zh) * | 2016-12-29 | 2017-09-29 | 恩泊泰(天津)科技有限公司 | 基于参数压缩和结构压缩的车载深度神经网络优化方法 |
CN106951395B (zh) * | 2017-02-13 | 2018-08-17 | 上海客鹭信息技术有限公司 | 面向压缩卷积神经网络的并行卷积运算方法及装置 |
CN107368885A (zh) * | 2017-07-13 | 2017-11-21 | 北京智芯原动科技有限公司 | 基于多粒度剪枝的网络模型压缩方法及装置 |
-
2017
- 2017-12-30 CN CN201711499267.XA patent/CN109993291B/zh active Active
-
2018
- 2018-12-27 TW TW107147413A patent/TWI768167B/zh active
Also Published As
Publication number | Publication date |
---|---|
TWI768167B (zh) | 2022-06-21 |
CN109993291A (zh) | 2019-07-09 |
CN109993291B (zh) | 2020-07-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109104876B (zh) | 一种运算装置及相关产品 | |
WO2019157812A1 (zh) | 一种计算装置及方法 | |
TWI768167B (zh) | 集成電路芯片裝置及相關產品 | |
CN110909870B (zh) | 训练装置及方法 | |
US11651202B2 (en) | Integrated circuit chip device and related product | |
US11704544B2 (en) | Integrated circuit chip device and related product | |
US11710031B2 (en) | Parallel processing circuits for neural networks | |
CN111767998B (zh) | 集成电路芯片装置及相关产品 | |
TWI786255B (zh) | 集成電路晶片裝置、晶片、智能設備、及神經網絡的運算方法 | |
CN110197271B (zh) | 集成电路芯片装置及相关产品 | |
TWI787430B (zh) | 積體電路晶片裝置、晶片、電子設備、及神經網絡的運算方法 | |
CN110197275B (zh) | 集成电路芯片装置及相关产品 | |
US11734548B2 (en) | Integrated circuit chip device and related product | |
CN110197265B (zh) | 集成电路芯片装置及相关产品 | |
CN110197266B (zh) | 集成电路芯片装置及相关产品 | |
CN110197273B (zh) | 集成电路芯片装置及相关产品 | |
WO2019165939A1 (zh) | 一种计算装置及相关产品 | |
CN111767997B (zh) | 集成电路芯片装置及相关产品 | |
WO2019165940A1 (zh) | 集成电路芯片装置、板卡及相关产品 |