神經網路模型壓縮方法以及裝置

神經網路模型壓縮方法以及裝置

《神經網路模型壓縮方法以及裝置》是北京百度網訊科技有限公司於2016年10月31日申請的發明專,該專利的公布號為:CN106485316A,專利公布日:2017年03月08日,發明人是:朱志凡;馮仕堃;周坤勝;石磊;何徑舟。

《神經網路模型壓縮方法以及裝置》公開了一種神經網路模型壓縮方法以及裝置。其中方法包括:針對神經網路模型中的每一個神經元層,確定每個神經元層的模型參數集合,其中,模型參數集合包含多個模型參數;對多個模型參數進行第一變換以生成多箇中間參數;根據預設的量化步長對多箇中間參數進行量化,得到多個量化參數;根據預設的量化位數,從多個量化參數中選取多個採樣量化點;根據多個量化參數的值和多個採樣量化點,生成多個模型參數的量化值;根據量化值對多個模型參數進行壓縮存儲。該方法可以更好地保持模型效果,大大減少了神經網路模型的大小,減少了計算資源,特別是減少了記憶體資源的占用。

2021年6月24日,《神經網路模型壓縮方法以及裝置》獲得第二十二屆中國專利優秀獎。

(概述圖為《神經網路模型壓縮方法以及裝置》摘要附圖)

基本介紹

  • 中文名:神經網路模型壓縮方法以及裝置
  • 申請人:北京百度網訊科技有限公司
  • 申請號:201610943049X
  • 地址:北京市海淀區上地十街10號百度大廈2層
  • 發明人:朱志凡; 馮仕堃; 周坤勝; 石磊; 何徑舟
  • Int. Cl.:G06N3/02(2006.01)I; G06N3/06(2006.01)I; H03M1/54(2006.01)I; H03M1/38(2006.01)I
  • 代理人:宋合成
  • 代理機構:北京清亦華智慧財產權代理事務所(普通合夥)
  • 申請日:2016年10月31日
  • 授權日:2017年03月08日
  • 類別:發明專利
  • 公告號:CN106485316A
專利背景,發明內容,專利目的,技術方法,附圖說明,技術領域,權利要求,實施方式,操作內容,實現過程,實施特點,榮譽表彰,

專利背景

2016年前,深度神經網路隨著訓練數據的增加,為了更好學習訓練數據的特徵以提升效果,相套用於表示模型的參數迅速增長,於是計算資源的消耗也迅速增長,而這樣會制約了深度神經網路的套用場景,如手機等計算資源有限的設備。
相關技術中,通常是通過對神經網路模型進行量化壓縮的方式,來減少模型的大小。2016年前,神經網路模型壓縮方法通常有以下兩種:1)基於半精度的壓縮方法,其原理是將神經網路模型中利用32bit(位)表示的浮點數,壓縮到用16bit表示;2)基於隨機採樣的量化方法,即通過在神經網路模型中採樣尋找量化點,再通過尋找到的量化點進行量化壓縮;3)基於線性的量化方法,即對神經網路模型的參數的值域進行平均分割,來尋找量化點,再通過量化點進行量化壓縮。
2016年前存在的問題是:上述基於半精度的壓縮方法僅是對浮點數壓縮到16bit,使得壓縮的大小有限;上述基於隨機採樣的量化方法,由於採樣帶有隨機性,使得隨機採樣的採樣點會落波峰附近,而重要的、數值大的元素採樣可能不足;上述基於線性的量化方法中,線性量化將大權值和小權值平均對待,沒有在數據分布密集的地方更多地採樣,導致模型數據損失較大,壓縮效果差。

發明內容

專利目的

《神經網路模型壓縮方法以及裝置》的第一個目的在於提出一種神經網路模型壓縮方法。該方法可以更好地保持模型效果,大大減少了神經網路模型的大小,減少了計算資源,特別是減少了記憶體資源的占用。
《神經網路模型壓縮方法以及裝置》的第二個目的在於提出一種神經網路模型壓縮裝置。
《神經網路模型壓縮方法以及裝置》的第三個目的在於提出一種非臨時性計算機可讀存儲介質。
《神經網路模型壓縮方法以及裝置》的第四個目的在於提出一種電腦程式產品。

技術方法

《神經網路模型壓縮方法以及裝置》第一方面實施例提出的神經網路模型壓縮方法,包括:針對神經網路模型中的每一個神經元層,確定所述每個神經元層的模型參數集合,其中,所述模型參數集合包含多個模型參數;對所述多個模型參數進行第一變換以生成多箇中間參數;根據預設的量化步長對所述多箇中間參數進行量化,得到多個量化參數;根據預設的量化位數,從所述多個量化參數中選取多個採樣量化點;根據所述多個量化參數的值和所述多個採樣量化點,生成所述多個模型參數的量化值;根據所述量化值對所述多個模型參數進行壓縮存儲。
《神經網路模型壓縮方法以及裝置》實施例的神經網路模型壓縮方法,針對神經網路模型中的每一個神經元層,確定每個神經元層的模型參數集合,其中,模型參數集合包含多個模型參數,之後,對多個模型參數進行第一變換以生成多箇中間參數,並根據預設的量化步長對多箇中間參數進行量化,得到多個量化參數,然後,根據預設的量化位數,從多個量化參數中選取多個採樣量化點,之後,根據多個量化參數的值和多個採樣量化點,生成多個模型參數的量化值,最後,根據量化值對多個模型參數進行壓縮存儲。即根據需要壓縮的數據調節量化步長,並根據預設的量化位數,從排列在多個量化參數的靠前位置開始採取採樣量化點,可以更加充分的對壓縮數據進行採樣,更好地保留重要的權值信息,更好地保持模型效果,大大減少了神經網路模型的大小,減少了計算資源,特別是減少了記憶體資源的占用。
《神經網路模型壓縮方法以及裝置》第二方面實施例提出的神經網路模型壓縮裝置,包括:確定模組,用於針對神經網路模型中的每一個神經元層,確定所述每個神經元層的模型參數集合,其中,所述模型參數集合包含多個模型參數;第一變換模組,用於對所述多個模型參數進行第一變換以生成多箇中間參數;量化模組,用於根據預設的量化步長對所述多箇中間參數進行量化,得到多個量化參數;採樣模組,用於根據預設的量化位數,從所述多個量化參數中選取多個採樣量化點;生成模組,用於根據所述多個量化參數的值和所述多個採樣量化點,生成所述多個模型參數的量化值;壓縮模組,用於根據所述量化值對所述多個模型參數進行壓縮存儲。
《神經網路模型壓縮方法以及裝置》實施例的神經網路模型壓縮裝置,可通過確定模組針對神經網路模型中的每一個神經元層,確定每個神經元層的模型參數集合,其中,模型參數集合包含多個模型參數,第一變換模組對多個模型參數進行第一變換以生成多箇中間參數,量化模組根據預設的量化步長對多箇中間參數進行量化,得到多個量化參數,採樣模組根據預設的量化位數,從多個量化參數中選取多個採樣量化點,生成模組根據多個量化參數的值和多個採樣量化點,生成多個模型參數的量化值,壓縮模組根據量化值對多個模型參數進行壓縮存儲。即根據需要壓縮的數據調節量化步長,並根據預設的量化位數,從排列在多個量化參數的靠前位置開始採取採樣量化點,可以更加充分的對壓縮數據進行採樣,更好地保留重要的權值信息,更好地保持模型效果,大大減少了神經網路模型的大小,減少了計算資源,特別是減少了記憶體資源的占用。
《神經網路模型壓縮方法以及裝置》第三方面實施例提出的非臨時性計算機可讀存儲介質,當所述存儲介質中的指令由電子設備的處理器被執行時,使得電子設備能夠執行一種神經網路模型壓縮方法,所述方法包括:針對神經網路模型中的每一個神經元層,確定所述每個神經元層的模型參數集合,其中,所述模型參數集合包含多個模型參數;對所述多個模型參數進行第一變換以生成多箇中間參數;根據預設的量化步長對所述多箇中間參數進行量化,得到多個量化參數;根據預設的量化位數,從所述多個量化參數中選取多個採樣量化點;根據所述多個量化參數的值和所述多個採樣量化點,生成所述多個模型參數的量化值;根據所述量化值對所述多個模型參數進行壓縮存儲。
《神經網路模型壓縮方法以及裝置》第四方面實施例提出的電腦程式產品,當所述電腦程式產品中的指令處理器執行時,執行一種神經網路模型壓縮方法,所述方法包括:針對神經網路模型中的每一個神經元層,確定所述每個神經元層的模型參數集合,其中,所述模型參數集合包含多個模型參數;對所述多個模型參數進行第一變換以生成多箇中間參數;根據預設的量化步長對所述多箇中間參數進行量化,得到多個量化參數;根據預設的量化位數,從所述多個量化參數中選取多個採樣量化點;根據所述多個量化參數的值和所述多個採樣量化點,生成所述多個模型參數的量化值;根據所述量化值對所述多個模型參數進行壓縮存儲。
《神經網路模型壓縮方法以及裝置》附加的方面和優點將在下面的描述中部分給出,部分將從下面的描述中變得明顯,或通過《神經網路模型壓縮方法以及裝置》的實踐了解到。

附圖說明

圖1是根據《神經網路模型壓縮方法以及裝置》一個實施例的神經網路模型壓縮方法的流程圖;
圖2是根據《神經網路模型壓縮方法以及裝置》一個實施例的神經網路模型壓縮方法的流程圖;
圖3是根據《神經網路模型壓縮方法以及裝置》一個實施例的神經網路模型壓縮裝置的結構示意圖;
圖4是根據《神經網路模型壓縮方法以及裝置》一個具體實施例的神經網路模型壓縮裝置的結構示意圖;
圖5是根據《神經網路模型壓縮方法以及裝置》另一個具體實施例的神經網路模型壓縮裝置的結構示意圖;
圖6是根據《神經網路模型壓縮方法以及裝置》又一個具體實施例的神經網路模型壓縮裝置的結構示意圖。

技術領域

《神經網路模型壓縮方法以及裝置》涉及計算機技術領域,尤其涉及一種神經網路模型壓縮方法以及裝置。

權利要求

1.一種神經網路模型壓縮方法,其特徵在於,包括以下步驟:針對神經網路模型中的每一個神經元層,確定所述每個神經元層的模型參數集合,其中,所述模型參數集合包含多個模型參數;對所述多個模型參數進行第一變換以生成多箇中間參數;根據預設的量化步長對所述多箇中間參數進行量化,得到多個量化參數;根據預設的量化位數,從所述多個量化參數中選取多個採樣量化點;根據所述多個量化參數的值和所述多個採樣量化點,生成所述多個模型參數的量化值;根據所述量化值對所述多個模型參數進行壓縮存儲。
2.如權利要求1所述的方法,其特徵在於,所述根據預設的量化位數,從所述多個量化參數中選取多個採樣量化點,包括:根據所述多個量化參數的值,對所述多個量化參數進行降序排列;根據所述預設的量化位數確定目標個數;從所述降序排列後的多個量化參數中,選取排列在前所述目標個數的量化參數;將所述排列在前所述目標個數的量化參數作為所述多個採樣量化點。
3.如權利要求1所述的方法,其特徵在於,所述根據預設的量化步長對所述多箇中間參數進行量化,得到多個量化參數,包括:針對每箇中間參數,將所述每箇中間參數量化至間隔為所述預設的量化步長的數軸上並取整,得到所述每箇中間參數對應的量化參數。
4.如權利要求2所述的方法,其特徵在於,所述根據所述多個量化參數的值和所述多個採樣量化點,生成所述多個模型參數的量化值,包括:針對第i個量化參數,分別計算所述第i個量化參數的值與每個採樣量化點之間的差值的平方值;從多個所述平方值中選取最小值,並確定所述多個所述平方值中最小值所對應的採樣量化點的標識值;當所述第i模型參數的值為正數時,將所述標識值作為所述第i模型參數的量化值;當所述第i模型參數的值為負數時,計算所述標識值與所述目標個數之間的和值,並將所述和值作為所述第i模型參數的量化值。
5.如權利要求1所述的方法,其特徵在於,還包括:對所述多個採樣量化點的值進行第二變換以生成量化字典,並存儲所述量化字典;當檢測需要使用所述多個模型參數時,根據所述多個模型參數的量化值和所述存儲的量化字典獲取所述多個模型參數的原始值。
6.如權利要求5所述的方法,其特徵在於,其中,所述第一變換為對數LOG變換;所述第二變換為指數變換。
7.如權利要求6所述的方法,其特徵在於,所述對所述多個採樣量化點的值進行第二變換以生成量化字典,包括:根據預設的變換模型對所述多個採樣量化點的值進行第二變換,並將經過所述第二變換後的多個採樣量化點的值進行組合以形成所述量化字典。
8.一種神經網路模型壓縮裝置,其特徵在於,包括:確定模組,用於針對神經網路模型中的每一個神經元層,確定所述每個神經元層的模型參數集合,其中,所述模型參數集合包含多個模型參數;第一變換模組,用於對所述多個模型參數進行第一變換以生成多箇中間參數;量化模組,用於根據預設的量化步長對所述多箇中間參數進行量化,得到多個量化參數;採樣模組,用於根據預設的量化位數,從所述多個量化參數中選取多個採樣量化點;生成模組,用於根據所述多個量化參數的值和所述多個採樣量化點,生成所述多個模型參數的量化值;壓縮模組,用於根據所述量化值對所述多個模型參數進行壓縮存儲。
9.如權利要求8所述的裝置,其特徵在於,所述採樣模組包括:排練單元,用於根據所述多個量化參數的值,對所述多個量化參數進行降序排列;確定單元,用於根據所述預設的量化位數確定目標個數;選取單元,用於從所述降序排列後的多個量化參數中,選取排列在前所述目標個數的量化參數;獲取單元,用於將所述排列在前所述目標個數的量化參數作為所述多個採樣量化點。
10.如權利要求8所述的裝置,其特徵在於,所述量化模組具體用於:針對每箇中間參數,將所述每箇中間參數量化至間隔為所述預設的量化步長的數軸上並取整,得到所述每箇中間參數對應的量化參數。
11.如權利要求9所述的裝置,其特徵在於,所述生成模組包括:計算單元,用於針對第i個量化參數,分別計算所述第i個量化參數的值與每個採樣量化點之間的差值的平方值;確定單元,用於從多個所述平方值中選取最小值,並確定所述多個所述平方值中最小值所對應的採樣量化點的標識值;生成單元,用於在所述第i模型參數的值為正數時,將所述標識值作為所述第i模型參數的量化值,並在所述第i模型參數的值為負數時,計算所述標識值與所述目標個數之間的和值,並將所述和值作為所述第i模型參數的量化值。
12.如權利要求8所述的裝置,其特徵在於,還包括:第二變換模組,用於對所述多個採樣量化點的值進行第二變換以生成量化字典;存儲模組,用於存儲所述量化字典;解壓模組,用於在檢測需要使用所述多個模型參數時,根據所述多個模型參數的量化值和所述存儲的量化字典獲取所述多個模型參數的原始值。
13.如權利要求12所述的裝置,其特徵在於,其中,所述第一變換為對數LOG變換;所述第二變換為指數變換。
14.如權利要求13所述的裝置,其特徵在於,所述第二變換模組具體用於:根據預設的變換模型對所述多個採樣量化點的值進行第二變換,並將經過所述第二變換後的多個採樣量化點的值進行組合以形成所述量化字典。

實施方式

操作內容

圖1是根據《神經網路模型壓縮方法以及裝置》一個實施例的神經網路模型壓縮方法的流程圖。《神經網路模型壓縮方法以及裝置》實施例的神經網路模型壓縮方法可套用於《神經網路模型壓縮方法以及裝置》實施例的神經網路模型壓縮裝置中。
《神經網路模型壓縮方法以及裝置》實施例的神經網路模型壓縮方法是針對已經訓練收斂的神經網路模型的參數進行壓縮。如圖1所示,該神經網路模型壓縮方法可以包括:
S110,針對神經網路模型中的每一個神經元層,確定每個神經元層的模型參數集合,其中,模型參數集合包含多個模型參數。需要說明的是,由於對於神經網路的每個layer(神經元層)的壓縮方法是一樣的,所以《神經網路模型壓縮方法以及裝置》實施例的神經網路模型壓縮方法僅是示出了對神經網路模型中的一個layer(神經元層)進行了描述,可以理解,神經網路模型的其他神經元層也可通過該神經網路模型壓縮方法來實現量化壓縮的目的。其中,上述神經元層可以是神經網路中的輸入層、輸出層和隱含層中的任意一個,也可以是神經網路中隱含層的任一個神經元層,在此不做具體限定。具體地,對於神經網路模型中的每一個神經元層,可找出該神經元層中的所有模型參數,並將這些模型參數用集合方式進行表示,得到該神經元層的模型參數集合。
S120,對多個模型參數進行第一變換以生成多箇中間參數。為了實現對神經網路模型中的參數進行量化壓縮的目的,《神經網路模型壓縮方法以及裝置》可先對模型參數進行第一變換,以使模型參數變換成浮點數。可以理解,將模型參數變換成浮點數的方式有很多種,例如,該第一變換可以是LOG對數變換、正弦函式正切函式等。優選地,在《神經網路模型壓縮方法以及裝置》的實施例中,該第一變換為LOG對數變換。為了能夠在後續實際套用中,能夠對壓縮的數據進行解壓以實現正常使用的目的,在後續還需對壓縮後的參數值進行第二變換,使其變換為原數據類型,即可以理解,即第一變換和第二變換可以是任一種函式,只需第二變換與第一變換互為正反函式。優選地,該第一變換為LOG變換,第二變換為指數變換。例如,以第一變換為LOG變換為例,假設模型參數集合為M,xi是M中的元素,即xi是模型參數集合中的第i個模型參數,可分別對模型參數集合M中的每個模型參數進行LOG變換,得到LOG參數集合L,該LOG參數集合L中的元素即為上述的中間參數。其中,可通過以下公式(1)實現對模型參數集合M中的元素xi進行LOG變換:yi=log(|xi|)(1)其中,yi為中間參數,yi∈L。
S130,根據預設的量化步長對多箇中間參數進行量化,得到多個量化參數。具體地,可通過預設的量化公式,分別將每箇中間參數量化到間隔為該預設的量化步長的數軸上並取整,得到該中間參數對應的量化參數的值。其中,上述預設的量化步長可以是根據實際需求決定的,也可以是根據實際試驗而得到的經驗值,例如,該預設的量化步長可為0.125。其中,在《神經網路模型壓縮方法以及裝置》的實施例中,上述預設的量化公式可為:
神經網路模型壓縮方法以及裝置
量化公式
其中,qi為第i個量化參數的值,第i個量化參數是由第i箇中間參數進行量化後得到的,yi為第i箇中間參數,第i箇中間參數是由第i個模型參數進行第一變換後得到的,l為預設的量化步長,round()為取整函式。
S140,根據預設的量化位數,從多個量化參數中選取多個採樣量化點。具體地,可根據多個量化參數的值,對多個量化參數進行降序排列,並根據預設的量化位數確定目標個數,之後,從降序排列後的多個量化參數中,選取排列在前目標個數的量化參數,最後,將排列在前目標個數的量化參數作為多個採樣量化點。作為一種示例,上述目標個數可為2b-1,其中,b為預設的量化位數。其中,上述預設的量化位數可以是根據實際需求決定的,也可以是根據實際試驗而得到的經驗值,例如,該預設的量化位數可為8。也就是說,可對多個量化參數的值進行從大到小排序,並從排序後的多個量化參數的值中,選取排列靠前目標個數(如Top2b-1)的值,將這些排列靠前Top2b-1的值所對應的量化參數作為採樣量化點。
S150,根據多個量化參數的值和多個採樣量化點,生成多個模型參數的量化值。具體而言,在《神經網路模型壓縮方法以及裝置》的一個實施例中,可針對第i個量化參數,分別計算第i個量化參數的值與每個採樣量化點之間的差值的平方值,之後,從多個平方值中選取最小值,並確定多個平方值中最小值所對應的採樣量化點的標識值,當第i模型參數的值為正數時,將標識值作為第i模型參數的量化值;當第i模型參數的值為負數時,計算標識值與目標個數之間的和值,並將和值作為第i模型參數的量化值。舉例而言,遍歷模型參數集合M的元素xi,通過上述得到的該元素xi所對應的量化。參數的值,查找多個採樣量化點,使得滿足以下公式(3):id=argjminj(qi-log_dict[j])2(3)其中,qi為元素xi所對應的量化參數的值,log_dict[j]為第j採樣量化點的值,id為上述標識值。在獲得該標識值之後,需判斷該元素xi是正數還是負數,當該元素xi為正數時,該標識值即為第i模型參數的量化值;當該元素xi為負數時,可計算該標識值與目標個數之間的和值,如id=id=2b-1,並將該和值作為第i模型參數的量化值。可以看出,《神經網路模型壓縮方法以及裝置》通過將原神經網路模型的模型參數用量化點的值(實際上是量化點的id)來代替,最終,這裡的id是一個0~2b-1的數,只需用b個bit(位)保存即可,達到了壓縮的目的。
S160,根據量化值對多個模型參數進行壓縮存儲。也就是說,在得到每個模型參數的量化值之後,可根據每個模型參數的量化值,對每個模型參數進行壓縮存儲,以達到壓縮的目的。
綜上,《神經網路模型壓縮方法以及裝置》實施例的神經網路模型壓縮方法,關鍵在於量化點的選取,首先是通過第一變換(如LOG變換)將模型參數變換到LOG域,再對該LOG域上的數值選取採樣量化點,然後,將原神經網路模型的模型參數用採樣量化點的值(即採樣量化點的id)來代替,最終得到模型參數的取值只在採樣量化點集合之內的量化模型,最後,再經過壓縮存儲達到壓縮的目的。
《神經網路模型壓縮方法以及裝置》實施例的神經網路模型壓縮方法,針對神經網路模型中的每一個神經元層,確定每個神經元層的模型參數集合,其中,模型參數集合包含多個模型參數,之後,對多個模型參數進行第一變換以生成多箇中間參數,並根據預設的量化步長對多箇中間參數進行量化,得到多個量化參數,然後,根據預設的量化位數,從多個量化參數中選取多個採樣量化點,之後,根據多個量化參數的值和多個採樣量化點,生成多個模型參數的量化值,最後,根據量化值對多個模型參數進行壓縮存儲。即根據需要壓縮的數據調節量化步長,並根據預設的量化位數,從排列在多個量化參數的靠前位置開始採取採樣量化點,可以更加充分的對壓縮數據進行採樣,更好地保留重要的權值信息,更好地保持模型效果,大大減少了神經網路模型的大小,減少了計算資源,特別是減少了記憶體資源的占用。
圖2是根據《神經網路模型壓縮方法以及裝置》另一個實施例的神經網路模型壓縮方法的流程圖。為了提高《神經網路模型壓縮方法以及裝置》的可用性以及可行性,在《神經網路模型壓縮方法以及裝置》的實施例中,在對模型參數進行壓縮的過程中,還可根據預設的變換模型對多個採樣量化點的值進行第二變換,並將經過第二變換後的多個採樣量化點的值進行組合以形成量化字典,使得在需要使用模型參數時,可通過查找該量化字典即可得出該模型參數的原始值。具體地,如圖2所示,該神經網路模型壓縮方法可以包括:
S210,針對神經網路模型中的每一個神經元層,確定每個神經元層的模型參數集合,其中,模型參數集合包含多個模型參數。
S220,對多個模型參數進行第一變換以生成多箇中間參數。
S230,根據預設的量化步長對多箇中間參數進行量化,得到多個量化參數。
S240,根據預設的量化位數,從多個量化參數中選取多個採樣量化點。
具體地,可根據多個量化參數的值,對多個量化參數進行降序排列,並根據預設的量化位數確定目標個數,之後,從降序排列後的多個量化參數中,選取排列在前目標個數的量化參數,最後,將排列在前目標個數的量化參數作為多個採樣量化點。作為一種示例,上述目標個數可為2b-1,其中,b為預設的量化位數。
S250,根據多個量化參數的值和多個採樣量化點,生成多個模型參數的量化值。具體而言,在《神經網路模型壓縮方法以及裝置》的一個實施例中,可針對第i個量化參數,分別計算第i個量化參數的值與每個採樣量化點之間的差值的平方值,之後,從多個平方值中選取最小值,並確定多個平方值中最小值所對應的採樣量化點的標識值,當第i模型參數的值為正數時,將標識值作為第i模型參數的量化值;當第i模型參數的值為負數時,計算標識值與目標個數之間的和值,並將和值作為第i模型參數的量化值。
S260,根據量化值對多個模型參數進行壓縮存儲。
S270,對多個採樣量化點的值進行第二變換以生成量化字典,並存儲量化字典。作為一種示例,,該第二變換可為指數變換。具體而言,在《神經網路模型壓縮方法以及裝置》的一個實施例中,可根據預設的變換模型對多個採樣量化點的值進行第二變換,並將經過第二變換後的多個採樣量化點的值進行組合以形成量化字典。其中,在《神經網路模型壓縮方法以及裝置》的實施例中,該預設的變換模型可為:
神經網路模型壓縮方法以及裝置
變換模型
其中,quant_dict[i]為量化字典中第i的元素,b為預設的量化位數,2b-1為目標個數,exp()為指數變換,log_dict[i]為多個採樣量化點中第i元素的值。舉例而言,以2b-1個採樣量化點為例,可對每個採樣量化點的值進行指數變換,並將指數變換結果加上正負號,得到2b個量化權值組成的量化字典quant_dict,使得量化字典中的每個元素滿足以上式(4)。
可選地,上述步驟S270可以是在上述步驟S240之後被執行,也可以是在步驟S260被執行時,執行該步驟S270,即可在根據量化值對多個模型參數進行壓縮存儲時,可也對多個採樣量化點的值進行第二變換以生成量化字典,並存儲該量化字典,具體執行順序不做具體限制,只要能夠被《神經網路模型壓縮方法以及裝置》的實施例所屬技術領域的技術人員所理解,實現神經網路模型壓縮的目的即可。
S280,當檢測需要使用多個模型參數時,根據多個模型參數的量化值和存儲的量化字典獲取多個模型參數的原始值。具體地,可根據量化值對多個模型參數進行壓縮存儲,並可將量化字典進行存儲,這樣,在監測到需要使用神經網路模型中的模型參數時,可根據該模型參數的量化值查找已存儲的量化字典,即可得到該模型參數的原始值。可以理解,壓縮存儲的思想就是只存儲有限(如2b)個採樣量化點的量化權值組成的量化字典,然後,神經網路模型的模型參數使用採樣量化點的id來表示,在檢測到需要使用神經網路模型中的模型參數時,通過查找該量化字典即可得到該模型參數的原始值。其中,量化字典的大小可以忽略,例如,當量化字典大小為256時,量化後的神經網路模型保存模型參數的量化值id只需要用8bit表示即可,而原來的單精度浮點數卻需要32bit,這樣可以達到壓縮的目的。《神經網路模型壓縮方法以及裝置》實施例的神經網路模型壓縮方法,在對模型參數進行壓縮的過程中,還可根據預設的變換模型對多個採樣量化點的值進行第二變換,並將經過第二變換後的多個採樣量化點的值進行組合以形成量化字典,使得在需要使用模型參數時,可通過查找該量化字典即可得出該模型參數的原始值,提高了《神經網路模型壓縮方法以及裝置》的可用性以及可行性。與上述幾種實施例提供的神經網路模型壓縮方法相對應,《神經網路模型壓縮方法以及裝置》的一種實施例還提供一種神經網路模型壓縮裝置,由於《神經網路模型壓縮方法以及裝置》實施例提供的神經網路模型壓縮裝置與上述幾種實施例提供的神經網路模型壓縮方法相對應,因此在前述神經網路模型壓縮方法的實施方式也適用於該實施例提供的神經網路模型壓縮裝置,在該實施例中不再詳細描述。圖3是根據《神經網路模型壓縮方法以及裝置》一個實施例的神經網路模型壓縮裝置的結構示意圖。如圖3所示,該神經網路模型壓縮裝置可以包括:確定模組310、第一變換模組320、量化模組330、採樣模組340、生成模組350和壓縮模組360。
具體地,確定模組310可用於針對神經網路模型中的每一個神經元層,確定每個神經元層的模型參數集合,其中,模型參數集合包含多個模型參數。第一變換模組320可用於對多個模型參數進行第一變換以生成多箇中間參數。量化模組330可用於根據預設的量化步長對多箇中間參數進行量化,得到多個量化參數。具體而言,在《神經網路模型壓縮方法以及裝置》的一個實施例中,該量化模組330根據預設的量化步長對多箇中間參數進行量化,得到多個量化參數的具體實現過程可如下:針對每箇中間參數,將每箇中間參數量化至間隔為預設的量化步長的數軸上並取整,得到每箇中間參數對應的量化參數。採樣模組340可用於根據預設的量化位數,從多個量化參數中選取多個採樣量化點。作為一種示例,如圖4所示,該採樣模組340可包括:排練單元341、確定單元342、選取單元343和獲取單元344。其中,排練單元341用於根據多個量化參數的值,對多個量化參數進行降序排列。確定單元342用於根據預設的量化位數確定目標個數。選取單元343用於從降序排列後的多個量化參數中,選取排列在前目標個數的量化參數。獲取單元344用於將排列在前目標個數的量化參數作為多個採樣量化點。生成模組350可用於根據多個量化參數的值和多個採樣量化點,生成多個模型參數的量化值。作為一種示例,如圖5所示,該生成模組350可以包括:計算單元351、確定單元352和生成單元353。其中,計算單元351可用於針對第i個量化參數,分別計算第i個量化參數的值與每個採樣量化點之間的差值的平方值。確定單元352可用於從多個平方值中選取最小值,並確定多個平方值中最小值所對應的採樣量化點的標識值。生成單元353可用於在第i模型參數的值為正數時,將標識值作為第i模型參數的量化值,並在第i模型參數的值為負數時,計算標識值與目標個數之間的和值,並將和值作為第i模型參數的量化值。壓縮模組360可用於根據量化值對多個模型參數進行壓縮存儲。
為了提高《神經網路模型壓縮方法以及裝置》的可用性以及可行性,進一步地,在《神經網路模型壓縮方法以及裝置》的一個實施例中,如圖6所示,該神經網路模型壓縮裝置還可包括:第二變換模組370、存儲模組380和解壓模組390。其中,第二變換模組370可用於對多個採樣量化點的值進行第二變換以生成量化字典。存儲模組380可用於存儲量化字典。解壓模組390可用於在檢測需要使用多個模型參數時,根據多個模型參數的量化值和存儲的量化字典獲取多個模型參數的原始值。其中,在《神經網路模型壓縮方法以及裝置》的實施例中,第一變換為對數LOG變換,第二變換為指數變換。

實現過程

作為一種示例,第二變換模組370對多個採樣量化點的值進行第二變換以生成量化字典的具體實現過程可如下:根據預設的變換模型對多個採樣量化點的值進行第二變換,並將經過第二變換後的多個採樣量化點的值進行組合以形成量化字典。其中,在《神經網路模型壓縮方法以及裝置》的實施例中,預設的變換模型為:[0088]quant_dict[i]=-1*quant_dict[i+2b-1][0089]quant_dict[i]=exp(log_dict[i])[0090]其中,quant_dict[i]為量化字典中第i的元素,b為預設的量化位數,2b-1為目標個數,exp()為指數變換,log_dict[i]為多個採樣量化點中第i元素的值。
《神經網路模型壓縮方法以及裝置》實施例的神經網路模型壓縮裝置,可通過確定模組針對神經網路模型中的每一個神經元層,確定每個神經元層的模型參數集合,其中,模型參數集合包含多個模型參數,第一變換模組對多個模型參數進行第一變換以生成多箇中間參數,量化模組根據預設的量化步長對多箇中間參數進行量化,得到多個量化參數,採樣模組根據預設的量化位數,從多個量化參數中選取多個採樣量化點,生成模組根據多個量化參數的值和多個採樣量化點,生成多個模型參數的量化值,壓縮模組根據量化值對多個模型參數進行壓縮存儲。即根據需要壓縮的數據調節量化步長,並根據預設的量化位數,從排列在多個量化參數的靠前位置開始採取採樣量化點,可以更加充分的對壓縮數據進行採樣,更好地保留重要的權值信息,更好地保持模型效果,大大減少了神經網路模型的大小,減少了計算資源,特別是減少了記憶體資源的占用。
在《神經網路模型壓縮方法以及裝置》的描述中,需要理解的是,術語“第一”、“第二”僅用於描述目的,而不能理解為指示或暗示相對重要性或者隱含指明所指示的技術特徵的數量。由此,限定有“第一”、“第二”的特徵可以明示或者隱含地包括至少一個該特徵。在《神經網路模型壓縮方法以及裝置》的描述中,“多個”的含義是至少兩個,例如兩個,三個等,除非另有明確具體的限定。
在該說明書的描述中,參考術語“一個實施例”、“一些實施例”、“示例”、“具體示例”、或“一些示例”等的描述意指結合該實施例或示例描述的具體特徵、結構、材料或者特點包含於《神經網路模型壓縮方法以及裝置》的至少一個實施例或示例中。在該說明書中,對上述術語的示意性表述不必須針對的是相同的實施例或示例。而且,描述的具體特徵、結構、材料或者特點可以在任一個或多個實施例或示例中以合適的方式結合。此外,在不相互矛盾的情況下,該領域的技術人員可以將該說明書中描述的不同實施例或示例以及不同實施例或示例的特徵進行結合和組合。
流程圖中或在此以其他方式描述的任何過程或方法描述可以被理解為,表示包括一個或更多個用於實現特定邏輯功能或過程的步驟的可執行指令的代碼的模組、片段或部分,並且《神經網路模型壓縮方法以及裝置》的優選實施方式的範圍包括另外的實現,其中可以不按所示出或討論的順序,包括根據所涉及的功能按基本同時的方式或按相反的順序,來執行功能,這應被《神經網路模型壓縮方法以及裝置》的實施例所屬技術領域的技術人員所理解。
在流程圖中表示或在此以其他方式描述的邏輯和/或步驟,例如,可以被認為是用於實現邏輯功能的可執行指令的定序列表,可以具體實現在任何計算機可讀介質中,以供指令執行系統、裝置或設備(如基於計算機的系統、包括處理器的系統或其他可以從指令執行系統、裝置或設備取指令並執行指令的系統)使用,或結合這些指令執行系統、裝置或設備而使用。就該說明書而言,“計算機可讀介質”可以是任何可以包含、存儲、通信、傳播或傳輸程式以供指令執行系統、裝置或設備或結合這些指令執行系統、裝置或設備而使用的裝置。計算機可讀介質的更具體的示例(非窮盡性列表)包括以下:具有一個或多個布線的電連線部(電子裝置),攜帶型計算機盤盒(磁裝置),隨機存取存儲器(RAM),唯讀存儲器(ROM),可擦除可編輯唯讀存儲器(EPROM或閃速存儲器),光纖裝置,以及攜帶型光碟唯讀存儲器(CDROM)。另外,計算機可讀介質甚至可以是可在其上列印所述程式的紙或其他合適的介質,因為可以例如通過對紙或其他介質進行光學掃描,接著進行編輯、解譯或必要時以其他合適方式進行處理來以電子方式獲得所述程式,然後將其存儲在計算機存儲器中。
《神經網路模型壓縮方法以及裝置》的各部分可以用硬體、軟體、固件或它們的組合來實現。在上述實施方式中,多個步驟或方法可以用存儲在存儲器中且由合適的指令執行系統執行的軟體或固件來實現。例如,如果用硬體來實現,和在另一實施方式中一樣,可用該領域公知的下列技術中的任一項或他們的組合來實現:具有用於對數據信號實現邏輯功能的邏輯門電路的離散邏輯電路,具有合適的組合邏輯門電路的專用積體電路,可程式門陣列(PGA),現場可程式門陣列(FPGA)等。

實施特點

該技術領域的普通技術人員可以理解實現上述實施例方法攜帶的全部或部分步驟是可以通過程式來指令相關的硬體完成,所述的程式可以存儲於一種計算機可讀存儲介質中,該程式在執行時,包括方法實施例的步驟之一或其組合。
此外,在《神經網路模型壓縮方法以及裝置》各個實施例中的各功能單元可以集成在一個處理模組中,也可以是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個模組中。上述集成的模組既可以採用硬體的形式實現,也可以採用軟體功能模組的形式實現。所述集成的模組如果以軟體功能模組的形式實現並作為獨立的產品銷售或使用時,也可以存儲在一個計算機可讀取存儲介質中。
上述實施例是示例性的,不能理解為對《神經網路模型壓縮方法以及裝置》的限制,該領域的普通技術人員在《神經網路模型壓縮方法以及裝置》的範圍內可以對上述實施例進行變化、修改、替換和變型

榮譽表彰

2021年6月24日,《神經網路模型壓縮方法以及裝置》獲得第二十二屆中國專利優秀獎。

相關詞條

熱門詞條

聯絡我們