TWI840438B - 用於壓縮神經網路的激活映射的系統與方法以及用於對神經網路的經稀疏化的激活映射進行解壓縮的方法 - Google Patents
用於壓縮神經網路的激活映射的系統與方法以及用於對神經網路的經稀疏化的激活映射進行解壓縮的方法 Download PDFInfo
- Publication number
- TWI840438B TWI840438B TW108139903A TW108139903A TWI840438B TW I840438 B TWI840438 B TW I840438B TW 108139903 A TW108139903 A TW 108139903A TW 108139903 A TW108139903 A TW 108139903A TW I840438 B TWI840438 B TW I840438B
- Authority
- TW
- Taiwan
- Prior art keywords
- tensor
- block
- activation map
- coding
- lossless compression
- Prior art date
Links
- 230000004913 activation Effects 0.000 title claims abstract description 130
- 238000000034 method Methods 0.000 title claims abstract description 64
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 56
- 230000006835 compression Effects 0.000 claims abstract description 163
- 238000007906 compression Methods 0.000 claims abstract description 163
- 230000006837 decompression Effects 0.000 claims abstract description 12
- 230000006870 function Effects 0.000 description 8
- 238000012549 training Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 7
- 238000013139 quantization Methods 0.000 description 6
- 238000002059 diagnostic imaging Methods 0.000 description 2
- 238000003709 image segmentation Methods 0.000 description 2
- 238000003058 natural language processing Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000000712 assembly Effects 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
Abstract
一種系統及一種方法提供對神經網路的層的激活映射的壓縮及解壓縮。對於壓縮而言,所述激活映射的值被稀疏化且所述激活映射被配置成具有為H x W x C的張量大小的張量,其中H表示所述張量的高度,W表示所述張量的寬度,且C表示所述張量的通道的數目。所述張量被格式化成值的至少一個區塊。每一區塊使用至少一種無損壓縮模式而獨立於所述張量的其他區塊被編碼。對於解碼而言,每一區塊使用與用於對所述區塊進行壓縮的所述至少一種壓縮模式對應的至少一種解壓縮模式而獨立於其他區塊被解碼;並被解格式化成具有為H x W x C的大小的張量。
Description
本文所揭露的標的大體而言是有關於一種提供對神經網路的激活映射的有損編碼/解碼以降低記憶體要求並加速神經網路的執行的一種系統及一種方法。
[相關申請案的交叉參考]
本專利申請案主張在2018年11月5日提出申請的美國臨時專利申請案第62/756,067號以及在2018年12月17日提出申請的美國非臨時專利申請案第16/223,092號的優先權,所述美國臨時專利申請案及美國非臨時專利申請案的揭露內容全文併入本案供參考。
深度神經網路最近已在自電腦視覺(影像分類、影像分割)、自然語言處理(詞階預測、語音辨識及機器翻譯)至醫療成像等廣泛的應用範圍中佔據主導地位。專用硬體已被設計成盡可能高效地運行深度神經網路。然而,在軟體方面,一些研究著重於將運行時期間該些網路的記憶體及計算要求最小化。
當試圖在具有有限的記憶體的嵌入式裝置上訓練神經網路時,盡可能地將演算法的記憶體要求最小化是至關重要的。在訓練期間,大部分的記憶體實際上被激活映射佔用。舉例而言,當前深度神經網路系統的激活映射消耗系統所需總記憶體的近似60%與85%之間。因此,減小與激活映射相關聯的記憶體佔用面積成為減小訓練演算法的整體記憶體佔用面積的重要部分。
在其中使用線性整流單元(Rectified Linear Unit,ReLU)作為激活函數的神經網路中,激活映射趨於變得稀疏。舉例而言,在起初-V3(Inception-V3)模型中,大部分的激活映射的稀疏度大於50%,且在一些情形中超過90%。因此,對於可達成此稀疏度的壓縮系統存在強烈的市場需求以降低訓練演算法的記憶體要求。
本發明的示例性實施例提供一種用於壓縮神經網路的層的激活映射的系統,其中所述系統可包括處理器,所述處理器被程式化以啟動可執行操作,所述可執行操作包括:使用所述處理器對所述激活映射的非零值的數目進行稀疏化;將所述激活映射配置成具有為H x W x C的張量大小的張量,其中H表示所述張量的高度,W表示所述張量的寬度,且C表示所述張量的通道的數目;將所述張量格式化成值的至少一個區塊;以及使用至少一種無損壓縮模式獨立於所述張量的其他區塊對所述至少一個區塊進行編碼。在一個實施例中,所述至少一種無損壓縮模式可選自包括以下在內的群組:指數-哥倫布(Exponential-Golomb)編碼、稀疏-指數-哥倫布(Sparse-Exponential-Golomb)編碼、稀疏-指數-哥倫布-刪除最小值(Sparse-Exponential-Golomb-RemoveMin)編碼、哥倫布-萊斯(Golomb-Rice)編碼、指數-尾數(Exponent-Mantissa)編碼、零編碼、固定長度編碼及稀疏固定長度編碼。在另一實施例中,選擇用於對所述至少一個區塊進行編碼的所述至少一種無損壓縮模式可不同於選擇用於對所述張量的另一區塊進行編碼的無損壓縮模式。在再一實施例中,可使用多種所述無損壓縮模式獨立於所述張量的其他區塊對所述至少一個區塊進行編碼。
本發明的另一示例性實施例提供一種用於壓縮神經網路的激活映射的方法,所述方法可包括使用處理器對所述激活映射的非零值的數目進行稀疏化;將所述激活映射配置成具有為H x W x C的張量大小的張量,其中H表示所述張量的高度,W表示所述張量的寬度,且C表示所述張量的通道的數目;將所述張量格式化成值的至少一個區塊;以及使用至少一種無損壓縮模式獨立於所述張量的其他區塊對所述至少一個區塊進行編碼。在一個實施例中,所述至少一種無損壓縮模式可選自包括以下在內的群組:指數-哥倫布編碼、稀疏-指數-哥倫布編碼、稀疏-指數-哥倫布-刪除最小值編碼、哥倫布-萊斯編碼、指數-尾數編碼、零編碼、固定長度編碼及稀疏固定長度編碼。在另一實施例中,選擇用於對所述至少一個區塊進行編碼的所述至少一種無損壓縮模式可不同於選擇用於對所述張量的另一區塊進行壓縮的無損壓縮模式。在再一實施例中,對所述至少一個區塊進行編碼可更包括使用多種所述無損壓縮模式獨立於所述張量的其他區塊對所述至少一個區塊進行編碼。在一個實施例中,所述方法可更包括輸出經編碼的所述至少一個區塊作為位元流。
本發明的再一示例性實施例提供一種用於對神經網路的經稀疏化的激活映射進行解壓縮的方法,所述方法可包括:使用處理器來對表示經稀疏化的所述激活映射的值的位元流的值的經壓縮的區塊進行解壓縮以形成值的至少一個經解壓縮的區塊,所述值的經解壓縮的區塊使用與用於對所述至少一個區塊進行壓縮的至少一種無損壓縮模式對應的至少一種解壓縮模式而獨立於所述激活映射的其他區塊被解壓縮;以及將所述經解壓縮的區塊解格式化成具有為H x W x C的大小的張量的一部分,其中H表示所述張量的高度,W表示所述張量的寬度,且C表示所述張量的通道的數目,所述張量是所述經解壓縮的激活映射。在一個實施例中,所述至少一種無損壓縮模式可選自包括以下在內的群組:指數-哥倫布編碼、稀疏-指數-哥倫布編碼、稀疏-指數-哥倫布-刪除最小值編碼、哥倫布-萊斯編碼、指數-尾數編碼、零編碼、固定長度編碼及稀疏固定長度編碼。在一個實施例中,所述方法可更包括:使用所述處理器對所述激活映射的非零值的數目進行稀疏化;將所述激活映射配置成具有為H x W x C的張量大小的張量;將所述張量格式化成值的至少一個區塊;以及使用至少一種無損壓縮模式獨立於所述張量的其他區塊對所述至少一個區塊進行編碼。在一個實施例中,選擇用於對所述至少一個區塊進行壓縮的所述至少一種無損壓縮模式可不同於選擇用於對所接收的所述至少一個激活映射的所述張量的另一區塊進行壓縮的無損壓縮模式,且對所述至少一個區塊進行壓縮可更包括使用多種所述無損壓縮模式獨立於所接收的所述至少一個激活映射的所述張量的其他區塊對所述至少一個區塊進行壓縮。
在以下詳細說明中,闡述諸多具體細節來提供對本揭露的透徹理解。然而,熟習此項技術者應理解,無需該些具體細節亦可實踐所揭露的各個態樣。在其他情形中,未詳細闡述眾所習知的方法、流程、組件及電路,以免使本文所揭露標的模糊不清。
本說明書通篇中所提及的「一個實施例(one embodiment)」或「實施例(an embodiment)」意指結合所述實施例所闡述的特定特徵、結構或特性可包括於本文所揭露的至少一個實施例中。因此,在本說明書通篇中各處出現的片語「在一個實施例中(in one embodiment)」或「在實施例中(in an embodiment)」或者「根據一個實施例(according to one embodiment)」(或具有相似含義的其他片語)可能未必均指同一實施例。此外,在一或多個實施例中,特定特徵、結構或特性可採用任何適合的方式進行組合。就此而言,本文所用的詞「示例性(exemplary)」意指「用作實例、例子或例示」。本文被闡述為「示例性」的任何實施例不應被視為與其他實施例相比必定是優選的或有利的。另外,根據本文中的論述的上下文而定,單數用語可包括對應的複數形式且複數用語可包括對應的單數形式。更應注意,本文中所示及所論述的各個圖(包括組件圖)僅是出於例示目的,而並非按比例繪制。相似地,示出各種波形及時序圖僅是用於例示目的。舉例而言,為清晰起見,可相對於其他元件誇大元件中的一些元件的尺寸。另外,在適當情況下,在各圖中重複使用參考編號來指示對應的元件及/或類似元件。
本文所用術語僅是用於闡述特定示例性實施例的目的,而非旨在限制所主張標的。除非上下文另外清楚地指明,否則本文所用單數形式「一(a、an)」及「所述(the)」旨在亦包括複數形式。更應理解,當在本說明書中使用用語「包括(comprises及/或comprising)」時,是指明所陳述特徵、整數、步驟、操作、元件及/或組件的存在,但不排除一或多個其他特徵、整數、步驟、操作、元件、組件及/或其群組的存在或添加。本文所用用語「第一(first)」、「第二(second)」等被用作位於所述用語後面的名詞的標簽,且除非明確定義,否則所述用語並不隱含著任何類型的次序(例如,空間次序、時間次序、邏輯次序等)。此外,在二或更多個圖中可使用相同的參考編號來指代具有相同或相似的功能的部件、組件、區塊、電路、單元或模組。然而,此種用法僅是為了使例示簡潔且易於論述起見;所述用法並不隱含著此種組件或單元的構造細節或架構細節在所有實施例中均是相同的或者該些共同提及的部件/模組是實施本文所揭露特定實施例的教示內容的唯一方式。
除非另外定義,否則本文所用所有用語(包括技術及科學用語)的含義均與本標的所屬技術中具有通常知識者所通常理解的含義相同。更應理解,用語(例如在常用詞典中所定義的用語)應被解釋為具有與其在相關技術的上下文中的含義一致的含義,且除非在本文中明確定義,否則不應將其解釋為具有理想化或過於正式的意義。
本文所揭露標的是有關於一種系統及一種方法,所述系統及方法提供神經網路激活映射的有損壓縮以降低記憶體要求並加速神經網路的執行。在一個實施例中,使用以下三個一般階段來提供有損壓縮流水線:稀疏化階段、量化階段及熵編碼階段。在稀疏化階段中,可對神經網路的激活映射進行稀疏化以減少激活映射的非零值的數目。在量化階段中,對每一層的激活映射進行量化。在熵編碼階段中,可將經量化的激活映射劃分成較小的單元(在本文中稱為壓縮區塊),所述較小的單元使用各種不同的壓縮模式進行壓縮。在一個實施例中,對壓縮區塊進行壓縮以產生表示神經網路的層的經壓縮的激活映射的位元流。壓縮單元可被解壓縮、解量化並重新格式化成經稀疏化的激活映射的原始形狀。可使用具有相對低的複雜度的硬體來實行本文所揭露的技術。應注意,即使稀疏化使過程有損,亦可使用本文所揭露的技術來壓縮神經網路的激活映射而不會降低精度。
可獨立於其他層的激活映射的編碼並根據訓練演算法的需要對神經網路的每一層的激活映射實行編碼及解碼。儘管本文所揭露的無損編碼/解碼技術可壓縮所有程度的稀疏度(包括0%及接近100%稀疏度),但是若激活映射中的零值的數目相對高,則可使本文所揭露的技術最佳化。亦即,本文所揭露的系統及方法對於對應的較高程度的稀疏度而言達成較高程度的壓縮。另外,本文所揭露的標的提供對現有壓縮演算法的若干修改,該些修改可用於利用激活映射的資料的稀疏度來達成更大程度的壓縮。
在一個實施例中,編碼器可被配置成接收大小為H x W x C的張量作為輸入,其中H對應於輸入張量的高度,W對應於輸入張量的寬度,且C對應於輸入張量的通道的數目。所接收的張量可被格式化成較小的區塊(在本文中稱為「壓縮單元」)。可使用各種不同的壓縮模式獨立地壓縮壓縮單元。編碼器產生的輸出是經壓縮的壓縮單元的位元流。當壓縮單元被解壓縮時,將所述壓縮單元重新格式化成其原始形狀,作為大小為H x W x C的張量的至少一部分。
本文所揭露的技術可應用於降低神經網路的激活映射的記憶體要求,所述神經網路被配置成提供應用,例如但不限於電腦視覺(影像分類、影像分割)、自然語言處理(詞階預測、語音辨識及機器翻譯)以及醫療成像。神經網路應用可用於自動車輛、行動裝置、機器人及/或其他低功率裝置(例如無人機)中。本文所揭露的技術降低神經網路在訓練期間及/或在嵌入於專用裝置中時的記憶體消耗。本文所揭露的技術可在通用處理裝置上或在專用裝置中實施。
圖1A繪示根據本文所揭露標的的用於神經網路的激活映射的有損壓縮及解壓縮的系統100的示例性實施例的功能方塊圖。系統100包括處理器101、記憶體102、壓縮器103及解壓縮器104。在訓練期間及/或在推理期間,壓縮器103及解壓縮器104分別對神經網路105的激活映射106進行壓縮以形成位元流114並對位元流114進行解壓縮以重新形成激活映射。在對激活映射進行壓縮之前,壓縮器103及解壓縮器104被配置成使用對應的壓縮模式及解壓縮模式。系統100亦可包括一或多個附加處理器(未示出)、大容量儲存器(未示出)及輸入/輸出裝置,例如但不限於鍵盤(未示出)、顯示器(未示出)及定點裝置(未示出)。
壓縮器103及解壓縮器104可被實施為模組。本文所用用語「模組」指代被配置成提供本文結合模組闡述的功能的軟體、韌體及/或硬體的任何組合。軟體可被實施為軟體包、代碼及/或指令集或指令,且本文所述的任何實施方式中所用的用語「硬體」可例如單獨地或以任何組合的形式包括硬連線電路系統、可程式化電路系統、狀態機電路系統及/或儲存由可程式化電路系統執行的指令的韌體。模組可共同地或單獨地被實施為形成較大系統的一部分的電路系統,所述較大的系統例如但不限於積體電路(integrated circuit,IC)、系統晶片(system on-chip,SoC)等等。另外,處理器101及記憶體102可為形成壓縮器103及/或解壓縮器104的模組的組件。作為另外一種選擇,處理器101及記憶體102可被形成壓縮器103及/或解壓縮器104的模組利用。
圖1B繪示根據本文所揭露標的的壓縮器103的功能方塊圖。壓縮器103可包括稀疏化器107、量化器108、格式化器109及無損編碼器110。應注意,儘管在圖1B中將稀疏化器107及量化器108繪示為與壓縮器103分開,然而在其他實施例中,稀疏化器107及/或量化器108可為壓縮器103的一部分。
已在神經網路105的層處產生的激活映射106可例如由處理器101及記憶體102配置成預定大小的張量。在一個實施例中,激活映射106可被配置成大小為H x W x C的張量,其中H對應於輸入張量的高度,W對應於輸入張量的寬度,且C對應於輸入張量的通道的數目。可將激活映射106形成為並儲存為大小為H x W x C的單個張量。
神經網路105的激活映射106由稀疏化器107稀疏化以形成經稀疏化的激活映射111,經稀疏化的激活映射111的等於零的值的數目增加以使得由編碼器110實行的無損壓縮將更有效。稀疏化器107階段使用成本函數中的附加正則化來對預訓練的神經網路進行微調。通常,當訓練神經網路時,相對於權重w
而使成本函數L
(w
)最小化。成本函數L
(w
)包含兩個項:資料項及正則化項。資料項通常是交叉熵損失,而正則化項通常是網路權重的L2範數。在對預訓練網路進行微調期間,藉由添加新的正則化項來修改成本函數L
(w
):(1)
其中是層j的激活映射,且是控制稀疏度的量的拉格朗日乘數(Lagrange multiplier)。
可對拉格朗日乘數進行選擇以控制層j
的激活映射的稀疏度的量。較大的將生成稀疏的Aj
。直觀地,對A
添加L1正則化會約束權重w
以生成較稀疏的輸出。對權重w
進行調節以藉由反向傳播形成較稀疏的A
。微調自預訓練網路開始,並將經修改的成本函數最小化。微調持續若干時期(端視網路及資料集而定,通常在10至50個時期之間)。
若在稀疏化之後,經稀疏化的激活映射111的值尚未自浮點數量化成整數,則可由量化器108來將經稀疏化的激活映射111的非量化值量化成具有任何位元寬度(即,8個位元、12個位元、16個位元等)的整數值以形成經稀疏化及經量化的激活映射112。視需要,由量化器108進行的量化亦可被視為引入附加壓縮的方式,但會犧牲精度。通常使用線性(均勻)量化且q可為1與16個位元之間的任何值。在一個實施例中,量化可在運行時期間進行,此乃因對每一輸入影像生成新的激活映射。
為便於壓縮,H x W x C經稀疏化及經量化的激活映射112可由格式化器109格式化成值的區塊,其中每一區塊在本文中稱為「壓縮單元」113。亦即,張量大小為H x W x C的經稀疏化及經量化的激活映射112可被劃分成較小的壓縮單元。壓縮單元113可包括:呈通道主要次序的K個元素(或值),其中K > 0;掃描線(即,每一區塊可為激活映射的一列);或呈列主要次序的K個元素(或值),其中K > 0。亦可存在用於形成壓縮單元113的其他技術或方式。舉例而言,對應的神經網路硬體的激活映射的加載圖案可用作區塊(或壓縮單元)格式化技術的基礎。
每一壓縮單元113可由編碼器110獨立於其他壓縮單元進行無損編碼或壓縮以形成位元流114。位元流114可儲存於記憶體102中或儲存於與神經網路105相關聯的記憶體中。每一壓縮單元113可使用多種壓縮技術(在本文中稱為「壓縮模式」或簡稱為「模式」)中的任意壓縮技術而被無損編碼或壓縮。示例性無損壓縮模式包括但不限於:指數-哥倫布編碼、稀疏-指數-哥倫布編碼、稀疏-指數-哥倫布-刪除最小值編碼、哥倫布-萊斯編碼、指數-尾數編碼、零編碼、固定長度編碼及稀疏固定長度編碼。應理解,除了示例性壓縮模式之外或者作為示例性壓縮模式的替代壓縮模式,亦可使用其他無損編碼技術。亦應注意,所述示例性壓縮模式中的諸多壓縮模式是公開可用的或基於公開可用的壓縮模式,然而,稀疏-指數-哥倫布壓縮模式及稀疏-指數-哥倫布-刪除最小值壓縮模式除外。本文提供稀疏-指數-哥倫布壓縮模式及稀疏-指數-哥倫布-刪除最小值壓縮模式的詳細情況。
指數-哥倫布編碼是一種眾所習知的壓縮模式,其分配可變長度代碼,其中較小的數字被分配較短的代碼。用於對數字進行編碼的位元數目以指數方式增加,且一個參數(通常被稱為階數k參數)控制位元數目增加的速率。以下偽代碼提供指數-哥倫布壓縮模式的示例性詳細情況。
Let x, x >= 0 be the input, let k be the parameter (order)
Generate output bitstream: >Quotient Code>>Remainder Code>:
Quotient Code:
Encode q = floor (x / 2^k) using 0‑order exp-Golomb code:
z = binary (q + 1)
numBits = len (z)
Write numBits‑1 zero bits followed by z, and denote by u
Remainder Code:
Encode r = x % 2^k in binary, and denote by f = binary (r)
Concatenate u,f to produce output bitstream
指數-哥倫布壓縮模式的實例是:
x = 23, k = 3
q = floor (23 / 2^3) = 2
z = binary (2 + 1) = binary (3) = 11
numBits = len (z) = 2
u = 011 (2‑1 = 1 zeros followed by z)
f = binary (r) = binary (23 % 8) = binary (7) = 111
Final output = 011 + 111 = 011111
表1闡述輸入值x = 0-29且條件是階數k = 0-3的指數-哥倫布壓縮模式的值。
表1
x | k = 0 | k = 1 | k = 2 | k = 3 |
0 | 1 | 10 | 100 | 1000 |
1 | 010 | 11 | 101 | 1001 |
2 | 011 | 0100 | 110 | 1010 |
3 | 00100 | 0101 | 111 | 1011 |
4 | 00101 | 0110 | 01000 | 1100 |
5 | 00110 | 0111 | 01001 | 1101 |
6 | 00111 | 001000 | 01010 | 1110 |
7 | 0001000 | 001001 | 010110 | 1111 |
8 | 0001001 | 001010 | 01100 | 010000 |
9 | 0001010 | 001011 | 01101 | 010001 |
10 | 0001011 | 001100 | 01110 | 010010 |
11 | 0001100 | 001101 | 01111 | 010011 |
12 | 0001101 | 001110 | 0010000 | 010100 |
13 | 0001110 | 001111 | 0010001 | 010101 |
14 | 0001111 | 00010000 | 0010010 | 010110 |
15 | 000010000 | 00010001 | 0010011 | 010111 |
16 | 000010001 | 00010010 | 0010100 | 011000 |
17 | 000010010 | 00010011 | 0010101 | 011001 |
18 | 000010011 | 00010100 | 0010110 | 011010 |
19 | 000010100 | 00010101 | 0010111 | 011011 |
20 | 000010101 | 00010110 | 0011000 | 011100 |
21 | 000010110 | 00010111 | 0011001 | 011101 |
22 | 000010111 | 00011000 | 0011010 | 011110 |
23 | 000011000 | 00011001 | 0011011 | 011111 |
24 | 000011001 | 00011010 | 0011100 | 00100000 |
25 | 000011010 | 00011011 | 0011101 | 00100001 |
26 | 000011011 | 00011100 | 0011110 | 00100010 |
27 | 000011100 | 00011101 | 0011111 | 00100011 |
28 | 000011101 | 00011110 | 000100000 | 00100100 |
29 | 000011110 | 00011111 | 000100001 | 00100101 |
稀疏-指數-哥倫布壓縮模式是指數-哥倫布壓縮模式的擴展或變化,其中若欲編碼的值x是0,則值x在輸出位元流中由「1」表示。否則,指數-哥倫布編碼添加「0」,且接著使用標準指數-哥倫布對值x-1進行編碼。在區塊(壓縮單元)值是8個位元的一個實施例中,階數k = 4可提供最佳結果。
稀疏-指數-哥倫布-刪除最小值壓縮模式是稀疏-指數-哥倫布壓縮模式使用以下規則的擴展或變化:(1)在以壓縮單元對值進行編碼之前,確定最小非零值,其可由變量y表示。(2)接著使用指數-哥倫布壓縮模式對變量y進行編碼。(3)若欲編碼的值x是0,則將其編碼為「1」,以及(4)否則將「0」添加至位元流,且接著使用指數-哥倫布壓縮模式對x-y進行編碼。
哥倫布-萊斯壓縮模式及指數-尾數壓縮模式是眾所習知的壓縮演算法。以下偽代碼闡述哥倫布-萊斯壓縮模式的示例性詳細情況。
Let x, x >= 0 be the input and M be the parameter. M is a power of 2.
q = floor (x / M)
r = x % M
Generate output bitstream: >Quotient Code>>Remainder Code>:
Quotient Code:
Write q‑length string of 1 bits
Write a 0 bit
Remainder Code: binary (r) in log2
(M) bits
哥倫布-萊斯壓縮模式的實例是:
x = 23, M = 8, log2
(M) = 3
q = floor (23 / 8 ) = 2
r = 7
Quotient Code: 110
Remainder Code: 111
Output = 110111
零編碼壓縮模式檢查壓縮單元是否完全由零形成,且若是,則返回空位元流。應注意,若壓縮單元包含至少一個非零值,則不能使用零壓縮模式。
固定長度編碼壓縮模式是不實行壓縮的基線或缺設壓縮模式,且使用固定位元數目簡單地對壓縮單元的值進行編碼。
最後,稀疏固定長度編碼壓縮模式與固定長度編碼壓縮模式相同,只是若欲編碼的值x為0,則將其編碼為1,否則添加0且使用固定位元數目來對非零值進行編碼。
返回參照圖1B,在一個實施例中,編碼器110可開始具有48個位元的經壓縮的位元流114,其中可分別使用16個位元表示輸入張量的H、W及C。可針對可為可用的每一種壓縮模式迭代地對每一壓縮單元113進行壓縮。在激活映射的壓縮期間,可用於每一壓縮單元的壓縮模式可為固定的。在一個實施例中,全範圍的可用的壓縮模式可由L個位元表示。舉例而言,若有四種壓縮模式可用,則可使用兩個位元的前綴來指示四種可用壓縮模式的對應的索引(即,00、01、10及11)。在替代實施例中,可使用前綴可變長度編碼技術來保存一些位元。舉例而言,編碼器110最常使用的壓縮模式的索引可由「0」表示,且第二、第三及第四常用的壓縮模式分別由「10」,「110」及「111」表示。若僅使用一種壓縮模式,則沒必要將索引附加到壓縮單元的位元流114的開頭。
在一個實施例中,當對壓縮單元113進行壓縮時,可運行所有可用的壓縮模式,且可選擇已產生最短位元流的壓縮模式。可將所選擇壓縮模式的對應的索引作為前綴附加到特定壓縮單元的位元流的開頭,且接著可將壓縮單元的所得位元流添加到整個激活映射的位元流。接著可針對激活映射的所有壓縮單元重複所述過程。可使用與用於相鄰或鄰近的壓縮單元的壓縮模式不同的壓縮模式來對激活映射的每一相應的壓縮單元進行壓縮。在一個實施例中,可使用少數目的壓縮模式,例如兩種壓縮模式以降低壓縮激活映射的複雜性。
圖1C繪示根據本文所揭露標的的解壓縮器104的功能方塊圖。解壓縮器104對位元流114進行解壓縮以形成用於神經網路105'(圖1A)的激活映射120,其為與原始未經稀疏化的激活映射106對應的有損解壓縮。因此,神經網路105'可為原始神經網路105的經修改版本。
解壓縮器104可包括解碼器115、解格式化器116及解量化器117。應注意,儘管在圖1C中將解量化器117繪示為與解壓縮器104分開,然而在其他實施例中,解量化器117可為解壓縮器104的一部分。
在一個實施例中,解壓縮器104讀取位元流114的前48個位元以檢索H、W及C,且接著一次處理位元流114一個壓縮單元。解壓縮器104已知曉模式的索引的位元的數目以及壓縮單元中的元素的數目(端視所使用的壓縮模式為W或K)二者。亦即,與原始(經稀疏化的)激活映射106對應的位元流114由解碼器115解壓縮以形成壓縮單元118。壓縮單元118由解格式化器116解格式化以形成具有大小為H x W x C的張量的經稀疏化及經量化的激活映射119。可由解量化器117對經稀疏化及經量化的激活映射119進行解量化以形成與原始經稀疏化的激活映射106對應的經稀疏化的激活映射120。應注意,經稀疏化的激活映射120是對應的原始未經稀疏化的激活映射106的有損解壓縮。
圖2A及圖2B分別繪示根據本文所揭露標的的深度神經網路的激活映射的編碼方法200及解碼方法210的示例性實施例。可由圖2A及圖2B所示編碼/解碼方法對來處理神經網路的每一層的激活映射。在對激活映射進行壓縮之前,壓縮器103及解壓縮器104(例如圖1B及圖1C所繪示)被配置成使用對應的壓縮模式及解壓縮模式。
在圖2A中,所述過程在201處開始。在202處,對神經網路的激活映射進行稀疏化以形成等於零的值的數目增加的經稀疏化的激活映射以使得稍後實行的無損壓縮將更有效。結合方程式(1)闡述一種示例性稀疏化技術。可使用其他稀疏化技術。
在203處,將經稀疏化的激活映射配置成被編碼。在一個實施例中,已在神經網路的層處產生的經稀疏化的激活映射被配置成大小為H x W x C的張量,其中H對應於輸入張量的高度,W對應於輸入張量的寬度,且C對應於輸入張量的通道的數目。若經稀疏化的激活映射的值尚未自浮點數量化成整數,則在204處,可將經稀疏化的激活映射的未經量化的值量化成具有任何位元寬度的整數值以形成經稀疏化的經量化的激活映射。
在205處,可將經稀疏化的經量化的激活映射格式化成壓縮單元。在206處,可獨立於其他壓縮單元對每一壓縮單元進行無損編碼或壓縮以形成位元流。可使用多種壓縮模式中的任何壓縮模式對每一壓縮單元進行無損編碼或壓縮。示例性無損壓縮模式包括但不限於指數-哥倫布編碼、稀疏-指數-哥倫布編碼、稀疏-指數-哥倫布-刪除最小值編碼、哥倫布-萊斯編碼、指數-尾數編碼、零編碼、固定長度編碼及稀疏固定長度編碼。針對可用的每一種壓縮模式迭代地對每一壓縮單元進行壓縮。在一個實施例中,當壓縮單元被壓縮時,可運行所有可用的壓縮模式,且可選擇已產生最短位元流的壓縮模式。當已對用於激活映射的所有壓縮單元進行編碼時,對於激活映射而言所述過程在207處結束。以相同的方式對神經網路的每一激活映射繼續進行圖2A所示過程200。
在圖2B中,所述過程在211處開始。在212處,接收位元流並讀取前48個位元以檢索經編碼的壓縮單元。在213處,對每一經編碼的壓縮單元進行解碼以形成經解碼的壓縮單元。在214處,將每一經解碼的壓縮單元解格式化以形成經稀疏化及經量化的激活映射。在215處,對值進行解量化以形成經稀疏化的經解量化的激活映射。對於激活映射而言所述過程在216處結束。以相同的方式繼續進行圖2B所示過程210以對神經網路的每一激活映射進行解壓縮。
以下示例性偽代碼對應於方法200。
#張量T具有大小H x W x C
def compress (T):
bitstream = “”
for each channel, c, in C
CU = formatMaps(c)
for each cu in CU
bitstream + = compressCU(cu)
return bitstream
def compressCU(cu)
bitstreams =
generateBitstreamsforAllComprModes(cu)
minBitstreamIdx, minBitstream =
shortestBitstream(bitstreams)
mode = binary(minBitstreammIdx)
bitstream = mode + minBitstream
return bitstream
以下示例性偽代碼對應於方法210。
def decompress(bitstream):
H,W,C = getActivationMapShape(bitstream[0:48])
bitstream = bitstream[48:]
CU = []
while bitstream 1 = “”:
cu , bitstream = decompressCU(bitstream)
CU.append(cu)
return deformatCU (CU, H, W, C)
#decompressUnit已知曉使用多少壓縮模式以及使用多少位元作為報頭來指示壓縮模式的索引。在一個實施例中,所使用的壓縮模式的數目是數目L。
#decompressUnit亦知曉壓縮單元中包含多少個元素,在此實例中元素的數目是K。
#decodeNextValue( bitstream , modeIdx )使用modeIdx來選擇正確的解碼器以對下一值進行解碼。其亦將所使用的位元自bitstream剝離。其返回經解碼的值及經剝離的bitstream。
def decompressCU (bitstream):
modeIdx=getComprModeIndex(bitstream[0:L])
bitstream=bitstream[L:]
cu = []
for k in range (K):
val , bitstream = decodeNextValue (bitstream , modeIdx)
cu.append (val)
return cu , bitstream
圖3繪示根據本文所揭露標的的神經網路的層L處的激活映射的操作流程300。操作流程300表示經過層L的前向及後向處理方向二者。亦即,操作流程300表示用於訓練神經網路以及用於形成自輸入至神經網路的推斷的操作流程。當自記憶體(例如圖1A所示記憶體102)讀出神經網路的原始激活映射(未示出)的經編碼的(經稀疏化及經壓縮的)表示方式時,所述表示方式被轉變成位元流301。在302處,將位元流解碼以形成壓縮單元303。在304處將壓縮單元303解格式化以形成經稀疏化的經量化的激活映射305。(再次,應注意,激活映射的量化可為可選的。)在306處,對經稀疏化及經量化的激活映射305進行解量化以形成層L的經稀疏化的激活映射307。
在神經網路的層L處使用經稀疏化的激活映射307來計算輸出激活映射308。在309處對輸出激活映射308(可選地)進行量化以形成經稀疏化及經量化的激活映射310。在311處將經稀疏化及經量化的激活映射310格式化以形成壓縮單元312。在313處對壓縮單元312進行編碼以形成位元流314,位元流314被儲存於記憶體(例如圖1A所示記憶體102)中。
熟習此項技術者將認識到,可在廣泛的應用範圍中對本文所述創新概念進行修改及變化。因此,所主張標的的範圍不應僅限於以上所論述的特定示例性教示內容中的任意者,而是由以下申請專利範圍界定。
100:系統
101:處理器
102:記憶體
103:壓縮器
104:解壓縮器
105:神經網路/原始神經網路
105':神經網路
106、120:激活映射
107:稀疏化器
108:量化器
109:格式化器
110:無損編碼器/編碼器
111、307:經稀疏化的激活映射
112、119、310:經稀疏化及經量化的激活映射
113、118、303、312:壓縮單元
114:位元流/經壓縮的位元流
115:解碼器
116:解格式化器
117:解量化器
200:編碼方法/過程/方法
201、202、203、204、205、206、207、211、212、213、214、215、216、302、304、306、309、311、313:步驟
210:解碼方法/過程/方法
300:操作流程
301、314:位元流
305:經稀疏化的經量化的激活映射/經稀疏化及經量化的激活映射
308:輸出激活映射
在以下部分中,將參照各圖中所示的示例性實施例來闡述本文所揭露標的的態樣,在各圖中:
圖1A繪示根據本文所揭露標的的用於神經網路的激活映射的有損壓縮及解壓縮的系統的示例性實施例的功能方塊圖。
圖1B繪示根據本文所揭露標的的壓縮器的功能方塊圖。
圖1C繪示根據本文所揭露標的的解壓縮器的功能方塊圖。
圖2A及圖2B分別繪示根據本文所揭露標的的深度神經網路的激活映射的編碼方法及解碼方法的示例性實施例。
圖3繪示根據本文所揭露標的的神經網路的層L處的激活映射的操作流程。
100:系統
101:處理器
102:記憶體
103:壓縮器
104:解壓縮器
105:神經網路/原始神經網路
105':神經網路
106、120:激活映射
114:位元流/經壓縮的位元流
Claims (20)
- 一種用於壓縮神經網路的層的激活映射的系統,所述系統包括: 處理器,被程式化以啟動可執行操作,所述可執行操作包括: 使用所述處理器對所述激活映射的非零值的數目進行稀疏化; 將所述激活映射配置成具有為H x W x C的張量大小的張量,其中H表示所述張量的高度,W表示所述張量的寬度,且C表示所述張量的通道的數目; 將所述張量格式化成值的至少一個區塊;以及 使用至少一種無損壓縮模式獨立於所述張量的其他區塊對所述至少一個區塊進行編碼。
- 如申請專利範圍第1項所述的系統,其中所述至少一種無損壓縮模式選自包括以下在內的群組:指數-哥倫布編碼、稀疏-指數-哥倫布編碼、稀疏-指數-哥倫布-刪除最小值編碼、哥倫布-萊斯編碼、指數-尾數編碼、零編碼、固定長度編碼及稀疏固定長度編碼。
- 如申請專利範圍第2項所述的系統,其中選擇用於對所述至少一個區塊進行編碼的所述至少一種無損壓縮模式不同於選擇用於對所述張量的另一區塊進行編碼的無損壓縮模式。
- 如申請專利範圍第2項所述的系統,其中對所述至少一個區塊進行編碼包括使用多種無損壓縮模式獨立於所述張量的其他區塊對所述至少一個區塊進行編碼。
- 如申請專利範圍第2項所述的系統,其中所述至少一個區塊包括48個位元。
- 如申請專利範圍第1項所述的系統,其中所述可執行操作更包括輸出經編碼的所述至少一個區塊作為位元流。
- 如申請專利範圍第6項所述的系統,其中所述可執行操作更包括: 使用與用於對所述至少一個區塊進行壓縮的所述至少一種無損壓縮模式對應的至少一種解壓模式獨立於所述張量的其他區塊對所述至少一個區塊進行解碼;以及 將所述至少一個區塊解格式化成具有為H x W x C的大小的張量。
- 如申請專利範圍第1項所述的系統,其中經稀疏化的所述激活映射包括浮點值,且 其中所述可執行操作更包括將所述激活映射的所述浮點值量化成整數值。
- 一種用於壓縮神經網路的激活映射的方法,所述方法包括: 使用處理器對所述激活映射的非零值的數目進行稀疏化; 將所述激活映射配置成具有為H x W x C的張量大小的張量,其中H表示所述張量的高度,W表示所述張量的寬度,且C表示所述張量的通道的數目; 將所述張量格式化成值的至少一個區塊;以及 使用至少一種無損壓縮模式獨立於所述張量的其他區塊對所述至少一個區塊進行編碼。
- 如申請專利範圍第9項所述的方法,更包括自包括以下在內的群組選擇所述至少一種無損壓縮模式:指數-哥倫布編碼、稀疏-指數-哥倫布編碼、稀疏-指數-哥倫布-刪除最小值編碼、哥倫布-萊斯編碼、指數-尾數編碼、零編碼、固定長度編碼及稀疏固定長度編碼。
- 如申請專利範圍第10項所述的方法,其中選擇用於對所述至少一個區塊進行編碼的所述至少一種無損壓縮模式不同於選擇用於對所述張量的另一區塊進行壓縮的無損壓縮模式。
- 如申請專利範圍第10項所述的方法,其中對所述至少一個區塊進行編碼更包括使用多種無損壓縮模式獨立於所述張量的其他區塊對所述至少一個區塊進行編碼。
- 如申請專利範圍第10項所述的方法,其中所述至少一個區塊包括48個位元。
- 如申請專利範圍第9項所述的方法,更包括輸出經編碼的所述至少一個區塊作為位元流。
- 如申請專利範圍第14項所述的方法,更包括: 使用所述處理器來使用與用於對所述至少一個區塊進行壓縮的所述至少一種無損壓縮模式對應的至少一種解壓模式獨立於所述張量的其他區塊對所述至少一個區塊進行解壓縮;以及 將所述至少一個區塊解格式化成具有為H x W x C的大小的張量。
- 如申請專利範圍第9項所述的方法,其中所述激活映射包括浮點值, 所述方法更包括將所述激活映射的所述浮點值量化成整數值。
- 一種用於對神經網路的經稀疏化的激活映射進行解壓縮的方法,所述方法包括: 使用處理器來對表示經稀疏化的所述激活映射的值的位元流的值的經壓縮的區塊進行解壓縮以形成值的至少一個經解壓縮的區塊,所述值的經解壓縮的區塊使用與用於對至少一個區塊進行壓縮的至少一種無損壓縮模式對應的至少一種解壓縮模式而獨立於所述激活映射的其他區塊被解壓縮;以及 將所述經解壓縮的區塊解格式化成具有為H x W x C的大小的張量的一部分,其中H表示所述張量的高度,W表示所述張量的寬度,且C表示所述張量的通道的數目,所述張量是經解壓縮的激活映射。
- 如申請專利範圍第17項所述的方法,其中所述至少一種無損壓縮模式選自包括以下在內的群組:指數-哥倫布編碼、稀疏-指數-哥倫布編碼、稀疏-指數-哥倫布-刪除最小值編碼、哥倫布-萊斯編碼、指數-尾數編碼、零編碼、固定長度編碼及稀疏固定長度編碼。
- 如申請專利範圍第18項所述的方法,更包括: 使用所述處理器對所述激活映射的非零值的數目進行稀疏化; 將所述激活映射配置成具有為H x W x C的張量大小的張量; 將所述張量格式化成值的至少一個區塊;以及 使用至少一種無損壓縮模式獨立於所述張量的其他區塊對所述至少一個區塊進行編碼。
- 如申請專利範圍第19項所述的方法,其中選擇用於對所述至少一個區塊進行壓縮的所述至少一種無損壓縮模式不同於選擇用於對所接收的至少一個激活映射的所述張量的另一區塊進行壓縮的無損壓縮模式,且 其中對所述至少一個區塊進行壓縮更包括使用多種無損壓縮模式獨立於所接收的所述至少一個激活映射的所述張量的其他區塊對所述至少一個區塊進行壓縮。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862756067P | 2018-11-05 | 2018-11-05 | |
US62/756,067 | 2018-11-05 | ||
US16/223,092 | 2018-12-17 | ||
US16/223,092 US20200143226A1 (en) | 2018-11-05 | 2018-12-17 | Lossy compression of neural network activation maps |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202036386A TW202036386A (zh) | 2020-10-01 |
TWI840438B true TWI840438B (zh) | 2024-05-01 |
Family
ID=
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018022821A1 (en) | 2016-07-29 | 2018-02-01 | Arizona Board Of Regents On Behalf Of Arizona State University | Memory compression in a deep neural network |
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018022821A1 (en) | 2016-07-29 | 2018-02-01 | Arizona Board Of Regents On Behalf Of Arizona State University | Memory compression in a deep neural network |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11588499B2 (en) | Lossless compression of neural network weights | |
US20200143226A1 (en) | Lossy compression of neural network activation maps | |
Malvar | Adaptive run-length/Golomb-Rice encoding of quantized generalized Gaussian sources with unknown statistics | |
US20190370667A1 (en) | Lossless compression of sparse activation maps of neural networks | |
US8553994B2 (en) | Compressive sampling for multimedia coding | |
JP4779098B2 (ja) | 可変サイズベクトルエントロピ符号化を実行するための方法および装置 | |
JP7408799B2 (ja) | ニューラルネットワークモデルの圧縮 | |
CN111641826B (zh) | 对数据进行编码、解码的方法、装置与系统 | |
IT202000018043A1 (it) | Procedimenti e sistemi di elaborazione di rete neurale artificiale | |
Jiang et al. | Universal golomb–rice coding parameter estimation using deep belief networks for hyperspectral image compression | |
Al-Khafaji | Image compression based on quadtree and polynomial | |
WO2011097963A1 (zh) | 编码方法、解码方法、编码器和解码器 | |
TWI840438B (zh) | 用於壓縮神經網路的激活映射的系統與方法以及用於對神經網路的經稀疏化的激活映射進行解壓縮的方法 | |
JP7233875B2 (ja) | 作成方法、コンピュータ及びプログラム | |
JP7394980B2 (ja) | ブロック分割を伴うニューラルネットワークを復号する方法、装置及びプログラム | |
JP2011522497A (ja) | 規則的点ネットワークにおけるベクトルをカウントする方法 | |
US11742875B1 (en) | Compression of floating-point numbers for neural networks | |
US11785261B2 (en) | Frequency specific compression and compensation technique in image processing | |
KR102654690B1 (ko) | 딥러닝 가속 장치 및 그 방법 | |
Khalil et al. | Selective splitting approach to entropy-constrained single/multistage vector quantizer design | |
WO2023227077A1 (en) | Method for training a neural network with flexible feature compression capability, and neural network system with flexible feature compression capability | |
Ouyang et al. | A Dynamic Codec with Adaptive Quantization for Convolution Neural Network | |
US20230038394A1 (en) | Audio signal encoding and decoding method, and encoder and decoder performing the methods | |
Tilki et al. | Image data compression using multiple bases representation | |
Mohamed | Wireless Communication Systems: Compression and Decompression Algorithms |