TW202312033A - 雙指數邊界框浮點處理器 - Google Patents
雙指數邊界框浮點處理器 Download PDFInfo
- Publication number
- TW202312033A TW202312033A TW111122197A TW111122197A TW202312033A TW 202312033 A TW202312033 A TW 202312033A TW 111122197 A TW111122197 A TW 111122197A TW 111122197 A TW111122197 A TW 111122197A TW 202312033 A TW202312033 A TW 202312033A
- Authority
- TW
- Taiwan
- Prior art keywords
- matrix
- index
- bbfp
- format
- exponent
- Prior art date
Links
- 230000009977 dual effect Effects 0.000 title abstract description 6
- 239000011159 matrix material Substances 0.000 claims abstract description 244
- 238000013528 artificial neural network Methods 0.000 claims abstract description 162
- 230000015654 memory Effects 0.000 claims abstract description 111
- 238000000034 method Methods 0.000 claims abstract description 106
- 238000007667 floating Methods 0.000 claims description 155
- 238000012549 training Methods 0.000 claims description 63
- 230000006870 function Effects 0.000 claims description 58
- 238000003062 neural network model Methods 0.000 claims description 44
- 230000004913 activation Effects 0.000 claims description 20
- 238000010801 machine learning Methods 0.000 abstract description 14
- 238000003491 array Methods 0.000 abstract description 7
- 238000012545 processing Methods 0.000 description 115
- 238000005516 engineering process Methods 0.000 description 27
- 239000013598 vector Substances 0.000 description 27
- 238000004891 communication Methods 0.000 description 22
- 230000006835 compression Effects 0.000 description 20
- 238000007906 compression Methods 0.000 description 20
- 238000001994 activation Methods 0.000 description 19
- 238000010586 diagram Methods 0.000 description 17
- 238000006243 chemical reaction Methods 0.000 description 11
- 238000004364 calculation method Methods 0.000 description 10
- 230000008901 benefit Effects 0.000 description 9
- 239000008186 active pharmaceutical agent Substances 0.000 description 8
- 238000013473 artificial intelligence Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 238000013139 quantization Methods 0.000 description 4
- 238000013527 convolutional neural network Methods 0.000 description 3
- 230000006837 decompression Effects 0.000 description 3
- 238000013135 deep learning Methods 0.000 description 3
- 238000011156 evaluation Methods 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 230000000306 recurrent effect Effects 0.000 description 3
- 230000009466 transformation Effects 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 2
- 239000003795 chemical substances by application Substances 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000005055 memory storage Effects 0.000 description 2
- 230000006403 short-term memory Effects 0.000 description 2
- 241001290864 Schoenoplectus Species 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- -1 bridges Substances 0.000 description 1
- 230000001149 cognitive effect Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000006735 deficit Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005265 energy consumption Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000001815 facial effect Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
Classifications
-
- 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/14—Conversion to or from non-weighted codes
- H03M7/24—Conversion to or from floating-point codes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F5/01—Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/06—Arrangements for sorting, selecting, merging, or comparing data on individual record carriers
- G06F7/14—Merging, i.e. combining at least two sets of record carriers each arranged in the same ordered sequence to produce a single set having the same ordered sequence
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/544—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
- G06F7/556—Logarithmic or exponential functions
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/499—Denomination or exception handling, e.g. rounding or overflow
- G06F7/49942—Significance control
- G06F7/49947—Rounding
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Mathematical Optimization (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Nonlinear Science (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Biomedical Technology (AREA)
- Artificial Intelligence (AREA)
- Life Sciences & Earth Sciences (AREA)
- Evolutionary Computation (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Complex Calculations (AREA)
- Logic Circuits (AREA)
Abstract
揭示了用於使用雙指數格式執行矩陣運算的設備及方法,包括適於神經網路及其他機器學習加速器及應用的操作。所揭示的矩陣格式包括單指數邊界框浮點(SE-BBFP)及雙指數邊界框浮點(DE-BBFP)格式。基於元素用作矩陣方塊(tile)的行還是矩陣方塊的列來為每個元素決定每個元素的共享指數,例如,用於點積運算。適用於採用此種神經網路的計算系統包括電腦,該等電腦具有通用處理器、神經網路加速器、或重新配置兩種邏輯裝置,諸如現場可程式設計閘陣列(FPGA)。本文揭示的某些技術可以提供改進的系統效能,同時減小所使用的記憶體及網路頻寬。
Description
本揭示係關於雙指數邊界框浮點處理器。
機器學習(machine learning; ML)及人工智慧(artificial intelligence; AI)技術可以用於解決多個複雜計算問題,諸如識別影像及語音、分析及分類資訊、及執行各種分類任務。機器學習係使用統計技術來給予電腦系統從訓練資料集中提取更高位準特徵的能力的電腦科學領域。特別地,特徵可以藉由訓練模型來提取,諸如人工神經網路(neural network; NN)或深度神經網路(deep neural network; DNN)。在訓練模型之後,新資料可以應用於模型,並且新資料可以使用經訓練模型來分類(例如,可以提取較高階特徵)。機器學習模型通常在通用處理器(亦稱為中央處理單元(central processing unit; CPU))上執行。然而,訓練模型及/或使用模型可以在計算上係昂貴的並且因此不可能使用通用處理器即時地執行特徵提取。由此,對於實施神經網路的電腦硬體及軟體有充分的改進機會。
揭示了用於使用雙指數格式執行矩陣運算的設備及方法,包括適於神經網路及其他機器學習加速器及應用的操作。所揭示的矩陣格式包括單指數邊界框浮點(single exponent bounding box floating-point; SE-BBFP)及雙指數邊界框浮點(dual exponent bounding box floating-point; DE-BBFP)格式。基於元素用作矩陣方塊(tile)的行還是矩陣方塊的列來為每個元素決定每個元素共享的指數,例如,用於點積運算。適用於採用此種神經網路的計算系統包括電腦,該等電腦具有通用處理器、神經網路加速器、或重新配置兩種邏輯裝置,諸如現場可程式設計閘陣列(Field programmable gate array; FPGA)。本文揭示的某些技術可以提供改進的系統效能,同時減小所使用的記憶體及網路頻寬。
在所揭示技術的一些實例中,一種電腦系統包括通用及/或專用神經網路處理器及記憶體。隨著在訓練神經網路期間發生前向傳播,產生為第一共享指數格式(SE-BBFP或DE-BBFP)的啟動值。壓縮的啟動值在大容量記憶體中儲存以在反向傳播期間使用。當矩陣值以DE-BBFP格式儲存時,矩陣可以用作使用單個有效位集合的矩陣運算的左或右運算元。
在所揭示技術的一些實例中,一種電腦實施方法包括:使用處理器來選擇將以雙指數格式儲存的輸入矩陣的元素的邊界框的共用指數,共用指數基於元素的邊界框的行或列的較小指數來選擇;決定雙指數格式矩陣的元素的邊界框的有效位,所決定有效位的每一者藉由將相應元素的指數與共用指數進行比較來選擇;以及將所決定有效位及共用指數作為雙指數格式矩陣儲存在電腦可讀取儲存媒體中。
提供此發明內容來以簡化形式引入將在下文實施方式中進一步描述的概念選擇。此發明內容不意欲識別要求保護的標的的關鍵特徵或必要特徵,亦不意欲用於限制要求保護的標的的範疇。
本發明的上述及其他目的、特徵、及優點將從以下實施方式更顯而易見,實施方式參考附圖。
I.一般考慮
本揭示在代表實施例的上下文中闡述,而不意欲以任何方式限制。
如在本申請案中使用,除非上下文另外明確指出,否則單數形式「一(a)」、「一(an)」、及「該(the)」包括複數形式。此外,術語「包括」意味著「包含」。另外,術語「耦合」包含機械、電氣、磁性、光學,以及將項目耦合或鏈接在一起的其他實際方式,並且不排除在耦合項目之間存在中間元件。此外,如本文使用,術語「及/或」意味著片語中的任何一個項目或項目的組合。
本文描述的系統、方法、及設備不應當被解釋為以任何方式限制。相反,本揭示涉及單獨地並且以彼此的各種組合及子組合的各種揭示的實施例的所有新穎及非顯而易見的特徵及態樣。所揭示的系統、方法、及設備不限於任何具體態樣或特徵或其組合,所揭示的事物及方法亦不要求存在任何一或多個具體優點或待解決問題。此外,所揭示實施例的任何特徵或態樣可以彼此的任何組合及子組合使用。
儘管為了方便呈現,所揭示方法的一些的操作以特定的相繼次序描述,但應當理解,此種描述方式包含重新排列,除非下文闡述的具體語言要求特定的排序。例如,可在一些情況下重新排列或並行執行相繼描述的操作。此外,為了簡單起見,附圖可能未圖示所揭示的事物及方法可以與其他事物及方法結合使用的各種方式。此外,描述有時使用術語如「產生」、「產生」、「顯示」、「接收」、「驗證」、「執行」、「執行」、「轉化」、及「發起」來描述所揭示方法。此等術語係所執行的實際操作的高階描述。對應於此等術語的實際操作將取決於特定實施方式而變化,並且容易由一般技藝人士辨別。
為了更好地理解,已經提供了操作理論、科學原理、或本文參考本揭示的設備或方法呈現的其他理論描述,並且不意欲限制範疇。所附申請專利範圍中的設備及方法不限於以此種操作理論所描述的方式起作用的彼等設備及方法。
所揭示方法的任一者可以實施為在一或多個電腦可讀取媒體(例如,電腦可讀取媒體,諸如一或多個光學媒體光碟、揮發性記憶體部件(諸如DRAM或SRAM)、或非揮發性記憶體部件(諸如硬碟驅動器))上儲存並且在電腦(例如,任何市售的電腦,包括智慧電話或包括計算硬體的其他行動裝置)上執行的電腦可執行指令。用於實施所揭示技術的電腦可執行指令的任一者以及在實施所揭示實施例期間創建及使用的任何資料可以儲存在一或多個電腦可讀取媒體(例如,電腦可讀取儲存媒體)上。電腦可執行指令可以係例如專用軟體應用或經由網路瀏覽器或其他軟體應用(諸如遠端計算應用)存取或下載的軟體應用的部分。此種軟體可以例如在單個本端電腦上或在使用一或多個網路電腦的網路環境(例如,經由網際網路、廣域網路、區域網路、客戶端-伺服器網路(諸如雲端計算網路)、或其他此種網路)中執行。
為了清楚起見,僅描述了基於軟體的實施方式的某些所選態樣。省略了本領域中熟知的其他細節。例如,應當理解,所揭示技術不限於任何具體電腦語言或程式。例如,所揭示技術可以藉由以C、C++、Java、或任何其他適宜程式設計語言寫入的軟體來實施。適宜電腦及硬體的某些細節係熟知的,並且不需要在本揭示中詳細闡述。
此外,基於軟體的實施例(例如,包含用於導致電腦執行所揭示方法的任一者的電腦可執行指令)的任一者可以經由適宜通訊構件來上載、下載、或遠端存取。此種適宜的通訊構件包括例如網際網路、全球資訊網、企業內部網路、軟體應用、電纜(包括光纖電纜)、磁性通訊、電磁通訊(包括RF、微波、及紅外通訊)、電子通訊、或其他此種通訊構件。
II.使用雙指數格式的人工神經網路的概述
人工神經網路(ANN或本文通篇使用的「NN」)應用於人工智慧及機器學習中的多種應用,包括影像識別、語音識別、搜尋引擎、及其他適宜應用。此等應用的處理可在獨立裝置(諸如個人電腦或蜂巢電話)上進行,但亦可在大的資料中心中執行。同時,可以與NN一起使用的硬體加速器包括專用NN處理單元,諸如經程式設計以加速神經網路處理的張量處理單元(tensor processing unit; TPU)及現場可程式設計閘陣列(FPGA)。此種硬體裝置歸因於其撓性性質及每單位計算的低功耗而部署在消費裝置以及資料中心中。
傳統上,已經使用單精度浮點(32位元浮點或浮點32格式)來訓練及部署NN。然而,已經顯示,較低精度浮點格式(諸如16位元浮點(浮點16))或定點格式可以用於以最小準確度損失來執行推斷操作。在專用硬體(諸如FPGA)上,降低精度的格式可以大幅度改進DNN處理的時延及處理量。
以標準精度浮點格式表示的數字(例如,以16位元浮點格式、32位元浮點格式、64位元浮點格式、或80位元浮點格式表達的浮點數)可以轉化為DE-BBFP格式數字,可允許執行操作中的效能益處。特定而言,NN權重及啟動值可以較低精度的DE-BBFP格式表示,其中引入可接受位準的誤差。
在FPGA裝置上的計算的特性之一係其通常缺乏硬體浮點支援。浮點運算可在使用撓性邏輯的代價下執行,但在FPGA實施方式中,支援浮點所需的邏輯量經常係巨大的。已經開發了一些較新的FPGA來支援浮點計算,但即使在此等FPGA上,相同裝置可以產生兩倍於整數模式下使用的每單位時間的計算輸出。通常,考慮到利用浮點計算來創建NN,但當FPGA靶向NN處理時,若可以使用整數算術來表達神經網路,則其將係有益的。所揭示技術的實例包括雙指數邊界框浮點(DE-BBFP)的硬體實施方式,包括在NN、FPGA、及其他硬體環境中使用DE-BBFP。如本文使用,雙指數邊界框浮點指陣列元素可以具有兩個不同指數的矩陣表示,取決於元素在矩陣運算中用作元素的行還是列。換言之,當元素在矩陣運算的左側使用時,每個元素使用行指數,並且當元素在矩陣運算的右側使用時,每個元素使用可以與行指數不同的列指數。「邊界框(Bounding box)」或「邊界框(bounding box)」浮點指矩陣中的一組元素(但不一定全部)共享共用行或列指數的情況。例如,1024x1024元素矩陣可以由64x64個方塊組成,方塊的每一者具有16x16個元素。每個方塊中的行及列共享共用指數。
如本文使用,「有效位」指以科學記法格式表達的數字的有效數字,包括浮點及邊界框浮動框格式。有效位可經常稱為有效位或係數。在有效位的精度限制內,可表示任何數字。由於指數以2的冪縮放有效位,如同科學記法中指數以10的冪縮放一樣,可表示非常大數字的量值。表示的精度藉由有效位的精度決定。常見浮點表示使用寬度為10(浮點16)、24(浮點32)、或53(浮點64)位元的有效位。具有大於2
53的量值的整數可以浮點64浮點格式近似,但因為在有效位中不存在足夠的位元,其將不能準確地表示。對於任意分數可以出現類似的效應,其中分數藉由採用負2的冪的值的有效位的位元來表示。存在許多不能準確地表示的分數,因為其等在二進制數字系統中係不合理的。更準確表示在兩種情況下皆係可能的,但其等可能需要有效位包含更多位元。最終,需要無限數量的有效位位元來準確地表示一些數字(例如,
;
)。10位元(半精度浮動)、24位元(單精度浮動)及53位元(雙精度浮動)有效位限制係有效位儲存需求對通用電腦中的表示精度的常見損害。
對於邊界框浮點格式,一組兩個或多個數字使用單個共享指數,其中每個數字仍具有其自身的符號及有效位。在一些實例中,將共享指數選擇為原始浮點值的最大指數。出於本揭示的目的,術語邊界框浮點(DE-BBFP)意味著其中單個指數在兩個或多個值之間共享的數字系統,該等兩個或多個值的每一者藉由符號及有效位對來表示(不論存在明確符號位元、還是有效位本身係帶符號的)。在一些實例中,矩陣或向量的一或多個行或列的所有值、或者矩陣或向量的所有值可以共享共用指數。在其他實例中,DE-BBFP表示可係無符號的。在一些實例中,矩陣或向量DE-BBFP表示中的一些但非全部元素可包括表示為整數、浮點數字、定點數字、符號、或與用符號、有效位、及指數表示的數字混合的其他資料格式的數字。在一些實例中,矩陣或向量DE-BBFP表示中的一些或全部元素可以包括具有兩個或多個部分的複雜元素,例如:具有虛分量(
,其中
)的複數;包括極坐標
中的分子及分母的分數,或其他多分量元素。
可以選擇特定DE-BBFP格式的參數為用於特定實施方式以折衷精度及儲存需求。例如,一組數字可以共享相同指數,而非儲存具有每一個浮點數字的指數。為了共享指數同時維持高階準確度,數字應當具有接近相同的量值,因為量值的差異以有效位表達。若量值差異過大,則對於大的值,有效位將上溢,或對於較小值,有效位可能係零(「下溢」)。取決於特定應用,一定量的上溢及/或下溢可能係可接受的。
可以調節有效位的大小以適合特定應用。此可以影響所表示的數字的精度,但從減小的表示大小實現潛在增益。例如,標準單精度浮動具有四個位元組的大小,但對於所揭示技術的某些實施方式,僅兩個位元組來用於表示每個值的符號及有效位。在一些實施方式中,每個值的符號及有效位可以用位元組或更小來表示。
在所揭示技術的某些實例中,上文表達的表示用於從表示導出原始數字,但對於一組數字僅儲存單個指數,該組數字的每一者藉由帶符號的有效位表示。每個帶符號的有效位可以藉由兩個位元組或更小表示,因此與四位元組浮點相比,記憶體儲存節省係約2x。另外,加載及儲存此等值的記憶體頻寬需求亦係標準浮點的近似一半。
神經網路操作用在許多人工智慧操作中。經常,在實施神經網路時執行的大量處理操作係執行矩陣x矩陣或矩陣x向量乘法或卷積運算。此種操作係計算及記憶體頻寬密集的,其中矩陣的大小可係例如1000x1000個元素(例如,1000x1000個數字,每個包括符號、有效位、及指數)或更大,並且使用許多矩陣。如本文論述,DE-BBFP技術可以應用於此種操作以減少給定系統中對計算以及記憶體頻寬的需求,不論該系統是否係FPGA、CPU、或另一硬體平台。如本文使用,本文使用術語「元素」指此種矩陣或向量的成員。
如本文使用,術語「張量」指可以用於表示NN的性質的多維陣列,並且包括一維向量以及二維、三維、四維、或更大維度的矩陣。如本揭示中使用,除非具體聲明,否則張量不需要任何其他數學性質。
如本文使用,術語「標準精度浮點」或「規則浮點」指浮點數格式,其中每個數字具有有效位、指數及可選地符號,並且由本端或虛擬CPU來本端地支援。標準精度浮點格式的實例包括但不限於IEEE 754標準格式,諸如16位元、32位元、64位元、或藉由處理器支援的其他處理器,諸如Intel AVX、AVX2、IA32、x86_64、或80位元浮點格式。
給定的數字可以使用不同精度格式來表示。例如,數字可以較高精度格式(例如,浮點32)及較低精度格式(例如,浮點16)來表示。降低數字的精度可以包括減少用於表示數字的有效位或指數的位元的數量。此外,降低數字的精度可以包括減少可以用於表示數字的指數的值的範圍,諸如當多個數字共享共用指數時。類似地,增加數字的精度可以包括增加用於表示數字的有效位或指數的位元的數量。此外,增加數字的精度可以包括增加可以用於表示數字的指數的值的範圍,諸如當數字與共享共用指數的一組數字分離時。
術語「量化的雙指數浮點」或「量化DE-BBFP」指雙指數浮點數格式,其中張量的兩個或多個值已經修改為具有與當值以標準精度浮點表示時相比較低的精度。例如,在將矩陣值轉化為雙指數格式之後,16位元有效位可以量化為任何數量的較少位元,包括8、7、4、或3個位元,以進一步降低儲存及處理硬體需求。雙指數8位元有效位可以轉化為任何數量的較少位元,包括7、4、或3個位元。量化在訓練及其他操作期間的某些神經網路處理應用中特別有用,其中可以在部署的神經網路中容忍精度損失而結果類似。
在所揭示技術的一個實例中,神經網路加速器經配置為對神經網路的層執行訓練操作,包括前向傳播及反向傳播。一或多個神經網路層的值可以DE-BBFP或量化DE-BBFP(QDE-BBFP)格式表示。例如,DE-BBFP格式可以用於使用神經網路加速器加速在訓練及推斷操作中執行的計算。雙指數格式的使用可以藉由例如允許更快的硬體、減少的記憶體額外負擔、更簡單的硬體設計、減少的能量使用、減少的積體電路面積、成本節省及其他技術改進來改進神經網路處理。當不知道矩陣將用作矩陣運算的左運算元還是右運算元、或者矩陣將用作左運算元及右運算元兩者時,使用DE-BBFP格式允許使用單組有效位、一組列指數、及一組行指數儲存矩陣值。相反,SE-BBFP格式矩陣(其中不知道矩陣將用作左運算元還是右運算元、或用作左及右運算元兩者)需要兩組有效位,每組相對於其指數移位,並且儲存兩組指數。因此,如本文描述的雙格式矩陣的使用提供了記憶體、計算、及互連資源的顯著節省。
經常期望執行操作以減輕藉由使用較低精度格式引入的雜訊或其他不準確性。另外,神經網路訓練的部分(諸如啟動值的暫時儲存)可以藉由以下方式改進:將此等值的一部分(例如,對於神經網路的輸入、隱藏、或輸出層)從標準精度浮點或從DE-BBFP壓縮為較低精度DE-BBFP格式。可以稍後擷取啟動值來用在例如訓練階段期間的反向傳播期間。
可以將給定層的輸入張量從標準精度浮點格式轉化為DE-BBFP浮點格式。可以使用轉化的輸入張量來執行張量運算。張量運算的結果可以從DE-BBFP格式轉化為標準精度浮點格式。可以在神經網路的前向傳播模式或反向傳播模式期間執行張量運算。例如,在反向傳播模式期間,輸入張量可以係來自鄰近給定層(例如,在給定層之後)的層或給定層的權重的輸出誤差項。作為另一實例,在前向傳播模式期間,輸入張量可以係從鄰近給定層(例如,在給定層之前)的層或給定層的權重的輸出項。所轉化的結果可以用於產生神經網路的層的輸出張量,其中輸出張量係以標準精度浮點格式。以此方式,與僅使用標準精度浮點格式的可比較加速器相比,神經網路加速器可以有可能製造得更小且更有效。更小且更有效的加速器可具有增加的計算效能及/或增加的能量效率。藉由增加加速器的準確性,可減少用於訓練的收斂時間,並且當將輸入分類到神經網路時,加速器可能更為準確。降低使用模型的計算複雜性可以潛在地減少在推斷期間提取特徵的時間、減少在訓練期間調節的時間、及/或減少在訓練及/或推斷期間的能量消耗。
在專用於機器學習/深度學習(ML/DL)處理的某些晶片上,三個昂貴的硬體部件係算術處理單元、晶片上記憶體、及在處理單元之間移動權重及啟動資料的資料結構。計算的大部分係矩陣乘法。DE-BBFP表示可以用於降低矩陣乘法單元的硬體複雜性。通常,資料以一些浮點/整數形式儲存並且隨後在計算時轉化為DE-BBFP以減少計算硬體。
資料的DE-BBFP表示提供了在使用DE-BBFP算術的應用中儲存資料的有效方式。DE-BBFP可以在計算之前轉化(在運行中)為單指數邊界框浮點(SE-BBFP)格式。從DE-BBFP轉化為SE-BBFP係容易且幾乎無損的。資料可以從浮點或整數格式轉化為DE-BBFP格式並且立即儲存。在一些實例中,與在16位元或32位元規則浮點格式中儲存資料相比,DE-BBFP表示需要少40-70%的儲存。使用DE-BBFP格式的資料儲存亦可將在晶片上及晶片外移動資料所需的資料結構頻寬減少達類似百分比。
III.用於實施具有DE-BBFP格式的啟動壓縮的示例架構
第1圖係概述可以在所揭示技術的某些實例中實施的示例雙指數賦能系統110的邊界框圖100,包括在具有DE-BBFP的啟動壓縮中使用。如第1圖所示,雙指數賦能系統110可以包括多個硬體資源,包括通用處理器120及專用處理器,諸如圖形處理單元122及神經網路加速器180。處理器耦合到記憶體125及儲存器129,該儲存器可以包括揮發性或非揮發性記憶體裝置。處理器120及122執行在記憶體或儲存器中儲存的指令以便提供神經網路模組130。神經網路模組130包括允許程式設計系統以實施各種類型的神經網路的軟體介面。例如,提供了軟體功能,該等軟體功能允許應用定義神經網路,包括權重、偏置、啟動函數、節點值、及在神經網路層之間的互連。此外,軟體功能可以用於定義遞歸神經網路的狀態元素。神經網路模組130可以進一步提供效用以允許訓練及重新訓練利用模組實施的神經網路。表示神經網路模組的值在記憶體或儲存器中儲存並且藉由處理器之一執行的指令操作。在記憶體或儲存器中儲存的值可以使用標準精度浮點、SE-BBFP、DE-BBFP、或QDE-BBFP格式浮點值表示。
在一些實例中,向程式設計師提供專有或開放源程式庫或框架以實施神經網路創建、訓練、及評估。此種程式庫的實例包括TensorFlow、Microsoft Cognitive Toolkit (CNTK)、Caffe、Theano、及Keras。在一些實例中,程式設計工具(諸如整合開發環境)為程式設計師及使用者提供支援以定義、編譯、及評估NN。
可以將神經網路加速器180實施為定製或專用積體電路(例如,包括晶片上系統(system-on-chip; SoC)積體電路)、現場可程式設計閘陣列(FPGA)或其他可重新配置邏輯、或藉由實體通用處理器代管的軟處理器虛擬機器。神經網路加速器180可以包括張量處理單元182、可重新配置邏輯裝置184、及/或一或多個神經處理核心(諸如DE-BBFP加速器186)。DE-BBFP加速器186可以硬體、軟體、或硬體及軟體的組合配置。作為一個實例,DE-BBFP加速器186可以使用可在張量處理單元182上執行的指令來配置及/或執行。作為另一實例,DE-BBFP加速器186可以藉由程式設計可重新配置邏輯裝置184來配置。作為另一實例,DE-BBFP加速器186可以使用神經網路加速器180的硬接線邏輯閘來配置。
DE-BBFP加速器186可以經程式設計以執行子圖、獨立層、或神經網路的複數個層。例如,DE-BBFP加速器186可以經程式設計以針對NN的層的全部或一部分執行操作。DE-BBFP加速器186可以存取用於儲存權重、偏置、輸入值、輸出值、預測值、狀態值等等的本端記憶體。DE-BBFP加速器186可以具有許多輸入,其中每個輸入可以藉由不同權重值來加權。例如,DE-BBFP加速器186可以產生輸入張量與DE-BBFP加速器186的程式設計的輸入權重的點積。在一些實例中,點積可以在其用作啟動函數的輸入之前藉由偏置值來調節。DE-BBFP加速器186的輸出可以在本端記憶體中儲存,其中例如可以存取輸出值並且將輸出值發送到不同的NN處理器核心及/或神經網路模組130或記憶體125。在DE-BBFP中的中間值可以經常在較小或更本端的記憶體中儲存,而可能直到稍後在訓練製程中才需要的值可以在「大容量記憶體」中儲存,較大、較少本端記憶體(或儲存裝置,諸如在SSD(固態驅動器)或硬碟驅動器上)。例如,在訓練前向傳播期間,一旦已經計算在NN中的下一層的啟動值,可能不存取彼等值,直到完成經過所有層的傳播。可以在此種大容量記憶體中儲存此種啟動值。
神經網路加速器180可以包括經由互連(未圖示)彼此連接的複數個110 DE-BBFP 186。互連可以在獨立DE-BBFP加速器186、記憶體介面(未圖示)、及輸入/輸出(input/output; I/O)介面(未圖示)之間攜帶資料及控制信號。互連可以使用電氣、光學、磁性、或其他適宜通訊技術發送及接收信號,並且可以提供根據多個不同拓撲排列的通訊連接,取決於特定的期望配置。例如,互連可以具有交叉桿、匯流排、點對點匯流排、或其他適宜拓撲。在一些實例中,複數個DE-BBFP加速器186的任一者可以連接到其他核心的任一者,而在其他實例中,一些核心僅連接到其他核心的子集。例如,每個核心可能僅連接到最近4、8、或10個相鄰核心。互連可以用於向及從DE-BBFP加速器186發送輸入/輸出資料,以及向及從DE-BBFP加速器186發送控制信號及其他資訊信號。例如,DE-BBFP加速器186的每一者可以接收及發送旗號,該等旗號指示同時藉由相應DE-BBFP加速器186的每一者執行的操作的執行狀態。另外,矩陣及向量值可以經由互連在DE-BBFP加速器186之間共享。在一些實例中,將互連實施為連接DE-BBFP加速器186及記憶體系統的接線,而在其他實例中,核心互連可以包括用於在互連接線上多工傳輸資料信號的電路系統、開關及/或路由部件(包括主動信號驅動器及轉發器)、或其他適宜電路系統。在所揭示技術的一些實例中,在神經網路加速器180內及向/從神經網路加速器180發送的信號不限於全擺幅電氣數位信號,但神經網路加速器180可以經配置為包括差分信號、脈衝信號、或用於發送資料及控制信號的其他適宜信號。
在一些實例中,DE-BBFP賦能系統110可以包括模擬神經網路加速器180的功能的可選DE-BBFP模擬器。神經網路加速器180提供可以用於將神經網路模組130中以全精度浮點格式表示的資料轉化為DE-BBFP格式值的功能。在一些實例中,神經網路加速器180可使用量化的DE-BBFP格式值執行操作。將在下文進一步詳細論述此種功能。
神經網路模組130可以用於使用工具流來指定、訓練、及評估神經網路模型,該工具流包括硬體不可知模型化框架131(亦稱為本端框架或機器學習執行引擎)、神經網路編譯器132、及神經網路運行時間環境133。記憶體包括用於工具流的電腦可執行指令,該工具流包括模型化框架131、神經網路編譯器132、及神經網路運行時間環境133。工具流可以用於產生表示神經網路模型(諸如下文關於第2圖論述的神經網路模型)的全部或一部分的神經網路資料200。應當注意,儘管將工具流描述為具有三個分離工具(131、132、及133),工具流在各個實例中可以具有更少或更多的工具。例如,不同工具(131、312、及133)的功能可以組合到單個模型化及執行環境中。在其中部署神經網路加速器的其他實例中,可能不包括此種模型化框架。
神經網路資料200可以儲存在記憶體125中,該記憶體可以包括本端記憶體126及大容量記憶體127,該本端記憶體通常實施為靜態唯讀記憶體(static read only memory; SRAM)、嵌入式動態隨機存取記憶體(eDRAM)、暫存器檔中的鎖存器或正反器、邊界框RAM、及其他適宜結構,且該大容量記憶體通常在與本端記憶體126相比支援更大但經常更緩慢存取的記憶體結構中實施。例如,大容量記憶體可係晶片外DRAM、網路可存取RAM、SSD驅動器、硬碟驅動器、或網路可存取儲存器。取決於可用的特定記憶體技術,其他記憶體結構(包括上文針對本端記憶體記載的結構)可用於實施大容量記憶體。神經網路資料200可以一或多種格式表示。例如,對應於給定神經網路模型的神經網路資料200可以具有與工具流的每個相應工具相關聯的不同格式。大體上,神經網路資料200可以包括對節點、邊緣、分組、權重、偏置、啟動函數、及/或張量值的描述。作為具體實例,神經網路資料200可以包括用於表示神經網路模型的源代碼、可執行代碼、元資料、配置資料、資料結構及/或檔案。
模型化框架131可以用於定義及使用神經網路模型。作為一個實例,模型化框架131可以包括可以用於指定神經網路模型的一或多個態樣的預定義的API及/或程式設計原語。預定義的API可以包括較低位準API(例如,啟動函數、成本或誤差函數、節點、邊緣、及張量)及較高階API(例如,層、卷積神經網路、遞歸神經網路、線性分類器等等)兩者。「源代碼」可以用作模型化框架131的輸入以定義給定神經網路模型的圖的拓撲。特定而言,具有模型化框架131的API可以在源代碼內實例化並且互連以指定複雜的神經網路模型。資料科學家可以藉由使用不同API、不同數量的API、及以不同方式互連API來產生不同神經網路模型。
除了源代碼之外,記憶體125亦可以儲存訓練資料。訓練資料包括用於應用到神經網路模型200的輸入資料集及用於輸入資料的每個相應資料集的來自神經網路模型的期望輸出。模型化框架131可以用於利用訓練資料來訓練神經網路模型。訓練的輸出係與神經網路模型的每個節點相關聯的權重及偏置。在訓練神經網路模型之後,模型化框架131可以用於分類應用於經訓練的神經網路模型的新資料。具體地,經訓練的神經網路模型使用從訓練獲得的權重及偏置來對未用於訓練神經網路模型的資料執行分類及識別任務。與僅使用CPU 120相比,模型化框架131可以使用CPU 120及專用處理器(例如,GPU 122及/或神經網路加速器180)來以增加的效能執行神經網路模型。在一些實例中,效能可以潛在地實現一些分類任務的即時效能。
編譯器132分析為神經網路模型提供的源代碼及資料(例如,用於訓練模型的實例),並且將模型轉換為可以在神經網路加速器180上加速的格式,此將在下文進一步詳細描述。具體地,編譯器132將源代碼轉換為可執行代碼、元資料、配置資料、及/或資料結構,用於將神經網路模型及記憶體表示為神經網路資料200。在一些實例中,編譯器132可以使用CPU 120及/或GPU 122將神經網路模型分為多個部分(例如,神經網路200)及可以在神經網路加速器180上執行的其他部分(例如,神經網路的子圖、獨立層、或複數層)。編譯器132可以產生用於執行指派給CPU 120的NN並且用於與指派給加速器180的神經網路的子圖、獨立層、或複數層通訊的可執行代碼(例如,運行時間模組)。編譯器132可以為加速器180產生配置資料,該配置資料用於配置加速器資源以評估指派給可選加速器180的子圖。編譯器132可以創建用於儲存在執行及/或訓練期間藉由神經網路模型產生的值以及用於CPU 120與加速器180之間的通訊的資料結構。編譯器132可以產生元資料,該元資料可以用於識別子圖、邊緣分組、訓練資料、及關於運行時間期間的神經網路模型的各種其他資訊。例如,元資料可以包括用於在神經網路模型的不同子圖或其他部分之間介接的資訊。
運行時間環境133提供可執行環境或解譯器,該解譯器可以用於在訓練模式期間訓練神經網路模型並且可以用於在訓練、推斷、或分類模式中評估神經網路模型。在推斷模式期間,輸入資料可以應用於神經網路模型輸入並且輸入資料可以根據神經網路模型的訓練來分類。輸入資料可以係存檔資料或即時資料。
運行時間環境133可以包括部署工具,在部署模式期間,該部署工具可以用於將神經網路的全部或一部分部署或安裝到神經網路加速器180。運行時間環境133可以進一步包括排程器,該排程器管理不同運行時間模組的執行及在運行時間模組與神經網路加速器180之間的通訊。因此,運行時間環境133可以用於控制在神經網路模組130及神經網路加速器180上模型化的節點之間的資料流。
在一個實例中,神經網路加速器180從神經網路模組130接收及返回標準精度值150。如第1圖中示出,DE-BBFP加速器186可以使用DE-BBFP格式浮點執行其大部分操作,並且在DE-BBFP加速器186與神經網路模組130之間的介面可以使用全精度值,用於在模組之間通訊資訊。標準精度值可以用16、32、64位元、或其他適宜浮點格式表示。例如,可以接收表示神經網路的值的一部分,包括邊緣權重、啟動值、或用於使用雙指數格式處理的其他適宜參數。將標準精度值150提供到標準精度浮點到DE-BBFP轉化器152,該轉化器將標準精度值轉化為雙指數格式值。隨後可以對轉化值執行雙指數浮點運算154。
用於實施DE-BBFP處理單元154的適宜硬體包括通用處理器、神經網路加速器、或重新配置兩種邏輯裝置,諸如現場可程式設計閘陣列(FPGA)。此外,中間值可以在用於由加速器186產生的SE-BBFP或DE-BBFP陣列的記憶體(例如,記憶體135、儲存器139、或與加速器186通訊或在加速器186內的其他揮發性或非揮發性記憶體)中儲存。因此,連續矩陣運算可以雙指數格式執行。在一或多個矩陣運算之後,雙指數格式值可以隨後使用產生標準精度浮點值的DE-BBFP到標準浮點轉化器156來轉化回到標準浮點格式。作為具體實例,DE-BBFP加速器186可以用於加速神經網路的給定層,並且向量-向量、矩陣-向量、矩陣-矩陣、及卷積運算可以使用SE-BBFP及DE-BBFP格式浮點運算來執行,且計算密集度較低的運算(諸如添加偏置值或計算啟動函數)可以使用標準浮點精度運算來執行。在一些實例中,DE-BBFP格式可以進一步量化(例如,藉由將值截斷或捨入到較低數量位元來將DE-BBFP元素的指數及/或有效位的精度減少為較少數量位元)。
通常對表示為向量或多維矩陣的數字集合執行在標準浮點及藉由轉化器152及156執行的DE-BBFP之間的轉化。在一些實例中,可以基於標準精度格式來執行額外標準精度運算158(包括在特定神經網路實施方式中可能期望的運算),該等標準精度格式包括將偏置添加到神經網路的一或多個節點、將雙曲正切函數或其他此種S形函數或校正函數(例如,ReLU運算)應用於從DE-BBFP格式轉化回的標準精度值。
在一些實例中,雙指數值僅在神經網路加速器180的邏輯閘及內部記憶體中使用及儲存,並且記憶體125及儲存器129僅儲存標準浮點值。例如,神經網路加速器180可以將從神經網路模型130接收的神經網路模型的輸入、權重、及啟動轉化為DE-BBFP,並且可以將在將值傳遞回到神經網路模型130之前在神經網路加速器180上執行的運算的結果轉化回到標準浮點。值可以使用記憶體125、儲存器129、或輸入/輸出介面(未圖示)在神經網路模型130與神經網路加速器180之間傳遞。在其他實例中,模擬器提供DE-BBFP加速器的完全模擬,包括僅儲存共享指數的一個副本並且以減小的有效位寬度操作。一些結果可能不同於其中基本操作在標準浮點中執行的版本。例如,某些實例可以針對下溢或上溢條件檢查是否存在有限、量化的位元寬度(例如,3、4、或5個位元寬的有效位)。
DNN的大部分計算成本係向量-向量、矩陣-向量、及矩陣-矩陣乘法及/或卷積。此等運算在輸入大小上係二次的,而諸如偏置加法及啟動函數的運算在輸入大小上係線性的。因此,在一些實例中,DE-BBFP格式僅用於在神經網路加速器180上實施的矩陣-向量乘法運算。在此種實例中,所有其他運算以標準精度格式完成,諸如浮點16。因此,從使用者或程式設計師的觀點來看,DE-BBFP賦能系統110從神經網路模組130接受並且向神經網路模組130輸出標準精度浮點16值並且輸出浮點16格式值。向及從邊界框浮點格式的所有轉化可以對程式設計師或使用者隱藏。在一些實例中,程式設計師或使用者可指定用於DE-BBFP運算的某些參數。在其他實例中,DE-BBFP運算可以利用邊界框浮點格式來降低計算複雜性,如下文關於第3圖論述。
神經網路加速器180用於加速神經網路圖或子圖的評估及/或訓練,通常具有在僅使用CPU 120及/或GPU 122評估子圖時未實現的增加的速度及減少的時延。在示出的實例中,加速器包括張量處理單元(TPU) 182、可重新配置邏輯裝置184(例如,包含在一或多個FPGA或可程式設計電路結構中)、及/或DE-BBFP加速器186,然而,可以使用模型化神經網路的任何適宜硬體加速器。加速器180可以包括提供軟CPU的配置邏輯。軟CPU監督加速器180上的加速圖或子圖的操作,並且可以管理與神經網路模組130的通訊。軟CPU亦可以用於配置邏輯並且控制來自加速器上的RAM的資料的加載及儲存,例如,在FPGA內的邊界框RAM中。
在一些實例中,神經網路加速器180的參數可以係可程式設計的。神經網路加速器180可以用於對神經網路模型200的全部或一部分進行原型訓練、推斷、或分類。例如,可以基於藉由在神經網路加速器180內對網路進行原型化而獲得的準確度或效能結果來選擇DE-BBFP參數。在選擇期望的DE-BBFP參數集之後,模型可以經程式設計到加速器180中用於執行進一步的操作。
編譯器132及運行時間133提供神經網路模組130與神經網路加速器180之間的快速介面。實際上,神經網路模型的使用者可能不知道模型的一部分正在所提供加速器上加速。例如,節點值通常藉由將張量值寫入包括識別符的資料結構來在模型中傳播。運行時間133將子圖識別符與加速器相關聯,並且提供用於將訊息翻譯到加速器、將權重、偏置、及/或張量的值透明地寫入神經網路加速器180而無程式干預的邏輯。類似地,藉由神經網路加速器180輸出的值可與包括伺服器處的接收節點的識別符及有效負荷的訊息一起透明地發送回到神經網路模組130,該有效負荷包括諸如發送回到總體神經網路模型的權重、偏置、及/或張量的值。
第2圖示出了可以用於使用所揭示的DE-BBFP實施方式執行增強影像處理的深度神經網路(DNN)200的簡化拓撲。可以使用所揭示的用於SE-BBFP及DE-BBFP矩陣/向量運算的技術來實施一或多個處理層,包括在上文描述的DE-BBFP賦能系統110中使用複數個神經網路DE-BBFP 186中的一或多個。應當注意,本文揭示的神經網路實施方式的應用不限於DNN,但亦可以與其他類型的神經網路一起使用,諸如卷積神經網路(convolutional neural network; CNN),包括具有長短期記憶體(Long Short Term Memory; LSTM)或閘控遞歸單元(gated recurrent unit; GRU)的實施方式、或可以適於使用本文揭示的DE-BBFP方法及設備的其他適宜的人工神經網路。
DNN 200可以至少兩種不同模式操作。最初,DNN 200可以在訓練模式下訓練,並且隨後在推斷模式下用作分類器。在訓練模式期間,訓練資料集可以應用於DNN 200的輸入並且DNN 200的各種參數可以經調節為使得在完成訓練時,DNN 200可以用作分類器。訓練包括執行訓練輸入資料的前向傳播、計算損失(例如,決定在DNN的輸出與DNN的期望輸出之間的差)、以及執行經過DNN的反向傳播以調節DNN 200的參數(例如,權重及偏置)。當DNN 200的架構適用於分類訓練資料時,DNN 200的參數將收斂並且訓練可以完成。在訓練之後,DNN 200可以在推斷模式下使用。具體地,訓練或非訓練資料可以應用於DNN 200的輸入並且經過DNN 200前向傳播,使得輸入資料可以藉由DNN 200分類。
如第2圖所示,節點(包括節點215及216)的第一集合210形成輸入層。集合210的每個節點連接到由節點(包括節點225及226)的第二集合220形成的第一隱藏層中的每個節點。第二隱藏層由節點(包括節點235)的第三集合230形成。輸出層由節點(包括節點245)的第四集合240形成。在實例200中,給定層的節點完全互連到其相鄰層的節點。換言之,層可以包括具有與層的其他節點共用的輸入的節點及/或將輸出提供到層的其他節點的共用目的地。在其他實例中,層可以包括具有與層的其他節點共用的輸入的子集的節點及/或將輸出提供到層的其他節點的共用目的地的子集。
在前向傳播期間,節點的每一者藉由將權重應用於從前一節點產生的每個輸入並且收集權重以產生輸出值來產生輸出。在一些實例中,每個獨立節點可以具有啟動函數
及/或所應用的偏置(b)。大體上,適當地程式設計的處理器或FPGA可以經配置為實施所描繪神經網路200中的節點。在一些示例神經網路中,隱藏組合節點n的輸出函數
可以產生數學上表達為如下的輸出:
(等式2)
其中w
i係應用(乘以)輸入邊緣x
i的權重,b係節點n的偏置值,
係節點n的啟動函數,並且E係節點n的輸入邊緣的數量。在一些實例中,啟動函數產生在0與1之間的連續值(表示為浮點數)。在一些實例中,啟動函數產生二進制1或0值,取決於總和高於還是低於閾值。
給定的神經網路可以包括數千個獨立節點,並且因此在標準精度浮點中對節點執行所有計算可以在計算上係昂貴的。用於計算上更昂貴的解決方案的實施方式可以包括與用於計算上較不昂貴的解決方案的實施方式相比較大且消耗較多能量的硬體。然而,使用DE-BBFP浮點執行操作可以潛在地降低神經網路的計算複雜性。在一些情況下,僅使用DE-BBFP浮點的單個實施方式可顯著地降低計算複雜性,但由於DE-BBFP引入的誤差,實施方式在訓練期間可能難以收斂及/或正確地分類輸入資料。然而,本文揭示的雙指數浮點實施方式可以潛在地增加一些計算的準確性,同時亦提供與雙指數浮點格式相關聯的降低的複雜性的益處。
其中w
i係應用(乘以)輸入邊緣x
i的權重,
係權重的DE-BBFP格式值,
係源自輸入邊緣x
i的輸入的DE-BBFP格式值,b係節點n的偏置值,
係節點n的啟動函數,並且E係節點n的輸入邊緣的數量。計算複雜性可以藉由使用浮點值執行點積來潛在地降低(與僅使用標準精度浮點值相比),並且輸出函數的準確性可以潛在地藉由使用標準精度浮點值的輸出函數的其他操作來增加。
神經網路可以藉由調節輸出函數
的構成值來訓練及重新訓練。例如,藉由調節節點的權重w
i或偏置值b,藉由網路輸出張量值的對應改變來調節神經網路的行為。例如,成本函數
可以在反向傳播期間用以為網路找到適宜權重及偏置,其中成本函數可以在數學上描述如下:
(等式4)
其中w及b表示所有權重及偏置,n係訓練輸入的數量,a係來自網路的用於訓練輸入x的輸入向量的輸出值的向量。藉由調節網路權重及偏置,成本函數C可以使用各種搜尋技術(例如,隨機梯度下降)驅動到目標值(例如,驅動到零(0))。當成本函數C驅動到目標值時,認為神經網路收斂。類似於輸出函數
,成本函數可以使用雙指數電腦算術來實施。例如,可以使用DE-BBFP值及運算來執行向量運算,並且可以使用標準精度浮點值來執行非向量運算。
此種神經網路DE-BBFP實施方式的適宜應用的實例包括但不限於:執行影像識別、執行語音識別、分類影像、將語音翻譯為文本及/或其他語言、面部或其他生物識別、自然語言處理、自動語言翻譯、搜尋引擎中的查詢處理、自動內容選擇、分析電子郵件及其他電子文檔、關係管理、生物醫學資訊、識別候選生物分子、提供推薦、或其他分類及人工智慧任務。
網路加速器(諸如第1圖中的網路加速器180)可以用於加速DNN 200的計算。作為一個實例,DNN 200可以劃分為可以獨立地加速的不同子圖或網路層。作為具體實例,層210、220、230、及240的每一者可以係利用相同或不同加速器加速的子圖或層。層的計算上昂貴的計算可以使用DE-BBFP格式執行,並且層的較不昂貴計算可以使用標準精度浮點執行。值可以使用標準精度浮點從一層傳遞到另一層。藉由對層內的所有節點加速一組計算,一些計算可以重新使用並且藉由層執行的計算可以與加速獨立節點相比減少。
在一些實例中,在每個卷積層中的並行乘法-累加(multiply-accumulate; MAC)單元的集合可以用於加速計算。此外,並行乘法器單元可以在全連接及密集矩陣乘法階段中使用。亦可以使用分類器的並行集合。此種並行化方法具有以添加的控制複雜性為代價甚至進一步加速計算的潛力。
如將獲益於本揭示的本領域中的一般技藝人士將容易理解的,神經網路實施方式的應用可以用於使用神經網路的不同態樣,無論單獨地還是彼此組合或子組合地。例如,所揭示實施方式可以用於經由神經網路的梯度下降及/或反向傳播操作來實施神經網路訓練。另外,所揭示實施方式可以用於神經網路的評估。
IV.SE-BBFP及DE-BBFP格式矩陣的示例轉化及使用
第3圖係示出可以在所揭示技術的某些實例中實施的當將標準浮點格式轉化為DE-BBFP格式時決定行指數的實例的圖300。例如,表示為標準浮點數(例如,以32位元或16位元浮點格式)的神經網路的輸入張量可以轉化為示出的邊界框浮點格式。
如圖所示,表示標準浮點格式數310的矩陣,使得每個數字(例如,數字315或數字316)包括符號、指數、及有效位。例如,對於IEEE 754半精度浮點格式,符號使用一個位元表示,指數使用5個位元表示,並且有效位使用10個位元表示。當神經網路模型200中的浮點格式數310轉化為DE-BBFP格式數的集合時,存在藉由所示組的特定行中的所有數字共享的一個指數值。因此,如圖所示,SE-BBFP數320的集合共享每行的單指數值(330、331、334等),而數字集合的每一者包括符號及有效位。然而,由於示出的數字集合在浮點格式中具有不同指數值,每個數字的相應有效位可移位,使得相同或附近數字以SE-BBFP格式表示(例如,移位的有效位345及346)。示出的矩陣具有5行及2列,儘管用於所揭示應用的常見矩陣具有相同數量的行及列(例如,8x8、16x16等)。
矩陣310的第一行的共享行指數330(HEXP1)計算為第一行中的指數值的最大值:HEXPl=MAX(EXP(0,0)...EXP(0,1)。矩陣310的第二行的共享行指數331(HEXP2)計算為第二行中的指數值的最大值:HEXP2=MAX(EXP(1,0)...EXP(1,1)。剩餘的三個行指數以類似方式計算。
在一些實例中,共享的行指數330-334經選擇為神經網路模型200中的原始標準精度數字中的最大指數。在其他實例中,共享的行指數可以不同方式選擇,例如,藉由選擇作為特定行中的標準浮點指數的平均值或中值的指數,或藉由選擇指數以在將有效位數字轉化為SE-BBFP/DE-BBFP數字格式時使儲存在有效位中的值的動態範圍最大化。應當注意,若共享的指數及值的原始浮點指數不相同,則可能損失移位的有效位的一些位元。此係因為有效位移位以對應於新的共享指數而發生。
存在邊界框浮點張量中的值將共享指數的若干可能選擇。最簡單的選擇係用於矩陣或矩陣方塊(例如,16x16方塊)的行或列中的所有值共享指數。然而,在更精細粒度上共享指數可以減少誤差,因為其使用更接近其原始標準浮點格式指數的共享指數來增加DE-BBFP數字的可能性。因此,可以減少歸因於丟棄有效位位元(當移位有效位以對應於共享指數時)而導致的精度損失。
在一些實例中,矩陣-向量乘法的計算成本可以藉由減小有效位寬度而進一步降低。具有共享的共用指數的大範圍值可以僅用有效位的幾個位元來表達,例如,在具有4位元有效位及5位元指數的表示中,值可以在範圍
中、或近似地
表達。相反,4位元定點數可以僅表示在範圍
中或近似地
的值。
第4圖係示出可以在所揭示技術的某些實例中實施的當將標準浮點格式轉化為DE-BBFP格式時決定列指數的實例的圖400。例如,表示為標準浮點數(例如,以32位元或16位元浮點格式)的神經網路的輸入張量可以轉化為示出的邊界框浮點格式。
如圖所示,上文關於第3圖論述的標準浮點格式數310表示為使得每個數字(例如,數字315或數字316)包括符號、指數、及有效位。當神經網路模型200中的浮點格式數字310轉化為DE-BBFP格式數的集合時,存在藉由示出組的特定列中的所有數字共享的一個指數值。因此,如圖所示,SE-BBFP數字320的集合共享每列的單指數值(430及431),而數字集合的每一者包括符號及有效位。然而,由於示出的數字集合具有以浮點格式的不同指數值,每個數字的相應有效位可移位,使得相同或附近數字以DE-BBFP格式表示(例如,移位的有效位445及446)。如下文將進一步詳細論述,當向DE-BBFP轉化完成時,有效位的移位藉由每個元素的行及列指數的最大值來決定。
矩陣310的第一行的共享行指數430(VEXPl)計算為第一行中的指數值的最大值:VEXPl=MAX(EXP(0,0)...EXP(4,0)。矩陣310的第二行的共享行指數331(VEXP2)計算為第二行中的指數值的最大值:VEXP2=MAX(EXP(0,1)...EXP(4,1)。為了便於解釋,在此實例中僅有兩列,但額外列共享指數將以類似方式計算。
在一些實例中,將共享的列指數430及431選擇為神經網路模型200中的原始標準精度數字之中的最大指數。在其他實例中,共享的行指數可以不同方式選擇,例如,藉由選擇作為特定行中的標準浮點指數的平均值或中值的指數,或藉由選擇指數以在將有效位數字轉化為SE-BBFP/DE-BBFP數字格式時使儲存在有效位中的值的動態範圍最大化。應當注意,若共享的指數及值的原始浮點指數不相同,則可能損失移位的有效位的一些位元。此係因為有效位移位以對應於新的共享指數而發生。
邊界框浮點張量中的值將共享指數存在若干可能選擇。最簡單的選擇係用於矩陣或矩陣方塊(例如,16x16方塊)的行或列中的所有值共享指數。然而,在更精細粒度上共享指數可以減少誤差,因為其使用更接近其原始標準浮點格式指數的共享指數來增加DE-BBFP數字的可能性。因此,可以減少歸因於丟棄有效位位元(當移位有效位以對應於共享指數時)而導致的精度損失。
在基於區塊的浮點矩陣乘法應用中,其中矩陣可以用作左運算元或右運算元,使用DE-BBFP表示允許以緊湊方式有效地儲存矩陣資料。在此種情況下,此表示中的每個矩陣元素的有效位計算如下:
應當注意,歸因於隱含的前導「1」值,此處的有效位均係零。
應當注意,所得矩陣的準確性係不同的。其取決於區塊浮點的方向(其係沿著行還是沿著列)及在彼方向上的元素之間的相關性。
具有以16個位元浮點格式bfloat16表達的元素的16x16方塊需要512位元組的儲存器。在一個實例中,單指數(SE-BBFP)方塊將16位元組用於其共享指數、256位元組用於有效位、及32位元組(256位元)用於符號,總計304個位元組。在一個實例中,雙指數(DE-BBFP)方塊將32位元組用於共享指數(向量HEXP及VEXP)、256位元組用於有效位、及32位元組(256個位元)用於符號值。因此,在此實例中對DE-BBFP格式的總儲存需求係320個位元組,其係藉由bfloat16格式的方塊佔據的儲存器的約62.5%。
第5圖係描繪可以在所揭示技術的某些實例中實施的用於儲存及使用DE-BBFP矩陣的高階硬體架構的方塊圖500。例如,上文論述的DE-BBFP賦能系統110可以用於加速機器學習應用的矩陣運算。
如圖所示,記憶體包括16x16元素陣列、或方塊。在此實例中,存在多個列,例如,第一列511及第二列512。決定每個相應列511、512中的16個元素的指數的最大值,並且最大指數儲存在指數暫存器520的共用列中。第一共用指數521對應於元素的列511,並且第二共用指數522對應於元素的第二列。
相同記憶體於530描繪,此次顯示相同記憶體510的按行分組。如圖所示,評估16個值的第一行531以找到最大值,並且最大指數541儲存在共用行指數暫存器540中。類似地,評估16個值的第二列532以找到其最大值,並且於542儲存在共用行指數暫存器540中。
當使用DE-BBFP矩陣執行主要運算時,每個元素的最大或最小共用指數CEXP可以使用比較器標準550找到。比較器550的輸出可以用於移位儲存在記憶體510中的每個元素的有效位。
第6圖係描繪可以在所揭示技術的某些實例中實施的用於儲存及使用DE-BBFP矩陣的高階硬體架構的替代實例的方塊圖500。例如,上文論述的DE-BBFP賦能系統110可以用於加速機器學習應用的矩陣運算。
類似於第6圖的實例,硬體包括儲存16x16元素陣列、或方塊的記憶體。然而,在此實例中,每個邊界框包括兩列。例如,前兩列611係第一邊界框,並且將第二對列612指派為第二邊界框。決定相應列611、612的每一對中的32個元素的指數的最大值,並且最大指數在指數暫存器620中儲存。第一共用指數621對應於元素的前兩列611,並且第二共用指數622對應於元素612的第二列。
相同記憶體於630描繪,此次顯示相同記憶體610的按行分組。如圖所示,評估32個值的行631的第一對以找到最大值,並且最大指數641儲存在共用行指數暫存器640中。類似地,評估32個值的行632的第二對以找到其最大值,並且於642儲存在共用行指數暫存器640中。
當使用DE-BBFP矩陣執行主要操作時,每個元素的最大或最小共用指數CEXP可以使用比較器標準650找到。比較器650的輸出可以用於移位儲存在記憶體610中的元素的每一者的有效位。
VI.使用SE-BBFP及DE-BBFP矩陣的矩陣運算的示例方法
第7圖係概述可以在所揭示技術的某些實例中實施的使用SE-BBFP及DE-BBFP矩陣執行矩陣運算的實例的方塊圖700。例如,上文論述的DE-BBFP賦能系統110可以用於實施所描述操作。
如圖所示,在710、720、及730處的記憶體中儲存有16x16標準浮點值的3個方塊A、B、及C。待執行的第一矩陣運算係AxB的矩陣乘法。將每個浮點矩陣轉化為DE-BBFP格式。A矩陣若轉化為DE-BBFP格式矩陣740並且儲存在記憶體中或串流;類似地,將B矩陣轉化為DE-BBFP格式矩陣750。
一或多個張量運算使用BBFP處理單元760執行。因為A矩陣將係左運算元,其從DE-BBFP轉化,使得其具有以DE-BBFP格式儲存在記憶體740中的共用行指數,如圖所示。B矩陣將係右運算元,因此其從DE-BBFP轉化,使得其具有以SE-BBFP格式儲存在記憶體750中的共用列指數。2個矩陣A及B相乘,並且結果以標準浮點格式儲存在記憶體765中。在記憶體765中儲存的浮點矩陣可以隨後轉化為DE-BBFP格式,用於儲存或後續張量運算。
在其他實例中,因為已知AxB結果將係另一矩陣乘法的左運算元,將結果轉化為具有共用行指數的SE-BBFP格式。若結果的使用係未知的,則結果將轉化為DE-BBFP格式,適當的行或列指數可以在稍後時間使用。記憶體730中的輸入C矩陣轉化為具有共用列指數的DE-BBFP格式780。一或多個張量運算使用BBFP處理單元760執行。此處,將第2矩陣乘法(AxB)xC的結果用作標準浮點格式並且儲存在記憶體795中。在一些實例中,因為C矩陣係矩陣乘法的右運算元,其將直接轉化為SE-BBFP而非DE-BBFP。在一些實例中,在用於矩陣運算之前,方塊A、B、或C的一或多個可直接轉化為SE-BBFP。在一些實例中,BBFP處理單元790與BBFP處理單元760的單元相同;而在其他實例中,採用不同的處理單元。
獲益於本揭示的一般技藝人士將容易理解,額外操作可以利用以SE-BBFP及DE-BBFP格式儲存的矩陣執行,結果在稍後時間轉化為標準浮點格式。另外,SE-BBFP矩陣的任一者亦可以儲存為DE-BBFP格式矩陣。
VII.示例雙指數矩陣處理架構
第8圖係概述可以在所揭示技術的某些實例中實施的雙指數矩陣處理架構的方塊圖。例如,DE-BBFP賦能系統110可以使用第8圖所示的架構實施DE-BBFP處理單元154。用於實施DE-BBFP處理單元154的適宜硬體包括通用處理器、神經網路加速器、或重新配置兩種邏輯裝置,諸如現場可程式設計閘陣列(FPGA)。在一些實例中,DE-BBFP處理單元154包括用於執行所揭示DE-BBFP運算的專用電路系統,包括指數暫存器、記憶體、移位器、算術單元、邏輯單元等。
如第8圖所示,第一記憶體AMEM 810儲存已從另一格式接收或轉化(例如,從標準浮點轉化)的DE-BBFP矩陣的資料。在用於矩陣/張量運算之前,轉化器815將DE-BBFP資料轉化為與待執行的運算相容的SE-BBFP格式。若AMEM矩陣將用作左矩陣運算元,則矩陣轉化為具有共用行指數的SE-BBFP;相反,若用作右矩陣運算元,則矩陣轉化為具有共用列運算元的SE-BBFP。取決於給定行還是列指數較大,移位或維持運算元。例如,若正使用行指數並且行指數大於或等於列指數,則相關聯的有效位未移位。另一方面,若行指數小於列指數,則有效位由此移位。藉由轉化器815產生的SE-BBFP矩陣可儲存在暫時記憶體或緩衝器中,或直接串流以在使用BBFP處理單元830執行的張量運算中使用。
第二記憶體BMEM 820以與AMEM矩陣810類似的方式儲存DE-BBFP矩陣的資料。取決於BMEM值用作左還是右運算元,在用於張量運算830的消耗之前,值以與轉化器815類似的方式轉化為SE-BBFP值。
BBFP處理單元830使用藉由轉化器815、825產生的SE-BBFP矩陣執行一或多個矩陣運算。任何適宜的矩陣運算可以使用DE-BBFP矩陣執行(轉化為SE-BBFP)。例如,可以執行矩陣乘法,以及加法、減法、計算逆矩陣、或行列式。用於實施BBFP處理單元830的適宜硬體包括通用處理器、神經網路加速器、或重新配置兩種邏輯裝置,諸如現場可程式設計閘陣列(FPGA)。在一些實例中,DE-BBFP處理單元154包括用於執行所揭示的DE-BBFP運算的專用電路系統,包括指數暫存器、記憶體、移位器、算術單元、邏輯單元等。
DE-BBFP運算的輸出將係標準浮點格式,由於每一個輸出元素將具有藉由BBFP處理單元產生的新有效位及指數。浮點輸出可以使用例如與上文關於第10圖描述的處理方塊1010、1020、及1030類似的技術轉化為DE-BBFP。所轉化的DE-BBFP結果(CMEM)儲存在記憶體850中。隨後,CMEM可以藉由轉化為SE-BBFP並且用作張量運算的左或右運算元來用於額外矩陣運算。
在某點處,結果資料可以轉化為標準浮點格式以與經配置為在標準浮點域中操作的硬體一起使用。例如,浮點輸出可以標準浮點格式儲存在記憶體860中。在一些實例中,將輸出轉化為定點或整數格式。浮點輸出可以藉由DE-BBFP到FP轉化器865產生。例如,下文關於第12圖描述的操作可以用於執行向標準浮點格式的轉化。用於實施DE-BBFP到FP轉化器865的適宜硬體包括通用處理器、神經網路加速器、或重新配置兩種邏輯裝置,諸如現場可程式設計閘陣列(FPGA)。
在其他實例中,標準浮點輸出未利用轉化器865產生,而是使用藉由BBFP處理單元830產生的張量運算的輸出。在一些實例中,執行進一步轉化。例如,在一些情況下,張量運算輸出可具有8位元有效位及5位元指數,並且添加或移位來以期望的浮點輸出格式適當地格式化。例如,bfloat16具有8位元精度有效位及指數,而浮點32格式具有24位元精度有效位及8位元指數。此外,特殊情況(例如,NaN、下溢/上溢、次標準或其他特殊情況)可具有以目標浮點輸出格式的不同表示。
VIII.神經網路訓練的示例方法
第9圖係描繪可以在所揭示技術的某些實例中實施的使用具有DE-BBFP格式的模型訓練神經網路的方法900的流程圖。例如,訓練神經網路可以包括迭代訓練資料集,其中方法900用於在訓練資料的給定迭代期間更新神經網路的參數。作為一個實例,方法900可以藉由DE-BBFP賦能系統(諸如第1圖的DE-BBFP賦能系統110)執行。
於處理方塊910,可以初始化神經網路的參數,諸如權重及偏置。作為一個實例,權重及偏置可以初始化為隨機標準精度浮點值。作為另一實例,權重及偏置可以初始化為由較早訓練集計算的標準精度浮點值。初始參數可以儲存在DE-BBFP賦能系統的記憶體或儲存器中。在一個實例中,參數可以儲存為DE-BBFP值,該等值可以減少用於儲存初始參數的儲存量。
於處理方塊920,神經網路的輸入值可以經由神經網路前向傳播。神經網路的給定層的輸入值可以係神經網路的另一層的輸出。值可以使用標準精度浮點在層之間從一層的輸出傳遞到下一層的輸入。層i的輸出函數可以包括在數學上描述為如下的項:
(等式5)
其中
係向層i提供輸入的層的輸出,W
i係層i的權重張量,
係層的前向函數,並且
係向DE-BBFP函數的轉化。層的輸出函數可以係藉由表示為
的DE-BBFP運算產生的浮點值,或替代地,輸出函數可以包括使用標準精度浮點(在向DE-BBFP轉化之前)或使用DE-BBFP浮點(在向DE-BBFP轉化之後)執行的附加項,諸如啟動函數或添加偏置。一般而言,層的輸入、輸出、及參數係張量。通常,層的輸入、輸出、及參數將係向量或矩陣。DE-BBFP轉化函數將標準精度浮點值轉化為DE-BBFP值。具體DE-BBFP格式可以經選擇為考慮到輸入資料的類型及藉由層i執行的運算的類型。例如,當y
i及W
i係二維矩陣並且輸出函數包括取
及W
i的叉積的項時,用於
的函數可以使用包括
的行或行的一部分的邊界框,並且用於W
i的函數可以使用包括W
i的列或列的一部分的邊界框。當選擇邊界框以遵循運算符流時,計算可以更有效,因此使硬體實施方式更小、更快、並且更能量有效。
於處理方塊930,神經網路的一部分(諸如正被前向傳播到神經網路的下一層的層)可以壓縮並且儲存在記憶體中。例如,如上文處理方塊920論述,作為前向傳播的部分計算的啟動值可以壓縮並且儲存在記憶體中。此壓縮可以在數學上表達為:
(等式6)
其中y
i係於處理方塊920由層的前向傳播產生的值,
係可選的額外壓縮函數(其可包括多個壓縮操作)並且
係將儲存在記憶體中的壓縮值。在其他實例中,不執行壓縮操作,並且因此不執行於處理方塊930描述的操作。在此種情況下,接下來,如下文關於處理方塊950描述的解壓縮操作係不必要的,並且將不執行。
在一些實例中,額外量化函數可以進一步將DE-BBFP值壓縮為與DE-BBFP層中使用者相比較小的量化格式。在此種情況下,壓縮的啟動值以可以與用於執行前向傳播計算的第一DE-BBFP不同的第二DE-BBFP格式表達,並且以下方式中的至少一者表達:具有不同有效位格式或具有不同指數格式。例如,若前向傳播使用以9位元格式表達的啟動有效位值執行,則此等值可以藉由截斷或拾入有效位來轉換為4位元格式。作為另一實例,包括以DE-BBFP格式的共享指數的啟動值指數可以從7位元格式轉換為5位元格式。值可以在藉由任何適宜技術使用的格式之間轉換。例如,可以執行指數的截斷或拾入,連同執行以補償調節的指數的任何有效位移位。在一些實例中,表查找或其他技術可以用於執行轉換。
在一些實例中,額外壓縮可以在記憶體中儲存之前應用於壓縮的邊界框浮點格式。用於進一步壓縮呈壓縮格式的啟動值的適宜技術的實例包括熵壓縮(例如,霍夫曼(Huffman)編碼)、零壓縮、運行長度壓縮、壓縮的稀疏行壓縮、或壓縮的稀疏列壓縮。
於處理方塊950,儲存在記憶體中的啟動值經解壓縮用於反向傳播,並且特定而言,用於計算在特定層的反向傳播中使用的輸出誤差項。方法可以在每一層上迭代並且解壓縮每一層的啟動值,執行層的反向傳播,並且隨後解壓縮前一層的啟動值。此解壓縮可以在數學上表達為:
(等式7)
其中
係從記憶體擷取的壓縮值,並且
係可選解壓縮函數(其可包括多個壓縮操作),該解壓縮函數係可選的壓縮函數
的逆,並且y
i係於處理方塊920藉由層的前向傳播產生的值。例如,在如上文關於處理方塊920及930論述完成每一層及神經網路的前向傳播並且如上文於處理方塊940論述計算的損失之後,通常從神經網路的輸出層開始,值經由神經網路反向傳播。另外,若在記憶體中儲存之前應用額外壓縮,諸如熵壓縮、零壓縮、運行長度編碼、壓縮的稀疏行壓縮、或壓縮的稀疏列壓縮,此等操作可以在於處理方塊960執行層的反向傳播之前反向。
其中
係層i的權重誤差項,
係層i的輸出誤差項,
係層i的輸出,
係層的反向函數,並且
係雙指數格式函數。對於關於
的梯度或權重誤差等式9的一部分,反向函數
可以係
的反向函數。權重誤差項可以包括使用標準精度浮點執行的附加項。
第10圖係概述將標準浮點矩陣轉化為DE-BBFP矩陣並且在矩陣運算中使用矩陣的示例方法的的流程圖1000。上文關於第1圖論述的DE-BBFP賦能系統110係可以用於執行所示出方法的系統的實例。例如,如上文於第2圖及第8圖論述的神經網路操作(包括使用上文關於第3圖描述的數字格式)可以用於實施所示出方法。如獲益於本揭示的一般技藝人士容易理解,DE-BBFP系統及雙指數格式的不同變化可以適於執行所示出方法。
於處理方塊1010,決定在標準浮點格式輸入矩陣中的每一行及列的最大行指數(HEXP)及列指數(VEXP)。因此,對於具有有效位
、指數
及符號位元
的NxM輸入矩陣,HEXP將係長度N的向量,並且VEXP將係長度M的向量。
於處理方塊1020,決定DE-BBFP矩陣元素的有效位。對於每個元素,選擇共用指數,該共用指數係相應元素的行及列指數的最小值。標準浮點有效位藉由共用指數與標準浮點指數之間的差來縮放。
於處理方塊1030,於處理方塊1010及1010決定的共用指數及有效位儲存在記憶體或電腦可讀取儲存媒體中。如上文論述,DE-BBFP格式可以提供超過標準精度浮點值的實質記憶體減少。在一些實例中,DE-BBFP矩陣值可以藉由量化指數及/或有效位或無損壓縮技術來進一步減小。
於處理方塊1040,矩陣運算使用DE-BBFP矩陣執行。在執行矩陣運算之前,將DE-BBFP矩陣轉化為SE-BBFP。例如,若DE-BBFP將用作左矩陣,則使用行指數;相反,若DE-BBFP將在運算中用作右矩陣,則使用列指數。當用作左矩陣時,SE-BBFP指數計算為零及行指數減去列指數中的最大值。當用作右矩陣時,SE-BBFP指數計算為零及列指數減去行指數中的最大值。SE-BBFP有效位計算為雙指數有效位右移行/列指數之間的差。關於將DE-BBFP資料轉化為SE-BBFP資料及執行操作的進一步細節在上文關於第8圖描述。
任何適宜矩陣運算可以使用DE-BBFP矩陣(轉化為SE-BBFP)執行。例如,可以執行矩陣乘法,以及加法、減法、計算逆矩陣、或行列式。在轉化為標準浮點值之前,多個運算可以利用儲存為DE-BBFP/SE-BBFP格式的矩陣資料執行。例如,對於機器學習/深度學習應用,在將值轉化為標準浮點值之前,一系列訓練或推斷動作可在DE-BBFP域中執行。
於處理方塊1050,將來自於處理方塊1040執行一或多個矩陣運算的DE-BBFP結果轉化為標準浮點值,例如,以浮點32或bfloat16格式。在其他實例中,藉由執行DE-BBFP運算產生的浮點結果可以直接輸出為浮點格式。在一些實例中,取決於所選的特定輸出格式,執行標準浮點值的額外轉化。
X.將標準浮點矩陣轉化為DE-BBFP
第11圖係概述將標準浮點矩陣轉化為DE-BBFP矩陣的示例方法的流程圖1100。上文關於第1圖論述的DE-BBFP賦能系統110係可以用於執行所示出方法的系統的實例。例如,如上文於第2圖及第9圖論述的神經網路操作(包括使用上文關於第3圖描述的數字格式)可以用於實施所示出方法。如獲益於本揭示的一般技藝人士將容易理解,DE-BBFP系統及雙指數格式的不同變化可以適於執行所示出方法。
於處理方塊1110,決定標準浮點格式輸入矩陣中的每一行及列的最大行指數(HEXP)及列指數(VEXP)。因此,對於具有有效位
、指數
、及符號位元
的NxM輸入矩陣,HEXP將係長度N的向量,並且VEXP將係長度M的向量。向量可以更規範地表達為:
針對i=0…N,
並且
針對i=0…M,
於處理方塊1120,恢復浮點有效位的隱式前導位元;顯示地表示前導位元。若浮點有效位係標準浮點值,則1(一)位元將係雙指數有效位中的第一位元。若浮點有效位係次標準值,則0(零)位元將係雙指數有效位中的第一位元。在一些實例中,當數字的對應指數具有以彼格式的最小可表示值時,指示次標準有效位。在一些實例中,當數字的所有指數位元係零時,可以指示此次標準條件。
於處理方塊1150,將有效位投射到DE-BBFP表示中的期望寬度。在一些實例中,有效位向上或向下捨入。在一些實例中,有效位藉由在零技術的中途捨入來捨入。在一些實例中,截斷有效位。
在將標準浮點轉化為DE-BBFP時,可以處理許多特殊情況。在一些實例中,當輸入浮點數係NaN(非數字)時,則輸出DE-BBFP數亦為NaN。在一些實例中,DE-BBFP中的NaN可以用其共享指數位元1的全部來表示,在此情況下,有效位位元係無關緊要的,由於數字係NaN。
作為另一特殊情況,當輸入浮點數係無限時,則DE-BBFP中的輸出值表示為NaN,其所有共享指數位元設置為1,並且有效位位元係無關緊要的。
作為另一特殊情況,當元素的行指數係255並且其列指數係256時,則DE-BBFP元素被認為係NaN。
對於次標準值,當元素的共用指數均係零時,有效位的隱含前導位元係零,或以其他方式為一。
第12圖係概述將DE-BBFP矩陣轉化為標準浮點矩陣的示例方法的流程圖1200。上文關於第1圖論述的DE-BBFP賦能系統110係可以用於執行所示出方法的系統的實例。例如,如上文於第2圖及第8圖論述的神經網路操作(包括使用上文關於第3圖描述的數字格式)可以用於實施所示出方法。如獲益於本揭示的一般技藝人士將容易理解,DE-BBFP系統及雙指數格式的不同變化可以適於執行所示出方法。為了便於解釋,轉化為bfloat16浮點數字在此實例中論述,儘管任何適宜的標準浮點格式可以係所示出方法的目標。
於處理方塊1210,每個元素的共用指數CEXP經選擇為彼元素的行指數HEXP及列指數VEXP中的最小值。若元素的HEXP及VEXP指數皆處於最大值,則將CEXP設置為彼值。例如,對於在bflot16中使用的8位元指數,若HEXP及VEXP均係255,則CEXP係255。
於處理方塊1220,標準化有效位(NSIG)藉由左移DE-BBFP有效位直到其最大有效位元為1來決定。保留所使用的左移的數量LS用於後續操作。
於處理方塊1230,決定元素是否係次標準。若值CESP-LS大於零,則決定元素為標準浮點值,並且方法進行到處理方塊1240。若值CEXP-LS大於或等於零,則元素係次標準並且方法進行到處理方塊1260。
於處理方塊1240,決定標準浮點有效位。標準浮點有效位丟棄其前導位元,並且隨後結果左移一個位元。例如,為了將DE-BBFP有效位轉化為bfloat16,丟棄標準化有效位NSIG的最高有效位位元,並且彼結果左移1個位元。bfloat16有效位可以藉由
計算。標準浮點符號係與DE-BBFP元素符號相同的值。
若於處理方塊1230決定元素為次標準,則方法進行到處理方塊1260。在此情況下,浮點有效位藉由使於處理方塊1220決定的標準化有效位NSIG右移LS-CEXP來決定。例如,次標準bfloat16格式有效位可以計算為NSIG
。
於處理方塊1270,將標準浮點指數設置為零,指示標準浮點元素係次標準的。
當將DE-BBFP轉化為標準浮點時,可以處理許多特殊情況。例如,若CEXP係255(當轉化為bfloat16時),則標準元素係NaN(符號=0,指示=255,有效位=0x40)。若DE-BBFP有效位係零,則bfloat16輸出係零。
第13圖示出了適宜計算環境1300的一般化實例,其中可以實施所描述的實施例、技術、及技藝,包括使用雙指數矩陣格式(諸如上文描述的彼等)執行機器學習及深度學習。
計算環境1300不意欲對技術的使用範疇或功能提出任何限制,由於該技術可在各種通用或專用計算環境中實施。此外,所揭示的技術可利用其他電腦系統配置實施,包括手持裝置、多處理器系統、可程式設計消費電子裝置、網路PC、迷你電腦、主機電腦、及類似者。所揭示技術亦可在分散式計算環境中實踐,其中任務藉由經由通訊網路鏈接的遠端處理裝置執行。在分散式計算環境中,程式模組可位於近端及遠端記憶體儲存裝置兩者中。
參考第13圖,計算環境1300包括至少一個處理單元1310及記憶體1320。在第13圖中,此最基本配置1330包括在虛線內。處理單元1310執行電腦可執行指令,並且可係真實或虛擬處理器。在多處理系統中,多個處理單元執行電腦可執行指令以增加處理能力,並且因此,多個處理器可以同時運行。記憶體1320可係揮發性記憶體(例如,暫存器、快取記憶體、RAM)、非揮發性記憶體(例如,ROM、EEPROM、快閃記憶體等)、或兩者的某種組合。記憶體1320儲存可以例如實施本文描述的技術的軟體1380、影像、及視訊。計算環境可具有額外特徵。例如,計算環境1300包括儲存器1340、一或多個輸入裝置1350、一或多個輸出裝置1360、及一或多個通訊連接1370。互連機制(未圖示)(諸如匯流排、控制器、或網路)互連計算環境1300的部件。通常,操作系統軟體(未圖示)為計算環境1300中執行的其他軟體提供操作環境,並且協調計算環境1300的部件的活動。
儲存器1340可係可移動的或不可移動的,並且包括磁碟、磁帶或磁帶盒、CD-ROM、CD-RW、DVD、或可以用於儲存資訊並且可以在計算環境1300內存取的任何其他媒體。儲存器1340儲存用於軟體1380的指令、插件資料、及訊息,其等可以用於實施本文描述的技術。
輸入裝置1350可係向計算環境1300提供輸入的觸控輸入裝置(諸如鍵盤、小鍵盤、滑鼠、觸控螢幕顯示器、筆、或軌跡球)、語音輸入裝置、掃描裝置、或另一裝置。對於音訊,輸入裝置1350可係接受類比或數位形式的音訊輸入的聲卡或類似裝置,或者向計算環境1300提供音訊樣本的CD-ROM讀取器。輸入裝置1360可係顯示器、印表機、揚聲器、CD-寫入器、或提供來自計算環境1300的輸出的另一裝置。
通訊連接1370實現經由通訊媒體(例如,連接網路)到另一計算實體的通訊。通訊媒體在調變資料信號中傳達資訊,諸如電腦可執行指令、壓縮圖形資訊、視訊、或其他資料。通訊連接1370不限於有線連接(例如,兆位元或吉位元乙太網路、Infiniband、電或光線連接上的光纖通道),但亦包括無線技術(例如,經由藍牙、WiFi (IEEE 802.11a/b/n)、WiMax、蜂巢、衛星、雷射、紅外的RF連接)及用於為所揭示的代理、橋、及代理資料消費者提供網路連接的其他適宜通訊連接。在虛擬主機環境中,通訊連接可以係藉由虛擬主機提供的虛擬化網路連接。
所揭示方法的一些實施例可以使用在計算雲端1390中實施所揭示技術的全部或一部分的電腦可執行指令來執行。例如,所揭示方法可以在位於計算環境1330中的處理單元1310上執行,或所揭示方法可以在位於計算雲端1390中的伺服器上執行。
電腦可讀取媒體係可以在計算環境1300內存取的任何可用媒體。舉例而言並且不作限制,利用計算環境1300,電腦可讀取媒體包括記憶體1320及/或儲存器1340。應當容易理解,術語電腦可讀取儲存媒體包括用於資料儲存的媒體,諸如記憶體1320及儲存器1340,而非傳輸媒體,諸如調變資料信號。
XIII.額外實例
額外實例在以下條款中揭示,該等條款可以彼此的組合或子組合來重新排列。
條款1.一種電腦實施方法,包含:利用處理器:選擇將以雙指數格式儲存的輸入矩陣的元素的邊界框的共用指數,共用指數基於元素的邊界框的行或列的較小指數來選擇;決定雙指數格式矩陣的元素的邊界框的有效位,所決定有效位的每一者藉由將相應元素的指數與共用指數進行比較來選擇;以及將所決定有效位及共用指數作為雙指數格式矩陣儲存在電腦可讀取儲存媒體中。
條款2.如條款1所述的方法,其中選擇共用指數包含計算元素的邊界框的行或列的較小指數減去左移數以計算元素的邊界框的相應行或列的標準化有效位。
條款3.如條款1或條款2所述的方法,其中決定有效位包含:使輸入矩陣中的有效位左移達共用指數與有效位的輸入矩陣指數之間的差。
條款4.如條款1至3中任一項所述的方法,其中在輸入矩陣中的元素的邊界框包含規則浮點元素,並且其中決定有效位包含:從規則浮點有效位恢復隱式前導位元;以及使規則浮點有效位縮放達所選共用指數與規則浮點指數之間的差。
條款5.如條款1至4中任一項所述的方法,進一步包含:決定指示最高有效「1」位元從最高有效位元位置移位的數量的有效位的左移值;並且當左移值大於共用指數時,則藉由使有效位右移達左移值與共用指數之間的差來決定標準有效位。
條款6.如條款1至5中任一項所述的方法,進一步包含:決定雙指數格式矩陣將在矩陣運算中用作左側矩陣還是右側矩陣;以及基於決定,當雙指數格式矩陣將用作左側矩陣時藉由基於元素的邊界框的行的最大指數選擇共用指數,或當雙指數格式矩陣將用作右側矩陣時基於元素的邊界框的列的最大指數選擇共用指數,將雙指數格式矩陣轉化為單指數格式矩陣。
條款7.如條款1至6中任一項所述的方法,其中共用指數係基於元素的邊界框的行的最大指數選擇的共用行指數,方法進一步包含:選擇將以雙指數格式儲存的輸入矩陣的元素的邊界框的共用列指數,共用指數基於元素的邊界框的列的最大指數來選擇;以及將共用列指數儲存在電腦可讀取儲存媒體中;其中所決定有效位的每一者藉由將相應元素的指數與共用行指數或共用列指數中的較大者進行比較來選擇。
條款8.如條款1至7中任一項所述的方法,進一步包含:利用雙指數格式矩陣執行矩陣運算以產生以雙指數格式的結果矩陣。
條款9.如條款8所述的方法,進一步包含:將以雙指數格式的結果矩陣轉化為以規則浮點格式的結果矩陣並且將以規則浮點格式的結果矩陣儲存在電腦可讀取儲存媒體中。
條款10.如條款1至9中任一項所述的方法,進一步包含:量化所決定有效位、共用指數、或所決定有效位及共用指數。
條款11.如條款1至10中任一項所述的方法,其中:元素的邊界框係16x16元素邊界框;並且輸入矩陣包含複數個16x16元素邊界框,複數個16x16元素邊界框的每一者包含相應共用指數。
條款12.一種訓練神經網路的方法,包含:利用包含所決定有效位及藉由條款1的方法產生的共用指數的雙指數格式矩陣對神經網路的至少一層執行訓練操作;以及將下列的至少一者儲存在電腦可讀取儲存媒體中:藉由執行訓練操作產生的節點權重、邊緣權重、偏置值、或啟動函數。
條款13.一種儲存電腦可讀取指令的電腦可讀取媒體,當藉由電腦執行時,導致電腦執行條款1至12中任一項的方法。
條款14.一種設備包含:記憶體;共用指數暫存器;以及處理器,用於:選擇在記憶體中儲存的輸入矩陣的元素的邊界框的共用指數,共用指數基於元素的邊界框的行或列的最大指數來選擇;決定雙指數格式矩陣的元素的邊界框的有效位,所決定有效位的每一者藉由將相應元素的指數與共用指數進行比較來選擇;以及將共用指數儲存在共用指數暫存器中。
條款15.如條款15所述的設備,進一步包含:由部件形成的神經網路加速器,部件包含記憶體、共用指數暫存器、及處理器;並且其中設備經配置為藉由使用雙指數格式矩陣執行至少一個訓練、推斷、或分類操作來評估神經網路模型。
條款16.如條款14或15所述的設備,進一步包含:浮點到基於雙指數邊界框的浮點(DE-BBFP)轉化器,用於接收神經網路模型的規則浮點值並且產生雙指數格式矩陣;以及DE-BBFP到浮點轉化器,用於從藉由利用產生的雙指數格式矩陣執行至少一個矩陣運算產生的結果雙指數格式矩陣產生規則浮點值。
條款17.如條款14至16中任一項所述的設備,經配置為執行條款1至12的方法的至少一者。
條款18.一種電腦可讀取儲存媒體,儲存:藉由使用雙指數格式矩陣執行矩陣運算產生的結果矩陣。
條款19.如條款18所述的電腦可讀取儲存媒體,其中結果矩陣係包含結果矩陣中的元素的邊界框的每一行或列的共用指數的雙指數格式矩陣,結果矩陣藉由利用雙指數格式矩陣及另一雙格式矩陣執行矩陣運算產生。
條款20.如條款18或19所述的電腦可讀取儲存媒體,其中結果矩陣係藉由將矩陣運算的結果從雙指數格式矩陣轉化產生的規則浮點數的陣列。
條款21.如條款18至20中任一項所述的電腦可讀取儲存媒體,其中在雙指數格式矩陣的邊界框中的每個元素具有有效位、行共用指數、及列格式指數,行共用指數藉由邊界框的行中的元素的每一者共享,列共用指數藉由邊界框的列中的元素的每一者共享,並且其中結果矩陣藉由以下操作產生:對於雙指數格式矩陣的邊界框中的每個元素:選擇元素的相應行共用指數及列共用指數的最小指數;藉由使元素的有效位左移一移位數直到其最高有效位元為1來計算標準化有效位;藉由從最小指數減去移位數來計算標準化指數;以及將結果矩陣中的標準化有效位及標準化指數儲存在電腦可讀取儲存媒體中。
條款22.如條款21所述的電腦可讀取儲存媒體,其中計算標準化有效位進一步包含丟棄最高有效位元及基於雙指數格式有效位中的位元數量及規則浮點有效位中的位元的數量左移有效位。
條款23.一種電腦可讀取儲存媒體,儲存:藉由如請求項1至12的方法的至少一者使用雙指數格式矩陣執行矩陣運算產生的結果矩陣。
鑒於可應用所揭示標的的原理的許多可能實施例,應當認識到,所示出實施例僅係較佳實例並且不應當被視為將申請專利範圍的範疇限制為彼等較佳實例。相反,要求保護的標的的範疇由以下申請專利範圍定義。由此,要求保護落入此等申請專利範圍的範疇內的所有發明。
100:邊界框圖
110:雙指數賦能系統
120:通用處理器
122:圖形處理單元
125:記憶體
126:本端記憶體
127:大容量記憶體
129:儲存器
130:神經網路模組
131:模型化框架
132:編譯器
133:運行時間環境
150:標準精度值
152:標準精度浮點到DE-BBFP轉化器
154:雙指數浮點運算
156:DE-BBFP到標準浮點轉化器
158:標準精度運算
180:神經網路加速器
182:張量處理單元(TPU)
184:可重新配置邏輯裝置
186:DE-BBFP加速器
200:神經網路模型
210:第一集合
215:節點
216:節點
220:第二集合
230:第三集合
235:節點
240:第四集合
245:節點
300:圖
310:標準浮點格式數
315:數字
316:數字
320:SE-BBFP數
330:單指數值
331:單指數值
334:單指數值
345:有效位
346:有效位
400:圖
430:單指數值
431:單指數值
445:有效位
446:有效位
500:方塊圖
510:記憶體
511:第一列
512:第二列
520:指數暫存器
521:第一共用指數
522:第二共用指數
531:第一行
532:第二列
540:共用行指數暫存器
541:最大指數
550:比較器
610:記憶體
611:列
612:列
620:指數暫存器
621:第一共用指數
622:第二共用指數
631:行
632:行
640:在共用行指數暫存器
641:最大指數
650:比較器
700:方塊圖
740:DE-BBFP格式矩陣
750:DE-BBFP格式矩陣
760:BBFP處理單元
765:記憶體
780:DE-BBFP格式
790:BBFP處理單元
795:記憶體
810:第一記憶體AMEM
815:轉化器
820:第二記憶體BMEM
825:轉化器
830:BBFP處理單元
850:記憶體
860:記憶體
865:DE-BBFP到FP轉化器
900:方法
910:處理方塊
920:處理方塊
930:處理方塊
940:處理方塊
950:處理方塊
960:處理方塊
970:處理方塊
1000:流程圖
1010:處理方塊
1020:處理方塊
1030:處理方塊
1040:處理方塊
1050:處理方塊
1100:流程圖
1110:處理方塊
1120:處理方塊
1130:處理方塊
1140:處理方塊
1150:處理方塊
1200:流程圖
1210:處理方塊
1220:處理方塊
1230:處理方塊
1240:處理方塊
1250:處理方塊
1260:處理方塊
1270:處理方塊
1300:計算環境
1310:處理單元
1320:記憶體
1330:配置
1340:儲存器
1350:輸入裝置
1360:輸出裝置
1370:通訊連接
1380:軟體
1390:計算雲端
CEXP:最大或最小共用指數
第1圖係可以在所揭示技術的某些實例中實施的用於使用DE-BBFP格式值執行訓練及推斷的雙指數賦能系統的邊界框圖。
第2圖係描繪可以使用本文揭示的某些示例方法及設備模型化的深度神經網路的實例的圖。
第3圖係描繪可以在所揭示技術的某些實例中執行的當將標準浮點格式轉化為DE-BBFP格式時決定行指數的某些態樣的圖。
第4圖係描繪可以在所揭示技術的某些實例中執行的當將標準浮點格式轉化為DE-BBFP格式時決定列指數的某些態樣的圖。
第5圖描繪了可以在所揭示技術的某些實例中使用的用於矩陣元素的邊界框的雙指數及相關聯有效位的實例。
第6圖描繪了可以在所揭示技術的某些實例中使用的用於矩陣元素的邊界框的雙指數及相關聯有效位的實例。
第7圖係可以在所揭示技術的某些實例中實施的使用DE-BBFP格式執行矩陣運算的圖。
第8圖係概述用於使用DE-BBFP格式化資料執行張量及矩陣運算的高階架構的圖。
第9圖係概述可以在所揭示技術的某些實例中實施的使用DE-BBFP矩陣執行神經網路訓練的實例的流程圖。
第10圖係示出可以在所揭示技術的某些實例中實施的使用DE-BBFP格式矩陣執行矩陣運算的實例的流程圖。
第11圖係描繪可以在所揭示技術的某些實例中實施的將標準浮點轉化為DE-BBFP浮點格式的示例方法的流程圖。
第12圖係描繪可以在所揭示技術的某些實例中實施的將DE-BBFP浮點格式矩陣轉化為標準浮點矩陣的示例方法的流程圖。
第13圖係示出用於實施所揭示技術的一些實施例的適宜計算環境的圖。
國內寄存資訊(請依寄存機構、日期、號碼順序註記)
無
國外寄存資訊(請依寄存國家、機構、日期、號碼順序註記)
無
810:第一記憶體AMEM
815:轉化器
820:第二記憶體BMEM
825:轉化器
830:BBFP處理單元
850:記憶體
860:記憶體
865:DE-BBFP到FP轉化器
Claims (20)
- 一種電腦實施方法,包含以下步驟: 利用一處理器: 選擇將以一雙指數格式儲存的一輸入矩陣的元素的一邊界框的一共用指數,該共用指數的選擇基於元素的該邊界框的一行或一列的較小指數; 決定一雙指數格式矩陣的元素的該邊界框的有效位,該等所決定有效位的每一者藉由將一相應元素的指數與該共用指數進行比較來選擇;以及 將該等所決定有效位及該共用指數作為一雙指數格式矩陣儲存在一電腦可讀取儲存媒體中。
- 如請求項1所述的方法,其中該選擇該共用指數之步驟包含以下步驟:計算元素的該邊界框的一行或一列的該較小指數減去左移的數量以計算元素的該邊界框的該相應行或列的該等標準化有效位。
- 如請求項1所述的方法,其中該決定該等有效位之步驟包含以下步驟: 使該輸入矩陣中的一有效位左移達該共用指數與該有效位的輸入矩陣指數之間的該差。
- 如請求項1所述的方法,其中該輸入矩陣中的元素的該邊界框包含規則浮點元素,並且其中該決定該等有效位之步驟包含以下步驟: 從該規則浮點有效位恢復一隱式前導位元;以及 使該規則浮點有效位縮放達該所選共用指數與該規則浮點指數之間的該差。
- 如請求項1所述的方法,進一步包含以下步驟: 決定指示該最高有效「1」位元從該最高有效位元位置移位的該數量的一有效位的一左移值;以及 當該左移值大於該共用指數時,則藉由使該有效位右移達該左移值與該共用指數之間的該差來決定該標準有效位。
- 如請求項1所述的方法,進一步包含以下步驟: 決定該雙指數格式矩陣將在一矩陣運算中用作一左側矩陣還是一右側矩陣;以及 基於該決定,當該雙指數格式矩陣將用作一左側矩陣時藉由基於元素的該邊界框的該行的該最大指數選擇該共用指數,或當該雙指數格式矩陣將用作一右側矩陣時基於元素的該邊界框的該列的該最大指數選擇該共用指數,將該雙指數格式矩陣轉化為一單指數格式矩陣。
- 如請求項1所述的方法,其中該共用指數係基於元素的該邊界框的一行的該最大指數選擇的一共用行指數,該方法進一步包含以下步驟: 選擇將以一雙指數格式儲存的一輸入矩陣的元素的一邊界框的一共用列指數,該共用指數的選擇基於元素的該邊界框的一列的該最大指數;以及 將該共用列指數儲存在該電腦可讀取儲存媒體中; 其中該等所決定有效位的每一者藉由將該相應元素的指數與該共用行指數或該共用列指數的該較大者進行比較來選擇。
- 如請求項1所述的方法,進一步包含以下步驟: 利用該雙指數格式矩陣執行一矩陣運算以產生以雙指數格式的一結果矩陣。
- 如請求項8所述的方法,進一步包含以下步驟: 將以雙指數格式的該結果矩陣轉化為以規則浮點格式的一結果矩陣並且將以規則浮點格式的該結果矩陣儲存在一電腦可讀取儲存媒體中。
- 如請求項1所述的方法,進一步包含以下步驟: 量化該等所決定有效位、該共用指數、或該等所決定有效位及該共用指數。
- 如請求項1所述的方法,其中: 元素的該邊界框係一16x16元素邊界框;以及 該輸入矩陣包含複數個16x16元素邊界框,該複數個16x16元素邊界框的每一者包含一相應共用指數。
- 一種訓練一神經網路的方法,包含以下步驟: 利用包含該等所決定有效位及藉由如請求項1所述的方法產生的該共用指數的該雙指數格式矩陣對該神經網路的至少一層執行訓練操作;以及 將下列的至少一者儲存在一電腦可讀取儲存媒體中:藉由該執行訓練操作產生的節點權重、邊緣權重、偏置值、或啟動函數。
- 一種設備,包含: 一記憶體; 一共用指數暫存器;以及 一處理器,用於: 選擇儲存在該記憶體中的一輸入矩陣的元素的一邊界框的一共用指數,該共用指數的選擇基於元素的該邊界框的一行或一列的該最大指數; 決定一雙指數格式矩陣的元素的該邊界框的有效位,該等所決定有效位的每一者藉由將一相應元素的指數與該共用指數進行比較來選擇;以及 將該共用指數儲存在該共用指數暫存器中。
- 如請求項13所述的設備,進一步包含: 由部件形成的一神經網路加速器,該等部件包含該記憶體、該共用指數暫存器、及該處理器;以及 其中該設備經配置為藉由使用該雙指數格式矩陣執行至少一個訓練、推斷、或分類操作來評估一神經網路模型。
- 如請求項14所述的設備,進一步包含: 一浮點到基於雙指數邊界框的浮點(DE-BBFP)轉化器,用於接收該神經網路模型的規則浮點值並且產生該雙指數格式矩陣;以及 一DE-BBFP到浮點轉化器,用於由藉由利用該產生的雙指數格式矩陣執行至少一個矩陣運算產生的一結果雙指數格式矩陣產生規則浮點值。
- 一種電腦可讀取儲存媒體,儲存: 藉由使用一雙指數格式矩陣執行一矩陣運算產生的一結果矩陣。
- 如請求項16所述的電腦可讀取儲存媒體,其中: 該結果矩陣係包含該結果矩陣中的元素的一邊界框的每行或列的一共用指數的一雙指數格式矩陣,該結果矩陣藉由利用該雙指數格式矩陣及另一雙格式矩陣執行該矩陣運算產生。
- 如請求項16所述的電腦可讀取儲存媒體,其中: 該結果矩陣係藉由將該矩陣運算的一結果從一雙指數格式矩陣轉化產生的規則浮點數的一陣列。
- 如請求項18所述的電腦可讀取儲存媒體,其中該雙指數格式矩陣的一邊界框中的每個元素具有一有效位、一行共用指數、及一列格式指數,該行共用指數藉由該邊界框的一行中的該等元素的每一者共享,該列共用指數藉由該邊界框的一列中的該等元素的每一者共享,並且其中該結果矩陣藉由以下操作產生: 對於該雙指數格式矩陣的該邊界框中的每個元素: 選擇該元素的相應行共用指數及列共用指數的最小指數; 藉由使該元素的有效位左移達一偏移數直到其最高有效位元為1來計算一標準化有效位; 藉由從該最小指數減去偏移的該數量來計算一標準化指數;以及 將該結果矩陣中的該標準化有效位及該標準化指數儲存在該電腦可讀取儲存媒體中。
- 如請求項19所述的電腦可讀取儲存媒體,其中該計算該標準化有效位進一步包含丟棄該最高有效位元並且基於該雙指數格式有效位中的位元的該數量及該規則浮點有效位中的位元的該數量左移該有效位。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/381,124 US20230037227A1 (en) | 2021-07-20 | 2021-07-20 | Dual exponent bounding box floating-point processor |
US17/381,124 | 2021-07-20 |
Publications (1)
Publication Number | Publication Date |
---|---|
TW202312033A true TW202312033A (zh) | 2023-03-16 |
Family
ID=82358473
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW111122197A TW202312033A (zh) | 2021-07-20 | 2022-06-15 | 雙指數邊界框浮點處理器 |
Country Status (7)
Country | Link |
---|---|
US (1) | US20230037227A1 (zh) |
EP (1) | EP4374246A1 (zh) |
JP (1) | JP2024529835A (zh) |
KR (1) | KR20240032039A (zh) |
CN (1) | CN117716334A (zh) |
TW (1) | TW202312033A (zh) |
WO (1) | WO2023003639A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US12045724B2 (en) | 2018-12-31 | 2024-07-23 | Microsoft Technology Licensing, Llc | Neural network activation compression with outlier block floating-point |
US11687336B2 (en) * | 2020-05-08 | 2023-06-27 | Black Sesame Technologies Inc. | Extensible multi-precision data pipeline for computing non-linear and arithmetic functions in artificial neural networks |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10579334B2 (en) * | 2018-05-08 | 2020-03-03 | Microsoft Technology Licensing, Llc | Block floating point computations using shared exponents |
-
2021
- 2021-07-20 US US17/381,124 patent/US20230037227A1/en active Pending
-
2022
- 2022-06-02 WO PCT/US2022/031863 patent/WO2023003639A1/en active Application Filing
- 2022-06-02 JP JP2023579686A patent/JP2024529835A/ja active Pending
- 2022-06-02 CN CN202280049642.3A patent/CN117716334A/zh active Pending
- 2022-06-02 EP EP22736084.9A patent/EP4374246A1/en active Pending
- 2022-06-02 KR KR1020247001804A patent/KR20240032039A/ko unknown
- 2022-06-15 TW TW111122197A patent/TW202312033A/zh unknown
Also Published As
Publication number | Publication date |
---|---|
EP4374246A1 (en) | 2024-05-29 |
JP2024529835A (ja) | 2024-08-14 |
KR20240032039A (ko) | 2024-03-08 |
CN117716334A (zh) | 2024-03-15 |
WO2023003639A1 (en) | 2023-01-26 |
US20230037227A1 (en) | 2023-02-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3906616B1 (en) | Neural network activation compression with outlier block floating-point | |
US20200264876A1 (en) | Adjusting activation compression for neural network training | |
US20230267319A1 (en) | Training neural network accelerators using mixed precision data formats | |
US20200210838A1 (en) | Neural network activation compression with narrow block floating-point | |
US20230196085A1 (en) | Residual quantization for neural networks | |
US12067495B2 (en) | Neural network activation compression with non-uniform mantissas | |
EP3888012A1 (en) | Adjusting precision and topology parameters for neural network training based on a performance metric | |
US11645493B2 (en) | Flow for quantized neural networks | |
US20190340499A1 (en) | Quantization for dnn accelerators | |
TW202312033A (zh) | 雙指數邊界框浮點處理器 |