TW202343981A - 壓縮操作數的方法、解壓縮壓縮資料序列的方法及系統 - Google Patents
壓縮操作數的方法、解壓縮壓縮資料序列的方法及系統 Download PDFInfo
- Publication number
- TW202343981A TW202343981A TW111118363A TW111118363A TW202343981A TW 202343981 A TW202343981 A TW 202343981A TW 111118363 A TW111118363 A TW 111118363A TW 111118363 A TW111118363 A TW 111118363A TW 202343981 A TW202343981 A TW 202343981A
- Authority
- TW
- Taiwan
- Prior art keywords
- sequence
- operands
- neural network
- compressed data
- compressing
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 31
- 238000013528 artificial neural network Methods 0.000 claims abstract description 46
- 238000007906 compression Methods 0.000 claims description 33
- 230000006835 compression Effects 0.000 claims description 33
- 238000013527 convolutional neural network Methods 0.000 claims description 29
- 238000012545 processing Methods 0.000 claims description 24
- 238000004364 calculation method Methods 0.000 claims description 18
- 230000006837 decompression Effects 0.000 claims description 16
- 230000004913 activation Effects 0.000 claims description 12
- 238000011084 recovery Methods 0.000 claims description 2
- 238000001994 activation Methods 0.000 description 10
- 238000013144 data compression Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 6
- 238000006243 chemical reaction Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 230000033001 locomotion Effects 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 238000013135 deep learning Methods 0.000 description 3
- 238000012856 packing Methods 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000005055 memory storage Effects 0.000 description 2
- 238000004806 packaging method and process Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000001514 detection method Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 238000003709 image segmentation Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000003062 neural network model Methods 0.000 description 1
- 238000010606 normalization Methods 0.000 description 1
- 238000011176 pooling Methods 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 238000012958 reprocessing Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N10/00—Quantum computing, i.e. information processing based on quantum-mechanical phenomena
- G06N10/20—Models of quantum computing, e.g. quantum circuits or universal quantum computers
-
- 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
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N10/00—Quantum computing, i.e. information processing based on quantum-mechanical phenomena
- G06N10/40—Physical realisations or architectures of quantum processors or components for manipulating qubits, e.g. qubit coupling or qubit control
-
- 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
-
- 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
- G06N3/0464—Convolutional networks [CNN, ConvNet]
-
- 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/70—Type of the data to be coded, other than image and sound
-
- 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/08—Learning methods
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Artificial Intelligence (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Computing Systems (AREA)
- Biophysics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Computational Linguistics (AREA)
- Computational Mathematics (AREA)
- Condensed Matter Physics & Semiconductors (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Neurology (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Executing Machine-Instructions (AREA)
- Compression Of Band Width Or Redundancy In Fax (AREA)
Abstract
一種壓縮用於神經網絡計算的操作數的方法,包括:接收複數個操作數,其中每個操作數具有包括符號位、指數和分數的浮點表示;將該複數個操作數重新排序為由符號位構成的第一序列、由指數構成的第二序列和由分數構成的第三序列;和壓縮該第一序列、該第二序列和該第三序列以至少去除重複的指數,從而無損地生成壓縮後的資料序列。
Description
本發明的實施例涉及神經網絡處理,更具體地,涉及壓縮操作數的方法、解壓縮壓縮資料序列的方法及系統。
深度神經網絡是具有輸入層(input layer)、輸出層(output layer)以及位於輸入層和輸出層之間的一個或複數個隱藏層(hidden layer)的神經網絡。每一層對一個或複數個張量(tensor)執行操作。張量是一個數學對象(mathematical object),其可以是零維的(又名定標器(scaler))、一維的(又名向量(vector))、二維的(又名矩陣(matrix))或多維的。一些層將權重應用於張量,例如在卷積操作中。通常,由一個神經網絡層產生的張量存儲在存儲器中,並由下一層從存儲器中獲取以作為輸入。存儲和獲取張量以及存儲和獲取任何適用的權重都可能使用存儲器總線上的大量資料帶寬。
神經網絡計算需要密集的計算和帶寬需求。現代計算機通常在數值計算(numerical computation)中使用具有大位寬(bit width)(例如,16位或32 位)的浮點數來實現高精度。然而,高精度是以高功耗和高存儲器帶寬為代價的。在保持神經網絡計算可接受的精度的同時平衡低功耗和低存儲器帶寬需求是一項挑戰。
例如,帶寬測量和乘加(Multiply-And-Add,MAC)操作的計算量在過去十年中以快速的速度穩步增長。神經網絡應用的類型已經從圖像分類、對象檢測、圖像分割、深度/姿勢和運動估計,發展為圖像質量增強,如超分辨率。最新的神經網絡應用可能需要多達10萬億次MAC運算和每秒1千兆位(gigabit)的帶寬。
本發明實施例提供壓縮操作數的方法、解壓縮壓縮資料序列的方法及系統。
本發明提供的一種壓縮用於神經網絡計算的操作數的方法,包括:接收複數個操作數,其中每個操作數具有包括符號位、指數和分數的浮點表示;將該複數個操作數重新排序為由符號位構成的第一序列、由指數構成的第二序列和由分數構成的第三序列;和壓縮該第一序列、該第二序列和該第三序列以至少去除重複的指數,從而無損地生成壓縮後的資料序列。
本發明提供的一種解壓縮壓縮資料序列的方法,包括:將壓縮後的資料序列解壓縮為N個符號位構成的第一序列、N個指數構成的第二序列和N個分數構成的第三序列,其中N為正整數,其中該壓縮後的資料序列表示N個操作數且不包含重複的指數;將該N個符號位構成的該第一序列、該N個指數構成的第二序列和該N個分數構成的第三序列重新排序為表示該N個操作數的N個浮點數構成的恢復後的序列;和將該N個浮點數構成的恢復後的序列發送到加速器以進行神經網絡計算。
本發明提供的一種操作數處理系統,包括:加速器電路;和耦合到該加速器電路的壓縮器電路,該壓縮器電路用於:接收複數個操作數,其中每個操作數具有包括符號位、指數和分數的浮點表示;將該複數個操作數重新排序為由符號位構成的第一序列、由指數構成的第二序列和由分數構成的第三序列;和壓縮該第一序列、該第二序列和該第三序列以至少去除重複的指數,從而無損地生成壓縮後的資料序列。在可選的實施例中,該壓縮器電路還用於:解壓縮該壓縮後的資料序列,以浮點格式無損地恢復該複數個操作數。
如上所述,本發明實施例在壓縮操作數時至少去除重複的指數,由於去除的是重複的內容從而無損地生成壓縮後的資料序列,而在解壓縮資料序列時執行與壓縮相反的步驟,從而可無損地恢復複數個操作數。
在說明書及申請專利範圍當中使用了某些詞彙來指稱特定的元件。所屬技術領域具有通常知識者應可理解,硬體製造商可能會用不同的名詞來稱呼同一個元件。本說明書及申請專利範圍並不以名稱的差異來作為區分元件的方式,而是以元件在功能上的差異來作為區分的準則。在通篇說明書及申請專利範圍當中所提及的“包含”及“包括”為一開放式的用語,故應解釋成“包含但不限定於”。“大體上”或“大約”是指在可接受的誤差範圍內,所屬技術領域具有通常知識者能夠在一定誤差範圍內解決所述技術問題,基本達到所述技術效果。此外,“耦接”或“耦合”一詞在此包含任何直接及間接的電性連接手段。因此,若文中描述一第一裝置耦接在一第二裝置,則代表該第一裝置可直接電性連接於該第二裝置,或通過其它裝置或連接手段間接地電性連接至該第二裝置。以下所述為實施本發明的較佳方式,目的在於說明本發明的精神而非用以限定本發明的保護範圍,本發明的保護範圍當視之後附的申請專利範圍所界定者為准。
接下面的描述為本發明預期的最優實施例。這些描述用於闡述本發明的大致原則而不應用於限制本發明。本發明的保護範圍應在參考本發明的申請專利範圍的基礎上進行認定。
本發明的實施例提供了一種用於壓縮用於神經網絡計算的浮點數(floating-point number)的機制。該壓縮利用神經網絡操作的浮點操作數(floating-point operand)(或簡稱為操作數)中的冗餘來減少存儲器帶寬。例如,神經網絡層的輸入激活(例如,輸入特徵圖)的複數個值可以分佈在可以由一個或一些指數(exponent)表示的相對較小的數值範圍內。壓縮以一種高效且適應性強的方式去除了表示相同指數的冗餘位(redundant bits),從而可以在神經網絡計算的推理階段(inference phase)動態執行壓縮和相應的解壓縮,而無需使神經網絡模型重新被訓練。
在一個實施例中,將壓縮和相應的解壓縮應用於卷積神經網絡(Convolutional Neural Network,CNN)的操作數(也即,浮點操作數)。通常在卷積神經網絡中,可將一個張量切割為多批次的操作數組,每個操作數組中可包括N個操作數(其中,N為非零整數),例如當N為4時,該4個操作數可為後續圖3中所示的A0、A1、A2及A3。操作數可以包括輸入(也稱為輸入激活)、輸出(也稱為輸出激活)以及一個或複數個CNN層的權重。以CNN神經網絡的輸入為例,每一層的一次輸入可為一個張量,由此,每個操作數可包括一次CNN輸入的一個分段。本發明實施例所述的壓縮方法通過對多批次的操作數組分別執行壓縮來完成對一次輸入的壓縮。同理,一個或複數個權重或一次CNN輸出也可為一個張量,而每個操作數包括該一個或複數個權重或該輸出的一個分段。可以理解,壓縮和相應的解壓縮適用於不限於CNN的神經網絡。
在一個實施例中,浮點壓縮由壓縮器執行,壓縮器將浮點數(例如,前述的操作數或浮點操作數)壓縮成壓縮資料序列以用於存儲或傳輸。壓縮器還將壓縮資料序列解壓縮為浮點數,以供深度學習加速器執行神經網絡計算。壓縮器可以是硬體電路、軟體(例如,執行軟體指令的處理器)或兩者的組合。
本文公開的浮點壓縮可以專門用於神經網絡計算的工作負載。該工作負載包括浮點運算中的計算。浮點運算廣泛用於科學計算和關注精度的應用中。如本文所用,術語“浮點表示(floating-point representation)”是指具有分數(fraction)(也稱為“尾數(mantissa)”或“係數(coefficient)”)和指數的數字表示(number representation)。浮點表示還可以包括符號位(sign bit)。浮點表示的示例包括但不限於 IEEE 754 標準格式,例如16位浮點數、32位浮點數、64位浮點數,或一些處理器支持的其他浮點格式。本文公開的壓縮可應用於各種浮點格式(例如IEEE 754標準格式、它們的變體以及一些處理器支持的其他浮點格式)的浮點數。壓縮應用於零和非零。
本文公開的壓縮可以減少存儲器佔用(memory footprint)和帶寬,並且可以容易地集成到深度學習加速器中。壓縮是無損的;因此,沒有精度下降。沒有必要重新訓練已經訓練過的神經網絡。壓縮後的資料格式適應輸入浮點數;更具體地說,壓縮適用於具有任何位寬的指數的浮點數。每個浮點數的指數的位寬沒有硬性要求。輸入浮點數也不必共用預定的固定數量的指數(例如,單個指數)。
圖1是示出根據一個實施例的用於執行神經網絡操作的系統100的框圖。系統100包括處理硬體110,其進一步包括一個或複數個處理器170,例如中央處理單元(Central Processing Unit,CPU)、圖形處理單元(Graphics Processing Unit,GPU)、數位處理單元(Digital Processing Unit,DSP)、現場可編程門陣列(Field-Programmable Gate Array,FPGA),以及其他通用處理器和/或專用處理器。系統100還包括深度學習加速器150(以下稱為“加速器150”),用於執行神經網絡操作;例如,張量操作。神經網絡操作的示例包括但不限於:卷積、反捲積、全連接操作、歸一化、激活、池化、改變尺寸、逐元素算術、級聯等。在一個實施例中,處理硬體110可以是片上系統 (System-On-a-Chip,SOC) 的一部分。
在一個實施例中,系統100包括耦合到加速器150的壓縮器130。壓縮器130用於將浮點數轉換成壓縮資料序列,該壓縮資料序列使用比轉換之前的浮點數更少的位數。
壓縮器130可以壓縮由加速器150生成的浮點數(例如,前述的操作數或浮點操作數),以用於存儲器存儲或傳輸。此外,壓縮器130還可將接收或獲取的資料從壓縮後的格式解壓縮為浮點數,以供加速器150執行神經網絡操作。以下描述集中於用於減少存儲器帶寬的壓縮。然而,可以理解,當壓縮後的資料從系統100傳輸到另一個系統或設備時,壓縮可以節省傳輸帶寬。
在圖1的示例中,壓縮器130被示為處理器170和加速器150外部的硬體電路。在替代的實施例中,由處理器170執行的軟體模塊172可以執行壓縮器130的功能。而在又一實施例中,加速器150內的電路152或加速器150執行的軟體模塊154可以執行壓縮器130的功能。以下描述將壓縮器130作為非限制性的示例來解釋壓縮器的操作。
處理硬體110耦合到存儲器120,存儲器120可以包括片上存儲器和片外存儲器裝置,例如動態隨機存取存儲器(Dynamic Random Access Memory,DRAM)、靜態隨機存取存儲器(Static Random Access Memory,SRAM)、閃存及其他非暫時性機器可讀存儲介質;例如,易失性或非易失性存儲設備。此處使用的術語“片上”是指在處理硬體110所在的SOC上,並且此處使用的術語“片外”是指在SOC之外。為了簡化說明,存儲器120被表示為一個塊;然而,應當理解,存儲器120可以表示複數個存儲器組件的體系結構,例如高速緩衝存儲器、加速器150的本地存儲器、系統存儲器、固態或磁性存儲設備等。處理硬體110執行存儲在存儲器120中的指令以執行操作系統功能和運行用戶應用程序。深度神經網絡(Deep Neural Network,DNN)模型125可以由包括複數個層的計算圖來表示,所述複數個層包括輸入層、輸出層以及介於兩者之間的一個或複數個隱藏層。DNN模型125的一個例子是多層CNN。DNN模型125可能已經被訓練為具有與一個或複數個層相關聯的權重。
在一個實施例中,系統100可以接收輸入資料123並將其存儲在存儲器120中。輸入資料123可以是圖像、視頻、語音等。存儲器120可以存儲指令,且當該指令被加速器150執行時,加速器150根據DNN模型125對輸入資料123進行神經網絡計算。存儲器120還可以存儲壓縮後的資料127,例如神經網絡計算的輸出。
圖2A和圖2B示出了根據兩個替代的實施例的加速器150和存儲器120之間的交互。圖2A示出了加速器150可以使用存儲在存儲器120中的壓縮後的資料來執行神經網絡操作。例如,加速器150可以從存儲器120獲取壓縮後的資料,例如輸入激活及用於第一CNN層的權重。壓縮器130將獲取到的資料解壓縮為加速器150的浮點數。加速器150可以將第一CNN層的輸出存儲在存儲器120中。在存儲器存儲之前,壓縮器130將加速器的輸出從浮點數壓縮成壓縮後的格式。在圖2B中,直接存儲器訪問(Direct Memory Access,DMA)引擎210可以為加速器150將壓縮後的資料存儲至存儲器120及從存儲器120獲取壓縮後的資料。
壓縮器130執行的浮點壓縮依次包括解包階段(unpacking stage)、混排階段(shuffling stage)和資料壓縮階段(data compression stage)。解包階段和混排階段可以統稱為重新排序階段(re-ordering stage)。解壓縮依次包括資料解壓縮階段(data decompression stage)、解混排階段(un-shuffling stage)和打包階段(packing stage)。解混排階段和打包階段也可以統稱為重新排序階段。如下面參考圖 3 所述,壓縮器 130 在每個階段中轉換(transform)資料。
圖3是說明根據一個實施例的由壓縮器執行的轉換操作的圖。同時參照圖1,壓縮器130可以通過一系列解包、混排和壓縮操作來壓縮CNN層的浮點操作數。每個浮點操作數由3個欄位(S, E, F)的浮點表示來表示,其中S是符號位,E是指數,F是分數。E和F中的每一個的位寬可以由要在加速器150上執行的神經網絡應用程序來確定。壓縮器130不對E和F欄位中的每一個的位寬施加要求。壓縮器130可以對任何位寬的E和F進行操作。
在解包階段,壓縮器 130 提取浮點數欄位以合併 S、E 和 F 欄位中的每一個,從而生成由符號位構成的第一序列、由指數構成的第二序列和由分數構成的第三序列。混排操作識別具有相同指數的浮點操作數,並對這些操作數重新排序以至少使它們的相同指數彼此相鄰。然後壓縮器130壓縮解包和重新排序後的操作數以至少從序列中去除重複的指數。重複的指數是冗餘指數;因此,可以在不丟失信息的情況下將其刪除。此外,資料壓縮操作還可以從序列中去除任何重複的符號位和/或重複的分數。壓縮器130可以使用任何已知的無損資料壓縮算法(例如,遊程編碼、LZ壓縮、霍夫曼編碼等)來減少壓縮資料序列的表示中的位數。
在圖3的示例中,浮點操作數的序列包括A
0、A
1、A
2和A
3。所有四個操作數A
0、A
1、A
2和A
3都具有相同的符號位(S
0)(也即,S
0=S
1=S
2=S
3)。A
0與A
3具有相同的指數(E
0)(也即,E
0=E
3),A
1與A
2具有相同的指數(E
1)(也即,E
1=E
2)。壓縮器130通過形成四個連續符號位的第一序列、四個連續指數的第二序列和四個連續分數的第三序列來解包四個操作數。這三個序列可以按任何順序排列。壓縮器130通過將E
0移動到E
3旁邊以及將E
1移動到E
2旁邊來混排操作數。混排操作也會移動相應的符號位和分數;即,S
0在 S
3旁邊,S
1在S
2旁邊,F
0在F
3旁邊,F
1在F
2旁邊。然後壓縮器130至少去除重複的指數(例如,E
2和E
3)。壓縮器130還可以去除重複的符號位(例如,S
1、S
2和S
3)。可以將資料壓縮算法應用於這三個序列以生成壓縮後的資料序列。指數序列可以與分數序列分開壓縮。或者,可以將三個序列一起壓縮為一個序列。壓縮器130生成記錄混排的參數的元資料(metadata);例如,重新排序的元素(例如符號位,指數或分數)的位置或移動距離,以跟踪混排後的序列中每個元素(例如符號位,指數或分數)的位置。元資料還可以包括資料壓縮算法的參數;例如,壓縮率。壓縮後的資料序列和元資料可以存儲在存儲器120中。在壓縮後的資料序列超過加速器150的片上存儲器容量的情況下,壓縮資料序列可以存儲在片外存儲器(例如DRAM)中。
壓縮器130還可以執行解壓縮以將壓縮後的資料序列轉換為原始形式的浮點數(例如,示例中的A0、A1、A2和A3)。根據元資料,壓縮器130通過反轉(reverse)上述壓縮操作來解壓縮壓縮後的資料序列。在一個實施例中,壓縮器130可以通過一系列資料解壓縮、解混排和打包操作來解壓縮壓縮後的資料序列。在資料解壓縮階段,壓縮器130基於先前在資料壓縮中使用的資料壓縮算法對壓縮後的資料序列進行解壓縮。解壓縮恢復先前去除的重複指數和任何其他重複或冗餘資料元素(例如,重複的符號位或分數)。在解混排階段,壓縮器130根據元資料恢復以符號位、指數和分數三個序列表示的浮點數的原始順序。在打包階段,壓縮器130組合每個浮點數的三個欄位以輸出原始的浮點數序列(例如,示例中的A0、A1、A2和A3)。
一個神經網絡層可能有大量的浮點操作數;例如,幾 GB(gigabyte)的資料。因此,壓縮器130可以一次處理N個操作數;例如,N可以是256或 512。圖3的示例使用N = 4用於說明的目的。
在替代的實施例中,壓縮器130可以識別那些共用相同指數的操作數並且在不執行混排操作的情況下去除重複的指數。在又一個實施例中,壓縮器130可以識別那些共用相同指數的操作數並且在不需要解包和混排操作的情況下去除重複的指數。
圖4是圖示根據一個實施例的CNN操作中的資料移動(movement)的圖。出於說明的目的,顯示了兩個 CNN 層的操作。
加速器150通過從存儲器120獲取初始輸入資料425和第一CNN層(即CONV1)的操作參數413來開始CONV1的操作(步驟S1.1)。加速器150還從存儲器120獲取或請求獲取壓縮後的CONV1權重411(步驟S1.2)。在這個實施例中,初始輸入資料425(例如,圖像、視頻、語音等)沒有被壓縮,而CONV1權重411(以及CONV2權重412)已經被壓縮。在備選的實施例中,初始輸入資料425和權重411、412中的任何一個可以是被壓縮的或未壓縮的。壓縮器130解壓縮被壓縮的CONV1權重411並將CONV1權重傳遞給加速器150(步驟S1.3)。可以在之前參考圖3描述的三個轉換階段(即,資料解壓縮、解混排和打包)中執行解壓縮。加速器150執行第一CNN層操作並生成CONV1輸出(步驟S1.4)。CONV1輸出是第二CNN 層的輸入激活。壓縮器130壓縮CONV1輸出並生成與壓縮後的CONV1輸出424相關聯的元資料(步驟S1.5)。可以在之前參考圖3描述的三個轉換階段(即,解包、混排和資料壓縮)中執行壓縮。然後將壓縮後的CONV1輸出424和元資料存儲在存儲器120的緩衝器420中。壓縮後的CONV1輸出424是壓縮後的CONV2輸入。
加速器150通過從存儲器120獲取或觸發獲取壓縮後的第二CNN層(即,CONV2)輸入、元資料、壓縮後的CONV2權重412和用於CONV2的操作參數413來開始CONV2的操作(步驟 S2.1)。壓縮器130根據元資料對壓縮後的CONV2輸入進行解壓縮,對CONV2權重412進行解壓縮,並將解壓縮後的輸出傳遞給加速器150(步驟S2.2)。加速器150執行第二CNN層操作並產生CONV2輸出(步驟S2.3)。壓縮器130壓縮CONV2輸出並生成與壓縮後的CONV2輸出426相關聯的元資料(步驟S2.4)。然後將壓縮後的CONV2輸出 426 和元資料存儲在緩衝器420中。
圖4的示例示出了移入和移出存儲器120的資料流主要包括壓縮後的資料。更具體地說,來自一個神經網絡層的加速器輸出激活,也是下一個神經網絡層的被壓縮後的加速器輸入激活。因此,在包含複數個層的深度神經網絡中,由於層之間的激活資料以壓縮後的形式在存儲器總線上傳輸,因此存儲器帶寬可以大大降低。
圖5是圖示根據一個實施例的壓縮浮點數的方法500的流程圖。方法500可由圖1、2A和/或2B的實施例執行。
方法500開始於步驟510,此時系統(例如,圖1的系統100)接收複數個操作數,其中每個操作數具有包括符號位、指數和分數的浮點表示。在步驟520,系統中的壓縮器將操作數重新排序為由符號位構成的第一序列、由指數構成的第二序列和由分數構成的第三序列。在步驟530,壓縮器壓縮第一序列、第二序列和第三序列以至少去除重複的指數,從而無損地生成壓縮後的資料序列。
在一個實施例中,共用相同指數的元素,例如複數個符號位,複數個指數和複數個分數被分別重新排序到第一序列、第二序列和第三序列中的每一個中的相鄰空間位置。在一個實施例中,重新排序和壓縮在多批次的N個操作數中執行,N是非負整數,例如,序列A0、A1、A2及A3可以算一個批次的操作數,其他操作數序列,例如,A4、A5、A6及A7可以算另一批次的操作數,以此類推,每一個其他批次操作數的重新排序和壓縮規則類似對序列A0、A1、A2及A3執行的相應操作。經多批次處理後,通常可完成對一個張量的壓縮。壓縮器生成指示在重新排序和壓縮中使用的參數的元資料。可以壓縮第一序列以去除重複的符號位。
在一個實施例中,操作數可以包括CNN層的權重。操作數可以包括來自執行CNN層的加速器的激活輸出。壓縮器可以將壓縮後的資料序列存儲在存儲器中,並可以獲取壓縮後的資料序列進行解壓縮,以供加速器執行CNN的後續層。浮點數的壓縮適用於任何位寬的指數。
圖6是圖示根據一個實施例的將資料解壓縮成浮點數的方法600的流程圖。方法600可以由圖1、2A和/或2B的實施例來執行。
方法600開始於步驟610,此時系統(例如,圖1的系統100)中的壓縮器將壓縮後的資料序列解壓縮為N個符號位構成的第一序列、N個指數構成的第二序列和N個分數構成的第三序列(N是一個正整數)。壓縮後的資料序列表示N 個操作數,並且不包含重複的指數。在步驟620,壓縮器將N個符號位構成的第一序列、N個指數構成的第二序列和N個分數構成的第三序列重新排序為表示N個操作數的N個浮點數構成的恢復後的序列。在步驟630,將由N個浮點數構成的恢復後的序列發送到加速器(例如,圖1中的加速器150)以用於神經網絡計算。在一個實施例中,在步驟610的解壓縮之後,第一序列、第二序列和第三序列中的每一個中共用相同指數的元素(例如符號位,指數或分數)位於相鄰的空間位置。
已經參考圖1、2A和2B的示例性實施例描述了圖5和6的流程圖的操作。然而,應該理解,圖5和6的流程圖的操作可以由圖1、2A和2B的實施例以及圖1、2A和2B的實施例之外的本發明的實施例來執行,並且圖1、2A和2B的實施例可以執行與參考流程圖討論的操作不同的操作。雖然圖5和6的流程圖顯示了由本發明的某些實施例執行的操作的特定順序,但應該理解這種順序是示例性的(例如,替代的實施例可以以不同的順序執行操作,組合某些操作,重疊某些操作等)。
本發明雖以較佳實施例揭露如上,然其並非用以限定本發明的範圍,任何所屬技術領域具有通常知識者,在不脫離本發明的精神和範圍內,當可做些許的更動與潤飾,因此本發明的保護範圍當視申請專利範圍所界定者為准。
100:系統
110:處理硬體
170:處理器
172,154:軟體模塊
130:壓縮器
150:加速器
152:加速器150內的電路
120:存儲器
123,425:輸入資料
125:深度神經網絡模型
127:壓縮後的資料
210:直接存儲器訪問引擎
S1.1,S1.2,S1.3,S1.4,S1.5,S2.1,S2.2,S2.3,S2.4,510,520,530,610,620,630:步驟
411:壓縮後的CONV1權重
412:壓縮後的CONV2權重
413:操作參數
420:緩衝器
424:壓縮後的CONV1輸出
426:壓縮後的CONV2輸出
500,600:方法
圖1是示出根據一個實施例的用於執行神經網絡操作的系統100的框圖。
圖2A和圖2B示出了根據兩個替代的實施例的加速器150和存儲器120之間的交互。
圖3是說明根據一個實施例的由壓縮器執行的轉換操作的圖。
圖4是圖示根據一個實施例的CNN操作中的資料移動(movement)的圖。
圖5是圖示根據一個實施例的壓縮浮點數的方法500的流程圖。
圖6是圖示根據一個實施例的將資料解壓縮成浮點數的方法600的流程圖。
500:方法
510,520,530:步驟
Claims (20)
- 一種壓縮用於神經網絡計算的操作數的方法,包括: 接收複數個操作數,其中每個操作數具有包括符號位、指數和分數的浮點表示; 將該複數個操作數重新排序為由符號位構成的第一序列、由指數構成的第二序列和由分數構成的第三序列;和 壓縮該第一序列、該第二序列和該第三序列以至少去除重複的指數,從而無損地生成壓縮後的資料序列。
- 如請求項1所述的壓縮用於神經網絡計算的操作數的方法,其中共用相同指數的複數個符號位、複數個指數和複數個分數被分別重新排序到該第一序列、該第二序列和該第三序列中的每一個中的相鄰空間位置。
- 如請求項1所述的壓縮用於神經網絡計算的操作數的方法,還包括: 在多批次的N個操作數中執行該重新排序和該壓縮,N是一個非負整數。
- 如請求項1所述的壓縮用於神經網絡計算的操作數的方法,其中在壓縮該第一序列、該第二序列和該第三序列時,還去除重複的符號位。
- 如請求項1所述的壓縮用於神經網絡計算的操作數的方法,還包括: 生成指示在該重新排序和該壓縮中使用的參數的元資料。
- 如請求項1所述的壓縮用於神經網絡計算的操作數的方法,其中該複數個操作數包括卷積神經網絡的層的複數個權重。
- 如請求項1所述的壓縮用於神經網絡計算的操作數的方法,該複數個操作數包括來自執行卷積神經網絡的一層的加速器的激活輸出。
- 如請求項7所述的壓縮用於神經網絡計算的操作數的方法,還包括: 將該壓縮後的資料序列存儲在存儲器中;和 獲取該壓縮後的資料序列以進行解壓縮,以供該加速器執行該卷積神經網絡的一後續層。
- 如請求項1所述的壓縮用於神經網絡計算的操作數的方法,適用於任何位寬的指數。
- 一種解壓縮壓縮資料序列的方法,包括: 將壓縮後的資料序列解壓縮為N個符號位構成的第一序列、N個指數構成的第二序列和N個分數構成的第三序列,其中N為正整數,其中該壓縮後的資料序列表示N個操作數且不包含重複的指數; 將該N個符號位構成的該第一序列、該N個指數構成的第二序列和該N個分數構成的第三序列重新排序為表示該N個操作數的N個浮點數構成的恢復後的序列;和 將該N個浮點數構成的恢復後的序列發送到加速器以進行神經網絡計算。
- 如請求項10所述的解壓縮壓縮資料序列的方法,在該解壓縮後,共用相同指數的複數個符號位、複數個指數和複數個分數被分別重新排序到該第一序列、該第二序列和該第三序列中的每一個中的相鄰空間位置。
- 一種操作數處理系統,包括: 加速器電路;和 耦合到該加速器電路的壓縮器電路,該壓縮器電路用於: 接收複數個操作數,其中每個操作數具有包括符號位、指數和分數的浮點表示; 將該複數個操作數重新排序為由符號位構成的第一序列、由指數構成的第二序列和由分數構成的第三序列;和 壓縮該第一序列、該第二序列和該第三序列以至少去除重複的指數,從而無損地生成壓縮後的資料序列。
- 如請求項12所述的操作數處理系統,其中共用相同指數的複數個符號位、複數個指數和複數個分數被分別重新排序到該第一序列、該第二序列和該第三序列中的每一個中的相鄰空間位置。
- 如請求項12所述的操作數處理系統,其中該壓縮器電路還用於: 在多批次的N個操作數中執行該重新排序和該壓縮,N是一個非負整數。
- 如請求項12所述的操作數處理系統,其中在壓縮該第一序列、該第二序列和該第三序列時,該壓縮器電路還用於去除重複的符號位。
- 如請求項12所述的操作數處理系統,其中該壓縮器電路還用於: 生成指示在該重新排序和該壓縮中使用的參數的元資料。
- 如請求項12所述的操作數處理系統,其中該複數個操作數包括卷積神經網絡的層的複數個權重。
- 如請求項12所述的操作數處理系統,該複數個操作數包括來自執行卷積神經網絡的一層的該加速器電路的激活輸出。
- 如請求項18所述的操作數處理系統,還包括: 存儲器,其中壓縮器電路進一步用於: 將該壓縮後的資料序列存儲在該存儲器中;和 獲取該壓縮後的資料序列以進行解壓縮,以供該加速器電路執行該卷積神經網絡的一後續層。
- 如請求項12所述操作數處理系統,其中該壓縮器電路還用於: 解壓縮該壓縮後的資料序列,以浮點格式無損地恢復該複數個操作數。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/724,849 | 2022-04-20 | ||
US17/724,849 US11742875B1 (en) | 2022-04-20 | 2022-04-20 | Compression of floating-point numbers for neural networks |
Publications (2)
Publication Number | Publication Date |
---|---|
TWI820711B TWI820711B (zh) | 2023-11-01 |
TW202343981A true TW202343981A (zh) | 2023-11-01 |
Family
ID=87767267
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW111118363A TWI820711B (zh) | 2022-04-20 | 2022-05-17 | 壓縮操作數的方法、解壓縮壓縮資料序列的方法及系統 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11742875B1 (zh) |
CN (1) | CN116957086A (zh) |
TW (1) | TWI820711B (zh) |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AU2610701A (en) * | 2000-01-03 | 2001-07-16 | Efeckta Technologies Corporation | Efficient and lossless conversion for transmission or storage of data |
CN1781253B (zh) * | 2003-06-20 | 2012-01-25 | 日本电信电话株式会社 | 浮点格式的数字信号的无损编码方法、解码方法及其装置 |
TW201141081A (en) * | 2009-12-29 | 2011-11-16 | Ibm | Prefix-offset encoding method for data compression |
US9660666B1 (en) * | 2014-12-22 | 2017-05-23 | EMC IP Holding Company LLC | Content-aware lossless compression and decompression of floating point data |
US10929127B2 (en) * | 2018-05-08 | 2021-02-23 | Intel Corporation | Systems, methods, and apparatuses utilizing an elastic floating-point number |
-
2022
- 2022-04-20 US US17/724,849 patent/US11742875B1/en active Active
- 2022-05-17 TW TW111118363A patent/TWI820711B/zh active
- 2022-05-19 CN CN202210553758.2A patent/CN116957086A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
CN116957086A (zh) | 2023-10-27 |
TWI820711B (zh) | 2023-11-01 |
US11742875B1 (en) | 2023-08-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10860922B2 (en) | Sparse convolutional neural network accelerator | |
RU2767447C2 (ru) | Процессор нейронной сети, использующий сжатие и распаковку данных активации для снижения использования пропускной способности памяти | |
US10810763B2 (en) | Data compression using entropy encoding | |
US9026568B2 (en) | Data compression for direct memory access transfers | |
JP2020532777A (ja) | ディープニューラルネットワークの実行方法、実行装置、学習方法、学習装置及びプログラム | |
JPH11505640A (ja) | ビット・スライス式テーブル・ルックアップ・デジタルたたみ込み | |
CN114402596B (zh) | 神经网络模型解码方法、装置、系统和介质 | |
US12119846B2 (en) | Compressing device and method using parameters of quadtree method | |
WO2023227077A1 (en) | Method for training a neural network with flexible feature compression capability, and neural network system with flexible feature compression capability | |
EP4398487A1 (en) | Data encoding method, data decoding method, and data processing apparatus | |
Zhou et al. | An efficient implementation of LZW decompression in the FPGA | |
WO2022143432A1 (zh) | 一种矩阵计算装置、方法、系统、电路、芯片及设备 | |
WO2020160608A1 (en) | Highly parallel convolutional neural network | |
TWI820711B (zh) | 壓縮操作數的方法、解壓縮壓縮資料序列的方法及系統 | |
Hsiao et al. | Sparsity-aware deep learning accelerator design supporting CNN and LSTM operations | |
WO2023205969A1 (zh) | 点云几何信息的压缩、解压缩及点云视频编解码方法、装置 | |
WO2023159820A1 (zh) | 图像压缩方法、图像解压缩方法及装置 | |
WO2024011426A1 (zh) | 一种点云几何数据增强、编解码方法、装置和系统 | |
WO2022198233A1 (en) | Efficient compression of activation functions | |
US20210157485A1 (en) | Pattern-based cache block compression | |
CN115708090A (zh) | 一种计算装置、方法、系统、电路、芯片及设备 | |
KR20220149281A (ko) | 특징 맵을 컴프레싱하는 장치 및 방법 | |
Wu et al. | Accelerating a lossy compression method with fine-grained parallelism on a gpu | |
CN114025161A (zh) | 图像处理中的频率特定压缩与补偿技术 | |
Neseem et al. | Sparse Bitmap Compression for Memory-Efficient Training on the Edge |