TWI745697B - 用於神經網路參數的運算系統及其壓縮方法 - Google Patents
用於神經網路參數的運算系統及其壓縮方法 Download PDFInfo
- Publication number
- TWI745697B TWI745697B TW108118062A TW108118062A TWI745697B TW I745697 B TWI745697 B TW I745697B TW 108118062 A TW108118062 A TW 108118062A TW 108118062 A TW108118062 A TW 108118062A TW I745697 B TWI745697 B TW I745697B
- Authority
- TW
- Taiwan
- Prior art keywords
- compression
- neural network
- network parameters
- processor
- bits
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3068—Precoding preceding compression, e.g. Burrows-Wheeler transformation
- H03M7/3077—Sorting
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/60—General implementation details not specific to a particular type of compression
- H03M7/6047—Power optimization with respect to the encoder, decoder, storage or transmission
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/60—General implementation details not specific to a particular type of compression
- H03M7/6064—Selection of Compressor
- H03M7/6076—Selection between compressors of the same type
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/70—Type of the data to be coded, other than image and sound
- H03M7/702—Software
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本發明提出一種用於神經網路參數的運算系統及其壓縮方法。在此方法中,取得數個神經網路參數。這些神經網路參數是用於神經網路演算法。將每至少二個神經網路參數分組到一個編碼組合。各編碼組合中那些神經網路參數的數量相同。對數個該編碼組合以相同壓縮目標位元數進行壓縮。對各編碼組合的壓縮是獨立進行的,且此壓縮目標位元數不大於各編碼組合的位元數。藉此,可節省儲存空間,且讀取參數時可避免耗費大量功耗。
Description
本發明是有關於一種神經網路技術,且特別是有關於一種用於神經網路參數的運算系統及其壓縮方法。
神經網路是人工智慧(Artificial Intelligence,AI)中的一個重要主題,並是透過模擬人類腦細胞的運作來進行決策。值得注意的是,人類腦細胞中存在著許多神經元(Neuron),而這些神經元會透過突觸(Synapse)來互相連結。其中,各神經元可經由突觸接收訊號,且此訊號經轉化後的輸出會再傳導到另一個神經元。各神經元的轉化能力不同,且人類透過前述訊號傳遞與轉化的運作,可形成思考與判斷的能力。神經網路即是依據前述運作方式來得到對應能力。
為了提升穩定度及精確度,神經網路中可能設有許多神經元及隱藏層。而為了儲存用於神經網路模型的參數,通常需要大量的儲存空間,從而增加硬體成本。此外,在進行神經網路運算的過程中,需要將參數自儲存空間讀取出來,因此需要耗費大量功耗。由此可知,有效解決前述寫入或讀取參數所引發問題,是相關領域努力的目標之一。
有鑑於此,本發明提供一種用於神經網路的運算系統及其壓縮方法,對參數分組並以固定目標資料量獨立壓縮,更提供複數壓縮模式的選擇,從而降低需要儲存的資料量,並提供失真較少的編碼結果。
本發明實施例用於神經網路的壓縮方法,其包括下列步驟:取得數個神經網路參數。這些神經網路參數是用於神經網路演算法。將每至少二個神經網路參數分組到一個編碼組合。各編碼組合中那些神經網路參數的數量相同。對數個該編碼組合以相同壓縮目標位元數進行壓縮。對各編碼組合的壓縮是獨立進行的,且此壓縮目標位元數不大於各編碼組合的位元數。
本發明實施例用於神經網路的運算系統,其包括但不僅限於記憶體及處理器。處理器耦接記憶體,並經配置以執行下列步驟:取得數個神經網路參數。這些神經網路參數是用於神經網路演算法。將每至少二個神經網路參數分組到一個編碼組合。各編碼組合中那些神經網路參數的數量相同。對數個該編碼組合以相同壓縮目標位元數進行壓縮。對各編碼組合的壓縮是獨立進行的,且此壓縮目標位元數不大於各編碼組合的位元數。將對那些編碼組合的壓縮結果儲存於記憶體。
基於上述,在本發明實施例用於神經網路的運算系統及其壓縮方法中,採用失真壓縮,並提供複數固定壓縮倍率(即,固定壓縮目標位元數)給用戶選擇。參數經分組後,個別對各編碼組合獨立壓縮,且各組參數經壓縮後的資料量固定。此外,對各編碼組合進行複數個壓縮模式的編碼壓縮處理,再依據壓縮失真來挑選最終壓縮結果作為輸出。藉此,可節省儲存空間的使用量,進而降低存取功耗。
為讓本發明的上述特徵和優點能更明顯易懂,下文特舉實施例,並配合所附圖式作詳細說明如下。
圖1是依據本發明一實施例的運算系統100的元件方塊圖。請參照圖1,運算系統100包括但不僅限於記憶體110及處理器130。運算系統100可實現在各類型數位電路、微控制單元(Micro Control Unit,MCU)、計算單元(Computing Unit,CU)、處理元件(Processing Element,PE)、片上系統(System on Chip,SoC)、或積體電路(Integrated Circuit,IC)等處理電路或是獨立的電腦系統(例如,桌上型電腦、筆記型電腦、伺服器、手機、平板電腦等)。更值得注意的是,本發明實施例的運算系統100可用於處理神經網路演算法所用的神經網路參數(例如,神經元的輸入值、權重(weight)、偏差(bias)等),其詳細內容待後續實施例說明。
記憶體110可以是固定或可移動隨機存取記憶體(Random Access Memory,RAM)、唯讀記憶體(Read-Only Memory,ROM)、快閃記憶體(Flash Memory)或類似元件或上述元件的組合。於本發明實施例中,記憶體110用於記錄神經網路參數,並可供其他電路、處理器或獨立裝置存取儲存的神經網路參數。
處理器130耦接於記憶體110。處理器130可以是由多工器、加法器、乘法器、編碼器、解碼器、或各類型邏輯閘中的一者或更多者所組成的電路,並可以是中央處理單元(Central Processing Unit,CPU),或是其他可程式化之一般用途或特殊用途的微處理器(Microprocessor)、數位訊號處理器(Digital Signal Processor,DSP)、可程式化控制器、特殊應用積體電路(Application-Specific Integrated Circuit,ASIC)或其他類似元件或上述元件的組合。在一些實施例中,處理器130的運作可透過軟體實現。
為了方便理解本發明實施例的操作流程,以下將舉諸多實施例詳細說明本發明實施例中針對運算系統100的運作流程。下文中,將搭配運算系統100中的各項元件或電路說明本發明實施例所述之方法。本方法的各個流程可依照實施情形而隨之調整,且並不僅限於此。
圖2是依據本發明一實施例用於神經網路的壓縮方法的流程圖。請參照圖2,處理器130自資料來源(圖未示)取得神經網路參數(步驟S210)。具體而言,資料來源可能是其他裝置、傳輸介面、或儲存媒介,亦可能是記憶體110。例如,感測器取得的感測資料、或經由網際網路下載的資料,作為神經網路模型中的輸入值。
接著,處理器130將每至少二個神經網路參數分組到編碼組合(步驟S230)。具體而言,現有技術對於神經網路參數的資料壓縮技術,通常是採用單一參數固定長度編碼或單一參數變動長度編碼。圖3是單一參數固定長度編碼的示意圖。請參照圖3,量化(quantization)編碼是單一參數固定長度編碼常見的方法,其是將各參數一律量化到固定長度(即,位元數(bit(b)))。圖3所示範例將所有16位元的神經網路參數d一律個別量化到8位元(即,固定長度為8位元)的壓縮結果cp。雖然此等編碼方式可快速且簡單地平行處理解壓縮,但其缺點是無法考量整體參數特性,更造成壓縮後的失真較大。
圖4是單一參數變動長度編碼的示意圖。請參照圖4,霍夫曼編碼是單一參數變動長度編碼常見的方法,其中各參數編碼後的長度不固定(即,目標編碼位元數不一定相同)。此等壓縮方法考量整體參數分布特性,因此在相同壓縮倍率下,壓縮品質較單一參數固定長度編碼來的更好。然而,變動長度編碼方式的缺點是解壓縮複雜,且各參數之間有資料關連性(data dependency),必須等前一個參數解壓縮完之後,才能對下一個參數解壓縮。因此這些參數需要一個接著一個被解壓縮,且無法平行處理解壓縮。在圖4所示範例中,16位元的參數d經過壓縮後可能是3位元壓縮結果cp1、4位元壓縮結果cp2、或其他位元數等。
在本發明實施例中,所有神經網路參數會先進行分組,至少兩個神經網路參數會被分配到同一編碼組合,且各編碼組合中的神經網路參數不重複。例如,第一至第四神經網路參數被分配到第一編碼組合,第五至第八神經網路參數被分配到第二編碼組合。相較於單一參數編碼方法,本發明實施例考量整體參數的特性,使更多資料量可被同時編碼或後續進行解編碼,從而提升效率。需說明的是,各編碼組合中神經網路參數的數量可依據實際需求而變動,且本發明實施例不加以限制。
接著,處理器130對這些編碼組合以相同壓縮目標位元數進行壓縮(步驟S250)。具體而言,本發明實施例採用固定長度編碼方式,以保留後續解編碼可平行處理的優點。壓縮目標位元數即是各編碼組合最終壓縮結果的總位元數。因此,壓縮目標位元數通常是不大各編碼組合的位元數。例如,編碼組合包括三個8位元的神經網路參數,且壓縮目標位元數為12位元。運算系統100可提供數個壓縮目標位元數給使用者選擇,且透過輸入裝置(圖未示,例如是鍵盤、滑鼠、觸控面板等)接收使用的選擇結果。或者,處理器130可使用預設的壓縮目標位元數或以預設規則變換壓縮目標位元數。
值得注意的是,處理器130對各編碼組合的壓縮是獨立進行的,不同編碼組合之間沒有資料關連性。此外,同一編碼組合內的單一神經網路參數可以利用固定長度編碼法,也可以利用變動長度編碼法。也就是說,每編碼組合內當中的各神經網路參數並沒有受限於特定壓縮量或壓縮率,壓縮量或壓縮率可以供彈性調整,只要各編碼組合經壓縮後的總位元數相同即可。或者,同一編碼組合內的兩個以上的神經網路參數之間可有資料關連性。在本發明實施例的解壓縮過程中,不僅可保持各編碼組合的神經網路參數平行解壓縮(複雜度較低),更可考量整組參數的特性以提高壓縮品質。也就是說,本發明實施例並沒有限制對各編碼組合中的神經網路參數採用相同或不同的資料壓縮演算法。例如,資料壓縮演算法可以是量化、平均、霍夫曼、算術編碼等失真演算法。
圖5A是依據本發明一實施例分組編碼的示意圖。請參照圖5A,在壓縮組合G1與壓縮組合G2中,分別具有四個神經網路參數。即,每四個神經網路參數nnp分配到一個壓縮組合。各壓縮組合 G1, G2中的神經網路參數nnp的總位元數為64位元(16×4)。本實施例的壓縮目標位元數為25位元,即對各壓縮組合G1, G2編碼壓縮的壓縮結果cp3的總位元數為25位元。
運算系統100還能提供其他壓縮目標位元數/壓縮倍率給使用者選擇。圖5B是依據本發明另一實施例分組編碼的示意圖。請參照圖5B,與圖5A不同之處在於,本實施例的壓縮目標位元數為33位元,即對各壓縮組合G1, G2編碼壓縮的壓縮結果cp3的總位元數為33位元。
需說明的是,本發明實施例不限制可供變換的壓縮目標位元數,應用本發明實施例者可依據實際需求自行變更。
除此之外,相較於使用固定壓縮模式來編碼(即,所有神經網路參數都採用相同資料壓縮演算法進行壓縮,故缺乏彈性且壓縮效果可能較差(倍率較低或誤差較大)),本發明實施例更結合複數種資料壓縮方式,再挑選最佳結果作為輸出,以下將詳細說明。
圖6是依據本發明一實施例複數壓縮模式平行的流程示意圖。請參照圖6,處理器130將各編碼組合透過不同的多個壓縮模式進行壓縮(步驟S610)。假設有N種不同的壓縮模式(即,不同資料壓縮演算法,N為大於一的正整數),處理器130對各編碼組合依據相同壓縮目標位元數來進行不同壓縮模式的壓縮編碼處理,以得出N個壓縮結果。處理器130接著對各壓縮結果透過對應的壓縮模式來解編碼,且將尚未編碼的神經網路參數與解編碼結果比較,以得出壓縮失真(步驟S630)。處理器130可計算單一編碼組合中所有神經網路參數的壓縮誤差數總和、壓縮誤差的均方差(Mean Square Error,MSE)、或和方差(Sum of Squared Error,SSE)等,以得出此編碼組合壓縮失真。接著,處理器130自那些壓縮模式的壓縮結果挑選一者作為此編碼組合的最終壓縮結果,並輸出此最終壓縮結果(步驟S650)。在一實施例中,處理器130是依據那些壓縮模式的壓縮失真挑選。處理器130可選擇那些壓縮模式中壓縮失真最少者的壓縮結果作為最終壓縮結果。處理器130可將對那些編碼組合的壓縮結果儲存於記憶體110。藉此,不僅可節省記憶體110的儲存空間,供壓縮結果供存取時亦能節省供耗,並盡可能降低壓縮失真。
需說明的是,在其他實施例中,處理器130可以依據單一壓縮組合中神經網路參數的數量、或其他條件來挑選壓縮模式。
無可避免地,不同神經網路參數採用相同壓縮模式的壓縮失真可能不同。若採用前述壓縮失真最少者的挑選方式,則針對不同壓縮組合的壓縮模式可能不同。而為了辨識最終壓縮結果採用的壓縮模式類型,處理器130將受挑選的壓縮模式對應的識別碼加入到最終壓縮結果。此識別碼可能是一個或更多個識別位元,並位於最終壓縮結果的第一位元、或其他特定位元。不同壓縮模式具有唯一識別碼。因此,處理器130可自壓縮結果中直接得出所使用的壓縮模式。
需說明的是,於其他實施例中,處理器130可在記憶體110的特定區塊中依據記錄各壓縮結果的對應壓縮模式,或者使用其他記錄方式來方便解壓縮過程能直接選擇對應的解壓縮模式。
透過對各壓縮組合獨立壓縮的方式,本發明實施例在解壓縮的過程中,可同時且平行對複數個壓縮結果進行對應解壓縮模式的解壓縮處理。圖7是依據本發明一實施例解壓縮的流程示意圖。請參照圖7,解壓縮流程可透過處理器130或其他電路(圖未示,例如是張量處理單元(Tensor Processing Unit,TPU)、圖像處理器(Graphics Processing Unit,GPU)等特定神經網路處理器)運行。然而,為了方便說明下文將以處理器130來說明,但並非限制僅能夠過處理器130來實現。處理器130的解多工器(資料選擇器)依據壓縮結果中的識別位元判斷所屬壓縮模式,以選擇對應解壓縮模式(步驟S710)。接著,處理器130依據壓縮目標位元數對壓縮結果以選擇的解壓縮模式進行解壓縮處理(步驟S730)。相似地,依據不同硬體資源,其他的壓縮結果也能同時進行解壓縮處理,不需等待任一組壓縮結果解壓縮完成才能進行。接著,處理器130的多工器可將經解壓縮處理的神經網路參數輸出(步驟S750)。
為了方便讀者理解本發明實施例的精神,以下將舉一範例說明。
各神經網路參數原本是16位元,若以每四個神經網路參數為一組,則各壓縮組合在壓縮前的大小為64位元(16位元*4)。運算系統100可提供兩種壓縮倍率給使用者選擇:若壓縮目標位元數是25位元,則壓縮倍率為2.56倍(64除以25);若壓縮目標位元數是33位元,則壓縮倍率為1.94倍(64除以33)。假設運算系統100提供兩種模式的壓縮方法:量化壓縮法及平均壓縮法。
量化壓縮法是將各壓縮組合中各神經網路參數利用線性量化壓縮。若壓縮目標位元數為25位元,則處理器130將各神經網路參數由16位元量化到6位元。其壓縮公式是將各神經網路參數除以2^(16-6)=2^10=1024後取整數,從而得到壓縮結果。其中,壓縮結果是四個神經網路參數的壓縮結果(24位元)結合量化壓縮法的識別位元(1位元)。解壓縮則是將壓縮結果乘以1024。壓縮目標位元數為33位元,則處理器130將各神經網路參數由16位元量化到8位元。其壓縮模式是將各神經網路參數除以2^(16-8)=2^8=256後取整數,從而得到壓縮結果。其中,壓縮結果是四個神經網路參數的壓縮結果(32位元)結合量化壓縮法的識別位元(1位元)。解壓縮模式是將壓縮結果乘以256。
另一方面,平均壓縮法是將各壓縮組合中前兩個神經網路參數取算術平均數A,後兩個神經網路參數取算術平均數B,處理器130再依據壓縮目標位元數來壓縮算術平均數A和算術平均數B。若壓縮目標位元數為25位元,則處理器130將算術平均數A和算術平均數B由16位元量化到12位元。其壓縮模式是將算術平均數A和算術平均數B除以2^(16-12)=2^4後取整數,從而得到壓縮結果。解壓縮模式是將壓縮結果乘以2^4。針對算術平均數A的解壓縮結果代表此組中前兩個解壓縮後的神經網路參數,針對算術平均數B的解壓縮結果代表此組中後兩個解壓縮後的神經網路參數。若壓縮目標位元數為33位元,則處理器130分別用16位元記錄針對壓縮組合中前兩個神經網路參數的算術平均數A和針對後兩個神經網路參數的算術平均數B。當解壓縮時,處理器130直接以針對算術平均數A解壓縮結果作為解壓縮後的前兩個神經網路參數,並以針對算術平均數B解壓縮結果作為解壓縮後的後兩個神經網路參數。
以實際數值作為範例說明。單一用於神經網路演算法的參數量通常為數萬至數百萬個,假設每個神經網路參數以16位元紀錄(0~65535),其神經網路參數例如是1310、513、2750、282、317、318、2119、2132等。若以四個參數分為一組,第一組壓縮組合是(1310,513,2750,282),第二組壓縮組合是(317,318,2119,2132),其餘依此類推。
若壓縮目標位元數為33位元,則其壓縮過程如下:
處理器130對第一組壓縮組合 (1310,513,2750,282)進行壓縮處理。若採用量化壓縮法:
原值 | 壓縮結果 | 解壓縮結果 | 壓縮誤差 | 整組壓縮失真 |
1310 | 1310/256=5 (0000_0101) | 5x256=1280 | 30 | 30+3+190+26=249 |
513 | 513/256=2 (0000_0010) | 2x256=516 | 3 | |
2750 | 2750/256=10 (0000_1010) | 10x256=2560 | 190 | |
282 | 282/256=1 (0000_0001) | 1x256=256 | 26 |
採用平均壓縮法:
原值 | 壓縮結果 | 解壓縮結果 | 壓縮誤差 | 整組壓縮失真 |
1310 | (1310+513)/2=911 0000_0011_1000_1111 | 911 | 399 | 399+398+1234 +1234= 3265 |
513 | 911 | 398 | ||
2750 | (2750+282)/2=1516 0000_0101_1110_1100 | 1516 | 1234 | |
282 | 1516 | 1234 |
量化壓縮法的壓縮失真249小於平均壓縮法的壓縮失真3265(本範例採用壓縮誤差總和作為壓縮失真),因此處理器130選擇量化壓縮法的壓縮結果。而其壓縮編碼為: 0_0000_0101_0000_0010_0000_1010_0000_0001,其中第一個位元為0代表使用量化壓縮法,且第一個位元之後依序為每個神經網路參數經壓縮後的壓縮結果。
接著,處理器130對第二組壓縮組合(317,318,2119,2132)進行壓縮處理。若採用量化壓縮法:
原值 | 壓縮結果 | 解壓縮結果 | 壓縮誤差 | 整組壓縮失真 |
317 | 317/256=1 (0000_0001) | 1x256=256 | 61 | 61+62+71+84=278 |
318 | 318/256=1 (0000_0001) | 1x256=256 | 62 | |
2119 | 2119/256=8 (0000_1000) | 8x256=2048 | 71 | |
2132 | 2132/256=8 (0000_1000) | 8x256=2048 | 84 |
採用平均壓縮法:
原值 | 壓縮結果 | 解壓縮結果 | 壓縮誤差 | 整組壓縮失真 |
317 | (317+318)/2=317 (0000_0001_0011_1101) | 317 | 0 | 0+1+6+7=14 |
318 | 317 | 1 | ||
2119 | (2119+2132)/2=2125 (0000_1000_0100_1101) | 2125 | 6 | |
2132 | 2125 | 7 |
平均壓縮法的壓縮失真14小於量化壓縮法的壓縮失真278,因此處理器130選擇平均壓縮法的壓縮結果。而其壓縮編碼為: 1_0000_0001_0011_1101_0000_1000_0100_1101,其中第一個位元為1代表使用平均壓縮法,且第一個位元之後依序為兩組神經網路參數(317與318同時壓縮、以及2119與2132同時壓縮)經壓縮後的壓縮結果。
需說明的是,前述範例所採用的平均以及量化壓縮法僅是用於範例說明,其他實施例可採用其他壓縮法,且本發明實施例不加以限制。
綜上所述,本發明實施例用於神經網路的運算系統及其壓縮方法,將神經網路參數分組且個別獨立壓縮,並限制壓縮目標位元數。藉此,可避免神經網路所用大量參數佔用過多儲存空間,且避免存取參數消耗過多功耗。此外,本發明實施例提供多種資料壓縮模式,並對各組神經網路參數利用那些資料壓縮模式進行壓縮,再選擇壓縮失真最少者的壓縮結果作為輸出,從而提升彈性度且避免壓縮失真過高。
雖然本發明已以實施例揭露如上,然其並非用以限定本發明,任何所屬技術領域中具有通常知識者,在不脫離本發明的精神和範圍內,當可作些許的更動與潤飾,故本發明的保護範圍當視後附的申請專利範圍所界定者為準。
100:運算系統
110:記憶體
130:處理器
S210~S250、S610~S650、S710~S750:步驟
d、nnp:神經網路參數
cp、cp2、cp3、cp4:壓縮結果
G1、G2:壓縮組合
圖1是依據本發明一實施例的運算系統的元件方塊圖。
圖2是依據本發明一實施例用於神經網路的壓縮方法的流程圖。
圖3是單一參數固定長度(fixed length)編碼的示意圖。
圖4是單一參數變動長度(variable length)編碼的示意圖。
圖5A是依據本發明一實施例分組編碼的示意圖。
圖5B是依據本發明另一實施例分組編碼的示意圖。
圖6是依據本發明一實施例複數壓縮模式平行的流程示意圖。
圖7是依據本發明一實施例解壓縮的流程示意圖。
S210~S250:步驟
Claims (10)
- 一種用於神經網路參數的壓縮方法,包括:透過一處理器取得多個神經網路參數,其中該些神經網路參數是用於神經網路演算法且是依神經網路模型的輸入值、權重或偏差中的至少一者;透過該處理器將每至少二該神經網路參數分組到一編碼組合,其中每一該編碼組合中該些神經網路參數的數量相同;透過該處理器對多個該編碼組合以相同一壓縮目標位元數進行壓縮,其中對每一該編碼組合的壓縮是獨立進行的,且該壓縮目標位元數不大於每一該編碼組合的位元數;以及透過該處理器儲存該些編碼組合的壓縮結果。
- 如申請專利範圍第1項所述用於神經網路參數的壓縮方法,其中對該些編碼組合以相同該壓縮目標位元數進行壓縮的步驟包括:透過該處理器將每一該編碼組合透過不同的多個壓縮模式進行壓縮;以及透過該處理器自該些壓縮模式的壓縮結果挑選一者作為該編碼組合的最終壓縮結果。
- 如申請專利範圍第2項所述用於神經網路參數的壓縮方法,其中自該些壓縮模式的壓縮結果挑選一者的步驟包括:透過該處理器依據該些壓縮模式的壓縮失真挑選。
- 如申請專利範圍第2項所述用於神經網路參數的壓縮方法,其中自該些壓縮模式的壓縮結果挑選一者的步驟包括:透過該處理器將受挑選的壓縮模式對應且唯一的識別碼加入到該最終壓縮結果中的一位置,其中該最終壓縮結果包括該些壓縮模式的壓縮結果及該識別碼。
- 如申請專利範圍第4項所述用於神經網路參數的壓縮方法,更包括:透過該處理器依據該最終壓縮結果中的識別碼挑選一該壓縮模式,以透過該受挑選的壓縮模式對該最終壓縮結果進行解壓縮。
- 一種用於神經網路參數的運算系統,包括:一記憶體;以及一處理器,耦接該記憶體,並經配置以執行:取得多個神經網路參數,其中該些神經網路參數是用於神經網路演算法且是依神經網路模型的輸入值、權重或偏差中的至少一者;將每至少二該神經網路參數分組到一編碼組合,其中每一該編碼組合中該些神經網路參數的數量相同;對多個該編碼組合以相同一壓縮目標位元數進行壓縮,其中對每一該編碼組合的壓縮是獨立進行的,且該壓縮目標位元數不大於每一該編碼組合的位元數;以及將對該些編碼組合的壓縮結果儲存於該記憶體。
- 如申請專利範圍第6項所述用於神經網路參數的運算系統,其中該處理器經配置用以執行:將每一該編碼組合透過不同的多個壓縮模式進行壓縮;以及自該些壓縮模式的壓縮結果挑選一者作為該編碼組合的最終壓縮結果。
- 如申請專利範圍第7項所述用於神經網路參數的運算系統,其中該處理器經配置用以執行:依據該些壓縮模式的壓縮失真挑選。
- 如申請專利範圍第7項所述用於神經網路參數的運算系統,其中該處理器經配置用以執行:將受挑選的壓縮模式對應且唯一的識別碼加入到該最終壓縮結果中的一位置,其中該最終壓縮結果包括該些壓縮模式的壓縮結果及該識別碼。
- 如申請專利範圍第9項所述用於神經網路參數的運算系統,其中該處理器經配置用以執行:依據該最終壓縮結果中的識別碼挑選一該壓縮模式,以透過該受挑選的壓縮模式對該最終壓縮結果進行解壓縮。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW108118062A TWI745697B (zh) | 2019-05-24 | 2019-05-24 | 用於神經網路參數的運算系統及其壓縮方法 |
US16/516,202 US11615286B2 (en) | 2019-05-24 | 2019-07-18 | Computing system and compressing method for neural network parameters |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW108118062A TWI745697B (zh) | 2019-05-24 | 2019-05-24 | 用於神經網路參數的運算系統及其壓縮方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202044129A TW202044129A (zh) | 2020-12-01 |
TWI745697B true TWI745697B (zh) | 2021-11-11 |
Family
ID=73456814
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW108118062A TWI745697B (zh) | 2019-05-24 | 2019-05-24 | 用於神經網路參數的運算系統及其壓縮方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11615286B2 (zh) |
TW (1) | TWI745697B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115174606A (zh) * | 2021-03-18 | 2022-10-11 | 台湾优化水务股份有限公司 | 流体量时间变化模式数据编码方法 |
CN114418086B (zh) * | 2021-12-02 | 2023-02-28 | 北京百度网讯科技有限公司 | 压缩神经网络模型的方法、装置 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105184362A (zh) * | 2015-08-21 | 2015-12-23 | 中国科学院自动化研究所 | 基于参数量化的深度卷积神经网络的加速与压缩方法 |
CN106997463A (zh) * | 2017-03-29 | 2017-08-01 | 浙江师范大学 | 一种基于压缩感知域和卷积神经网络的路牌识别方法 |
TW201833823A (zh) * | 2017-03-03 | 2018-09-16 | 南韓商三星電子股份有限公司 | 操作神經網路裝置的方法 |
TW201841130A (zh) * | 2017-03-07 | 2018-11-16 | 美商高通公司 | 經由弱監督的神經網路壓縮 |
TWI648676B (zh) * | 2017-11-30 | 2019-01-21 | 群聯電子股份有限公司 | 資料存取方法、記憶體控制電路單元以及記憶體儲存裝置 |
TW201907319A (zh) * | 2017-07-08 | 2019-02-16 | 英屬開曼群島商意騰科技股份有限公司 | 適用於人工神經網路之矩陣及向量相乘的方法 |
TW201915835A (zh) * | 2017-10-12 | 2019-04-16 | 英屬開曼群島商意騰科技股份有限公司 | 人工神經元中以非零封包加速乘法運算的裝置及方法 |
TWI657346B (zh) * | 2018-02-14 | 2019-04-21 | 倍加科技股份有限公司 | 資料減量及建立資料識別模型的方法、電腦系統及電腦可讀取的記錄媒體 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1248991A2 (en) | 2000-01-03 | 2002-10-16 | Efeckta Technologies Corporation | Lossless data compression |
CN1625170B (zh) | 2003-12-03 | 2010-04-28 | 华为技术有限公司 | 通用分组无线业务大量用户同时在线的实现方法 |
US9224089B2 (en) * | 2012-08-07 | 2015-12-29 | Qualcomm Incorporated | Method and apparatus for adaptive bit-allocation in neural systems |
US20180107926A1 (en) * | 2016-10-19 | 2018-04-19 | Samsung Electronics Co., Ltd. | Method and apparatus for neural network quantization |
US10069511B2 (en) | 2016-12-12 | 2018-09-04 | Texas Instruments Incorporated | Lossless data compression |
CN108616927B (zh) | 2018-04-04 | 2021-08-27 | 北京锐安科技有限公司 | 一种数据发送和接收方法及装置 |
US10674152B2 (en) * | 2018-09-18 | 2020-06-02 | Google Llc | Efficient use of quantization parameters in machine-learning models for video coding |
US20190044535A1 (en) * | 2018-09-28 | 2019-02-07 | Intel Corporation | Systems and methods for compressing parameters of learned parameter systems |
US10848765B2 (en) * | 2018-12-11 | 2020-11-24 | Google Llc | Rate/distortion/RDcost modeling with machine learning |
-
2019
- 2019-05-24 TW TW108118062A patent/TWI745697B/zh active
- 2019-07-18 US US16/516,202 patent/US11615286B2/en active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105184362A (zh) * | 2015-08-21 | 2015-12-23 | 中国科学院自动化研究所 | 基于参数量化的深度卷积神经网络的加速与压缩方法 |
TW201833823A (zh) * | 2017-03-03 | 2018-09-16 | 南韓商三星電子股份有限公司 | 操作神經網路裝置的方法 |
TW201841130A (zh) * | 2017-03-07 | 2018-11-16 | 美商高通公司 | 經由弱監督的神經網路壓縮 |
CN106997463A (zh) * | 2017-03-29 | 2017-08-01 | 浙江师范大学 | 一种基于压缩感知域和卷积神经网络的路牌识别方法 |
TW201907319A (zh) * | 2017-07-08 | 2019-02-16 | 英屬開曼群島商意騰科技股份有限公司 | 適用於人工神經網路之矩陣及向量相乘的方法 |
TW201915835A (zh) * | 2017-10-12 | 2019-04-16 | 英屬開曼群島商意騰科技股份有限公司 | 人工神經元中以非零封包加速乘法運算的裝置及方法 |
TWI648676B (zh) * | 2017-11-30 | 2019-01-21 | 群聯電子股份有限公司 | 資料存取方法、記憶體控制電路單元以及記憶體儲存裝置 |
TWI657346B (zh) * | 2018-02-14 | 2019-04-21 | 倍加科技股份有限公司 | 資料減量及建立資料識別模型的方法、電腦系統及電腦可讀取的記錄媒體 |
Also Published As
Publication number | Publication date |
---|---|
TW202044129A (zh) | 2020-12-01 |
US11615286B2 (en) | 2023-03-28 |
US20200372320A1 (en) | 2020-11-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110378468B (zh) | 一种基于结构化剪枝和低比特量化的神经网络加速器 | |
US20210111741A1 (en) | Decompression apparatus and control method thereof | |
US10599935B2 (en) | Processing artificial neural network weights | |
CN107967517A (zh) | 用于神经网络量化的方法和设备 | |
CN107516129A (zh) | 基于维度自适应的Tucker分解的深度网络压缩方法 | |
Zhao et al. | Smartexchange: Trading higher-cost memory storage/access for lower-cost computation | |
EP3738080A1 (en) | Learning compressible features | |
TWI745697B (zh) | 用於神經網路參數的運算系統及其壓縮方法 | |
KR20220075407A (ko) | 뉴럴 네트워크 표현 형식 | |
CN114222129A (zh) | 图像压缩编码方法、装置、计算机设备和存储介质 | |
Saha et al. | Matrix compression via randomized low rank and low precision factorization | |
KR20210053791A (ko) | 뉴럴 네트워크의 데이터를 처리하는 방법 및 장치 | |
WO2020114283A1 (zh) | 数据处理方法及装置 | |
Sun et al. | Efficient vector quantization using genetic algorithm | |
Zhang et al. | Computational restructuring: Rethinking image compression using resistive crossbar arrays | |
CN109495113A (zh) | 一种脑电信号的压缩方法及装置 | |
Zhao et al. | A Content-based Classified Hierarchical Vector Quantization Algorithm for Volume Compression. | |
CN113554719B (zh) | 一种图像编码方法、解码方法、存储介质及终端设备 | |
Kekre et al. | Vector quantized codebook optimization using modified genetic algorithm | |
US10559093B2 (en) | Selecting encoding options | |
CN115913245A (zh) | 数据编码方法、数据解码方法以及数据处理装置 | |
CN112734021A (zh) | 一种基于位稀疏计算的神经网络加速方法 | |
CN114998457B (zh) | 图像压缩方法、图像解压方法及相关设备、可读存储介质 | |
TW202036391A (zh) | 使用基於累積計數分佈之函數之用於模型參數之解壓縮之方法及處理器 | |
US20180145701A1 (en) | Sonic Boom: System For Reducing The Digital Footprint Of Data Streams Through Lossless Scalable Binary Substitution |