TWI837000B - 一種浮點數壓縮方法、運算裝置及電腦可讀取儲存媒介 - Google Patents

一種浮點數壓縮方法、運算裝置及電腦可讀取儲存媒介 Download PDF

Info

Publication number
TWI837000B
TWI837000B TW112119580A TW112119580A TWI837000B TW I837000 B TWI837000 B TW I837000B TW 112119580 A TW112119580 A TW 112119580A TW 112119580 A TW112119580 A TW 112119580A TW I837000 B TWI837000 B TW I837000B
Authority
TW
Taiwan
Prior art keywords
floating
point
fixed
compression
mantissas
Prior art date
Application number
TW112119580A
Other languages
English (en)
Other versions
TW202403539A (zh
Inventor
羅允辰
呂仁碩
Original Assignee
國立清華大學
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 國立清華大學 filed Critical 國立清華大學
Publication of TW202403539A publication Critical patent/TW202403539A/zh
Application granted granted Critical
Publication of TWI837000B publication Critical patent/TWI837000B/zh

Links

Images

Abstract

一種浮點數壓縮方法,包含使用一算術單元進行以下步驟:取得多個浮點數;對該等浮點數產生共同倍率因素;對於該等浮點數中每一者,壓縮為多個定點數尾數;輸出一壓縮結果,該壓縮結果包含該等共同倍率因數及該等個定點數尾數。

Description

一種浮點數壓縮方法、運算裝置及電腦可讀取儲存媒介
本發明涉及一種浮點數運算的應用,尤其是一種浮點數運算方法以及相關的算術單元。
隨著機器學習(Machine Learning)領域越來越廣泛所帶來的龐大的浮點數運算量,如何壓縮浮點數資料以增加運算速度及降低功耗成爲本領域人士致力研究的議題。一般的浮點數技術對於多個浮點數皆完整地進行個別的儲存及運算,亦即對於每個浮點數完整儲存正負號、指數及尾數。如此一來,不僅因爲儲存了大量資料而耗費儲存空間,並且還增加傳輸時間及運算功耗。
微軟(Microsoft)提出了一種通稱為MSFP (Microsoft Floating Point)的浮點數壓縮方法,其作法包括強行將多個浮點數的多個指數壓縮成只保留單一指數以簡化整體運算,但壓縮誤差過大導致運算的精確度大幅下降,而機器學習領域(諸如類神經演算法)對於精確度有一定程度的要求,因此實際應用上並不是最理想。
綜上所述,實有需要一種新穎的浮點數運算方法及硬體架構來改善現有技術的問題。
根據以上需求,本發明的目的之一在於提供一種高效的浮點數壓縮(也被稱為編碼)及運算方法,以在不大幅增加成本的前提下改善現有技術中浮點數運算的缺陷,進而提高運算速度並降低功耗。
本發明一實施例提供了一種浮點數壓縮方法,包含使用一算術單元進行以下步驟:A)取得b個浮點數f1~fb,其中b為大於1之正整數;B)對該b個浮點數產生k個共同倍率因素r1~rk,其中k為1或大於1之正整數,其中該k個共同倍率因素r1~rk至少包含一具有一尾數的浮點數;C)對於該b個浮點數中每一浮點數fi,壓縮為k個定點數尾數mi_1~mi_k,以產生共b×k個定點數尾數mi_j,其中i為不大於b之正整數,j為不大於k之正整數;以及D)輸出一壓縮結果,該壓縮結果包含該k個共同倍率因數r1~rk及該b×k個定點數尾數mi_j,代表b個壓縮浮點數cf1~cfb,每一壓縮浮點數cfi的值為:
可選地,根據本發明一實施例,該運算裝置執行步驟D)前,進一步執行以下步驟:產生一準壓縮結果,該準壓縮結果包含該k個共同倍率因數r1~rk及該b×k個定點數尾數mi_j;針對該準壓縮結果計算一壓縮誤差;設定一閾值;以及根據該壓縮誤差以及該閾值調整該k個共同倍率因數r1~rk及該b×k個定點數尾數mi_j。
可選地,根據本發明一實施例,針對該準壓縮結果計算該壓縮誤差的步驟包含:根據以下方程式對該b個浮點數中每一浮點數fi計算壓縮誤差Ei: ;根據以下方程式計算b個誤差E1~Eb的平方和SE: ;以及將該平方和與一閾值進行比較。若該平方和不大於該閾值,則以該準壓縮結果作為該壓縮結果。
可選地,根據本發明一實施例,若該壓縮誤差大於該閾值,則重新執行該步驟B)、C)。
可選地,根據本發明一實施例,該調整該k個共同倍率因數r1~rk及該b×k個定點數尾數mi_j步驟係為:對該k個共同倍率因數r1~rk及該b×k個定點數尾數mi_j進行啟發式演算法、隨機演算法、或窮舉法之一的迭代處理。
可選地,根據本發明一實施例,設定該閾值的步驟包含:對該b個浮點數共同提出倍率因素r1’~rk’;對於該b個浮點數中每一浮點數fi,壓縮為k個定點數尾數mi_1’~mi_k’,以產生b k個定點數尾數mi_j’ ;根據以下方程式,對該b個浮點數的每一個浮點數fi,計算壓縮誤差Ei': ;根據以下方程式計算b個誤差E1’~Eb’的平方和SE’: ;以及將該閾值設為壓縮誤差SE’。
可選地,根據本發明一實施例,該b×k個定點數尾數mi_j均為有號數。
可選地,根據本發明一實施例,該b×k個定點數尾數mi_j至少一個為有號數,且該有號數表達的數值範圍相對於0不對稱。
可選地,根據本發明一實施例,該有號數為2的補數。
可選地,根據本發明一實施例,浮點數壓縮方法另包含:將該b×k個定點數尾數mi_j以及該k個共同倍率因素儲存於一網路伺服器之一記憶體,以供遠端下載運算之用。
可選地,根據本發明一實施例,浮點數壓縮方法另包含:將該b×k個定點數尾數mi_j以及全部的該些倍率因素r1~rk儲存於一記憶體,但部分的b×k個定點數尾數mi_j以及部分的該些倍率因素r1~rk不參與運算。1可選地,根據本發明一實施例,k等於2,該倍率因素r1~rk均為不大於16位元之浮點數。
可選地,根據本發明一實施例,步驟D)包含:計算一準壓縮結果,該準壓縮結果包含該k個共同倍率因數r1~rk及該b×k個定點數尾數mi_j;針對該準壓縮結果計算一壓縮誤差;設定一閾值;以及根據該壓縮誤差以及該閾值調整該準壓縮結果,以作為該壓縮結果。
本發明一實施例提供了一種運算裝置,包含一第一暫存器、一第二暫存器以及一算術單元,該算術單元包含至少一乘法器及至少一加法器,該算術單元耦接於該第一暫存器及該第二暫存器,其中:該第一暫存器儲存b個激勵值a1~ab,其中b為大於1之正整數;該第二暫存器儲存b個壓縮浮點數cf1~cfb;該b個壓縮浮點數包含k個共同倍率因素r1~rk,其中k為1或大於1之正整數;該b個壓縮浮點數中每一壓縮浮點數cfi包含k個定點數尾數mi_1~mi_k,共為b k個定點數尾數mi_j,其中i為不大於b之正整數,j為不大於k之正整數,每一壓縮浮點數cfi的值為 ;以及該算術單元計算該b個激勵值(a1, a2, …, ab)與該b個壓縮浮點數(cf1, cf2, …, cfb)的一內積乘法結果。
可選地,根據本發明一實施例,該運算裝置執行以下步驟:A)取得b個浮點數f1~fb,其中b為大於1之正整數;B)對該b個浮點數產生k個共同倍率因素r1~rk,其中k為大於1之正整數,其中該k個共同倍率因素r1~rk至少包含一具有一尾數的浮點數;C)對於該b個浮點數中每一浮點數fi,壓縮為k個定點數尾數mi_1~mi_k,以產生b k個定點數尾數mi_j,其中i為不大於b之正整數,j為不大於k之正整數;以及D)輸出一壓縮結果,該壓縮結果包含該k個共同倍率因數r1~rk及該b×k個定點數尾數mi_j,代表b個壓縮浮點數cf1~cfb,每一壓縮浮點數cfi的值為
可選地,根據本發明一實施例,該運算裝置執行步驟D)前,進一步執行以下步驟:計算一準壓縮結果,該準壓縮結果包含該k個共同倍率因數r1~rk及該b×k個定點數尾數mi_j;針對該準壓縮結果計算一壓縮誤差;設定一閾值;以及根據該壓縮誤差以及該閾值調整該k個共同倍率因數r1~rk及該b×k個定點數尾數mi_j。
可選地,根據本發明一實施例,針對該準壓縮結果計算該壓縮誤差的步驟包含:根據以下方程式,對該b個浮點數中每一浮點數fi計算壓縮誤差Ei: ;根據以下方程式計算b個誤差E1~Eb的平方和SE: ;以及將該平方和與一閾值進行比較;其中若該平方和不大於該閾值,則以該準壓縮結果作為該壓縮結果。
可選地,根據本發明一實施例,若該壓縮誤差大於該閾值,則重新執行該步驟B)、C)。
可選地,根據本發明一實施例,該調整該k個共同倍率因數r1~rk及該b×k個定點數尾數mi_j步驟係為:對該k個共同倍率因數r1~rk及該b×k個定點數尾數mi_j壓縮結果進行啟發式演算法、隨機演算法、或窮舉法之一的迭代處理。
可選地,根據本發明一實施例,設定該閾值的步驟包含:對該b個浮點數共同提出倍率因素r1’~rk’對於該b個浮點數中每一浮點數fi,壓縮為k個定點數尾數mi_1’~mi_k’,以產生b×k個定點數尾數mi_j’;對該b個浮點數的每一個浮點數fi,計算壓縮誤差Ei': ;根據以下方程式計算b個誤差E1’~Eb’的平方和SE’: ;以及將該閾值設為壓縮誤差SE’。
可選地,根據本發明一實施例,該b個激勵值a1~ab係整數、定點數、或MSFP塊狀浮點數的尾數。
可選地,根據本發明一實施例,運算裝置另包含:全部的該b×k個定點數尾數mi_j以及全部的該些共同倍率因素r1~rk被儲存於該第二暫存器,但部分的該b×k個定點數尾數mi_j以及部分的該些倍率因素r1~rk不參與運算。
本發明一實施例提供了一種電腦可讀取儲存媒介,儲存著可被電腦執行的計算機可讀取指令,當該計算機可讀取指令被電腦執行時將觸發電腦輸出b個壓縮浮點數的程序,其中b為大於1之正整數,該程序包括以下步驟:A)產生k個共同倍率因素r1~rk,其中k為1或大於1之正整數,其中該k個共同倍率因素r1~rk至少包含一浮點數,該浮點數具有一倍率因素指數及一倍率因素尾數;B)產生k個定點數尾數mi_1~mi_k,以產生b k個定點數尾數mi_j,其中i為不大於b之正整數,j為不大於k之正整數;以及C)輸出該k個共同倍率因數r1~rk及該b×k個定點數尾數mi_j,代表b個壓縮浮點數cf1~cfb,每一壓縮浮點數cfi的值為
綜上所述,本發明進行塊狀浮點數壓縮可在符合應用程式對精確度的要求的情况下節省儲存空間、或降低功耗並加快運算速度。此外,藉由第一模式和第二模式的可調性,所搭配的電子產品可彈性地在高效能模式和低功耗模式之間作折衷取捨,故在產品上有更廣泛地應用。此外,相較於微軟MSFP以及其他現有技術,本發明的浮點數壓縮方法能夠提供優化的運算效能以及運算精確度,故可在符合應用程式對於精確度的要求的情況下節省功耗並加快運算速度。
本發明特別以下述例子加以描述,這些例子僅係用以舉例說明而已,因為對於熟習此技藝者而言,在不脫離本揭示內容之精神和範圍內,當可作各種之更動與潤飾,因此本揭示內容之保護範圍當視後附之申請專利範圍所界定者為準。在通篇說明書與申請專利範圍中,除非內容清楚指定,否則「一」以及「該」的意義包含這一類敘述包含「一或至少一」元件或成分。此外,如本發明所用,除非從特定上下文明顯可見將複數排除在外,否則單數冠詞亦包含複數個元件或成分的敘述。而且,應用在此描述中與下述之全部申請專利範圍中時,除非內容清楚指定,否則「在其中」的意思可包含「在其中」與「在其上」。在通篇說明書與申請專利範圍所使用之用詞(terms),除有特別註明,通常具有每個用詞使用在此領域中、在此揭露之內容中與特殊內容中的平常意義。某些用以描述本發明之用詞將於下或在此說明書的別處討論,以提供從業人員(practitioner)在有關本發明之描述上額外的引導。在通篇說明書之任何地方之例子,包含在此所討論之任何用詞之例子的使用,僅係用以舉例說明,當然不限制本發明或任何例示用詞之範圍與意義。同樣地,本發明並不限於此說明書中所提出之各種實施例。
在此所使用的用詞「實質上(substantially)」、「大約(around)」、「約(about)」或「近乎(approximately)」應大體上意味在給定值或範圍的20%以內,較佳係在10%以內。此外,在此所提供之數量可爲近似的,因此意味著若無特別陳述,可以用詞「大約」、「約」或「近乎」加以表示。當數量、濃度或其他數值或參數有指定的範圍、較佳範圍或表列出上下理想值之時,應視爲特別揭露由任何上下限之數對或理想值所構成的所有範圍,不論等範圍是否分別揭露。舉例而言,如揭露範圍某長度為X公分到Y公分,應視為揭露長度為H公分且H可為X到Y之間之任意實數。
此外,若使用「電(性)耦接」或「電(性)連接」一詞在此係包含任何直接及間接的電氣連接手段。舉例而言,若文中描述第一裝置電性耦接於第二裝置,則代表第一裝置可直接連接於第二裝置,或透過其他裝置或連接手段間接地連接至第二裝置。另外,若描述關於電訊號之傳輸、提供,熟習此技藝者應可以瞭解電訊號之傳遞過程中可能伴隨衰减或其他非理想性之變化,但電訊號傳輸或提供之來源與接收端若無特別叙明,實質上應視爲同一訊號。舉例而言,若由電子電路之端點A傳輸(或提供)電訊號S給電子電路之端點B,其中可能經過電晶體開關之源汲極兩端及/或可能之雜散電容而產生電壓降,但此設計之目的若非刻意使用傳輸(或提供)時産生之衰减或其他非理想性之變化而達到某些特定的技術效果,電訊號S在電子電路之端點A與端點B應可視為實質上為同一訊號。
可瞭解如在此所使用的用詞「包含(comprising或including)」、「具有(having)」、「含有(containing)」、「涉及(involving)」等等,為開放性的(open-ended),即意指包含但不限於。另外,本發明的任一實施例或申請專利範圍不須達成本發明所揭露之全部目的或優點或特點。此外,摘要部分和標題僅是用來輔助專利文件搜尋之用,並非用來限制本發明之申請專利範圍。
類神經演算法涉及大筆權重值(Weight)與激勵值(Activation)的浮點數乘法運算,因此如何儘可能在符合精確度要求的情況下妥善壓縮浮點數是相當重要的。
請參考圖1,圖1係為現有技術浮點數運算方式的示意圖。如圖1所示,權重值為包含16個字的陣列(或向量),可用右側的浮點數的表示,每個浮點數會分為正負號(Sign)、指數(Exponent) 及尾數(Mantissa)而儲存於暫存器的三個不同欄位,解碼運算時都解碼成: (-1) Sign×(1.Mantissa)×2 Exponent其中Sign代表此浮點數的正負號,Exponent代表此浮點數的指數,尾數又被稱為有效數(Significand)。於儲存於暫存器時,暫存器的最左一位元會分配作為正負號位元以儲存正負號,其餘多個位元(例如15~18個位元)會分別分配作為指數位元及尾數位元以儲存指數和尾數。先前技術的作法是將每一個字獨立視為一浮點數進行運算、儲存,因此暫存器必須針對每個字儲存16~19位元,不僅運算上費時,也牽涉更多硬體電路,導致產品的效能降低、成本及功耗增加。請注意,全文及圖式中所提到架構的位元數僅為便於理解的目的,並非用以限制本發明的範疇,本發明在實作上可根據設計需求對這些提到的位元數進行增減。
請參考圖2,圖2係為根據本發明一實施例的算術單元110應用於運算裝置100的示意圖。如圖2所示,運算裝置100包含算術單元110、第一暫存器111、第二暫存器112、第三暫存器113及記憶體114,算術單元110係耦接於第一暫存器111、第二暫存器112及第三暫存器113,且記憶體114係耦接於第一暫存器111、第二暫存器112及第三暫存器113。值得注意的是,記憶體114僅為運算裝置100內記憶單元的總稱,亦即記憶體114可以是獨立的記憶單元,或泛指運算裝置100內所有可能的記憶單元,例如第一暫存器111、第二暫存器112及第三暫存器113可能各自耦接於不同的記憶體。此外,在本發明中,舉出的記憶體只是各種可用的儲存媒介的一種,本領域通常知識者當可理解可利用其他類型的儲存媒介對記憶體進行置換。運算裝置100可以是任何具備運算能力的裝置,諸如中央處理器(CPU)、圖形處理器(GPU)、人工智慧加速器(AI Accelerator)、可程式邏輯陣列(FPGA)、桌上型電腦、筆記型電腦、智慧型手機、平板電腦、智慧穿戴裝置等。對於儲存於第一暫存器111和第二暫存器112內的浮點數的尾數,本發明可進行忽略而不儲存於記憶體114中,藉此節省記憶體空間。此外,記憶體114可儲存可被運算裝置100執行的計算機可讀取指令,當該計算機可讀取指令被運算裝置100執行時,將導致運算裝置100(包含運算單元110、第一暫存器111、第二暫存器112及第三暫存器113)執行一壓縮浮點數的方法。記憶體114亦可儲存複數組批量範數係數(Batch Normalization Coefficient),批量範數係數係為人工智慧運算中,調整數值的平均及標準差的係數。通常一筆特徵圖(Feature map)數值資料,對應一組特定的批量範數係數。
請參考圖3,其係為MSFP進行壓縮處理的示意圖,如圖3所示,有別於將每一個字獨立視為一浮點數進行運算、儲存,MSFP以16個浮點數為一個“塊”進行壓縮,其中針對16個浮點數提取共同的指數部分(圖中標示為8位元的共同指數),於提取後,這些浮點數僅剩下正負號部分和尾數部分。請參考圖4,其係為根據本發明一實施例算術單元110壓縮浮點數的示意圖,圖4針對每個浮點數壓縮成兩個二位元(2-bit)2的補數(2’s complement)之定點數(fixed-point)尾數m1、m2,接著,針對每個塊壓縮出兩個7位元(7-bit)浮點數,即倍率(Scale)r1、r2,或稱倍率因素(Scaling factor)。接著,針對每個浮點數進行m1、m2 、r1、r2之間的整數運算,使 “m1×r1+m2×r2”與該浮點數有最小均方誤差。請注意,定點數尾數m1、m2可為有號整數(帶有正負號之整數),或可為無號整數(不帶有正負號之整數)。
此外,本發明並不限制m、r的數量。舉例來說,算術單元110進行以下步驟: 取得b個浮點數f1~fb,其中b為大於1之正整數;對該b個浮點數共同提出倍率因素r1~rk,其中k為大於1之正整數;對於該b個浮點數中每一浮點數fi,壓縮為k個定點數尾數mi_1~mi_k,以產生b×k個定點數尾數mi_j對於該b個浮點數中每一浮點數fi,壓縮為k個定點數尾數mi_1~mi_k,以產生b×k個定點數尾數mi_j,其中i為不大於b之正整數,j為不大於k之正整數;以及輸出一壓縮結果,該壓縮結果包含該k個共同倍率因數r1~rk及該b×k個定點數尾數mi_j。參見圖5,圖5係為根據本發明另一實施例,算術單元110的進行壓縮處理的示意圖,如圖5所示,運算裝置100的記憶體114可儲存兩套複數組批量範數係數,分別對應兩種浮點數壓縮處理模式,其中第一模式即為圖4所示的完整運算,第二模式則故意忽略(m2×r2)項,減少運算複雜度。算術單元110可根據當前運算裝置100的狀態(例如是否有過熱或過載的情況)來判斷要選用第一模式或第二模式,也可根據當前應用程式對於精確度的要求來做選取。舉例來說,當運算裝置100的當前溫度過高而需要降溫時,可以選用第二模式以使算術單元110可操作在低功耗、低溫的狀態。此外,當運算裝置100為一行動裝置且處於低電量的狀況時,亦可選用第二模式以延長行動裝置的待機時間。另外,倘若算術單元110要執行精密運算時,可選用第一模式來進一步提高運算精確度。
請參考圖6,圖6係為本發明利用暫存器及算數單元進行權重值(Weight)與激勵值(Activation)的浮點數內積乘法運算的示意圖,其中第一暫存器、第二暫存器及第三暫存器可分別對應圖2中第一暫存器111、第二暫存器112及第三暫存器113,乘法器及加法器對應圖2中算數單元110。如圖6所示,第二暫存器儲存了上述倍率因素r1、r2以及對應每個浮點數的2的補數之定點數尾數m1_1、m1_2…等,其各自為2位元。第一暫存器儲存激勵值a1、…、a14、a15、a16。在圖6的架構下, a1會分別與m1_1、m1_2相乘,且a2會分別與m2_1、m2_2相乘,以此類推,a16會分別與m16_1、m16_2相乘,而這些相乘結果會透過加法器601、602相加,再分別透過乘法器611、612以及加法器603進行運算,其中加法器603輸出內積乘法結果。相較先前技術,本發明可將硬體架構精簡化,故能節省資料儲存及資料傳輸的功耗和時間。
進一步而言,為了確保對浮點數進行壓縮後仍維持所要求的精確度,本發明可在產生壓縮結果之前先檢查壓縮誤差,例如產生一準壓縮結果,準壓縮結果包含k個共同倍率因數r1~rk及b×k個定點數尾數mi_j。 接著針對準壓縮結果計算一壓縮誤差,並且設定一閾值,最後根據壓縮誤差以及閾值調整準壓縮結果,以作為壓縮結果。
具體地,可根據以下方程式,對b個浮點數中每一浮點數fi計算壓縮誤差Ei:根據以下方程式,對b個浮點數中每一浮點數fi計算壓縮誤差Ei: 接下來,根據以下方程式計算b個誤差E1~Eb的平方和SE: 以及,將平方和與一閾值進行比較,其中若平方和不大於閾值,代表壓縮誤差小,則輸出準壓縮結果作為壓縮結果;若平方和大於閾值,則重新產生準壓縮結果,例如對壓縮結果進行迭代處理。迭代處理包含啟發式演算法(Heuristic algorithm)、隨機演算法(Randomized algorithm)、或窮舉法(Brute-force algorithm)。啟發式演算法包含進化演算法(Evolutionary algorithm)、模擬退火演算法(Simulated annealing algorithm)。舉例來說,若使用進化演算法,可以改變倍率因素r1、r2的一個位元(突變)。若使用模擬退火演算法,舉例來說,可以將倍率因素r1、r2分別增加或減少一個微小值d,產生r1+d、r2+d 或 r1+d, r2-d 或 r1-d, r2+d 或r1-d, r2-d 此4種迭代之後的倍率因素。若使用隨機演算法,舉例來說,可使用亂數函數產生倍率因素r1、 r2。若使用窮舉法,舉例來說,假如r1與r2分別都是7位元,則全部共有2的14次方種r1與r2的組合,全部迭代遍歷一次。上述演算法僅為舉例,並非用以限制本發明的範疇。例如,雖然進化演算法與模擬退火演算法雖然幾乎是最通用且常見的啟發式演算法,但還有其他如蜂群演算法(Bee colony algorithm)、蟻群演算法(Ant colony algorithm)、鯨群演算法(Whale optimization algorithm)…等。又例如進化演算法除了突變操作外,還有選擇(selection)操作及交換(crossover)操作,為求簡潔而未詳述。本領域通常知識者當可理解,且可利用其他類型的演算法進行置換。
本發明並不限定產生閾值的方式,除了絕對值之閾值外,一種方式為相對閾值,可歸納為以下步驟:對b個浮點數產生共同倍率因素r1’~rk’;對於b個浮點數中每一浮點數fi,壓縮為k個定點數尾數mi_1’~mi_k’,以產生b×k個定點數尾數mi_j’;根據以下方程式,對b個浮點數的每一個浮點數fi,計算壓縮誤差Ei': 接著,根據以下方程式計算b個誤差E1’~Eb’的平方和SE’: 以及,將閾值設為壓縮誤差SE’。 本領域通常知識者當可理解,此產生閾值的方式,可結合前述之啟發式演算法(進化演算法、模擬退火演算法等)、隨機演算法、窮舉法等。
可選地,根據本發明一實施例,對b個浮點數共同提出些倍率因素r1~rk的步驟包含:對b個浮點數共同提出符號,使b×k個定點數尾數mi_j不帶有符號;或著對b個浮點數共同提出些倍率因素r1~rk時可不提出符號,使得b×k個定點數尾數mi_j帶有符號。
可選地,根據本發明一實施例,b×k個定點數尾數mi_j可為2的補數,或不為2的補數。
可選地,根據本發明一實施例,所述之浮點數壓縮方法另包含:將部分的b×k個定點數尾數mi_j以及部分的些倍率因素r1~rk儲存於暫存器,以供後續運算之用,亦即有部分的定點數尾數及/或倍率因素會被捨棄,如此可進一步加快裝置運算並降低裝置功耗。
可選地,根據本發明一實施例,所述之浮點數壓縮方法另包含:將全部的b×k個定點數尾數mi_j以及全部的些倍率因素r1~rk儲存於暫存器,但部分的b×k個定點數尾數mi_j以及部分的些倍率因素r1~rk不參與運算,亦即並非所有儲存的倍率因素都會參與運算,如此可進一步加快裝置運算並降低裝置功耗。
請參考圖7,圖7係為根據本發明一實施例的一種浮點數壓縮方法的流程圖。請注意,假若可獲得實質上相同的結果,則這些步驟並不一定要遵照圖7所示的執行次序來執行。圖7所示之浮點數運算方法可被圖2所示之運算裝置100或算術單元110所採用,並可簡單歸納為下列步驟: 步驟S702:    取得b個浮點數f1~fb; 步驟S704:    對該b個浮點數共同提出倍率因素r1~rk; 步驟S706:    對於該b個浮點數中每一浮點數fi,壓縮為k個定點數尾數mi_1~mi_k,以產生b k個定點數尾數mi_j; 步驟S708:    輸出一壓縮結果,該壓縮結果包含該k個共同倍率因數r1~rk及該b k個定點數尾數mi_j。
由於熟習技藝者在閱讀完以上段落後應可輕易瞭解圖7每一步驟的細節,為簡潔之故,在此將省略進一步的描述。
綜上所述,本發明提出了新穎的浮點數壓縮方式,其具有優化的運算效率,並提供非均勻量化(uniform quantization)的優勢,其中本發明使用具有兩個倍率比例的兩個子字向量(subword vector)之和來近似(approximate)每個全精度權重向量(亦即未被壓縮之浮點數)。 更具體地說,每個子字都是低位元(例如 2 位元)、有符號(2的補數)之整數,並且每個倍率都是低位元浮點數 (LBFP)(例如 7位元)。以下將詳細說明本發明在性能上為何優於微軟的MSFP演算法。
本發明的一實施例,採用了兩個倍率(即r1、r2),每個浮點數壓縮為兩個定點數尾數(即m1、m2),其中倍率的計算成本分攤到 16 個權重上,且每個倍率都是一個低位元浮點數 LBFP,只涉及低位元操作。
參見圖8,圖8示意本發明的方法與MSFP演算法的差異性,其中比較了權重向量在本發明的浮點數壓縮方法或MSFP 壓縮方法的結果,從圖中可清楚理解本發明僅需較少的量化級別(quantization level)卻比使用更多量化級別的 MSFP 實現更小的量化誤差,以下進一步列出本發相較於MSFP的優勢之處。
一、不浪費量化級別:本發明的浮點數壓縮方法,使用2的補數而不浪費量化級別,相較之下,MSFP使用正負號與值(sign magnitude),額外耗費了一個量化級別(正0與負0都是0,因此浪費了其中之一。例如,2位元只能表示 -1、0、1 三種值,而非 2 的 2 次方 4 種值),在位元數低的時候浪費一量化級別帶來的影響是顯著的。
二、適應偏態分佈:本發明的浮點數壓縮方法利用2的補數的不對稱於0的性質(例如, 2位元的2的補數範圍是-2、-1、0、1)和倍率來適應權重向量的不對稱權重分佈。相較之下,MSFP使用正負號與值(sign magnitude),其範圍是對稱於0的(例如, 2位元的正負號與值是 -1、0、1,對稱於0),因此MSFP的量化級別固定是對稱的,導致需要耗費額外的量化級別來適應不對稱權重分布。如圖8所示,在MSFP須使用15個量化級別(4位元)的情況下,本發明僅使用8個量化級別(3位元)。
三、適應非均勻分佈:本發明的浮點數壓縮方法可以通過結合兩個倍率(r1, r2)來提供非均勻量化級別,相較之下,MSFP只能提供均勻量化級別。也就是說,本發明的浮點數壓縮方法對於壓縮非均勻分布的權重更具彈性。
四、更彈性的量化步長大小:本發明的浮點數壓縮方法的量化步長(step size)由兩個倍率(r1, r2)定義,其為低位寬(low bitwidth)浮點值。相較之下,MSFP 的量化步長只能是二次冪(power-of-two)值,例如 0.5、0.25、0.125。
下表為實驗數據,比較本發明與MSFP進行一類神經網路圖片分類運算。兩者都以16個浮點數為一個塊進行壓縮。相比之下,本發明每16個浮點數所需的位元數較少,就能達到較高的分類準確率。
本發明 MSFP
類神經網路圖片分類運算 2的補數定點數尾數m1 (位元) 4 正負號 (bits) 1
2的補數定點數尾數m2 (位元) 1 尾數 (bits) 5
共同倍率 r1 (位元) 7 共同指數 (bits) 8
共同倍率 r2 (位元) 7
每16個浮點數的位元數 94 每16個浮點數的位元數 104
分類準確率 (%) 66 分類準確率 (%) 63
本發明的定點數尾數 m1及m2的位元數,較佳的實施例可為下表,但不以下表為限。
m1位元數 2 3 4 2 3 4 5 3
m2位元數 1 1 1 2 2 2 2 3
本發明的共同倍率r1及r2的位元數,較佳的實施例可為下表,但不以下表為限。
r1 Sign位元數 1
Exponent位元數 3 4 5 3 4 5 3
Mantissa位元數 4 3 2 4 3 2 3
r2 Sign位元數 1
Exponent位元數 3 4 5 3 3 3 3
Mantissa位元數 4 3 2 3 3 3 3
綜上所述,本發明進行塊狀浮點數壓縮可在符合應用程式對精確度的要求的情况下節省功耗並加快運算速度。此外,藉由第一模式和第二模式的可調性,所搭配的電子產品可彈性地在高效能模式和低功耗模式之間作折衷取捨,故在產品上有更廣泛地應用。此外,相較於微軟MSFP以及其他現有技術,本發明的浮點數壓縮方法能夠提供優化的運算效能以及運算精確度,故可在符合應用程式對於精確度的要求的情況下節省功耗並加快運算速度。
100…運算裝置 110…算術單元 111…第一暫存器 112…第二暫存器 113…第三暫存器 114…記憶體 S702-S708…步驟
圖1係為現有技術浮點數的示意圖。 圖2係為根據本發明一實施例的算術單元應用於運算裝置的示意圖。 圖3係為現有技術MSFP進行壓縮處理的示意圖 圖4係為根據本發明一實施例算術單元的進行壓縮處理的示意圖 圖5係為根據本發明另一實施例算術單元的進行壓縮處理的示意圖, 圖6係為本發明利用算術單元與暫存器進行權重值與激勵值的浮點數乘法運算的示意圖。 圖7係為根據本發明一實施例的一種浮點數壓縮方法的流程圖。 圖8示意本發明的方法與MSFP的方法的差異性。
S702~S708              步驟

Claims (22)

  1. 一種浮點數壓縮方法,包含使用一算術單元進行以下步驟:A)取得b個浮點數f1~fb,其中b為大於1之正整數;B)對該b個浮點數產生k個共同倍率因素r1~rk,其中k為1或大於1之正整數,其中該k個共同倍率因素r1~rk至少包含一具有一尾數的浮點數;C)對於該b個浮點數中每一浮點數fi,壓縮為k個定點數尾數mi_1~mi_k,以產生共b×k個定點數尾數mi_j,其中i為不大於b之正整數,j為不大於k之正整數;以及D)輸出一壓縮結果,該壓縮結果包含該k個共同倍率因數r1~rk及該b×k個定點數尾數mi_j,代表b個壓縮浮點數cf1~cfb,每一壓縮浮點數cfi 的值為
    Figure 112119580-A0305-02-0021-1
  2. 如請求項1所述之浮點數壓縮方法,其中該算術單元執行步驟D)前,進一步執行以下步驟:產生一準壓縮結果,該準壓縮結果包含該k個共同倍率因數r1~rk及該b×k個定點數尾數mi_j;針對該準壓縮結果計算一壓縮誤差;設定一閾值;以及根據該壓縮誤差以及該閾值調整該k個共同倍率因數r1~rk及該b×k個定點數尾數mi_j。
  3. 如請求項2所述之浮點數壓縮方法,其中針對該準壓縮結果計算該壓縮誤差的步驟包含:根據以下方程式對該b個浮點數中每一浮點數fi計算壓縮誤差Ei:
    Figure 112119580-A0305-02-0022-2
    根據以下方程式計算b個誤差E1~Eb的平方和SE:
    Figure 112119580-A0305-02-0022-3
    以及將該平方和與一閾值進行比較;其中若該平方和不大於該閾值,則以該準壓縮結果作為該壓縮結果。
  4. 如請求項2所述之浮點數壓縮方法,其中若該壓縮誤差大於該閾值,則重新執行該步驟B)、C)。
  5. 如請求項4所述之浮點數壓縮方法,其中該調整該k個共同倍率因數r1~rk及該b×k個定點數尾數mi_j步驟係為:對該k個共同倍率因數r1~rk及該b×k個定點數尾數mi_j進行啟發式演算法、隨機演算法、或窮舉法之一的迭代處理。
  6. 如請求項2所述之浮點數壓縮方法,其中設定該閾值的步驟包含:對該b個浮點數共同提出倍率因素r1’~rk’;對於該b個浮點數中每一浮點數fi,壓縮為k個定點數尾數mi_1’~mi_k’,以產生b×k個定點數尾數mi_j’;根據以下方程式,對該b個浮點數的每一個浮點數fi,計算壓縮誤差Ei':
    Figure 112119580-A0305-02-0022-4
    根據以下方程式計算b個誤差E1’~Eb’的平方和SE’:
    Figure 112119580-A0305-02-0022-5
    ;以及 將該閾值設為壓縮誤差SE’。
  7. 如請求項1所述之浮點數壓縮方法,其中該b×k個定點數尾 數mi_j均為有號數。
  8. 如請求項1所述之浮點數壓縮方法,其中該b×k個定點數尾數mi_j至少一個為有號數,且該有號數表達的數值範圍相對於0不對稱。
  9. 如請求項8所述之浮點數壓縮方法,其中該有號數為2的補數。
  10. 如請求項1所述之浮點數壓縮方法,另包含:將該b×k個定點數尾數mi_j以及該k個共同倍率因素儲存於一網路伺服器之一記憶體,以供遠端下載運算之用。
  11. 如請求項1所述之浮點數壓縮方法,另包含:將該b×k個定點數尾數mi_j以及全部的該些倍率因素r1~rk儲存於一記憶體,但部分的b×k個定點數尾數mi_j以及部分的該些倍率因素r1~rk不參與運算。
  12. 如請求項1所述之浮點數壓縮方法,其中k等於2,該倍率因素r1~rk均為不大於16位元之浮點數。
  13. 一種運算裝置,包含一第一暫存器、一第二暫存器以及一算術單元,該算術單元包含至少一乘法器及至少一加法器,該算術單元耦接於該第一暫存器及該第二暫存器,其中:該第一暫存器儲存b個激勵值a1~ab,其中b為大於1之正整數;該第二暫存器儲存b個壓縮浮點數cf1~cfb;該b個壓縮浮點數包含k個共同倍率因素r1~rk,其中k為1或大於1之正整數; 該b個壓縮浮點數中每一壓縮浮點數cfi包含k個定點數尾數mi_1~mi_k,共為b×k個定點數尾數mi_j,其中i為不大於b之正整數,j為不大於k之正整數,每一壓縮浮點數cfi的值為
    Figure 112119580-A0305-02-0024-6
    ;以及該算術單元計算該b個激勵值(a1,a2,...,ab)與該b個壓縮浮點數(cf1,cf2,...,cfb)的一內積乘法結果。
  14. 如請求項13所述之運算裝置,其中該運算裝置執行以下步驟:A)取得b個浮點數f1~fb,其中b為大於1之正整數;B)對該b個浮點數產生k個共同倍率因素r1~rk,其中k為大於1之正整數,其中該k個共同倍率因素r1~rk至少包含一具有一尾數的浮點數;C)對於該b個浮點數中每一浮點數fi,壓縮為k個定點數尾數mi_1~mi_k,以產生b×k個定點數尾數mi_j,其中i為不大於b之正整數,j為不大於k之正整數;以及D)輸出一壓縮結果,該壓縮結果包含該k個共同倍率因數r1~rk及該b×k個定點數尾數mi_j,代表b個壓縮浮點數cf1~cfb,每一壓縮浮點數cfi的值為
    Figure 112119580-A0305-02-0024-7
  15. 如請求項14所述之運算裝置,其中該運算裝置執行步驟D)前,進一步執行以下步驟:計算一準壓縮結果,該準壓縮結果包含該k個共同倍率因數r1~rk及該b×k個定點數尾數mi_j;針對該準壓縮結果計算一壓縮誤差;設定一閾值;以及 根據該壓縮誤差以及該閾值調整該k個共同倍率因數r1~rk及該b×k個定點數尾數mi_j。
  16. 如請求項15所述之運算裝置,其中針對該準壓縮結果計算該壓縮誤差的步驟包含:根據以下方程式,對該b個浮點數中每一浮點數fi計算壓縮誤差Ei:
    Figure 112119580-A0305-02-0025-8
    根據以下方程式計算b個誤差E1~Eb的平方和SE:
    Figure 112119580-A0305-02-0025-9
    以及將該平方和與一閾值進行比較;其中若該平方和不大於該閾值,則以該準壓縮結果作為該壓縮結果。
  17. 如請求項15所述之運算裝置,其中若該壓縮誤差大於該閾值,則重新執行該步驟B)、C)。
  18. 如請求項17所述之運算裝置,其中該調整該k個共同倍率因數r1~rk及該b×k個定點數尾數mi_j步驟係為:對該k個共同倍率因數r1~rk及該b×k個定點數尾數mi_j壓縮結果進行啟發式演算法、隨機演算法、或窮舉法之一的迭代處理。
  19. 如請求項15所述之運算裝置,其中設定該閾值的步驟包含:對該b個浮點數共同提出倍率因素r1’~rk’對於該b個浮點數中每一浮點數fi,壓縮為k個定點數尾數mi_1’~mi_k’,以產生b×k個定點數尾數mi_j’;根據以下方程式對該b個浮點數的每一個浮點數fi,計算壓縮誤差Ei'
    Figure 112119580-A0305-02-0025-10
    根據以下方程式計算b個誤差E1’~Eb’的平方和SE’:
    Figure 112119580-A0305-02-0026-11
    ;以及 將該閾值設為壓縮誤差SE’。
  20. 如請求項13所述之運算裝置,其中該b個激勵值a1~ab係整數、定點數、或MSFP塊狀浮點數的尾數。
  21. 如請求項13所述之運算裝置,另包含:全部的該b×k個定點數尾數mi_j以及全部的該些共同倍率因素r1~rk被儲存於該第二暫存器,但部分的該b×k個定點數尾數mi_j以及部分的該些倍率因素r1~rk不參與運算。
  22. 一種電腦可讀取儲存媒介,儲存著可被電腦執行的計算機可讀取指令,當該計算機可讀取指令被電腦執行時將觸發電腦輸出b個壓縮浮點數的方法,其中b為大於1之正整數,該方法包括:A)產生k個共同倍率因素r1~rk,其中k為1或大於1之正整數,其中該k個共同倍率因素r1~rk至少包含一浮點數,該浮點數具有一倍率因素指數及一倍率因素尾數;B)產生k個定點數尾數mi_1~mi_k,以產生b×k個定點數尾數mi_j,其中i為不大於b之正整數,j為不大於k之正整數;以及C)輸出該k個共同倍率因數r1~rk及該b×k個定點數尾數mi_j,代表b個壓縮浮點數cf1~cfb,每一壓縮浮點數cfi的值為
    Figure 112119580-A0305-02-0026-12
TW112119580A 2022-05-26 2023-05-25 一種浮點數壓縮方法、運算裝置及電腦可讀取儲存媒介 TWI837000B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US202263345918P 2022-05-26 2022-05-26
US63/345,918 2022-05-26
US202263426727P 2022-11-19 2022-11-19
US63/426,727 2022-11-19

Publications (2)

Publication Number Publication Date
TW202403539A TW202403539A (zh) 2024-01-16
TWI837000B true TWI837000B (zh) 2024-03-21

Family

ID=

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113592701A (zh) 2021-08-05 2021-11-02 中国科学技术大学 将梯度压缩算法开发注册到深度学习框架中的方法及系统

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113592701A (zh) 2021-08-05 2021-11-02 中国科学技术大学 将梯度压缩算法开发注册到深度学习框架中的方法及系统

Similar Documents

Publication Publication Date Title
Wang et al. A high-speed and low-complexity architecture for softmax function in deep learning
WO2021036904A1 (zh) 数据处理方法、装置、计算机设备和存储介质
WO2021036908A1 (zh) 数据处理方法、装置、计算机设备和存储介质
Liu et al. Design and analysis of inexact floating-point adders
WO2019238029A1 (zh) 卷积神经网络系统和卷积神经网络量化的方法
WO2022111002A1 (zh) 用于训练神经网络的方法、设备和计算机可读存储介质
US20230131251A1 (en) System and method for memory compression for deep learning networks
CN114677548A (zh) 基于阻变存储器的神经网络图像分类系统及方法
Rokh et al. A comprehensive survey on model quantization for deep neural networks
CN112598129A (zh) 基于ReRAM神经网络加速器的可调硬件感知的剪枝和映射框架
WO2019095333A1 (zh) 一种数据处理方法及设备
Ranjbar et al. High performance 8-bit approximate multiplier using novel 4: 2 approximate compressors for fast image processing
Kang et al. An overview of sparsity exploitation in CNNs for on-device intelligence with software-hardware cross-layer optimizations
TWI837000B (zh) 一種浮點數壓縮方法、運算裝置及電腦可讀取儲存媒介
WO2023227064A1 (zh) 一种浮点数压缩方法、运算装置及计算器可读取存储媒介
TW202109281A (zh) 帶正負號多字乘法器
WO2021103122A1 (zh) 一种基于忆阻器阵列的半加器、全加器及乘法器
TW202044129A (zh) 用於神經網路參數的運算系統及其壓縮方法
CN114115803B (zh) 一种基于部分积概率分析的近似浮点乘法器
TW202314570A (zh) 用於加速指數函數的計算的系統及方法
WO2023147770A1 (zh) 一种浮点数运算方法以及相关的算术单元
Hosny et al. Sparse bitmap compression for memory-efficient training on the edge
CN113791756A (zh) 转数方法、存储介质、装置及板卡
US20230273768A1 (en) Floating-point calculation method and associated arithmetic unit
CN113159296A (zh) 一种二值神经网络的构建方法