TWI708196B - 使用基於累積計數分佈之函數之用於模型參數之解壓縮之方法及處理器 - Google Patents
使用基於累積計數分佈之函數之用於模型參數之解壓縮之方法及處理器 Download PDFInfo
- Publication number
- TWI708196B TWI708196B TW108109970A TW108109970A TWI708196B TW I708196 B TWI708196 B TW I708196B TW 108109970 A TW108109970 A TW 108109970A TW 108109970 A TW108109970 A TW 108109970A TW I708196 B TWI708196 B TW I708196B
- Authority
- TW
- Taiwan
- Prior art keywords
- function
- decompression
- coefficient
- compression
- coefficients
- Prior art date
Links
Images
Landscapes
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
一種預測模型利用一係數集來處理經接收輸入資料。為減少儲存該等係數之記憶體使用,一壓縮電路藉由產生係數值之一累積計數分佈且識別概算表示該累積計數分佈之一分佈函數而在儲存之前壓縮該係數集。該經判定函數之函數參數儲存於一記憶體中且由一解壓縮電路使用以將該函數應用於該等壓縮係數而判定解壓縮分量值。相較於儲存用於解壓縮之一查找表,儲存該等函數參數可消耗較少記憶體,且可減少解壓縮期間所需之記憶體查找之一量。
Description
本發明大體上係關於一種模型參數之解壓縮,且明確言之係關於用於一神經網路之模型參數之解壓縮。
神經網路及其他類型之模型可用於處理各種類型之資料。
例如,一神經網路模型可經訓練以辨識經接收輸入影像內是否存在某些類型之物件。訓練及機器學習可用於判定待藉由模型用於處理輸入資料之一係數集,諸如一神經網路模型之神經元之間的權重。
一種預測模型(例如,一神經網路模型)可與該模型之一係數集結合使用。該係數集可儲存於一記憶體中且經存取用於對輸入資料(例如,待藉由該模型分析之一影像)執行算術運算。
為減少記憶體使用,在儲存之前壓縮該係數集。在操作該輸入資料之前將需要解壓縮該等經儲存壓縮係數。在一些實施例中,基於一函數壓縮經判定係數值。基於解壓縮係數值之一累積計數分佈產生該函數。例如,一模型係數集之計數值可概算一雙峰分佈、高斯(Gaussian)分佈、帕松(Poisson)分佈或一函數可定義之其他類型之分佈。該經判定函數
之函數參數可儲存於一記憶體中且由一解壓縮電路使用以將該函數應用於該等壓縮模型係數而進行解壓縮。相較於其他解壓縮方法(例如,一查找表),儲存該等函數參數可消耗較少記憶體,且亦可減少解壓縮期間所需之記憶體查找之一量。
在一些實施例中,提供一種用於解壓縮模型係數值之方法。該方法包括接收與一模型相關聯之壓縮係數資料。在一些實施例中,透過一模型訓練程序判定該係數資料之值,且其中使用基於該係數資料之值之一累積分佈之一壓縮函數來壓縮該係數資料。該方法進一步包括擷取與該壓縮函數相關聯之一組函數參數,該組函數參數指定至少一函數類型。該方法進一步包括基於該等經擷取函數參數組態一解壓縮電路。該方法進一步包括在該解壓縮電路處基於函數參數解壓縮該壓縮係數資料以產生解壓縮係數值。該方法進一步包括藉由基於該等壓縮係數值對經接收輸入資料執行算術運算而將該模型應用於該經接收輸入資料。
100:張量流處理器(TSP)
102:輸入資料值
104:輸出資料值/輸出值
106:算術電路單元
106A:算術單元
106B:算術單元
108:記憶體
110:解壓縮電路
110A:解壓縮電路/第一解壓縮電路
110B:解壓縮電路/第二解壓縮電路
112:壓縮模型係數
112A:壓縮模型係數
112B:壓縮模型係數
114:函數參數
114A:第一函數參數
114B:第二函數參數
116:解壓縮模型係數
116A:解壓縮模型係數/解壓縮模型參數
116B:解壓縮模型係數/解壓縮模型參數
118:預測模型
120:編譯器
300:圖表
302:第一曲線
304:第二曲線/累積分佈曲線/累積計數分佈
306:第三曲線/函數
308:範圍
310:範圍
400:解壓縮電路
402:壓縮係數值
404:解壓縮係數值/解壓縮輸出係數
406:序列擴展器電路
408:高位元序列
410:低位元序列
412:函數參數
414:解壓縮函數電路
416:高係數值
418:低係數值
420:比較器及控制電路
450:函數計算電路
450a:第一函數計算電路
450b:第二函數計算電路
450c:函數計算電路
502:劃分器電路/劃分器
602:程序
604:程序
606:程序
608:程序
610:程序
702:程序
704:程序
706:程序
708:程序
710:程序
802:程序
804:程序
806:程序
808:程序
810:程序
812:程序
圖1繪示根據一些實施例之用於儲存及解壓縮用於一模型中之模型係數的一系統之一示意圖。
圖2繪示根據一些實施例之可使用不同函數解壓縮的一壓縮模型係數集之一方塊圖。
圖3A及圖3B繪示展示根據一些實施例之一模型係數分佈之例示性圖表。
圖4A繪示根據一些實施例之一解壓縮電路之一方塊圖。
圖4B繪示根據一些實施例之含有對應於不同函數類型之函數計算電路的一例示性解壓縮函數電路。
圖5繪示根據一些實施例之用於並行解壓縮壓縮係數資料的複數個解壓縮電路之一圖。
圖6係根據一些實施例之用於產生一壓縮模型係數集的一程序之一流程圖。
圖7係根據一些實施例之解壓縮壓縮模型係數的一程序之一流程圖。
圖8係用於使用算術解碼對壓縮模型係數執行解壓縮之一程序之一流程圖。
圖僅為繪示之目的描繪本發明之實施例。熟習此項技術者自以下描述將容易認知,可在不脫離本文中描述之本發明之原理或所得優點之情況下採用本文中繪示之結構及方法之替代實施例。
一預測模型(例如,一神經網路模型)可在處理經接收輸入資料時利用一係數集。例如,對於一神經網路模型,該係數集可對應於神經網路之不同神經元之間的權重。該係數集可儲存於一記憶體中且經存取用於對輸入資料(例如,待藉由模型分析之一影像)執行算術運算。
為減少記憶體使用,在儲存之前壓縮該係數集。在操作輸入資料之前將需要解壓縮經儲存壓縮係數。查找表可用於將壓縮係數值映射至解壓縮係數值。然而,查找表可需要大量記憶體用於儲存,特別是在係數範圍較大時。另外,在一些實施例中,可能對不同係數子集執行不同類型之壓縮,且因而將需要儲存多個查找表。
在一些實施例中,基於一函數壓縮經判定係數值。基於解壓縮係數值之一累積計數分佈產生函數。例如,一模型係數集之計數值可
概算一雙峰分佈、高斯分佈、帕松分佈或一函數可定義之其他類型之分佈。經判定函數之函數參數可儲存於一記憶體中且由一解壓縮電路使用以將函數應用於壓縮模型係數而進行解壓縮。與儲存用於解壓縮之一查找表相比,儲存函數參數可消耗較少記憶體。另外,儲存一經判定函數之函數參數所需之儲存空間與係數值之範圍或不同可能係數值之數目無關。
使用解壓縮函數亦減少解壓縮期間所需之記憶體查找之量。例如,一給定函數之函數參數僅需要在開始由解壓縮電路進行解壓縮時查找一次,且其等用於解壓縮使用該函數壓縮之大量係數。另一方面,使用查找表進行解壓縮通常需要針對待解壓縮之各係數進行一記憶體查找。
圖1繪示根據一些實施例之用於儲存及解壓縮用於一模型中之模型係數的一系統之一示意圖。一張量流處理器(TSP)100或其他類型之處理器經組態以基於一經儲存模型接收及處理輸入資料值102(例如,來自一輸入影像)而產生輸出資料值(例如,輸入影像之一分類、輸入資料中之某些類型之物件或特性之識別及/或類似者)。TSP 100可為一積體電路(IC)。在一些實施例中,輸入資料值102可為儲存於記憶體108中之輸入值且其等表示在TSP 100內之別處執行之算術運算之結果。
TSP 100使用一或多個算術電路單元及一或多個模型係數來操作輸入資料值102。算術電路單元包含邏輯電路,該等邏輯電路對輸入值102及模型係數執行算術運算且產生表示算術運算之一結果之輸出資料值。例如,算術電路單元可使用模型係數對輸入值執行一矩陣乘法運算且產生表示矩陣乘積之輸出資料值。一預測模型118(諸如一神經網路)之執行通常可使用矩陣乘法之數個連續階段來實施。在其他實施例中,算術電路
單元之算術運算可包含一迴旋運算、一點乘積運算、一快速傅立葉(Fourier)變換(FFT)運算及/或其他算術運算。算術電路單元106可使用單指令多資料(SIMD)處理來執行運算。
TSP 100包括一記憶體108,記憶體108儲存由算術單元使用以操作輸入資料值102的壓縮模型係數112。可由編譯器120自預測模型118產生壓縮模型係數112。預測模型118可對應於利用一係數集之任何類型之模型。在一些實施例中,透過一機器學習或訓練程序判定該係數集。
例如,在一些實施例中,預測模型118係一迴旋神經網路(CNN)或其他類型之神經網路模型。
一旦已建構或充分訓練預測模型118,便可由一編譯器120編譯模型118以由TSP 110使用用於處理輸入資料值102。編譯器120分析預測模型118之係數值,且選擇用於壓縮模型之係數值之一或多個壓縮方案。接著,將壓縮係數值作為壓縮模型係數112儲存於記憶體108中。
為了由算術電路單元使用以操作輸入資料值102,需要解壓縮與模型相關聯之壓縮模型係數112。一解壓縮電路經組態以自記憶體108接收壓縮模型係數112,且輸出可由算術單元操作之解壓縮模型係數。
在一些實施例中,編譯器120基於自與模型相關聯之係數值之一分佈導出的一函數選擇用於預測模型118之係數之一壓縮方案。例如,在許多情況中,模型之係數值之分佈可具有為一雙峰分佈、一高斯分佈或一帕松分佈之一分佈。編譯器120判定最佳擬合模型係數分佈之一函數類型,且將經判定函數之參數作為函數參數114儲存於記憶體108中。
函數參數114可指示與分佈相關聯之一函數類型以及函數之係數及/或與函
數相關之其他參數的值。在一些實施例中,所儲存之函數參數之類型係基於一函數類型。
解壓縮電路支援用於解壓縮壓縮模型係數112之數種可能函數。解壓縮電路藉由將由函數參數114定義之特定函數應用於壓縮模型係數112解壓縮壓縮模型係數112以判定解壓縮模型係數。
使用函數執行解壓縮可減少儲存用於解壓縮之資料所需之記憶體之量(例如,相較於一查找表)。另外,儲存函數參數所需之記憶體之量可與係數值之範圍或不同可能係數值之數目無關。使用解壓縮函數亦減少解壓縮期間所需之記憶體查找之量。例如,函數參數114可表示在解壓縮開始時查找一次之少量恆定記憶體,且可用於解壓縮包括許多係數之一長串資料。另一方面,使用查找表進行解壓縮通常需要針對待解壓縮之各係數進行一記憶體查找。
在一些實施例中,記憶體108可將預測模型118之壓縮模型係數儲存為複數個不同係數集(例如,一第一壓縮模型係數112A集及一第二壓縮模型係數112B集)。可能已基於一不同函數(例如,與第一函數參數114A相關聯之一第一函數及與第二函數參數114B相關聯之一第二函數)且運用算術或霍夫曼(Huffman)寫碼壓縮各壓縮模型係數112集。在一些實施例中,一不同解壓縮電路(例如,解壓縮電路110A及110B)可用於解壓縮使用不同函數壓縮之不同壓縮模型係數集,以產生不同解壓縮模型係數(例如,解壓縮模型係數116A及116B)集。可由多個算術單元(例如,算術單元106A及106B)操作經輸出解壓縮模型參數116A及116B以產生輸出資料值之多個集(例如:輸出資料104A及104B)。
在一些實施例中,多個函數可用於解壓縮壓縮模型係數。
例如,在壓縮模型係數時,編譯器可將係數劃分為一或多個子集,且判定
對應於各子集中之係數值之分佈的一函數及參數。
圖2繪示可使用不同函數解壓縮之一壓縮模型係數集之一方塊圖。在一些實施例中,壓縮模型係數可經由複數個位元通道(例如,位元通道0至n)自記憶體傳輸至一解壓縮電路。解壓縮電路可使用一不同函數(例如,函數f_0至函數f_n)解壓縮各位元通道上之傳入係數資料。例如,解壓縮電路可接收對應於函數f_0至函數f_n之多組函數參數,各函數用於解壓縮經由一對應位元通道接收之係數資料。
儘管圖2繪示針對各位元通道應用一不同函數之解壓縮電路,然應瞭解,在其他實施例中,一共同函數可應用於多個位元通道。另外,由解壓縮電路使用以解壓縮壓縮模型係數之函數可經組態以隨時間改變。例如,在一時間t=0,解壓縮電路可使用函數f_0至函數f_n進行解壓縮。然而,在一稍後時間t=t1,解壓縮電路可接收不同組函數參數以改變用於解壓縮位元通道之一或多者之函數。在一些實施例中,編譯器在壓縮待儲存於TSP之記憶體中之模型係數時判定哪些函數針對哪些位元通道且在何時用於壓縮/解壓縮模型係數。
在一些實施例中,在使用某些壓縮方案進行壓縮時,相較於解壓縮,某些係數值在被壓縮時可佔據較大數目個位元。因而,編譯器可判定無需壓縮此等係數值。在解壓縮期間,解壓縮電路可經組態以將一恆等函數應用於此等係數值。或者,可繞過解壓縮電路。
圖3A繪示展示根據一些實施例之一模型係數分佈之一例示性圖表。圖表300具有對應於係數值之一x軸及對應於計數值之一y軸。雖然圖表300之x軸僅展示整數係數值,但應瞭解,一模型之係數值可使用整數、浮點數、定點數及/或類似者表示。
圖表300含有展示一特定模型之一係數值分佈之一第一曲線302。在產生模型之一係數集之後(例如,透過一訓練程序),對該集合之具有各值之係數的數目進行計數。在許多情況中,具各值之係數之數目將概算一共同分佈,諸如一雙峰分佈、一高斯分佈、一帕松分佈及/或類似者。例如,如由第一曲線302繪示,特定模型之係數值具有一大體雙峰分佈,其中最大數目之係數具有值-2或2。
圖表300亦繪示一第二曲線304,其指示模型之係數值之一累積分佈。累積分佈曲線304指示針對圖表300之x軸上所表示之各係數值,係數之一總數小於或等於該值。因而,一係數集之累積分佈將單調增加,而容許使用分佈之一函數自一給定計數值導出一唯一係數值。
藉由編譯器基於擬合係數之累積計數分佈的一函數壓縮模型之係數值。在一些實施例中,編譯器可首先基於累積計數分佈選擇一函數類型,且判定選定函數類型之函數參數以達成函數類型與累積計數分佈之一最佳擬合。例如,圖表300中繪示之第三曲線306對應於可藉由編譯器選擇以概算表示累積計數分佈304之多項式函數。如圖3中繪示,對應於第三曲線306之多項式函數可為八階多項式函數。在一些實施例中,函數可基於概算表示係數值之計數分佈(曲線302)之一函數之一積分。
在一些實施例中,編譯器使用算術編碼基於經判定函數壓縮係數值。例如,如圖3B中繪示,將函數之計數值擬合至0與1之間的一範圍中,其中0由二進位序列0000...表示且1由二進位序列1111...表示。
此導致較常出現係數(例如,具有較高計數值之係數)由短位元序列表示,且較不常出現係數由長位元序列表示。
在一些實施例中,各係數值可對應於基於相鄰係數值之間
之區間之一值區間。可基於一捨入方案、頂限函數、地板函數及/或類似者判定各係數值之區間。例如,在係數值係整數且使用一地板函數來判定值區間之一實施例中,係數值1可對應於區間[1,2),係數值2可對應於區間[2,3),等等。
各區間可對應於二進位序列值之一範圍(如使用函數判定者),其中使用表示對應於區間之二進位序列值之範圍的一位元序列寫碼各係數值。因而,因為具有高計數之係數值一般將對應於二進位序列值之一較大範圍,所以其等可使用較小數目個位元進行壓縮。
例如,假設諸係數值係整數,且係數值0對應於區間[-0.5,0.5),而係數值2對應於區間[1.5,2.5)。如圖3B中繪示,基於函數306,範圍308內之位元序列將映射至係數值0,而範圍310內之位元序列將映射至係數值2。因為範圍310跨越一較大範圍之位元序列,所以該範圍之位元序列相較於範圍308之位元序列通常可使用較小數目個共同位元表示。
因而,係數值2(其相較於係數值0具有一較高計數,如圖3A中繪示)相較於係數值0在壓縮時使用較小數目個位元表示。例如,範圍308跨越序列1000...,而範圍310可跨越二進位序列1011...至1110...。因而,係數值0可使用位元序列1000(4個位元)表示,而係數值2可使用位元序列110(3個位元)表示。應瞭解,在一些實施例中,表示一壓縮係數值之位元序列可能不表示對應於與該值相關聯之區間之範圍內的全部位元序列,只要位元序列不表示對應於其他係數值之區間之範圍的位元序列即可。
圖4A繪示根據一些實施例之一解壓縮電路之一方塊圖。解壓縮電路400可對應於圖1中繪示之解壓縮電路,且其經組態以接收壓縮係數值402且輸出解壓縮係數值404。在一些實施例中,解壓縮電路使用
算術寫碼技術及與係數值402相關聯之一函數來解壓縮自壓縮係數值402接收之位元。
解壓縮電路在一序列擴展器電路406處接收壓縮係數值402之一或多個位元之一序列,序列擴展器電路406產生經接收位元序列之一高位元序列408及一低位元序列410。如本文中所使用,高位元序列408對應於添加有複數個二進位「1」值之經接收位元序列,且低位元序列410對應於添加有複數個二進位「0」值之經接收位元序列。例如,對於經接收位元序列「10」,高位元序列係「10111...」,而低位元序列將為「10000...」。
解壓縮函數電路414基於一或多個經接收函數參數412判定待用於解壓縮之一函數。例如,圖4B繪示根據一些實施例之含有對應於不同函數類型之函數計算電路的一例示性解壓縮函數電路。解壓縮函數電路414包含數個函數計算電路,函數計算電路之各者實施用於自一輸入值計算一輸出值之一不同類型之函數。例如,如圖4B中繪示,函數計算電路可包括對應於多項式函數之一第一函數計算電路450a、對應於一高斯分佈函數之一第二函數計算電路450b及對應於一帕松分佈函數之一第三函數計算電路450c。
函數參數412可包括指示可由解壓縮函數電路414使用以判定待使用之一函數計算電路之一函數類型(例如,多項式函數、高斯分佈函數及/或類似者)的一第一函數類型參數及零個或多個額外函數係數參數(例如,多項式函數之係數)。如圖4B中繪示,各不同類型之函數可與不同數目個係數及/或不同類型之係數相關聯。例如,函數計算電路450b可經組態以計算用於解壓縮擬合一高斯型分佈之係數值的一函數(例如,一
高斯分佈之一積分之一逆運算),而函數計算電路450c可經組態以計算用於解壓縮一帕松型分佈之一函數。在一些實施例中,解壓縮函數電路414可基於待解壓縮之壓縮係數集或子集接收不同組之函數參數412。解壓縮函數電路414將函數應用於高位元序列408以判定一高係數值416,且將函數應用於低位元序列410以判定一低係數值418。
在一些實施例中,解壓縮函數電路414在處理一經接收位元序列(例如,高或低位元序列)時使用函數判定一對應值,且基於對應值所在之一區間識別對應於位元序列之一係數值。例如,若由函數判定之對應值對應於兩個不同係數值之間的一值,則解壓縮函數電路414可基於一區間選擇方案(例如,捨入、頂限函數、地板函數及/或類似者)選擇一係數值。
比較器及控制電路420接收由解壓縮函數電路414判定之高係數值416及低係數值418,且判定高係數值及低係數值是否相同。若高係數值及低係數值相同,則將經接收位元序列輸出為一解壓縮輸出係數404。接著,解壓縮電路400可開始自壓縮係數值402接收一新位元序列。
另一方面,若高係數值416及係數值418不相同,則無法使用當前接收之位元序列判定一解壓縮輸出係數。解壓縮電路自壓縮係數值402接收一額外位元,且更新高位元序列408及低位元序列410。在一些實施例中,因為高位元序列408或低位元序列410之任一者在接收一額外位元時將保持相同,所以對於各隨後接收之位元,僅需重新計算一單一額外擴展位元序列(例如,若經接收位元係「1」則重新計算低位元序列410,或若經接收位元係「0」則重新計算高位元序列408)。類似地,解壓縮函數電路414僅需針對重新計算之擴展位元序列判定一係數值,而無需針對
高擴展位元序列及低擴展位元序列重新計算高係數值及低係數值兩者。接著,藉由比較器420比較更新係數值以判定是否可輸出一解壓縮係數值或是否需要額外位元。
表1繪示映射至解壓縮係數值之壓縮位元序列之一簡化實例。例如,解壓縮函數電路414可將一函數(如由經接收函數參數412定義)應用於一經接收位元序列(例如,0011...),其中所得值落入一係數值(例如,-2)之區間內。因而,解壓縮函數電路414將回應於經接收位元序列「0011」而返回係數值「-2」。
作為一闡釋性實例,假設解壓縮電路接收位元序列「0100111000000110」。解壓縮電路400接收串流之第一位元(「0」),因此序列擴展器電路406判定一高擴展位元序列「0111...」及一低擴展位元序列「0000...」。解壓縮函數電路414接收高擴展位元序列及低擴展位元序列,且判定分別對應於「-1」及「-3」之高係數值及低係數值。因為高係數值及低係數值不匹配,所以比較器及控制電路420無法判定待輸出之一單一輸出係數值。因而,解壓縮電路400自位元流接收一後續位元。
當接收位元流之下一位元時,解壓縮電路400處之當前位元序列係「01」。因為高擴展位元序列仍為「0111...」,所以序列擴展器電路406僅需針對當前位元序列(「0100...」)重新計算一低擴展位元序列。解壓縮函數電路414亦針對低擴展位元序列計算一更新低係數(「-2」)。因為高係數值及低係數值仍不匹配,所以解壓縮電路400自位元流接收另一位元而不輸出一解壓縮係數值。
在接收下一位元流位元之後,當前位元序列係「010」。序列擴展器電路406判定一更新高擴展位元序列「0101...」,解壓縮函數電路414將其判定為對應於一係數值「-2」。因為高係數值及低係數值兩者匹配,所以解壓縮電路400輸出「-2」作為一解壓縮係數值404。解壓縮電路可繼續接收壓縮位元序列「0100111000000110」之位元且輸出對應係數值(例如,針對位元序列「011」輸出「-1」,針對位元序列「1000」輸出「0」,針對位元序列「000」輸出「-3」且針對位元序列「110」輸出「2」)。
雖然上述實例主要論述使用算術寫碼及解壓縮函數來壓縮及解壓縮模型係數值,但應瞭解,在其他實施例中,可使用不同類型之寫
碼。例如,在一些實施例中,可使用霍夫曼寫碼結合函數來壓縮及解壓縮模型係數值。
在一些實施例中,一模型之係數集可分為複數個子集,其中各子集之係數計數可符合一不同分佈。因而,可基於一不同函數壓縮及解壓縮各係數子集(例如,如圖2中繪示)。例如,可基於壓縮係數之位元通道及位置而將不同函數應用於儲存於TSP之記憶體中之壓縮係數值。
交錯輸入
在一些實施例中,複數個解壓縮電路可用於並行解壓縮含有壓縮係數資料之一位元流。例如,在一第一時脈循環期間,各解壓縮電路可處理一不同壓縮係數之一第一位元。當一特定解壓縮電路完成解壓縮一特定係數時,其可移動至當前未處理之一後續壓縮係數。
例如,壓縮係數資料之一位元流可包括對應於一第一係數之x個位元及對應於一第二係數之y個位元。在一第一時脈循環期間,一第一解壓縮電路可處理第一係數之第一位元,而一第二解壓縮電路可處理第二係數之第一位元。若x<y,則在第x+1個時脈循環處,第一解壓縮電路已完成處理第一係數,且可開始處理一第三係數之一第一位元,而第二解壓縮電路可在第y+1個時脈循環處處理一第四係數之一第一位元。
例如,圖5繪示根據一些實施例之用於並行解壓縮壓縮係數資料的複數個解壓縮電路之一圖。壓縮模型係數112可產生表示為「aabbbbcccdd...」之一位元流,其包括用於寫碼一第一係數「a」之2個位元、用於寫碼一第二係數「b」之4個位元、用於寫碼一第三係數「c」之3個位元及用於編碼一第四係數「d」之2個位元。一劃分器電路502在一第一解壓縮電路110A與一第二解壓縮電路110B之間劃分位元流。劃分
器502判定位元流中開始編碼各係數之一位置,且在解壓縮電路110A與110B之間劃分位元流之位元,使得各解壓縮電路解壓縮一不同係數之位元。例如,在一第一時脈循環處,劃分器電路502經組態以將係數「a」之一第一位元傳輸至解壓縮電路110A且將係數「b」之一第一位元傳輸至解壓縮電路110B。解壓縮電路110A及110B之各者使用基於經儲存函數參數114之一函數來處理經接收位元。在一第三時脈循環期間,解壓縮電路110A已完成處理係數「a」之位元且接收下一未處理係數(例如,係數「c」)之一第一位元,而解壓縮電路110B接收且處理係數「b」之第三位元。
解壓縮電路110A及110B分別輸出解壓縮模型係數116A及116B,在一些實施例中,可使用交錯解壓縮係數116A及116B之一交錯器電路(未展示)來形成一解壓縮係數位元流。
因為編譯器執行模型係數之初始壓縮且因而知道對應於各壓縮係數值之位元長度,所以編譯器可將指定由哪些解壓縮電路操作一位元流之哪些部分的指令儲存至記憶體,使得各解壓縮電路能夠在解壓縮一先前係數之後接收一後續壓縮係數之一第一位元。
程序流程
圖6係根據一些實施例之用於產生一壓縮模型係數集之一程序之一流程圖。使用一機器學習程序建構602及/或訓練一預測模型,此產生模型之一係數集。在一些實施例中,模型可為一神經網路模型。
一編譯器針對係數集之一或多個子集之各者基於子集內之係數值之分佈選擇604一函數。例如,編譯器產生子集之係數值之一累積計數分佈,且識別最佳擬合所產生分佈之一函數類型。函數類型可基於多
項式函數、一高斯分佈函數、一帕松分佈函數及/或類似者。編譯器判定606選定函數類型之參數,以判定最佳擬合子集之係數值之分佈(例如,累積計數分佈)之一函數。編譯器基於經判定函數類型及函數參數壓縮608係數子集。
將壓縮係數子集及經判定函數參數儲存610於一記憶體中。可藉由一或多個算術單元使用壓縮係數(在解壓縮之後)來根據預測模型對輸入資料(例如,影像資料)執行操作。
圖7係根據一些實施例之用於解壓縮壓縮模型係數的一程序之一流程圖。解壓縮電路接收702對應於壓縮係數之資料。在一些實施例中,輸入資料被接收為一位元流,其中各壓縮係數由一可變長度位元序列表示。
解壓縮電路接收704對應於待用於解壓縮經接收壓縮係數資料之一函數的一或多個函數參數。函數參數可指示一函數類型以及函數之一或多個係數(例如,在函數類型係多項式之情況下,函數參數可指示多項式函數之係數)。解壓縮電路基於經接收函數參數組態706待由一解壓縮函數電路使用之函數。例如,在一些實施例中,解壓縮電路包括各自對應於一不同函數類型之複數個解壓縮函數電路。回應於接收函數參數,解壓縮電路選擇對應於由經接收參數指示之一函數類型之一特定解壓縮函數電路,且基於一或多個額外函數參數(例如,對應於函數係數值)組態選定解壓縮函數電路。
解壓縮電路基於經組態函數使用解壓縮函數電路來解壓縮708對應於壓縮係數之輸入資料以輸出解壓縮係數。可將解壓縮係數提供至一TSP。
TSP藉由使用自解壓縮電路接收之解壓縮係數對經接收輸入資料執行算術運算而將模型應用710於該輸入資料。該等算術運算可包含矩陣乘法、點乘積運算、FFT及/或類似者。
圖8係用於使用算術解碼對壓縮模型係數執行解壓縮的一程序之一流程圖。解壓縮電路可接收壓縮係數作為一位元流。因為各係數值可使用一可變長度位元序列表示,所以解壓縮電路可評估位元流之各位元且判定是否可自當前接收之位元獲得一解壓縮係數值。
解壓縮電路接收802壓縮係數資料之一位元。解壓縮電路藉由將高位元或低位元之一序列添加至經接收序列而使用壓縮係數資料之當前接收位元序列產生804高擴展位元序列及低擴展位元序列。經接收位元序列可對應於由解壓縮電路接收之一位元序列,其不對應於已由解壓縮電路輸出之一解壓縮係數值。
解壓縮電路將一經判定函數應用806於高擴展位元序列及低擴展位元序列以判定解壓縮係數值。經判定函數可對應於與壓縮係數值對應之複數個經接收函數參數。在一些實施例中,將函數應用於高擴展位元序列或低擴展位元序列基於一區間方案產生在兩個不同可能係數值之間且與一特定係數值相關聯之一值。
解壓縮電路判定808高位元序列及低位元序列之解壓縮係數值是否相同。若是,則當前位元序列足以判定一解壓縮係數值,且解壓縮電路輸出810對應於當前接收之位元序列之解壓縮係數值。接著,解壓縮電路可接收壓縮係數資料之額外位元作為一新位元序列之部分以判定後續解壓縮係數值。
另一方面,若高位元序列及低位元序列之解壓縮係數值不
同,則當前位元序列不足以產生一解壓縮係數值,且解壓縮電路接收812壓縮係數資料之額外位元,直至對應於高擴展位元序列及低擴展位元序列之解壓縮係數值匹配。
額外組態資訊
本發明之實施例之前述描述已為繪示之目的而呈現;其並不意欲為詳盡性的或將本發明限制於所揭示之精確形式。熟習相關技術者可瞭解,鑒於上文揭示內容,許多修改及變動係可能的。
此描述之一些部分在對資訊操作之演算法及符號表示方面描述本發明之實施例。通常藉由熟習資料處理技術者使用此等演算法描述及表示來將其等工作之實質有效地傳達給其他熟習此項技術者。雖然在功能上、計算上或邏輯上描述此等操作,但其等應被理解為由電腦程式或等效電路、微程式碼或類似者實施。此外,亦已證明,不失一般性地,將此等操作配置稱為模組有時是方便的。所描述操作及其等相關聯模組可體現在軟體、韌體、硬體或其等之任何組合中。
可單獨或結合其他裝置一起運用一或多個硬體或軟體模組執行或實施本文中描述之步驟、操作或程序之任一者。在一項實施例中,運用包括含有電腦程式碼之一電腦可讀媒體之一電腦程式產品來實施一軟體模組,該電腦程式碼可由一電腦處理器執行以執行所描述之任何或全部步驟、操作或程序。
本發明之實施例亦可關於一種用於執行本文中之操作之設備。此設備可專門構造用於所需目的,及/或其可包括藉由儲存於電腦中之一電腦程式選擇性地啟動或重新組態之一通用計算裝置。此一電腦程式可儲存於耦合至一電腦系統匯流排之一非暫時性有形電腦可讀儲存媒體或
適於儲存電子指令之任何類型之媒體中。此外,本說明書中指涉之任何計算系統可包含一單一處理器或可為採用多個處理器設計以增加計算能力之架構。
本發明之實施例亦可關於一種藉由本文中描述之一計算程序產生之產品。此一產品可包括來源於一計算程序之資訊,其中資訊儲存於一非暫時性有形電腦可讀儲存媒體中且可包含一電腦程式產品或本文中描述之其他資料組合之任何實施例。
最後,已主要出於可讀性及指導目的選擇本說明書中使用之語言,且其並非經選擇以描繪或限制發明標的物。因此,本發明之範疇意欲不受此詳細描述限制,而是受限於探討基於此之一應用之任何申請專利範圍。因此,實施例之揭示內容意欲繪示而非限制在以下發明申請專利範圍中闡述之本發明之範疇。
702:接收
704:接收
706:組態
708:解壓縮
710:應用
Claims (11)
- 一種用於模型參數之解壓縮之方法,其包括:接收與一模型相關聯之壓縮係數資料,其中使用基於該係數資料之值之一累積分佈之一壓縮函數來壓縮該係數資料;擷取與該壓縮函數相關聯之一組函數參數,該組函數參數指定至少一函數類型;基於該等經擷取函數參數組態一解壓縮電路;使用該解壓縮電路基於函數參數解壓縮該壓縮係數資料以產生解壓縮係數值;及藉由使用該等解壓縮係數值對經接收輸入資料執行算術運算而將該模型應用於該經接收輸入資料以產生一輸出值集。
- 如請求項1之用於模型參數之解壓縮之方法,其中透過一模型訓練程序判定該係數資料之該等值。
- 如請求項1之用於模型參數之解壓縮之方法,其中該函數類型係選自多項式函數、一雙峰分佈函數、一高斯分佈函數或一帕松分佈函數之至少一者。
- 如請求項1之用於模型參數之解壓縮之方法,其中使用算術寫碼來壓縮該係數資料。
- 如請求項1之用於模型參數之解壓縮之方法,其中使用霍夫曼寫碼來壓縮該係數資料。
- 如請求項1之用於模型參數之解壓縮之方法,其中解壓縮該壓縮係數資料包括:藉由將該等函數參數應用於對應於一第一壓縮係數之該壓縮係數資料之至少一部分以判定一第一解壓縮係數值。
- 如請求項6之用於模型參數之解壓縮之方法,其中將該等函數參數應用於對應於一第一壓縮係數之該壓縮係數資料之至少一部分以判定一第一解壓縮係數值包括:接收該第一壓縮係數之一或多個位元之一序列;基於經接收位元序列產生第一擴展位元序列及第二擴展位元序列;將該等函數參數應用於該第一擴展位元序列及該第二擴展位元序列以判定第一各自係數值及第二各自係數值;及回應於判定該第一係數值及該第二係數值相同而輸出該第一係數值作為該第一解壓縮係數值。
- 如請求項1之用於模型參數之解壓縮之方法,其中:該係數資料包括使用該壓縮函數壓縮之一第一係數子集及使用一第二壓縮函數壓縮之一第二係數子集,且其中擷取與該壓縮函數相關聯之一組函數參數,該組函數參數包括對應於該壓縮函數之一第一組函數參數及對應於該第二壓縮函數之一第二組函數參數,及 其中擷取該組函數參數包括:基於待解壓縮之一係數子集擷取該第一組函數參數或該第二組函數參數。
- 如請求項1之用於模型參數之解壓縮之方法,其中基於該等經擷取函數參數組態該解壓縮電路包括:基於由該等函數參數指定之該函數類型選擇一解壓縮函數電路。
- 一種用於模型參數之解壓縮之處理器,其包括:一記憶體,其儲存與一預測模型相關聯之壓縮係數,該等壓縮係數包括第一壓縮係數及第二壓縮係數;一第一解壓縮電路,其使用一第一解壓縮函數將該等第一壓縮係數解壓縮為第一解壓縮係數;一第一算術電路單元,其接收第一輸入資料及該等第一解壓縮係數,且基於第一輸入資料及該等第一解壓縮係數執行一第一算術運算以產生第一輸出值;一第二解壓縮電路,其使用一第二解壓縮函數將該等第二壓縮係數解壓縮為第二解壓縮係數;及一第二算術電路單元,其接收第二輸入資料及該等第二解壓縮係數,且基於第二輸入資料及該等第二解壓縮係數執行一第二算術運算以產生第二輸出值。
- 一種用於模型參數之解壓縮之處理器,其包括:一記憶體,其儲存與一預測模型相關聯之第一壓縮係數且儲存與該 等第一壓縮係數相關聯之一或多個函數參數;一第一解壓縮電路,其支援一第一解壓縮函數及一第二解壓縮函數,該第一解壓縮電路基於該一或多個函數參數在該第一解壓縮函數與該第二解壓縮函數之間進行選擇,該第一解壓縮電路使用該選定函數將該等第一壓縮係數解壓縮為第一解壓縮係數;及一第一算術電路單元,其接收第一輸入資料及該等第一解壓縮係數,且基於第一輸入資料及該等第一解壓縮係數執行一第一算術運算以產生第一輸出值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW108109970A TWI708196B (zh) | 2019-03-22 | 2019-03-22 | 使用基於累積計數分佈之函數之用於模型參數之解壓縮之方法及處理器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW108109970A TWI708196B (zh) | 2019-03-22 | 2019-03-22 | 使用基於累積計數分佈之函數之用於模型參數之解壓縮之方法及處理器 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202036391A TW202036391A (zh) | 2020-10-01 |
TWI708196B true TWI708196B (zh) | 2020-10-21 |
Family
ID=74090968
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW108109970A TWI708196B (zh) | 2019-03-22 | 2019-03-22 | 使用基於累積計數分佈之函數之用於模型參數之解壓縮之方法及處理器 |
Country Status (1)
Country | Link |
---|---|
TW (1) | TWI708196B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI778493B (zh) * | 2021-01-12 | 2022-09-21 | 鴻海精密工業股份有限公司 | 多神經網路模型載入方法、裝置、電子設備及電腦可讀取記錄媒體 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI279092B (en) * | 2004-03-26 | 2007-04-11 | Ind Tech Res Inst | Compressor/decompressor selecting apparatus and method of the same |
US8824569B2 (en) * | 2011-12-07 | 2014-09-02 | International Business Machines Corporation | High bandwidth decompression of variable length encoded data streams |
US9654531B2 (en) * | 2013-08-01 | 2017-05-16 | Spotify Ab | System and method for transitioning between receiving different compressed media streams |
TWI591976B (zh) * | 2012-05-04 | 2017-07-11 | 李爾登公司 | 用於處理分散式輸入分散式輸出之無線系統中之都卜勒效應之系統及方法 |
-
2019
- 2019-03-22 TW TW108109970A patent/TWI708196B/zh active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI279092B (en) * | 2004-03-26 | 2007-04-11 | Ind Tech Res Inst | Compressor/decompressor selecting apparatus and method of the same |
US8824569B2 (en) * | 2011-12-07 | 2014-09-02 | International Business Machines Corporation | High bandwidth decompression of variable length encoded data streams |
TWI591976B (zh) * | 2012-05-04 | 2017-07-11 | 李爾登公司 | 用於處理分散式輸入分散式輸出之無線系統中之都卜勒效應之系統及方法 |
US9654531B2 (en) * | 2013-08-01 | 2017-05-16 | Spotify Ab | System and method for transitioning between receiving different compressed media streams |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI778493B (zh) * | 2021-01-12 | 2022-09-21 | 鴻海精密工業股份有限公司 | 多神經網路模型載入方法、裝置、電子設備及電腦可讀取記錄媒體 |
Also Published As
Publication number | Publication date |
---|---|
TW202036391A (zh) | 2020-10-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108337000B (zh) | 用于转换到较低精度数据格式的自动方法 | |
US10599935B2 (en) | Processing artificial neural network weights | |
KR102608467B1 (ko) | 뉴럴 네트워크의 경량화 방법, 이를 이용한 인식 방법, 및 그 장치 | |
US20190294589A1 (en) | Method and system of similarity-based deduplication | |
CN110663048A (zh) | 用于深度神经网络的执行方法、执行装置、学习方法、学习装置以及程序 | |
US20070233477A1 (en) | Lossless Data Compression Using Adaptive Context Modeling | |
US20190044535A1 (en) | Systems and methods for compressing parameters of learned parameter systems | |
CN113132723B (zh) | 一种图像压缩方法及装置 | |
CN110363297A (zh) | 神经网络训练及图像处理方法、装置、设备和介质 | |
EP4008057B1 (en) | Lossless exponent and lossy mantissa weight compression for training deep neural networks | |
Andrzejewski et al. | GPU-WAH: Applying GPUs to compressing bitmap indexes with word aligned hybrid | |
JP2020149156A (ja) | データ圧縮装置、データ処理装置、データ圧縮方法、プログラム、及び学習済みモデル | |
WO2018228399A1 (zh) | 运算装置和方法 | |
JP7568198B2 (ja) | ニューラルネットワーク処理装置、ニューラルネットワーク処理方法、及び、プログラム | |
Faraone et al. | Customizing low-precision deep neural networks for FPGAs | |
US20200050640A1 (en) | Sorting an array consisting of a large number of elements | |
CN112580805A (zh) | 神经网络模型的量化方法和量化神经网络模型的装置 | |
TWI708196B (zh) | 使用基於累積計數分佈之函數之用於模型參數之解壓縮之方法及處理器 | |
CN114697654A (zh) | 一种神经网络量化压缩方法及系统 | |
US9092717B2 (en) | Data processing device and data processing method | |
US10938412B2 (en) | Decompression of model parameters using functions based upon cumulative count distributions | |
US20210174815A1 (en) | Quantization method of latent vector for audio encoding and computing device for performing the method | |
US8878705B1 (en) | Variable bit-length reiterative lossless compression system and method | |
TWI729939B (zh) | 使用基於累積計數分佈之函數之用於模型參數之解壓縮之方法及處理器 | |
WO2020185238A1 (en) | Decompression of model parameters using functions based upon cumulative count distributions |