TW202347183A - 用於深度學習網路的優化方法、運算裝置及電腦可讀取媒體 - Google Patents
用於深度學習網路的優化方法、運算裝置及電腦可讀取媒體 Download PDFInfo
- Publication number
- TW202347183A TW202347183A TW111119653A TW111119653A TW202347183A TW 202347183 A TW202347183 A TW 202347183A TW 111119653 A TW111119653 A TW 111119653A TW 111119653 A TW111119653 A TW 111119653A TW 202347183 A TW202347183 A TW 202347183A
- Authority
- TW
- Taiwan
- Prior art keywords
- value
- search
- quantization
- deep learning
- quantized
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 46
- 238000013135 deep learning Methods 0.000 title claims abstract description 44
- 238000013139 quantization Methods 0.000 claims abstract description 122
- 238000009826 distribution Methods 0.000 claims abstract description 72
- 230000004913 activation Effects 0.000 claims description 43
- 238000005457 optimization Methods 0.000 claims description 20
- 238000011156 evaluation Methods 0.000 claims description 14
- 238000012549 training Methods 0.000 claims description 11
- 238000012937 correction Methods 0.000 claims description 4
- 238000011002 quantification Methods 0.000 claims description 3
- 239000010410 layer Substances 0.000 description 42
- 238000001994 activation Methods 0.000 description 38
- 238000010586 diagram Methods 0.000 description 16
- 238000013528 artificial neural network Methods 0.000 description 6
- 230000014509 gene expression Effects 0.000 description 5
- 230000006835 compression Effects 0.000 description 4
- 238000007906 compression Methods 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 3
- 230000000694 effects Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000013527 convolutional neural network Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000004069 differentiation Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000011430 maximum method Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000003062 neural network model Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000004445 quantitative analysis Methods 0.000 description 1
- 239000002356 single layer Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
Classifications
-
- 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/0495—Quantised networks; Sparse networks; Compressed networks
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Life Sciences & Earth Sciences (AREA)
- Molecular Biology (AREA)
- Artificial Intelligence (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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Image Analysis (AREA)
- Complex Calculations (AREA)
- Feedback Control In General (AREA)
Abstract
本發明實施例提出一種用於深度學習網路的優化方法、運算裝置及電腦可讀取媒體。在方法中,自預訓練模型取得數值分布。決定數值分布的值域內的一個或更多個斷點。對這參數類型在多個區段中的第一區段的數值使用第一量化參數且對在那些區段中的第二區段的數值使用第二量化參數進行量化。數值分布是深度學習網路中的參數類型的數值的統計分布。斷點將值域區分成多個區段。第一量化參數不同於第二量化參數。藉此,可降低準確度下降。
Description
本發明是有關於一種機器學習技術,且特別是有關於一種用於深度學習網路的優化方法、運算裝置及電腦可讀取媒體。
近年來,隨著人工智慧(Artificial Intelligence,AI)技術的日益更新,神經網路模型的參數量及運算複雜度也日益增長。因此,用於深度學習網路的壓縮技術也隨之蓬勃發展。值得注意的是,量化是壓縮模型的重要技術。然而,現有量化後模型的預測準確度及壓縮率仍有待改進。
有鑑於此,本發明實施例提供一種用於深度學習網路的優化方法、運算裝置及電腦可讀取媒體,利用多尺度動態量化,可確保預測準確度及壓縮率。
本發明實施例的用於深度學習網路的優化方法包括(但不僅限於)下列步驟:自預訓練模型取得數值分布。決定數值分布的值域內的一個或更多個斷點(breaking point)。對這參數類型在多個區段中的第一區段的數值使用第一量化參數且對在那些區段中的第二區段的數值使用第二量化參數進行量化。數值分布是深度學習網路中的參數類型的數值的統計分布。斷點將值域區分成多個區段。第一量化參數不同於第二量化參數。
本發明實施例的用於深度學習網路的運算裝置包括(但不僅限於)記憶體及處理器。記憶體用以儲存程式碼。處理器耦接記憶體。處理器經配置用以載入且執行程式碼以自預訓練模型取得數值分布,決定數值分布的值域內的一個或更多個斷點,並對這參數類型在多個區段中的第一區段的數值使用第一量化參數且對在那些區段中的第二區段的數值使用第二量化參數進行量化。數值分布是深度學習網路中的參數類型的數值的統計分布。斷點將值域區分成多個區段。第一量化參數不同於第二量化參數。
本發明實施例的非暫態電腦可讀取儲存媒體用於儲存程式碼。處理器載入這程式碼以執行如上述的用於深度學習網路的優化方法。
基於上述,依據用於深度學習網路的優化方法、運算裝置及電腦可讀取媒體,依據斷點將數值分布區分成多個區段,並對這些區段上的數值分別使用不同量化參數。藉此,量化後的分布可更加近似原數值分布,從而提升模型的預測準確度。
為讓本發明的上述特徵和優點能更明顯易懂,下文特舉實施例,並配合所附圖式作詳細說明如下。
圖1是依據本發明一實施例的運算裝置100的元件方塊圖。請參照圖1,運算裝置100包括(但不僅限於)記憶體110及處理器150。運算裝置100可以是桌上型電腦、筆記型電腦、智慧型手機、平板電腦、伺服器或其他電子裝置。
記憶體110可以是任何型態的固定或可移動隨機存取記憶體(Radom Access Memory,RAM)、唯讀記憶體(Read Only Memory,ROM)、快閃記憶體(flash memory)、傳統硬碟(Hard Disk Drive,HDD)、固態硬碟(Solid-State Drive,SSD)或類似元件。在一實施例中,記憶體110用以儲存程式碼、軟體模組、組態配置、資料或檔案(例如,樣本、模型參數、數值分布或斷點)。
處理器150耦接記憶體110。處理器150可以是中央處理單元(Central Processing Unit,CPU)、圖形處理單元(Graphic Processing unit,GPU),或是其他可程式化之一般用途或特殊用途的微處理器(Microprocessor)、數位信號處理器(Digital Signal Processor,DSP)、可程式化控制器、現場可程式化邏輯閘陣列(Field Programmable Gate Array,FPGA)、特殊應用積體電路(Application-Specific Integrated Circuit,ASIC)、神經網路加速器或其他類似元件或上述元件的組合。在一實施例中,處理器150用以執行電腦系統100的所有或部份作業,且可載入並執行記憶體110所儲存的各程式碼、軟體模組、檔案及資料。
下文中,將搭配運算裝置100中的各項裝置、元件及模組說明本發明實施例所述之方法。本方法的各個流程可依照實施情形而隨之調整,且並不僅限於此。
圖2是依據本發明一實施例的用於深度學習網路的優化方法的流程圖。請參照圖2,處理器150自預訓練模型取得一個或更多個數值分布(步驟210)。具體而言,預訓練模型是基於深度學習網路(例如,YOLO(You only look once)、AlexNet、ResNet、基於區段的卷積神經網路(Region Based Convolutional Neural Networks,R-CNN)、或快速R-CNN(Fast CNN))。也就是說,預訓練模型是對深度學習網路輸入訓練樣本所訓練得出的模型。須說明的是,這預訓練模型可用於影像分類、物件偵測或其他推論,且本發明實施例不加以限制其用途。已訓練的預訓練模型可能達到預設準確度的標準。
值得注意的是,預訓練模型在各層皆有對應的參數(例如,權重、輸入/輸出激活(activation)值/特徵值)。可想而知,過多的參數會需要較高的運算及儲存需求,參數的複雜度越高亦會提高運算量。而量化是用於減少神經網路的複雜度的其中一種技術。量化可減少用於表現激活/特徵值或權重的位元數。量化方法的類型有很多種。例如,對稱(symmetric)量化、非對稱(Asymmetric)量化及裁減(clipping)方法。
另一方面,數值分布是深度學習網路中的一個或更多個參數類型的數值的統計分布。參數類型可以是權重、輸入激活/特徵值及/或輸出激活/特徵值。統計分布表現各數值的統計量(例如,總數)的分布情況。舉例而言,圖3是依據本發明一實施例的數值分布的示意圖。請參照圖3,預訓練模型中的權重或輸入/輸出激活/特徵值的數值分布類似高斯(Gaussian)、拉普拉斯(Laplacian)、鈴狀(bell-shaped)分布。值得注意的是,如圖3所示,大部分數值位於數值分布的中間區段。若對這些數值使用均勻(uniform)量化,則中間區段的數值可能都被量化成零,並可能會降低模型預測的準確度。因此,需要針對用於深度學習網路的參數類型的數值,提供量化改進方案。
在一實施例中,處理器150可利用驗證資料產生數值分布。例如,處理器150可將驗證資料透過預訓練的浮點數模型(Floating-point model)(即,預訓練模型)進行推論(inference),收集各層參數(例如,權重、輸入激活/特徵值、輸出激活/特徵值),並統計這類型參數的數值以產生這參數的數值分布。
請參照圖2,處理器150決定數值分布的值域內的一個或更多斷點(步驟S220)。具體而言,如圖3所示,數值在不同區段的總數可能有很大的差異。例如,中間區段的數值的總量明顯多於兩側/尾部區段的數值的總量。而這些斷點是用於將值域區分成多個區段。例如,圖3中值域上的一個斷點p(實數)將值域範圍為[-m, m]的數值分布區分成兩個對稱區段。m(實數)代表數值分布中在值域上的絕對值最大者。兩個對稱區段包括中間區段及尾部區段。中間區段在[-p, p]的範圍內,且尾部區段是範圍[-m, m]內的其他區段。
以圖3為例且假設數值是浮點數,若值域被區分成中間區段及尾部區段,則中間區段的數值可能需要多的位元寬度來表示小數部分,以避免過多的數值都被量化成零。此外,針對尾部區段,可能需要較多個位元寬度來表示整數部分,以提供足夠能力來量化較大數值。由此可知,斷點是用於將數值分類至不同量化需求的依據。此外,為了數值分布找出合適的斷點,將有助於量化效果。
圖4是依據本發明一實施例的斷點搜尋的流程圖。請參照圖4,處理器150可自數值分布的值域決定多個第一搜尋點(步驟S410)。這些第一搜尋點將用於評估是否可作為斷點。這些第一搜尋點位於值域內。在一實施例中,任兩相鄰第一搜尋點的間距相同於另兩相鄰第一搜尋點。在其他實施例中,相鄰第一搜尋點的間距可能不同。
處理器150可依據那些第一搜尋點分別區分值域,以形成對應於每一第一搜尋點的多個評估段(步驟S420)。也就是說,任一搜尋點將值域區分成多個評估段,或是任一個評估段位於相鄰兩第一搜尋點之間。在一實施例中,處理器150可在數值分布的值域中決定第一搜尋空間。這第一搜尋點可對第一搜尋空間均分成多個評估段。處理器150可利用斷點比例來定義第一搜尋空間及第一搜尋點。多個斷點比例分別是那些第一搜尋點所佔數值分布中的絕對值最大者的比例,其數學表示式(1)為:
…(1)
為斷點比例,
為任一第一搜尋點、其他搜尋點或斷點,
為數值分布中的絕對值最大者。例如,第一搜尋空間為[0.1, 0.9]且間距為0.1。即,那些第一搜尋點的斷點比例分別是0.1、0.2、0.3等,依此類推至0.9,並可依據數學表示式回推這些第一搜尋點。
處理器150可對每一第一搜尋點的那些評估段分別依據不同量化參數進行量化,以得出每一第一搜尋點對應的量化值(步驟S430)。也就是說,任一個搜尋點的不同評估段使用不同量化參數。以動態固定點量化為例,其量化參數包括位元寬度(Bit Width,BW)、整數長度(Integer Length,IL)及小數長度(Fraction Length,FL)。不同量化參數例如是不同整數長度及/或不同小數長度。須說明的是,不同量化方法所用的量化參數可能不同。在一實施例中,在相同位元寬度下,數值接近零的區段所用的小數長度較長,具有較大數值的區段所用的整數長度較長。
處理器150可比較那些第一搜尋點的差異量,以得出一個或更多個斷點(步驟S440)。第一搜尋點的差異量包括其量化值與對應的未量化值(即,量化前的數值)之間的差異。例如,差異量是均方誤差(Mean Squared Error,MSE)、均方根誤差(Root Mean Squared Error,RMSE)或平均絕對誤差(Mean Absolute Error)。以MSE為例,其數學表示式(2)如下:
…(2)
MSE為以MSE計算的差異量,
是(未量化)的數值(例如,權重或輸入/輸出激活/特徵值),
是量化值,
為常數,n是那些數值的總數。量化值以對稱量化為例,其公式(3)、(4)如下:
…(3)
…(4)
為量化值,
為浮點數的數值(即,未量化值),
為量化階層比例,
為數值分布中的最大者,
為數值分布中的最小者,
為量化值中的最大者,且
為量化值中的最小者。
在一實施例中,處理器150可使用那些第一搜尋點中具有較小差異量的一者或更多個作為一個或更多個斷點。以一個斷點為例,處理器150可選擇那些第一搜尋點中具有最小差異量的一者作為斷點。以兩個斷點為例,處理器150選擇那些第一搜尋點中具有最小差異量及第二小差異量的兩者作為斷點。
以選擇差異量最小者為例,圖5是依據本發明一實施例的斷點搜尋的流程圖。請參照圖5,處理器150可決定搜尋空間,並取得當前第一搜尋點的量化值(步驟S510)。例如,數值分布中的最大者及最小者作為搜尋空間的上限及下限。此外,對第一搜尋點所區分的兩個區段使用不同量化參數進行量化。處理器150可決定當前第一搜尋點的差異量(步驟S520)。例如,量化值與未量化值的均方誤差。處理器150可決定當前第一搜尋點的差異量是否小於先前差異量(步驟S530)。這先前差異量是上一次計算的另一個第一搜尋點的差異量。若當前差異量小於先前差異量,則處理器150可使用當前第一搜尋點更新斷點比例(步驟S540)。例如,將第一搜尋點代入數學表示式(1)可得出斷點比例。若當前差異量未小於先前差異量,則處理器150可禁能/忽略/不更新斷點比例。接著,處理器150可決定當前第一搜尋點是否為搜尋空間中的最後搜尋點(步驟S550)。即,確認所有第一搜尋點皆已比較差異量。若尚有其他第一搜尋點的差異量未與其他差異量比較,則處理器150可決定下一個第一搜尋點的量化值(步驟S510)。若第一搜尋點皆已與其他第一搜尋點比較,則處理器150可輸出最終的斷點比例,且依據這斷點比例決定斷點(步驟S560)。
圖6是依據本發明一實施例的第一階段搜尋的示意圖。請參照圖6,這些第一搜尋點FSP中的相鄰兩者之間具有間距ES。在一實施例中,第一階段搜尋可作為粗略搜尋,且可另提供第二階段的精細搜尋。例如,第二階段定義第二搜尋點,且相鄰兩第二搜尋點之間的間距小於相鄰兩第一搜尋點之間的間距。這些第二搜尋點也是用於評估是否可作為斷點,且這些第二搜尋點位於數值分布的值域內。
在一實施例中,處理器150可依據那些第一搜尋點中具有較小差異量的一者或更多者決定第二搜尋空間。這第二搜尋空間小於第一搜尋空間。以斷點比例定義,在一實施例中,處理器150可依據那些第一搜尋點中具有最小差異量的一者決定斷點比例。這斷點比例即是這具有最小差異量的一者所佔數值分布中的絕對值最大者的比例,並可參照數學表示式(1)的相關說明,於此不再贅述。處理器150可依據這斷點比例決定第二搜尋空間。這具有最小差異量的一者可位於第二搜尋空間中間。例如,斷點比例是0.5,則第二搜尋空間的範圍可以是[0.4, 0.6],且相鄰兩第二搜尋點之間的間距可以是0.01(假設第一搜尋點之間的間距是0.1)。須說明的是,第一階段中具有最小差異量的斷點比例不限於位於第二搜尋空間中間。
圖7是依據本發明一實施例的第二階段搜尋的示意圖。請參照圖7是數值分布的局部放大圖。與圖6相比,圖7中的相鄰兩第二搜尋點SSP之間的間距明顯小於圖6中的間距ES。此外,第二搜尋點SSP均分第二搜尋空間,並據以區分出對應的多個評估段。
相似地,針對第二階段,處理器150可對每一第二搜尋點所區分的評估段上的數值使用不同量化參數進行量化,以得出每一第二搜尋點對應的量化值。接著,處理器150可比較那些第二搜尋點的差異量,以得出一個或更多個斷點。第二搜尋點的差異量包括其量化值與對應的未量化值之間的差異。例如,差異量為MSE、RMSE或MAE。此外,處理器150可使用那些第二搜尋點中具有較小差異量的一者或更多個作為一個或更多個斷點。以一個斷點為例,處理器150可選擇那些第二搜尋點中具有最小差異量的一者作為斷點。
請參照圖2,處理器150對這參數類型在多個區段中的第一區段的數值使用第一量化參數且對在那些區段中的第二區段的數值使用第二量化參數進行量化(步驟S230)。具體而言,如步驟S220的說明,斷點是用於在數值分布中區分有不同量化需求的區段。因此,本發明實施例針對不同區段提供不同量化參數。例如,圖8是依據本發明一實施例的多尺度(multiple scale)的動態固定點量化(Dynamic Fixed-Point Quantization)的示意圖。請參照圖8,一對斷點BP將數值分布區分成中間區段及尾部區段,虛線代表量化參數進行量化的示意線,中間區段的數值較密集,尾部區段的數值較疏散,且兩個區段利用不同的量化參數進行量化。
針對數值分布較密集的中間區段,處理器150可指派較多位元寬度給小數長度(FL);針對數值分布較稀疏的尾部區段,處理器150可指派較多位元寬度給整數長度(IL)。圖9是依據本發明一實施例說明量化參數的示意圖。請參照圖9,以動態固定點量化為例,代表數值的12個位元中,除了額外位元901及符號(sign)位元902之外,尾數(Mantissa)903包括整數部分904及小數部分905。若小數長度為3(即,
fl=3),則如圖所示小數部分905占用三個位元。在一些應用情境中,動態固定點量化相較於非對稱量化更加適用於硬體實現。例如,除了加法器及乘法器,神經網路加速器僅需要額外支援平移運算。然而,在其他實施例中,也可採用非對稱量化或其他量化方法。
另須說明的是,若得出兩個以上的斷點,則不限於兩種量化參數會應用在不同區段。
在一實施例中,處理器150可進行結合裁減(clipping)方法的動態固定點量化(Dynamic Fixed-Point Quantization)。處理器150可依據數值分布中的絕對值最大者及絕對值最小者決定第一量化參數、第二量化參數或其他量化參數中的整數長度。裁減方法以百分比裁減(Percentile Clipping)為例,圖3所示的鈴狀分布中遠離中間的數值非常少,而百分比裁減可減輕這些離峰值的影響。處理器150可將數值分布中位於百分之99.99的數值作為最大者W
max,且將數值分布中位於百分之0.01的數值作為最小者W
min。處理器150可依據方程式(5)決定例如是權重的整數長度
:
…(5)
須說明的是,最大者及最小者不限於上述99.99%及0.01,量化不限於結合百分比裁減,且量化方法也不限於動態固定點量化。此外,輸入激活/特徵值、輸出激活/特徵值或其他參數類型也可適用。以絕對最大值(Absolute Max Value)為例,處理器150可將一部分的訓練樣本作為校正樣本,並推論校正樣本以取得激活/特徵值的數值分布。這數值分布中的最大者可作為裁減方法所用的最大者。而方程式(5)可決定例如是輸入/輸出激活/特徵值的整數長度:
…(6)
…(7)
為輸入激活/特徵值的整數長度,
為輸出激活/特徵值的整數長度,
為輸入激活/特徵值的數值分布中的最大者,
為輸出激活/特徵值的數值分布中的最大者,
為輸入激活/特徵值的數值分布中的最小者,且
為輸出激活/特徵值的數值分布中的最小者。
另一方面,圖10是依據本發明一實施例說明階梯(step)型量化的示意圖。請參照圖10,量化方程式通常是階梯型。數值最大者x_max及數值最小者x_min之間相同階層的數值被量化成相同值。然而,伴隨著階梯型量化的神經網路訓練,可能因參數有零梯度(gradient)而無法更新,進而難以學習。因此,需要改進量化方程式的梯度。
直通估測器(Straight Through Estimator,STE)可用於趨近量化方程式的梯度。在一實施例中,處理器150可使用限制邊界(boundary constraint)的直通估測器(Straight Through Estimator,STE)來進一步減緩梯度雜訊。圖11是依據本發明一實施例說明限制邊界的直通估測器(Straight Through Estimator with Boundary Constraint,STEBC)的示意圖。請參照圖11,STEBC可避開量化方程式的微分,並設定量化方程式為輸入梯度等於輸出梯度。方程式(8)可表示STEBC:
…(8)
…(9)
…(10)
lb為下限,
ub為上限,
fl為小數長度,R為實數,Q為已量化,
為實數的數值(即,未量化值),
為量化值,
y為輸出激活/特徵值,且
B為位元寬度。若數值
在上限與下限之間的限制範圍[
lb, ub],則處理器150可將其實數梯度
等於量化梯度
。而若數值
在限制範圍[
lb,
ub]以外,則處理器150可忽略其梯度並將量化梯度直接設為零。
圖12是依據本發明一實施例的模型修正的流程圖。請參照圖12,對預訓練模型中的參數量化後可得到已量化模型。例如,深度學習網路中的各層的權重、輸入激活/特徵值及/或輸出激活/特徵值已被量化。在一實施例中,除了針對相同參數類型的不同區段使用不同量化參數,處理器150可針對不同參數類型使用不同量化參數。以AlexNet為例,參數類型為權重的值域範圍為[2
-11, 2
-3],而參數類型為激活/特徵值的值域範圍為[2
-2, 2
8]。若使用單一量化參數同時涵蓋這兩個值域範圍,則恐需要較大位元寬度來表示數值。因此,可針對不同參數類型的值域範圍賦予不同量化參數。
在一實施例中,深度學習網路中加入多個量化層。這量化層可區分成用於權重、輸入激活/特徵值及輸出激活/特徵值三個部分。此外,可分別提供不同或相同的位元寬度及/或小數長度來表示量化層的三個部份的數值。藉此,可達成層層(layer-by-layer)階級的量化層。
圖13是依據本發明一實施例的層層階級的量化層的流程圖。請參照圖13,處理器150可取得參數類型中的輸入激活/特徵值及權重(以浮點數為例)(步驟S101、S102),並分別量化權重或輸入激活/特徵值的數值(步驟S103、S104)(例如,前述動態固定點量化、非對稱量化或其他量化方法),以取得量化的輸入激活/特徵值及量化的權重(步驟S105、S106)。處理器150可將量化的數值輸入運算層(步驟S107)。這運算層例如執行卷積(convolution)運算、全連接(fully-connected)或其他運算。接著,處理器150可取得運算層所輸出的參數類型中的輸出激活/特徵值(步驟S108),量化輸出激活/特徵值的數值(步驟S109),並據以取得量化的輸出激活/特徵值(步驟S110)。這些量化步驟S103、S104及S109可視為量化層。這機制可將量化層連接一般的浮點層或客製化層。此外,在一些實施例中,處理器150可使用浮點通用矩陣乘法(General Matrix Multiplication,GEMM)程式庫(例如,統一計算架構(Compute Unified Device Architecture,CUDA))來加速訓練及推論處理。
處理器50可後訓練(post-training)已量化模型(步驟S121)。例如,利用已標記結果的訓練樣本訓練已量化模型。圖14是依據本發明一實施例的層層後訓練量化的流程圖。請參照圖14,處理器150可利用例如百分比裁減或多尺度量化方法在已訓練的權重,以決定已量化模型中的每一量化層的權重的整數長度(步驟S141、S143)。百分比裁減的範例可參酌方程式(5)的相關說明,於此不再贅述。接著,處理器150可依據已量化模型推論多個校正樣本決定已量化模型中的每一量化層中的輸入/輸出激活/特徵值的數值分布,並據以挑選裁減方法所用的最大者。處理器150可利用例如以絕對最大值或多尺度量化方法在已訓練的輸入/輸出激活/特徵值,以決定已量化模型中的每一量化層中的激活/特徵值的整數長度(步驟S142、S143)。絕對最大值的範例可參酌方程式(6)、(7)的相關說明,於此不再贅述。
接著,處理器150可依據每一量化層的位元寬度限制決定每一量化層的數值/激活/特徵值的小數長度(步驟S144)。方程式(11)是用於決定小數長度:
…(11)
FL為小數長度,
BW為預定義的位元寬度限制,且
IL為整數長度。在一些應用情況下,方程式(11)所得出的整數長度可能小於方程式(5)~(7)所得出的整數長度。例如,減少一個位元。針對整數長度的些微調整將有助於提升模型的預測準確度。最終,處理器150可取得後訓練已量化模型(步驟S145)。
請參照圖12,處理器150可重新訓練/微調訓練的量化模型(步驟S122)。在一些應用情境中,後訓練已訓練模型可能會降低預測準確度。因此,可透過微調來改進準確度。在一實施例中,處理器150可利用限制邊界的直通估測器(STEBC)決定用於參數類型為權重的量化的梯度。這直通估測器經組態為在上限及下限之間的輸入梯度等於輸出梯度。如同前述說明,限制邊界的直通估測器可改進梯度的趨近。而本發明實施例是針對深度學習網路中的單一層引入限制邊界的直通估測器並提供層層(layer-by-layer)階層的微調。也就是,除了對正向傳遞(forward propagation)提供層層量化,在反向傳遞(backward propagation)也可提供層層微調。而正向傳遞的層層量化可參酌圖13的相關說明,於此不再贅述。
圖15是依據本發明一實施例的模型微調的流程圖。請參照圖15,針對訓練的量化模型,在反向傳遞中,處理器150可取得來自下一層(next layer)的梯度(步驟S151),並利用限制邊界的直通估測器在輸出激活/特徵值的梯度進行微調(步驟S152),以取得量化層輸出的梯度(步驟S153)。須說明的是,以神經網路推論為例,從神經網路的輸入層開始,並依序往其輸出層進行前向傳播。以其中一層的相鄰前後各一層而言,較靠近輸入層的那一層為前一層(Previous layer),且較靠近輸出層的那一層則為下一層。此外,處理器150可利用浮點運算自訓練的量化模型的權重及輸入激活/特徵值決定其對應梯度(步驟S154),分別利用限制邊界的直通估測器在權重及輸入激活/特徵值的梯度進行微調(步驟S155、S156),並據以決定權重的梯度及用於前一層的梯度(步驟S157、S158)。接著,處理器150可利用梯度下降(gradient decent)法更新權重(步驟S159)。這權重例如可在圖13的步驟S102所用。值得注意的是,所更新的梯度仍可應用在浮點數的量化。最終,處理器150可取得微調的已量化模型(步驟S123)。藉此,可進一步提升預測準確度。
本發明實施例更提供一種非暫態電腦可讀取儲存媒體(例如,硬碟、光碟、快閃記憶體、固態硬碟(Solid State Disk,SSD)等儲存媒體),並用以儲存程式碼。運算裝置100的處理器150或其他處理器可載入程式碼,並據以執行本發明實施例的一個或更多個優化方法的相應流程。這些流程可參酌上文說明,且於此不再贅述。
綜上所述,在本發明實施例的用於深度學習網路的優化方法、運算裝置及電腦可讀取媒體中,分析預訓練模型參數的數值分布,並決定將值域區分成不同量化需求的斷點。斷點(breakpoint)可將不同參數類型的數值分布區分成多個區段及/或將單一參數類型的數值分布區分成多個區段。不同區段分別使用不同的量化參數。利用百分比裁減方法決定權重的整數長度,且利用絕對最大值方法決定輸入/輸出特徵/激活值的整數長度。此外,引入限制邊界的直通估測器來改進梯度的趨近。藉此,可降低準確度下降(accuracy drop),並達到可容許的壓縮效果。
雖然本發明已以實施例揭露如上,然其並非用以限定本發明,任何所屬技術領域中具有通常知識者,在不脫離本發明的精神和範圍內,當可作些許的更動與潤飾,故本發明的保護範圍當視後附的申請專利範圍所界定者為準。
100:運算裝置
110:記憶體
150:處理器
S210~S130、S410~S440、S510~S560、S121~S123、S101~S110、S141~S145、S151~S159:步驟
m、-m:絕對值最大者
ES:區間
FSP:第一搜尋點
SSP:第二搜尋點
p、BP:斷點
901:額外位元
902:符號位元
903:尾數
904:整數部分
905:小數部分
fl:小數長度
x_max:數值最大者
x_min:數值最小者
圖1是依據本發明一實施例的運算裝置的元件方塊圖。
圖2是依據本發明一實施例的用於深度學習網路的優化方法的流程圖。
圖3是依據本發明一實施例的數值分布的示意圖。
圖4是依據本發明一實施例的斷點搜尋的流程圖。
圖5是依據本發明一實施例的斷點搜尋的流程圖。
圖6是依據本發明一實施例的第一階段搜尋的示意圖。
圖7是依據本發明一實施例的第二階段搜尋的示意圖。
圖8是依據本發明一實施例的多尺度(multiple scale)的動態固定點量化(Dynamic Fixed-Point Quantization)的示意圖。
圖9是依據本發明一實施例說明量化參數的示意圖。
圖10是依據本發明一實施例說明階梯(step)型量化的示意圖。
圖11是依據本發明一實施例說明限制邊界的直通估測器(Straight Through Estimator,STE)的示意圖。
圖12是依據本發明一實施例的模型修正的流程圖。
圖13是依據本發明一實施例的層層(layer-by-layer)階級的量化層的流程圖。
圖14是依據本發明一實施例的層層後訓練量化的流程圖。
圖15是依據本發明一實施例的模型微調的流程圖。
S210~S230:步驟
Claims (20)
- 一種用於深度學習網路的優化方法,包括: 自一預訓練模型取得一數值分布,其中該數值分布是一深度學習網路中的一參數類型的數值的統計分布; 決定該數值分布的一值域內的至少一斷點(breaking point),其中該至少一斷點將該值域區分成多個區段;以及 對該參數類型在該些區段中的一第一區段的數值使用一第一量化參數且對在該些區段中的一第二區段的數值使用一第二量化參數進行量化,其中該第一量化參數不同於該第二量化參數。
- 如請求項1所述的用於深度學習網路的優化方法,其中決定該數值分布的該值域內的該至少一斷點的步驟包括: 在該值域內決定多個第一搜尋點; 依據該些第一搜尋點分別區分該值域,以形成對應於每一該第一搜尋點的多個評估段; 對每一該第一搜尋點的該些評估段分別依據不同量化參數進行量化,以得出每一該第一搜尋點對應的量化值;以及 比較該些第一搜尋點的差異量,以得出該至少一斷點,其中一該第一搜尋點的差異量包括其量化值與對應的未量化值之間的差異。
- 如請求項2所述的用於深度學習網路的優化方法,其中比較該些第一搜尋點的差異量以得出該至少一斷點的步驟包括: 使用該些第一搜尋點中具有較小差異量的至少一者作為該至少一斷點。
- 如請求項2所述的用於深度學習網路的優化方法,其中在該值域內決定該些第一搜尋點的步驟包括: 在該值域中決定一第一搜尋空間,其中該些第一搜尋點對該第一搜尋空間均分成該些評估段。
- 如請求項4所述的用於深度學習網路的優化方法,其中比較該些第一搜尋點的差異量以得出該至少一斷點的步驟包括: 依據該些第一搜尋點中具有較小差異量的至少一者決定一第二搜尋空間,其中該第二搜尋空間小於該第一搜尋空間; 在該第二搜尋空間內決定多個第二搜尋點,其中相鄰二該第二搜尋點之間的間距小於相鄰二該第一搜尋點之間的間距;以及 比較該些第二搜尋點的差異量,以得出該至少一斷點,其中一該第二搜尋點的差異量包括其量化值與對應的未量化值之間的差異。
- 如請求項5所述的用於深度學習網路的優化方法,其中依據該些第一搜尋點中具有較小差異量的至少一者決定該第二搜尋空間的步驟包括: 依據該些第一搜尋點中具有最小差異量的一者決定一斷點比例,其中該斷點比例是該具有最小差異量的一者所佔該數值分布中的絕對值最大者的比例;以及 依據該斷點比例決定該第二搜尋空間,其中該具有最小差異量的一者位於該第二搜尋空間中。
- 如請求項1所述的用於深度學習網路的優化方法,其中進行量化的步驟包括: 進行結合裁減(clipping)方法的動態固定點量化(Dynamic Fixed-Point Quantization),其中依據該數值分布中的絕對值最大者及絕對值最小者決定該第一量化參數中的整數長度。
- 如請求項1所述的用於深度學習網路的優化方法,更包括: 後訓練(post-train)一已量化模型,以得出一訓練的量化模型;以及 微調該訓練的量化模型,包括: 利用限制邊界的一直通估測器(Straight Through Estimator,STE)決定用於該參數類型為權重的量化的梯度,其中該直通估測器經組態為在一上限及一下限之間的輸入梯度等於輸出梯度。
- 如請求項1所述的用於深度學習網路的優化方法,更包括: 量化該參數類型中的權重或輸入激活(activation)值的數值; 將量化的數值輸入一運算層;以及 量化該運算層所輸出的該參數類型中的輸出激活值的數值。
- 如請求項8所述的用於深度學習網路的優化方法,其中後訓練(post-train)該已量化模型的步驟包括: 決定該已量化模型中的每一量化層的權重的整數長度; 依據該已量化模型推論多個校正樣本決定該已量化模型中的每一該量化層中的激活/特徵值的整數長度;以及 依據每一該量化層的一位元寬度限制決定每一該量化層的小數長度。
- 一種用於深度學習網路的運算裝置,包括: 一記憶體,用以儲存一程式碼;以及 一處理器,耦接該記憶體,經配置用以載入且執行該程式碼以: 自一預訓練模型取得一數值分布,其中該數值分布是一深度學習網路中的一參數類型的數值的統計分布; 決定該數值分布的一值域內的至少一斷點,其中該至少一斷點將該值域區分成多個區段;以及 對該參數類型在該些區段中的一第一區段的數值使用一第一量化參數且對在該些區段中的一第二區段的數值使用一第二量化參數進行量化,其中該第一量化參數不同於該第二量化參數。
- 如請求項11所述的用於深度學習網路的運算裝置,其中該處理器更經配置用以: 在該值域內決定多個第一搜尋點; 依據該些第一搜尋點分別區分該值域,以形成對應於每一該第一搜尋點的多個評估段; 對每一該第一搜尋點的該些評估段分別依據不同量化參數進行量化,以得出每一該第一搜尋點對應的量化值;以及 比較該些第一搜尋點的差異量,以得出該至少一斷點,其中一該第一搜尋點的差異量包括其量化值與對應的未量化值之間的差異。
- 如請求項12所述的用於深度學習網路的運算裝置,其中該處理器更經配置用以: 使用該些第一搜尋點中具有較小差異量的至少一者作為該至少一斷點。
- 如請求項12所述的用於深度學習網路的運算裝置,其中該處理器更經配置用以: 在該值域中決定一第一搜尋空間,其中該些第一搜尋點對該第一搜尋空間均分成該些評估段。
- 如請求項14所述的用於深度學習網路的運算裝置,其中該處理器更經配置用以: 依據該些第一搜尋點中具有較小差異量的至少一者決定一第二搜尋空間,其中該第二搜尋空間小於該第一搜尋空間; 在該第二搜尋空間內決定多個第二搜尋點,其中相鄰二該第二搜尋點之間的間距小於相鄰二該第一搜尋點之間的間距;以及 比較該些第二搜尋點的差異量,以得出該至少一斷點,其中一該第二搜尋點的差異量包括其量化值與對應的未量化值之間的差異。
- 如請求項15所述的用於深度學習網路的運算裝置,其中該處理器更經配置用以: 依據該些第一搜尋點中具有最小差異量的一者決定一斷點比例,其中該斷點比例是該具有最小差異量的一者所佔該數值分布中的絕對值最大者的比例;以及 依據該斷點比例決定該第二搜尋空間,其中該具有最小差異量的一者位於該第二搜尋空間中間。
- 如請求項11所述的用於深度學習網路的運算裝置,其中該處理器更經配置用以: 進行結合裁減方法的動態固定點量化,其中依據該數值分布中的絕對值最大者及絕對值最小者決定該第一量化參數中的整數長度。
- 如請求項11所述的用於深度學習網路的運算裝置,其中該處理器更經配置用以: 後訓練一已量化模型,以得出一訓練的量化模型;以及 微調該訓練的量化模型,包括: 利用限制邊界的一直通估測器決定用於該參數類型為權重的量化的梯度,其中該直通估測器經組態為在一上限及一下限之間的輸入梯度等於輸出梯度。
- 如請求項11所述的用於深度學習網路的運算裝置,其中該處理器更經配置用以: 量化該參數類型中的權重或輸入激活/特徵值的數值; 將量化的數值輸入一運算層;以及 量化該運算層所輸出的該參數類型中的輸出激活值的數值。
- 一種非暫態電腦可讀取儲存媒體,用於儲存一程式碼,一處理器載入該程式碼以執行如請求項1至10中任一項所述的用於深度學習網路的優化方法。
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW111119653A TWI819627B (zh) | 2022-05-26 | 2022-05-26 | 用於深度學習網路的優化方法、運算裝置及電腦可讀取媒體 |
CN202210700442.1A CN117217263A (zh) | 2022-05-26 | 2022-06-20 | 深度学习网络的优化方法、运算装置及计算机可读介质 |
US17/950,119 US20230385600A1 (en) | 2022-05-26 | 2022-09-22 | Optimizing method and computing apparatus for deep learning network and computer-readable storage medium |
JP2022199034A JP2023174473A (ja) | 2022-05-26 | 2022-12-14 | 深層学習ネットワーク用の最適化方法及びコンピュータ装置、及びコンピュータ可読記憶媒体 |
EP22214034.5A EP4283525A1 (en) | 2022-05-26 | 2022-12-16 | Optimizing method and computing apparatus for deep learning network and computer-readable storage medium |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW111119653A TWI819627B (zh) | 2022-05-26 | 2022-05-26 | 用於深度學習網路的優化方法、運算裝置及電腦可讀取媒體 |
Publications (2)
Publication Number | Publication Date |
---|---|
TWI819627B TWI819627B (zh) | 2023-10-21 |
TW202347183A true TW202347183A (zh) | 2023-12-01 |
Family
ID=84537762
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW111119653A TWI819627B (zh) | 2022-05-26 | 2022-05-26 | 用於深度學習網路的優化方法、運算裝置及電腦可讀取媒體 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20230385600A1 (zh) |
EP (1) | EP4283525A1 (zh) |
JP (1) | JP2023174473A (zh) |
CN (1) | CN117217263A (zh) |
TW (1) | TWI819627B (zh) |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9836839B2 (en) * | 2015-05-28 | 2017-12-05 | Tokitae Llc | Image analysis systems and related methods |
US20210089922A1 (en) * | 2019-09-24 | 2021-03-25 | Qualcomm Incorporated | Joint pruning and quantization scheme for deep neural networks |
CN110826692B (zh) * | 2019-10-24 | 2023-11-17 | 腾讯科技(深圳)有限公司 | 一种自动化模型压缩方法、装置、设备及存储介质 |
EP4062375A4 (en) * | 2019-11-22 | 2022-12-28 | Tencent America Llc | METHOD AND APPARATUS FOR QUANTIZATION, ADAPTIVE BLOCK PARTITIONING AND CODEBOOK CODING FOR COMPRESSION OF A NEURAL NETWORK MODEL |
CN112241475B (zh) * | 2020-10-16 | 2022-04-26 | 中国海洋大学 | 基于维度分析量化器哈希学习的数据检索方法 |
-
2022
- 2022-05-26 TW TW111119653A patent/TWI819627B/zh active
- 2022-06-20 CN CN202210700442.1A patent/CN117217263A/zh active Pending
- 2022-09-22 US US17/950,119 patent/US20230385600A1/en active Pending
- 2022-12-14 JP JP2022199034A patent/JP2023174473A/ja active Pending
- 2022-12-16 EP EP22214034.5A patent/EP4283525A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
CN117217263A (zh) | 2023-12-12 |
JP2023174473A (ja) | 2023-12-07 |
TWI819627B (zh) | 2023-10-21 |
EP4283525A1 (en) | 2023-11-29 |
US20230385600A1 (en) | 2023-11-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI791610B (zh) | 對人工神經網路及浮點神經網路進行量化的方法及裝置 | |
CN111652367B (zh) | 一种数据处理方法及相关产品 | |
CN108337000B (zh) | 用于转换到较低精度数据格式的自动方法 | |
CN110413255B (zh) | 人工神经网络调整方法和装置 | |
KR20210029785A (ko) | 활성화 희소화를 포함하는 신경 네트워크 가속 및 임베딩 압축 시스템 및 방법 | |
TW201933193A (zh) | 對人工神經網路進行量化的方法及裝置及對浮點神經網路進行量化的方法 | |
US20230196202A1 (en) | System and method for automatic building of learning machines using learning machines | |
EP4008057B1 (en) | Lossless exponent and lossy mantissa weight compression for training deep neural networks | |
CN113723589A (zh) | 混合精度神经网络 | |
CN113313229A (zh) | 模型压缩中对稀疏率的贝叶斯优化 | |
CN111105017A (zh) | 神经网络量化方法、装置及电子设备 | |
EP3270376A1 (en) | Linear predictive coding device, linear predictive decoding device, and method, program, and recording medium therefor | |
Huai et al. | Latency-constrained DNN architecture learning for edge systems using zerorized batch normalization | |
TWI819627B (zh) | 用於深度學習網路的優化方法、運算裝置及電腦可讀取媒體 | |
CN116956997A (zh) | 用于时序数据处理的lstm模型量化重训练方法、系统及设备 | |
CN114830137A (zh) | 用于生成预测模型的方法和系统 | |
CN115392441A (zh) | 量化神经网络模型的片内适配方法、装置、设备及介质 | |
CN114139678A (zh) | 卷积神经网络量化方法、装置、电子设备和存储介质 | |
CN112561050B (zh) | 一种神经网络模型训练方法及装置 | |
CN114239949A (zh) | 一种基于双阶段注意力机制的网站访问量预测方法及系统 | |
JP6749530B1 (ja) | 構造変換装置、構造変換方法及び構造変換プログラム | |
US20230075932A1 (en) | Dynamic variable quantization of machine learning parameters | |
EP4177794A1 (en) | Operation program, operation method, and calculator | |
CN115470899B (zh) | 电力设备处理加速方法、装置、设备、芯片及介质 | |
US20210365779A1 (en) | Electronic apparatus and control method thereof |