JP2023000142A - 演算装置 - Google Patents
演算装置 Download PDFInfo
- Publication number
- JP2023000142A JP2023000142A JP2021100783A JP2021100783A JP2023000142A JP 2023000142 A JP2023000142 A JP 2023000142A JP 2021100783 A JP2021100783 A JP 2021100783A JP 2021100783 A JP2021100783 A JP 2021100783A JP 2023000142 A JP2023000142 A JP 2023000142A
- Authority
- JP
- Japan
- Prior art keywords
- bits
- sum
- calculator
- elements
- bit
- Prior art date
- Legal status (The legal status 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 status listed.)
- Pending
Links
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
- 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
- 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/5443—Sum of products
-
- 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/50—Adding; Subtracting
-
- 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/52—Multiplying; Dividing
- G06F7/523—Multiplying only
-
- 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/57—Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computational Mathematics (AREA)
- Computing Systems (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- General Engineering & Computer Science (AREA)
- Nonlinear Science (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Complex Calculations (AREA)
Abstract
【課題】DNNの学習の高速化を図ること。【解決手段】DNN学習装置10が有する演算装置11において、バイアス演算器11aは、浮動小数点演算のダイナミックレンジをシフトさせる共有指数バイアス値を算出し、SIMD演算器11bは、共有指数バイアス値及び第一ビット数の浮動小数点のアクティベーション値から形成される第一データセットと、共有指数バイアス値及び第一ビット数の浮動小数点のウェイトから形成される第二データセットとの多数要素分の積和演算を行うことにより、第一ビット数より多い第二ビット数の積和演算結果を算出し、量子化器11cは、積和演算結果のビット数を第二ビット数から第一ビット数へ量子化することによりアクティベーション値を更新する。【選択図】図6
Description
本開示は、演算装置に関する。
ディープニューラルネットワーク(Deep Neural Network:DNN)は、DNNの大規模化と深層化とによって認識率を向上させてきた。しかし、大規模化と深層化はDNNでの演算量を増大させ、演算量の増大に比例してDNNの学習時間も増大している。
DNNの学習時間を短縮するために、DNNの学習に浮動小数点8ビット(FP8)または浮動小数点16ビット(FP16)の低精度演算(Low Precision Operation:LPO)が用いられることがある。例えば、FP8の演算を用いれば、浮動小数点32ビット(FP32)の演算に比べて、SIMD(Single Instruction Multiple Data)演算の並列度を4倍にできるため、演算時間を4分の1に短縮できる。なお、FP8やFP16のLPOに対し、FP32の演算は、Full Precision Operation(FPO)と呼ばれることがある。また、例えばFP32をFP8に変化させるように、データのビット数を減少させることによりDNNの演算をFPOからLPOに変化させることを量子化(Quantization)と呼ぶことがある。さらに、FPOとLPOとが混合したDNNの演算を混合精度演算(Mixed Precision Operation:MPO)と呼ぶことがある。MPOを用いたDNNの学習(Mixed Precision Training:MPT)では、量子化により認識率が低下するレイヤーについてはFPOが行われるため、LPOが行われるレイヤーとFPOが行われるレイヤーとが混在することになる。
ここで、浮動小数点演算(Floating-point Operation)のダイナミックレンジは0が中心であるのに対し、DNNの値はダイナミックレンジがカバーする範囲から外れているため、DNNの学習に浮動小数点演算を用いるとDNNの認識率が低下する。そこで、DNNの認識率の低下を防止するために、DNNの値の分布における最大値が浮動小数点演算のダイナミックレンジ内に入る範囲で、浮動小数点演算のダイナミックレンジを共有指数バイアス値によってシフトさせる演算(以下では「可変浮動小数点演算(Flexible Floating-point Operation:FFPO)」と呼ぶことがある)を行うことが考えられる。
しかし、MPOを行う際にFFPOを行うことが可能な演算装置は存在しないため、DNNの学習の高速化を図ることが困難であった。
そこで、本開示では、DNNの学習の高速化を図ることができる技術を提案する。
本開示の演算装置は、第一演算器と、第二演算器と、量子化器とを有する。前記第一演算器は、浮動小数点演算のダイナミックレンジをシフトさせる共有指数バイアス値を算出する。前記第二演算器は、共有指数バイアス値及び第一ビット数の浮動小数点のアクティベーション値から形成される第一データセットと、共有指数バイアス値及び前記第一ビット数の浮動小数点のウェイトから形成される第二データセットとの多数要素分の積和演算を行うことにより、前記第一ビット数より多い第二ビット数の積和演算結果を算出する。前記量子化器は、前記積和演算結果のビット数を前記第二ビット数から前記第一ビット数へ量子化することにより前記アクティベーション値を更新する。
本開示によれば、DNNの学習の高速化を図ることができる。
以下、添付図面を参照して本開示の実施形態について説明する。以下では、同一の構成には同一の符号を付し、重複する同一の構成または処理についての説明を省略する。また、以下の実施形態は開示の技術を限定するものではない。
[実施形態1]
<DNN学習装置の構成>
図1は、実施形態1のDNN学習装置の構成例を示すブロック図である。例えば、DNN学習装置10として、各種のコンピュータ等の情報処理装置を採用することができる。
<DNN学習装置の構成>
図1は、実施形態1のDNN学習装置の構成例を示すブロック図である。例えば、DNN学習装置10として、各種のコンピュータ等の情報処理装置を採用することができる。
図1において、DNN学習装置10は、DNNの学習時の演算処理を行う。DNN学習装置10は、演算装置11と、メモリ12とを有する。演算装置11は、バイアス演算器11aと、SIMD演算器11bと、量子化器11cとを有する。
ここで、浮動小数点演算の値valueは式(1)により与えられる。式(1)において、sは1ビット固定のサインビットであり、Nebitは指数部eのビット数であり、Nmbitは仮数部mのビット数である。例えば、FP32では、Nebit=8、Nmbit=23である。
入力データに非正規化データが存在しない場合、式(1)に共有指数バイアス値bを適用したときのFFPOの値valueは式(2),(3)により与えられる。つまり、式(2)は値valueが正規化数である場合の式である。また、共有指数バイアス値bは、量子化の単位で共通の単一値である。
また、共有指数バイアス値bは式(4)によって与えられ、式(1)に示す浮動小数点演算のダイナミックレンジをシフトさせる。式(4)におけるemaxは、式(5)におけるfmaxの指数項であり、式(5)におけるfは、量子化対象の全要素である。
バイアス演算器11aは、式(4),(5)に基づいて、固定小数点8ビット(INT8)の共有指数バイアス値bを算出する。SIMD演算器11bは、式(2),(3)に基づいてSIMD演算を行うことにより、積和演算結果であるFP32のテンソルdstを算出する。量子化器11cは、FP32のテンソルdstをFP8のテンソルに量子化することにより、最終結果のテンソルを算出する。量子化器11cでの量子化は、例えば、テンソルの全要素の指数部と仮数部を計算し、仮数部の計算において確率的丸め処理を行う等の周知の技術を用いて行うことができる。
<SIMD演算器>
図2は、実施形態1のSIMD演算器の構成例を示す図である。図2において、SIMD演算器11bは、DOT4演算器20,30,40,50を有する。DOT4演算器20は、乗算器21,22,23,24と、加算器25,26とを有する。DOT4演算器30は、乗算器31,32,33,34と、加算器35,36とを有する。DOT4演算器40は、乗算器41,42,43,44と、加算器45,46とを有する。DOT4演算器50は、乗算器51,52,53,54と、加算器55,56とを有する。図2には、128ビットの2つのレジスタの各々に、128ビットの入力データsrc1と、128ビットの入力データsrc2の2つのデータが格納されている場合を一例として示す。入力データsrc1は、各々がFP8の16個の要素src1[0]~[15]で形成され、入力データsrc2は、各々がFP8の16個の要素src2[0]~[15]で形成される。
図2は、実施形態1のSIMD演算器の構成例を示す図である。図2において、SIMD演算器11bは、DOT4演算器20,30,40,50を有する。DOT4演算器20は、乗算器21,22,23,24と、加算器25,26とを有する。DOT4演算器30は、乗算器31,32,33,34と、加算器35,36とを有する。DOT4演算器40は、乗算器41,42,43,44と、加算器45,46とを有する。DOT4演算器50は、乗算器51,52,53,54と、加算器55,56とを有する。図2には、128ビットの2つのレジスタの各々に、128ビットの入力データsrc1と、128ビットの入力データsrc2の2つのデータが格納されている場合を一例として示す。入力データsrc1は、各々がFP8の16個の要素src1[0]~[15]で形成され、入力データsrc2は、各々がFP8の16個の要素src2[0]~[15]で形成される。
DOT4演算器20において、乗算器21は要素src1[0]と要素src2[0]とを乗算し、乗算器22は要素src1[1]と要素src2[1]とを乗算し、乗算器23は要素src1[2]と要素src2[2]とを乗算し、乗算器24は要素src1[3]と要素src2[3]とを乗算する。加算器25は、乗算器21での乗算結果と、乗算器22での乗算結果と、乗算器23での乗算結果と、乗算器24での乗算結果とを加算する。加算器26は、加算器25での加算結果と加算器26での前回の加算結果とを加算することにより今回の加算結果を得る。加算器26での今回の加算結果が、DOT4演算器20での要素src1[0]~[3]と要素src2[0]~[3]との積和演算結果であるFP32の演算結果dst[0-3]となる。
また、DOT4演算器30において、乗算器31は要素src1[4]と要素src2[4]とを乗算し、乗算器32は要素src1[5]と要素src2[5]とを乗算し、乗算器33は要素src1[6]と要素src2[6]とを乗算し、乗算器34は要素src1[7]と要素src2[7]とを乗算する。加算器35は、乗算器31での乗算結果と、乗算器32での乗算結果と、乗算器33での乗算結果と、乗算器34での乗算結果とを加算する。加算器36は、加算器35での加算結果と加算器36での前回の加算結果とを加算することにより今回の加算結果を得る。加算器36での今回の加算結果が、DOT4演算器30での要素src1[4]~[7]と要素src2[4]~[7]との積和演算結果であるFP32の演算結果dst[4-7]となる。
また、DOT4演算器40において、乗算器41は要素src1[8]と要素src2[8]とを乗算し、乗算器42は要素src1[9]と要素src2[9]とを乗算し、乗算器43は要素src1[10]と要素src2[10]とを乗算し、乗算器44は要素src1[11]と要素src2[11]とを乗算する。加算器45は、乗算器41での乗算結果と、乗算器42での乗算結果と、乗算器43での乗算結果と、乗算器44での乗算結果とを加算する。加算器46は、加算器45での加算結果と加算器46での前回の加算結果とを加算することにより今回の加算結果を得る。加算器46での今回の加算結果が、DOT4演算器40での要素src1[8]~[11]と要素src2[8]~[11]との積和演算結果であるFP32の演算結果dst[8-11]となる。
また、DOT4演算器50において、乗算器51は要素src1[12]と要素src2[12]とを乗算し、乗算器52は要素src1[13]と要素src2[13]とを乗算し、乗算器53は要素src1[14]と要素src2[14]とを乗算し、乗算器54は要素src1[15]と要素src2[15]とを乗算する。加算器55は、乗算器51での乗算結果と、乗算器52での乗算結果と、乗算器53での乗算結果と、乗算器54での乗算結果とを加算する。加算器56は、加算器55での加算結果と加算器56での前回の加算結果とを加算することにより今回の加算結果を得る。加算器56での今回の加算結果が、DOT4演算器50での要素src1[12]~[15]と要素src2[12]~[15]との積和演算結果であるFP32の演算結果dst[12-15]となる。
このように、SIMD演算器11bでは、DOT4演算器20が要素src1[0]~[3]及び要素src2[0]~[3]に対して積和演算を行い、DOT4演算器30が要素src1[4]~[7]及び要素src2[4]~[7]に対して積和演算を行い、DOT4演算器40が要素src1[8]~[11]及び要素src2[8]~[11]に対して積和演算を行い、DOT4演算器50が要素src1[12]~[15]及び要素src2[12]~[15]に対して積和演算を行う。つまり、DOT4演算器20,30,40,50の各々において4要素分のドット積命令に相当するDOT4の積和演算が行われることにより、SIMD演算器11bでは16要素分の積和演算が同時に並列して行われる。
そして、各々がFP32である演算結果dst[0-3]と、演算結果dst[4-7]と、演算結果dst[8-11]と、演算結果dst[12-15]とが結合されることにより、SIMD演算器11bでの演算結果dstが得られる。
図2に示す例では、入力データsrc1,src2の各要素はFP8であるのに対し、DOT4演算器20,30,40,50の各々での演算結果はそれぞれFP32となる。よって、SIMD演算器11bでのSIMD積和演算の同時実行数は16となり、この16の同時実行数は、入力データがFP32の4個の要素で形成される場合の積和演算の同時実行数に比べ4倍になる。つまり、各要素がFP8である128ビット(8ビット×16=128)の入力データに対してSIMD演算器11bを用いて積和演算を行うことにより、各要素がFP32である128ビット(32ビット×4=128)の入力データに対して積和演算を行う場合に比べ、積和演算の速度を4倍に高速化できる。
<DOT4演算>
式(6)で表されるベクトルAと、式(7)で表されるベクトルBの二つのベクトルがあった場合、ベクトルAとベクトルBとのドット積(dot product)A・Bは式(8)によって与えられる。
式(6)で表されるベクトルAと、式(7)で表されるベクトルBの二つのベクトルがあった場合、ベクトルAとベクトルBとのドット積(dot product)A・Bは式(8)によって与えられる。
以下、FP8のDOT4命令のハーモニックの一例について説明する。以下の説明において、Vdstは1要素当たり32ビットのベクトルレジスタを示し、Vdstにはドット積の結果が格納される。Vsrc1,2は1要素当たり8ビットのベクトルレジスタを示し、Vsrc1,2には入力データsrc1,src2が格納される。Xcfgは64ビットの汎用レジスタを示し、Xcfgには入力データsrc1,src2の共有指数バイアス値bが格納される。
そして、DOT4命令の擬似コードは、Vdst、Vsrc1,2及びXcfgを用いて、図3A及び図3Bのように表される。図3A及び図3Bは、実施形態1のDOT4命令の擬似コードの一例を示す図である。図3Bは図3Aの続きの擬似コードである。図3A及び図3Bでは、一例として、ベクトルレジスタのベクトル長が512ビットである場合を考えるため、32ビットのデータは16要素、8ビットのデータは64要素となる。また、図3Bにおけるleading_zeroは最上位ビットから0が続いた回数を返すコードであり、例えばleading_zero=00100の場合は2が返される。
図4は、実施形態1のDOT4演算器の内部ダイヤグラムの一例を示す図である。図4には、一例として、DOT4演算器20における内部ダイヤグラムを示す。また、図4には、入力データに非正規化データが存在しない場合(e8>0の場合)の内部ダイヤグラムを示す。
図4において、DOT4演算器20には、入力データsrc1の各要素src1[0]~[3]と、src1[0]~[3]の各要素に対応するINT8の共有指数バイアス値bとがセットで入力される。また同時に、DOT4演算器20には、入力データsrc2の各要素src2[0]~[3]と、src2[0]~[3]の各要素に対応するINT8の共有指数バイアス値bとがセットで入力される。なお、要素src1[0]~[3]及び要素src2[0]~[3]の各々は、サインビットSと、e8のNebitと、m8のNmbitとによって形成される。
実施形態1のDOT4演算器20では、図3A及び図3Bに示す擬似コードに基づいた積和演算が以下のようにして行われることにより、FP32の演算結果dst[0-3]が算出される。
すなわち、乗算器21では、要素src1[0]のe8及びm8と共有指数バイアス値bとに対し式(2)を適用して得られる8ビットのe14及び5ビットのm14の先頭にサインビットSが付加されたデータと、要素src2[0]のe8及びm8と共有指数バイアス値bとに対し式(2)を適用して得られる8ビットのe14及び5ビットのm14の先頭にサインビットSが付加されたデータとが乗算される。
乗算器22では、要素src1[1]のe8及びm8と共有指数バイアス値bとに対し式(2)を適用して得られる8ビットのe14及び5ビットのm14の先頭にサインビットSが付加されたデータと、要素src2[1]のe8及びm8と共有指数バイアス値bとに対し式(2)を適用して得られる8ビットのe14及び5ビットのm14の先頭にサインビットSが付加されたデータとが乗算される。
乗算器23では、要素src1[2]のe8及びm8と共有指数バイアス値bとに対し式(2)を適用して得られる8ビットのe14及び5ビットのm14の先頭にサインビットSが付加されたデータと、要素src2[2]のe8及びm8と共有指数バイアス値bとに対し式(2)を適用して得られる8ビットのe14及び5ビットのm14の先頭にサインビットSが付加されたデータとが乗算される。
乗算器24では、要素src1[3]のe8及びm8と共有指数バイアス値bとに対し式(2)を適用して得られる8ビットのe14及び5ビットのm14の先頭にサインビットSが付加されたデータと、要素src2[3]のe8及びm8と共有指数バイアス値bとに対し式(2)を適用して得られる8ビットのe14及び5ビットのm14の先頭にサインビットSが付加されたデータとが乗算される。
加算器25では、乗算器21での乗算結果と、乗算器22での乗算結果と、乗算器23での乗算結果と、乗算器24での乗算結果とが加算され、8ビットのe25及び16ビットのm25の先頭にサインビットSが付加されたデータが加算結果として得られる。
加算器26では、加算器25での加算結果と加算器26での前回の加算結果とが加算されることにより、8ビットのe32及び23ビットのm32の先頭にサインビットSが付加されたFP32のデータが今回の加算結果として得られる。加算器26での今回の加算結果が、DOT4演算器20でのFP32の演算結果dst[0-3]となる。
DOT4演算器30でも、DOT4演算器20と同様に、図3A及び図3Bに示す擬似コードに基づいて、要素src1[4]~[7]と共有指数バイアス値bとのデータセット、及び、要素src2[4]~[7]と共有指数バイアス値bとのデータセットに対して積和演算が行われることにより、FP32の演算結果dst[4-7]が得られる。
また、DOT4演算器40でも、DOT4演算器20と同様に、図3A及び図3Bに示す擬似コードに基づいて、要素src1[8]~[11]と共有指数バイアス値bとのデータセット、及び、要素src2[8]~[11]と共有指数バイアス値bとのデータセットに対して積和演算が行われることにより、FP32の演算結果dst[8-11]が得られる。
また、DOT4演算器40でも、DOT4演算器20と同様に、図3A及び図3Bに示す擬似コードに基づいて、要素src1[12]~[15]と共有指数バイアス値bとのデータセット、及び、要素src2[12]~[15]と共有指数バイアス値bとのデータセットに対して積和演算が行われることにより、FP32の演算結果dst[12-15]が得られる。
つまり、SIMD演算器11bでは、要素src1[0]~[15]と共有指数バイアス値bとのデータセット、及び、要素src2[0]~[15]と共有指数バイアス値bとのデータセットに対してDOT4の積和演算が同時に並列して行われることにより、演算結果dst[0-3],[4-7],[8-11],[12-15]が結合された演算結果dstが得られる。
<演算装置における処理手順>
図5は、実施形態1の演算装置における処理手順の一例を示すフローチャートである。図5において、ステップS10では、バイアス演算器11aが共有指数バイアス値bを算出する。次いで、ステップS15では、SIMD演算器11bがDOT4の積和演算を用いたSIMD演算を行う。そして、ステップS20では、量子化器11cがSIMD演算の演算結果を量子化する。
図5は、実施形態1の演算装置における処理手順の一例を示すフローチャートである。図5において、ステップS10では、バイアス演算器11aが共有指数バイアス値bを算出する。次いで、ステップS15では、SIMD演算器11bがDOT4の積和演算を用いたSIMD演算を行う。そして、ステップS20では、量子化器11cがSIMD演算の演算結果を量子化する。
<DNN学習装置におけるデータフロー>
図6は、実施形態1のDNN学習装置におけるデータフローの一例を示す図である。
図6は、実施形態1のDNN学習装置におけるデータフローの一例を示す図である。
図6において、ステップS100,S105では、FP8のアクティベーション値(L)及びINT8の共有指数バイアス値(L)のデータセットと、FP8のウェイト(L)及びINT8の共有指数バイアス値(L)のデータセットとが積和演算される。ステップS100,S105で行われる積和演算では、アクティベーション値(L)は上記の入力データsrc1のFP8の各要素src1[0]~[15]に相当し、ウェイト(L)は上記の入力データsrc2のFP8の各要素src2[0]~[15]に相当する。また、共有指数バイアス値(L)は上記の共有指数バイアス値bに相当し、バイアス演算器11aによって算出される。また、ステップS100,S105での積和演算には上記のようなDOT4の積和演算が用いられ、ステップS100,S105での積和演算によって4要素分の積和演算結果であるFP32の積和演算結果が得られる。また、ステップS100,S105での積和演算はSIMD演算器11bによって行われ、ステップS100,S105での積和演算では、16要素分(4要素分×4)の積和演算が同時に並列して行われる。
ステップS110では、ステップS100,S105でのFP32の積和演算結果をFP8にする量子化が行われ、ステップS110での量子化によって、アクティベーション値(L)がアクティベーション値(L+1)に更新され、共有指数バイアス値(L)が共有指数バイアス値(L+1)に更新される。ステップS110での量子化は、量子化器11cによって行われる。
ステップS115では、FP32のマスターウェイト(L)がFP8に量子化されることによりFP8のウェイト(L)が得られる。ステップS115での量子化は、量子化器11cによって行われる。
ステップS120,S125では、FP8のアクティベーション値(L)及びINT8の共有指数バイアス値(L)のデータセットと、FP8のエラー勾配(L+1)及びINT8の共有指数バイアス値(L+1)のデータセットとが積和演算される。ステップS120,S125で行われる積和演算では、アクティベーション値(L)は上記の入力データsrc1のFP8の各要素src1[0]~[15]に相当し、エラー勾配(L+1)は上記の入力データsrc2のFP8の各要素src2[0]~[15]に相当する。また、共有指数バイアス値(L),(L+1)は上記の共有指数バイアス値bに相当し、バイアス演算器11aによって算出される。また、ステップS120,S125での積和演算には上記のようなDOT4の積和演算が用いられ、ステップS120,S125での積和演算によって4要素分の積和演算結果であるFP32の積和演算結果が得られる。また、S120,S125での積和演算はSIMD演算器11bによって行われ、ステップS120,S125での積和演算では、16要素分(4要素分×4)の積和演算が同時に並列して行われる。
ステップS130では、ステップS120,S125でのFP32の積和演算結果をFP8にする量子化が行われ、ステップS130での量子化によって、FP8のウェイト勾配(L)及びINT8の共有指数バイアス値(L)が得られる。ステップS130での量子化は、量子化器11cによって行われる。
ステップS135,S140では、FP8のウェイト(L)及びINT8の共有指数バイアス値(L)のデータセットと、FP8のエラー勾配(L+1)及びINT8の共有指数バイアス値(L+1)のデータセットとが積和演算される。ステップS135,S140で行われる積和演算では、ウェイト(L)は上記の入力データsrc1のFP8の各要素src1[0]~[15]に相当し、エラー勾配(L+1)は上記の入力データsrc2のFP8の各要素src2[0]~[15]に相当する。また、共有指数バイアス値(L),(L+1)は上記の共有指数バイアス値bに相当し、バイアス演算器11aによって算出される。また、ステップS135,S140での積和演算には上記のようなDOT4の積和演算が用いられ、ステップS135,S140での積和演算によって4要素分の積和演算結果であるFP32の積和演算結果が得られる。また、ステップS135,S140での積和演算はSIMD演算器11bによって行われ、ステップS135,S140での積和演算では、16要素分(4要素分×4)の積和演算が同時に並列して行われる。
ステップS145では、ステップS135,S140でのFP32の積和演算結果をFP8にする量子化が行われ、ステップS145での量子化によって、エラー勾配(L+1)がエラー勾配(L)に更新され、共有指数バイアス値(L+1)が共有指数バイアス値(L)に更新される。ステップS145での量子化は、量子化器11cによって行われる。
<SIMD演算器のハードウェア構成>
図7は、実施形態1のSIMD演算器のハードウェア構成の一例を示す図である。図7において、SIMD演算器11bは、第一演算器11b-1と、第二演算器11b-2と、レジスタ11b-3とを有する。
図7は、実施形態1のSIMD演算器のハードウェア構成の一例を示す図である。図7において、SIMD演算器11bは、第一演算器11b-1と、第二演算器11b-2と、レジスタ11b-3とを有する。
レジスタ11b-3は128ビット×5のレジスタである。レジスタ11b-3には、各々がFP8の16個の要素src1[0]~[15]と、要素src1[0]~[15]の各々に対応するINT8の16個の共有指数バイアス値bと、各々がFP8の16個の要素src2[0]~[15]と、要素src2[0]~[15]の各々に対応するINT8の16個の共有指数バイアス値bと、各々がFP32の4個の前回の積和演算結果dst[0-3],[4-7],[8-11],[12-15]とが格納される。
要素src1[0]~[15]、要素src1[0]~[15]の各々に対応する共有指数バイアス値b、要素src2[0]~[15]、及び、要素src2[0]~[15]の各々に対応する共有指数バイアス値bは、予めメモリ12に記憶されており、メモリ12からレジスタ11b-3に読み出される。
第一演算器11b-1は、図2に示す乗算器21~24、加算器25、乗算器31~34、加算器35、乗算器41~44、加算器45、乗算器51~54、加算器55で行われる加算及び乗算を行う。第二演算器11b-2は、図2に示す加算器26,36,46,56で行われる加算を行う。第二演算器11b-2での今回の加算結果、つまり、各々がFP32の4個の今回の積和演算結果dst[0-3],[4-7],[8-11],[12-15]はメモリ12に記憶される。
以上、実施形態1について説明した。
[実施形態2]
実施形態1では入力データに非正規化データが存在しない場合について説明した。これに対し、実施形態2では、入力データに非正規化データが存在する点が実施形態1と異なる。
実施形態1では入力データに非正規化データが存在しない場合について説明した。これに対し、実施形態2では、入力データに非正規化データが存在する点が実施形態1と異なる。
図8は、実施形態2のDOT4演算器の内部ダイヤグラムの一例を示す図である。図8には、一例として、DOT4演算器20における内部ダイヤグラムを示す。また、図8には、入力データに非正規化データが含まれる場合(入力データにe8=0となる要素が存在する場合)の内部ダイヤグラムを示す。図8では、一例として、要素src[3]のみe8=0とした。なお、図8において、乗算器24で行われる処理以外の処理については、実施形態1と同一であるため、説明を省略する。
乗算器24では、要素src1[3]のe8及びm8と共有指数バイアス値bとに対し式(2)を適用して得られる8ビットのe14及び5ビットのm14の先頭にサインビットSが付加されたデータと、要素src2[3]のe8及びm8と共有指数バイアス値bとに対し式(10)を適用して得られる8ビットのe14及び5ビットのm14の先頭にサインビットSが付加されたデータとが乗算される。
以上、実施形態2について説明した。
10 DNN学習装置
11 演算装置
11a バイアス演算器
11b SIMD演算器
11c 量子化器
12 メモリ
11 演算装置
11a バイアス演算器
11b SIMD演算器
11c 量子化器
12 メモリ
Claims (3)
- 浮動小数点演算のダイナミックレンジをシフトさせる共有指数バイアス値を算出する第一演算器と、
共有指数バイアス値及び第一ビット数の浮動小数点のアクティベーション値から形成される第一データセットと、共有指数バイアス値及び前記第一ビット数の浮動小数点のウェイトから形成される第二データセットとの多数要素分の積和演算を行うことにより、前記第一ビット数より多い第二ビット数の積和演算結果を算出する第二演算器と、
前記積和演算結果のビット数を前記第二ビット数から前記第一ビット数へ量子化することにより前記アクティベーション値を更新する量子化器と、
を具備する演算装置。 - 前記アクティベーション値に非正規化データが含まれる、
請求項1に記載の演算装置。 - 前記多数要素分の積和演算は、4要素分のドット積演算である、
請求項1または2に記載の演算装置。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2021100783A JP2023000142A (ja) | 2021-06-17 | 2021-06-17 | 演算装置 |
US17/690,043 US20220405055A1 (en) | 2021-06-17 | 2022-03-09 | Arithmetic device |
CN202210257689.0A CN115496176A (zh) | 2021-06-17 | 2022-03-16 | 算术设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2021100783A JP2023000142A (ja) | 2021-06-17 | 2021-06-17 | 演算装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2023000142A true JP2023000142A (ja) | 2023-01-04 |
Family
ID=84465374
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2021100783A Pending JP2023000142A (ja) | 2021-06-17 | 2021-06-17 | 演算装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20220405055A1 (ja) |
JP (1) | JP2023000142A (ja) |
CN (1) | CN115496176A (ja) |
-
2021
- 2021-06-17 JP JP2021100783A patent/JP2023000142A/ja active Pending
-
2022
- 2022-03-09 US US17/690,043 patent/US20220405055A1/en active Pending
- 2022-03-16 CN CN202210257689.0A patent/CN115496176A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US20220405055A1 (en) | 2022-12-22 |
CN115496176A (zh) | 2022-12-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7476175B2 (ja) | 乗算累積回路 | |
EP3788470B1 (en) | Block floating point computations using reduced bit-width vectors | |
JP6744916B2 (ja) | 冗長表現を用いた、第1および第2のオペランドの積算 | |
US9916130B2 (en) | Apparatus and method for vector processing | |
US9519460B1 (en) | Universal single instruction multiple data multiplier and wide accumulator unit | |
US6697832B1 (en) | Floating-point processor with improved intermediate result handling | |
US6240433B1 (en) | High accuracy estimates of elementary functions | |
JP6882281B2 (ja) | ベクトルの処理のためのレーン位置情報 | |
US5280439A (en) | Apparatus for determining booth recoder input control signals | |
JP6803381B2 (ja) | 重複ビットを使用する数値の冗長表現 | |
CN109634558B (zh) | 可编程的混合精度运算单元 | |
CN114341796A (zh) | 带符号多字乘法器 | |
JP4601544B2 (ja) | 入力値に逆数演算を実施して結果値を作り出すデータ処理装置および方法 | |
JP6877812B2 (ja) | 重複伝搬演算 | |
JP4476210B2 (ja) | 逆数演算の結果値の初期推定値を求めるデータ処理装置および方法 | |
US5260889A (en) | Computation of sticky-bit in parallel with partial products in a floating point multiplier unit | |
Tatsumi et al. | Mixing low-precision formats in multiply-accumulate units for DNN training | |
US6912559B1 (en) | System and method for improving the accuracy of reciprocal square root operations performed by a floating-point unit | |
JP7541524B2 (ja) | アンカーデータ要素における特殊値の符号化 | |
US20230333812A1 (en) | Method and system for processing floating point numbers | |
US20230161555A1 (en) | System and method performing floating-point operations | |
US6598065B1 (en) | Method for achieving correctly rounded quotients in algorithms based on fused multiply-accumulate without requiring the intermediate calculation of a correctly rounded reciprocal | |
JP2023000142A (ja) | 演算装置 | |
EP0738959A1 (en) | Method and apparatus for finding arctangents | |
JP7247418B2 (ja) | 乗算のための計算ユニット、方法及びコンピュータプログラム |