JP2023069780A - 演算プログラム、演算方法及び計算機 - Google Patents
演算プログラム、演算方法及び計算機 Download PDFInfo
- Publication number
- JP2023069780A JP2023069780A JP2021181901A JP2021181901A JP2023069780A JP 2023069780 A JP2023069780 A JP 2023069780A JP 2021181901 A JP2021181901 A JP 2021181901A JP 2021181901 A JP2021181901 A JP 2021181901A JP 2023069780 A JP2023069780 A JP 2023069780A
- Authority
- JP
- Japan
- Prior art keywords
- learning
- quantization
- bits
- layer
- quantization error
- 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
- 238000000034 method Methods 0.000 title claims abstract description 39
- 238000013139 quantization Methods 0.000 claims abstract description 159
- 238000009825 accumulation Methods 0.000 claims abstract description 7
- 238000004364 calculation method Methods 0.000 claims description 60
- 230000007423 decrease Effects 0.000 claims description 9
- 238000004590 computer program Methods 0.000 claims 1
- 238000012545 processing Methods 0.000 abstract description 32
- 238000010586 diagram Methods 0.000 description 24
- 238000012552 review Methods 0.000 description 17
- 230000006870 function Effects 0.000 description 11
- 238000009826 distribution Methods 0.000 description 10
- 230000004913 activation Effects 0.000 description 6
- 238000012549 training Methods 0.000 description 6
- 238000007667 floating Methods 0.000 description 5
- 229920006395 saturated elastomer Polymers 0.000 description 5
- 230000000694 effects Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 238000004904 shortening Methods 0.000 description 3
- 238000009827 uniform distribution Methods 0.000 description 3
- 238000007792 addition Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 238000013528 artificial neural network Methods 0.000 description 2
- 230000001174 ascending effect Effects 0.000 description 2
- 230000001186 cumulative effect Effects 0.000 description 2
- NAWXUBYGYWOOIX-SFHVURJKSA-N (2s)-2-[[4-[2-(2,4-diaminoquinazolin-6-yl)ethyl]benzoyl]amino]-4-methylidenepentanedioic acid Chemical compound C1=CC2=NC(N)=NC(N)=C2C=C1CCC1=CC=C(C(=O)N[C@@H](CC(=C)C(O)=O)C(O)=O)C=C1 NAWXUBYGYWOOIX-SFHVURJKSA-N 0.000 description 1
- 125000000485 6-formamidopenicilloyl group Chemical group C(=O)(O)[C@@H]1N[C@H](SC1(C)C)[C@@H](C(=O)*)NC=O 0.000 description 1
- 230000002238 attenuated effect Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000005315 distribution function Methods 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/082—Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
-
- 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
- G06N3/084—Backpropagation, e.g. using gradient descent
-
- 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
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/0464—Convolutional networks [CNN, ConvNet]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/0495—Quantised networks; Sparse networks; Compressed networks
-
- 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
- G06N3/09—Supervised learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2218/00—Aspects of pattern recognition specially adapted for signal processing
- G06F2218/12—Classification; Matching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/048—Activation functions
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Life Sciences & Earth Sciences (AREA)
- Molecular Biology (AREA)
- Artificial Intelligence (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Image Analysis (AREA)
Abstract
【課題】学習モデルの学習時間を短縮させつつ認識率を向上させる演算プログラム、演算方法及び計算機を提供する。【解決手段】演算プログラムは、以下の処理をコンピュータに実行させる。1つは、学習モデルに含まれる各レイヤーで高精度のデータ型で第1学習を行う処理である。1つは、第1学習で量子化を行った場合の第1量子化誤差及び量子化誤差の累積による減衰の程度に応じた閾値を基に各レイヤーにおける量子化で用いるビット数を算出する処理である。1つは、算出したレイヤー毎のビット数に基づくデータ型での量子化を含む第2学習を行い、収束するまで前記第2学習を繰り返す処理である。【選択図】図13
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が行われるレイヤーとが混在することになる。
量子化による認識率低下を防ぐ方法として、データを量子化しSIMD演算の並列度を上昇させつつ、AccumulationはFPOにより実行し、出力時に量子化を行う技術がある。他にも、重み係数は高精度の情報で表現し、演算時に量子化する技術がある。さらに、重み係数の更新をFPOにより実行する技術がある。
MPTにより学習を行う場合、FPOにより演算が実行されるレイヤーを決定する基準を設定することが望ましい。しかしながら、学習のフェーズによって、FPOを用いるレイヤーが変化するため、事前にFPOを用いるレイヤーを決定することは困難である。
例えば、AccumulationをFPOで行う技術や、重み係数を用いた演算時に量子化を行う技術や、重み係数の更新をFPOで行う技術では、いずれも量子化を行うレイヤーが事前に決定されており、学習フェーズに応じたFPOを実行するレイヤーの決定は困難である。
そこで、本開示では、上記に鑑みてなされたものであって、学習モデルの学習時間を短縮させつつ認識率を向上させる演算プログラム、演算方法及び計算機を提供することを目的とする。
本願の開示する演算プログラム、演算方法及び計算機の一つの態様において、学習モデルに含まれる各レイヤーで高精度のデータ型で第1学習を行い、前記第1学習で量子化を行った場合の第1量子化誤差及び量子化誤差の累積による減衰の程度に応じた閾値を基に各前記レイヤーにおける量子化で用いるビット数を算出し、算出した前記レイヤー毎のビット数に基づくデータ型での量子化を含む第2学習を行い、収束するまで前記第2学習を繰り返す。
本開示によれば、DNNの学習時間を短縮させつつ認識率を向上させることができる。
以下に、本願の開示する演算プログラム、演算方法及び計算機の実施例を図面に基づいて詳細に説明する。なお、以下の実施例により本願の開示する演算プログラム、演算方法及び計算機が限定されるものではない。
[実施形態]
浮動小数点演算の値valueは式(1)により与えられる。式(1)において、sは1ビット固定のサインビットであり、Nebitは指数部eのビット数であり、Nmbitは仮数部mのビット数である。例えば、FP32では、Nebit=8、Nmbit=23である。
浮動小数点演算の値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は、量子化対象の全要素である。
<量子化誤差の影響>
図1は、DNNの構成の一例を示す図である。ここで、DNNによる計算プロセスを考えた場合、量子化誤差の影響を受けるのは以下の箇所である。
図1は、DNNの構成の一例を示す図である。ここで、DNNによる計算プロセスを考えた場合、量子化誤差の影響を受けるのは以下の箇所である。
フォワードプロパゲーションの場合、最終的には推定値の算出において量子化誤差の影響が発生する。すなわち、最終結果として得られるに認識率の低下や損失の上昇の発生が考えられる。また、バックワードプロパゲーションの場合、最終的には重み係数の更新において量子化誤差の影響が発生する。すなわち、最終結果として得られる重み係数が不適切な値となるおそれがある。そのため、量子化誤差を評価するポイントは、図1におけるフォワードプロパゲーションの場合にはSoftmax活性化関数に通す前のニューラルネットワークの出力101であるlogitsの量子化誤差であり、バックワードプロパゲーションの場合にはweight gradients102の量子化誤差である。
量子化誤差が発生する要因としていくつかの要因が考えられる。1つは、ダイナミックレンジに起因する量子化誤差である。量子化を行った場合にはダイナミックレンジが狭くなる。そのため、表現されなくなる領域が発生することで誤差が発生する。
図2は、ダイナミックレンジ起因の量子化誤差を説明するための図である。図2の横軸はビット数を表し、縦軸はビット数毎のerror gradientに対する確率密度関数(PDF)で得られる値である。すなわち、図2に示したグラフは、あるレイヤーへ入力される量子化前のテンソルに含まれる各要素を表すのに用いられるビット毎の確率分布を表す。図2における範囲103が量子化後のダイナミックレンジを表す。すなわち、量子化後に、領域104に含まれる要素は0になり、領域105に含まれる要素は飽和する。また、点106は、量子化後の最大値の表す。
そして、ダイナミックレンジに起因する量子化誤差は、次の式(6)で表される。ここで、Di
satは、飽和される領域の要素であり、Di
zeroは、0になる領域の要素であり、Nsatは、飽和される要素数であり、Nzeroは、0になる要素数であり、Nallは、全要素数である。また、Dabsmaxは、量子化後の最大値を表す。
また、他の要因としては、仮数部の丸めに起因する量子化誤差がある。例えば、FP32をFP8に変換する場合、切り捨て時の絶対誤差は次の式(7)で表される。ここで、Nmbitは仮数部mのビット数である。これは切り上げ時も同様に表される。
以上の要因で発生する量子化誤差の認識率への影響について説明する。分類問題(Classification)のDNNの場合、ネットワークの出力値であるLogitsを次の式(9)で表されるSoftmax関数に入力した場合の出力結果が、推定確率とされる。
量子化によってlogitsに誤差が生じると、推定確率にも誤差が生じ、認識率の低下につながる。例えば、同一バッチ内でのlogitsの最大値がx1であり2番目に大きい値がx2であり、量子化によりx1とx2とに誤差が生じた場合について説明する。その場合、次の式(10)で表されるように量子化誤差が生じるケースが、最も誤差が大きくなるケースである。
また、誤差逆伝番によりDNNのtopからbottomへ伝搬するactivation gradientsからWeight gradientが計算される。ダイナミックレンジに起因する量子化誤差により、activation gradientsがbottom側へ伝搬して減衰すると、bottom側のweight gradientsの絶対値も減衰し、重み係数が更新される絶対値が減少する。つまり、学習結果が重み係数に反映される量が減るため、同じ学習結果を得るための学習量が増加してしまう。
<DNN学習装置の構成>
図3は、実施形態に係るDNN学習装置のブロック図である。以上のような量子化誤差の発生を抑え、認識率を向上させるために、本実施例に係るDNN学習装置10は、各レイヤーの量子化に用いるビット数を求めて学習を行う。例えば、DNN学習装置10として、各種のコンピュータ等の情報処理装置を採用することができる。
図3は、実施形態に係るDNN学習装置のブロック図である。以上のような量子化誤差の発生を抑え、認識率を向上させるために、本実施例に係るDNN学習装置10は、各レイヤーの量子化に用いるビット数を求めて学習を行う。例えば、DNN学習装置10として、各種のコンピュータ等の情報処理装置を採用することができる。
DNN学習装置10は、DNNの学習処理及び学習済みのDNNを用いた推論処理を実行する。DNN学習装置10は、複数のイテレーションを含むエポックという単位で学習を繰り返すことでDNNの学習を実行する。DNN学習装置10は、図3に示すように、学習処理管理部11、ビット数算出部12及び学習部13を備える。
学習処理管理部11は、学習処理を統括管理する。学習処理管理部11は、量子化を見直すタイミングのエポック番号を予め有する。以下では、量子化を見直すタイミングのエポックを、「見直しエポック」と呼ぶ。また、学習処理管理部11は、1つのエポックに含まれるイテレーションの回数を予め有する。
学習処理管理部11は、学習開始の指示を受けると、学習部13にDNNの学習を開始させる。そして、学習処理管理部11は、1番目のエポックにおけるイテレーションの回数をカウントする。その後、1番目のエポックにおける最終イテレーションが実行されるときに、学習処理管理部11は、量子化に用いるビット数の算出をビット数算出部12に指示する。
次に、学習処理管理部11は、学習部13により実行されたエポックをカウントし、次に実行するエポックのエポック番号を求める。学習処理管理部11は、学習部13が2番目のエポックを実行する場合、1番目のエポックの最終イテレーションで決定された量子化に用いるビット数の反映を学習部13に指示する。
その後、学習処理管理部11は、学習部13が次に実行するエポック番号が見直しエポックのエポック番号か否かを判定する。学習部13が次に実行するエポック番号が見直しエポックのエポック番号でない場合、学習処理管理部11は、各レイヤーにおいてその時点で使用中のデータ型での量子化を用いた学習を学習部13に継続させる。
これに対して、学習部13が実行するエポック番号が見直しエポックのエポック番号となった場合、学習処理管理部11は、量子化の見直しを学習部13に通知する。さらに、学習処理管理部11は、その見直しエポックにおけるイテレーションの回数をカウントしイテレーション番号を取得する。その後、その見直しエポックにおける最後のイテレーションに到達した場合、学習処理管理部11は、量子化に用いるビット数の算出をビット数算出部12に指示する。
さらに、学習処理管理部11は、見直しエポックの次のエポックが実行される場合、見直しエポックの最終イテレーションで決定された量子化に用いるビット数の反映を学習部13に指示する。
より、適切な量子化を行うために、見直しエポックは複数のタイミングで設けられることが好まし。複数の見直しエポックが設けられる場合、学習処理管理部11は、量子化を見直すタイミングのエポック毎に、量子化の見直しを学習部13に通知し、且つ、量子化に用いるビット数の算出をビット数算出部12に行わせてビット数の見直しを繰り返させる。
ビット数算出部12は、量子化に用いるビット数の算出の指示を学習処理管理部11から受ける。そして、ビット数算出部12は、量子化に用いる指数部のビット数及び仮数部のビット数を算出する。以下では、指数部のビット数を「指数ビット数」と呼び、仮数部のビット数を「仮数ビット数」と呼ぶ。そして、ビット数算出部12は、算出した指数ビット数及び仮数ビット数を学習部13に通知する。
以下にビット数算出部12による量子化に用いる指数ビット数及び仮数ビット数の算出の詳細について説明する。ビット数算出部12は、図3に示すように、指数ビット数算出部121及び仮数ビット数算出部122を有する。
指数ビット数算出部121は、量子化誤差に閾値を設けてレイヤー毎に指数ビット数を求める。ここで、量子化を繰り返すと量子化誤差が蓄積する。そして、量子化により絶対値が大きい値が飽和し且つ小さい値が0になるため、テンソルの全要素の絶対値の総和は量子化誤差分減衰する。
ここで、量子化1回あたりの量子化誤差をEQ
eとする。このとき、NQ回の量子化を行った場合の減衰後の値が、相対値でT以上となるようにするために、量子化誤差は以下の式(12)を満たすことが求められる。この場合、Tが減衰の閾値であり、量子化1回値の量子化誤差の上限を規定する値である。
例えば、ResNet-50の場合、NQ=112であるので、T=0.9であれば、EQ
e=0.00083585である。
ここで求めた式(13)で示される量子化誤差の条件を満たす指数部のビット数の算出について説明する。指数ビット数算出部121は、フォワードプロパゲーションの場合にはtopのactivationを分析対象のテンソルとし、バックワードプロパゲーションの場合にはbottom_diffのgradientを分析対象のテンソルとする。
そして、指数ビット数算出部121は、テンソルの全要素の絶対値の総和を算出する。ここでは、テンソルの全要素の絶対値の総和をΣ|D[i]|と表す。
次に、指数ビット数算出部121は、テンソルの要素を絶対値で小さい順にソートする。ここでは、ソートした配列をDabs[1:Nall]と表す。
次に、指数ビット数算出部121は、量子化で飽和される要素を0個とする。すなわち、指数ビット数算出部121は、量子化後の最大値がテンソルの要素の最大値に一致するように量子化の範囲を設定する。例えば、図2におけるグラフの最大値に量子化後のダイナミックレンジの最大値を合わせる。この場合、式(6)において量子化で飽和される要素が無いため、量子化1回あたりの量子化誤差であるEQ
eは、次の式(14)で表される。
この場合の最後に加算された要素であるDabs[Nzero]が、量子化誤差を規定する式(13)をみたす最大値となる。
ここで、減衰の閾値であるTの値の範囲について説明する。図4は、ResNet-50の場合の誤差の大きさに応じた減衰を示す図である。ResNet-50では、量子化が112回繰り返される。量子化の内訳は、Convolutionで48回、BatchNormで48回、eltwiseで16回である。そこで、ResNet-50の場合に、誤差が蓄積すると、EQ
eに応じて図4に示すように減衰する。例えば、量子化1回あたりの量子化誤差であるEQ
eが0.01の場合、元の数値を1とすると0.99を112乗した値である0.2919が減衰後の値となる。
図5は、閾値に応じた誤差を示す図である。例えば、減衰の閾値Tを0.90、0.95、0.98及び0.99の各値に設定した場合、誤差であるEQ
eはそれぞれ図5のように求まる。ここで、同じ認識精度を得るためには減衰に応じて学習量が増えるため、学習量があまり増えないように減衰の閾値の下限を決定することが好ましい。また、減衰の閾値を高くすると量子化による誤差を認める範囲が狭くなり量子化が行われなくなるため、量子化の誤差をある程度認める減衰の閾値の上限を決定することが好ましい。そこで、図5を基に、減衰の閾値であるTは、例えば、0.90~0.95などと設定される。
図3に戻って説明を続ける。仮数ビット数算出部122は、レイヤー毎に仮数ビット数を求める。上述したように、仮数部の丸めの誤差は、式(8)で表される。MPTでは、Softmax関数の入力値であるlogitsはFP32のデータ型の値をとる。したがって、logitsの計算もFPOで行われることを前提に考えることができる。その場合、logitsの計算を行う際に用いる内積へ入力されるテンソルの量子化誤差がlogitsにどの程度蓄積したかを式にすることで、仮数ビット数を求めることが可能となる。
ここで、内積は次の式(18)で示される。また、図6は、logitsの計算における内積を表す図である。図6は、誤差が発生しない場合の内積の演算を表す。図6におけるXがlogitsの計算の入力値であり、Wが重み係数である。そして、式(18)による計算結果にあたる図5におけるYがlogitsを表す。
そして、Xに一律に量子化誤差εQ
mが与えられると、Yの1要素の内積数はCiなので、誤差を含んだ場合のlogitsの計算の入力値は次の式(19)で表され、logitsは次の式(20)で表される。ここで、EQ
mは、量子化誤差εQ
mの場合の相対誤差である。
ここで、量子化誤差は、ランダム性を有し且つ正負も存在する一様分布である。一様分布は再生性を有さないためその線型和は一様分布でなくなり、量子化誤差は、線型和を繰り返すことで分布の形が正規分布のような凸型の分布関数となる。したがって、量子化誤差の確率分布は、正規分布で近似できる。
正規分布は再現性を有するため、式(21)に示される正規分布にしたがう確率変数Xiの線形結合は式(22)に示される正規分布にしたがう。ここで、α=1、μi=μ、σi=σであれば、N(nμ、nσ2)となる。
量子化誤差は、上述したように正規分布に近似できるため、正規分布にしたがうとして扱うことができ、量子化誤差を持つ値をNadd回加算するとして、誤差が最も大きくなる場合の合計値は、次の数式(23)で表される。このことから、誤差による変動量は加算回数の平方根で緩和可能である。そこで、上述した式(15)における量子化誤差は、Ci回の加算数で平準化されるため、誤差はCiの平方根で緩和可能である。
また、重み係数であるWを[-1,1]の正規分布とすると、正の側では、値の累積は0.4に漸近する。ここで、標準偏差をσで表して4σで1とした場合、値の累積は0.1となる。また、負の側は同様に-0.4に漸近するため、重み係数W全体では総和が0になるが、量子化誤差εQmの項を残すため、負の側の影響を半分に減らす。これにより、重み係数Wの総和は、0.4/4/2=0.05と緩和することができる。
そこで、仮数ビット数算出部122は、レイヤー毎に、式(28)を用いて仮数ビット数を算出する。
ここで、指数ビット数算出部121及び仮数ビット数算出部122で実行される処理を表すシンタックスの一例を説明する。図7は、フォワードプロパゲーションにおける浮動小数点数を用いた量子化でのビット数の算出処理のシンタックスの一例を示す図である。図7の4行目におけるFnは、出力テンソルnの全要素を表す。また、xは、次段のSoftmax関数のlogitsを表す。また、図7の6行目のx1はSoftmax関数の入力値であるlogitsの最大値を表し、x2はX1の次に大きい値をそれぞれ表す。また、Ciは、Softmax関数の前段のレイヤーの内積数である。さらに、Dabs[1:Nall]は、テンソルを絶対値で小さい順にソートした配列である。また、Dabs[Nall]はテンソルの絶対値最大の値である。また、Nzeroは、量子化された時、ゼロになる要素数である。また、Dabs[Nzero]は、ソートした配列を1から順に数式(10)を満たさなくなるまで加算して求めることができる。図7の最終行は、ビット数が8の倍数であることを前提とする。図7の最終行は、C言語の式で記載すると、次の数式(29)で表すことができる。例えば、指数ビット数算出部121及び仮数ビット数算出部122は、図6に示されるシンタックスで表される処理を実行することで、出力テンソルnのビット数(1,Nebit,Nmbit)を算出することができる。このビット数が、レイヤーn+1のビット数である。
次に、図8は、バックワードプロパゲーションにおける浮動小数点数を用いた量子化でのビット数の算出処理のシンタックスの一例を示す図である。図7の最終行は、C言語の式で記載すると、次の数式(30)で表すことができる。例えば、指数ビット数算出部121及び仮数ビット数算出部122は、図8に示されるシンタックスで表される処理を実行することで、error gradient nのビット数(1,Nebit,Nmbit)を算出することができる。このビット数が、レイヤーn-1のビット数である。
図9は、フォワードプロパゲーションにおける整数表現を用いた量子化でのビット数の算出処理のシンタックスの一例を示す図である。整数表現を用いた量子化の場合、指数部が存在しないため、指数ビットが不要となる。図9の最終行は、C言語の式で記載すると、次の数式(31)で表すことができる。例えば、指数ビット数算出部121及び仮数ビット数算出部122は、図9に示されるシンタックスで表される処理を実行することで、出力テンソルnのビット数(1,Nmbit)を算出することができる。このビット数が、レイヤーn+1のビット数である。
次に、図10は、バックワードプロパゲーションにおける整数表現を用いた量子化でのビット数の算出処理のシンタックスの一例を示す図である。図10の最終行は、C言語の式で記載すると、次の数式(32)で表すことができる。例えば、指数ビット数算出部121及び仮数ビット数算出部122は、図10に示されるシンタックスで表される処理を実行することで、error gradient nのビット数(1,Nmbit)を算出することができる。このビット数が、レイヤーn-1のビット数である。
図3に戻って説明を続ける。学習部13は、学習の開始の指示を学習処理管理部11から受ける。そして、学習部13は、DNNの全てのレイヤーのデータ型をFP32に設定する。その後、学習部13は、訓練データを取得してDNNの学習を開始する。
その後、学習部13は、1番目のエポックの最後のイテレーションが終了すると、DNNの各レイヤーで用いる指数ビット数及び仮数ビット数の入力をビット数算出部12から受ける。次に、学習部13は、指定された指数ビット数及び仮数ビット数を各レイヤーに反映する。すなわち、学習部13は、指定された指数ビット数及び仮数ビット数に基づくデータ型を各レイヤーに設定する。そして、学習部13は、各レイヤーに設定したデータ型を用いて2番目以降のエポックの学習を行う。
その後、学習部13は、学習が収束してターゲットに達したか否かを判定する。学習結果がターゲットに達した場合は、学習部13は学習を終了する。
一方、学習結果がターゲットに達していない場合、学習部13は、学習処理管理部11から量子化の見直しの通知を受けるまでレイヤー毎の量子化に用いるデータ型を維持しつつ学習を繰り返す。量子化の見直しの通知を受けた場合、学習部13は、DNNの全てのレイヤーのデータ型をFP32に設定する。そして、学習部13は、DNNの全てのレイヤーのデータ型をFP32とした状態で学習を実行する。その後、学習部13は、量子化を見直すタイミングのエポックにおける最後のイテレーションが終了すると、DNNの各レイヤーで用いる指数ビット数及び仮数ビット数の入力をビット数算出部12から受けて各レイヤーに反映する。学習部13は、学習が収束してターゲットに達するまで、以上の処理を繰り返す。
学習部13による学習処理を簡単に説明する。図11は、学習部の詳細を表すブロック図である。学習部13は、バイアス演算器131、SIMD演算器132及び量子化器133を有する。
バイアス演算器131は、式(4)及び(5)に基づいて、指定されたビット数に対応する共有指数バイアス値bを算出する。SIMD演算器132は、式(2)及び(3)に基づいてSIMD演算を行うことにより、積和演算結果であるFP32のテンソルdstを算出する。量子化器133は、FP32のテンソルdstを指定されたビット数のテンソルに量子化することにより、最終結果のテンソルを算出する。量子化器133での量子化は、例えば、テンソルの全要素の指数部と仮数部を計算し、仮数部の計算において確率的丸め処理を行う等の周知の技術を用いて行うことができる。
<学習部におけるデータフロー>
図12は、学習部におけるデータフローの一例を示す図である。
図12は、学習部におけるデータフローの一例を示す図である。
図12において、ステップS100,S105では、指定されたビット数のアクティベーション値(L)及び共有指数バイアス値(L)のデータセットと、指定されたビット数のウェイト(L)及び共有指数バイアス値(L)のデータセットとが積和演算される。また、共有指数バイアス値(L)は上記の共有指数バイアス値bに相当し、バイアス演算器131によって算出される。また、ステップS100,S105での積和演算はSIMD演算器132によって行われる。
ステップS110では、ステップS100,S105でのFP32の積和演算結果を指定されたビット数にする量子化が行われ、ステップS110での量子化によって、アクティベーション値(L)がアクティベーション値(L+1)に更新され、共有指数バイアス値(L)が共有指数バイアス値(L+1)に更新される。ステップS110での量子化は、量子化器133によって行われる。ただし、指定されたビット数がFP32の場合、実際には量子化は行われない。
ステップS115では、FP32のマスターウェイト(L)が指定されたビット数に量子化されることにより指定されたビット数のウェイト(L)が得られる。ステップS115での量子化は、量子化器133によって行われる。
ステップS120,S125では、指定されたビット数のアクティベーション値(L)及び共有指数バイアス値(L)のデータセットと、指定されたビット数のエラー勾配(L+1)及び共有指数バイアス値(L+1)のデータセットとが積和演算される。共有指数バイアス値(L)及び(L+1)は上記の共有指数バイアス値bに相当し、バイアス演算器131によって算出される。また、S120,S125での積和演算はSIMD演算器132によって行われる。
ステップS130では、ステップS120,S125でのFP32の積和演算結果を指定されたビット数にする量子化が行われ、ステップS130での量子化によって、指定されたビット数のウェイト勾配(L)及び共有指数バイアス値(L)が得られる。ステップS130での量子化は、量子化器133によって行われる。ただし、指定されたビット数がFP32の場合、実際には量子化は行われない。
ステップS135,S140では、指定されたビット数のウェイト(L)及び共有指数バイアス値(L)のデータセットと、指定されたビット数のエラー勾配(L+1)及び共有指数バイアス値(L+1)のデータセットとが積和演算される。共有指数バイアス値(L)及び(L+1)は上記の共有指数バイアス値bに相当し、バイアス演算器131によって算出される。また、ステップS135,S140での積和演算はSIMD演算器132によって行われる。
ステップS145では、ステップS135,S140でのFP32の積和演算結果を指定されたビット数にする量子化が行われ、ステップS145での量子化によって、エラー勾配(L+1)がエラー勾配(L)に更新され、共有指数バイアス値(L+1)が共有指数バイアス値(L)に更新される。ステップS145での量子化は、量子化器133によって行われる。ただし、指定されたビット数がFP32の場合、実際には量子化は行われない。
図13は、実施形態に係るDNN学習装置による学習処理のフローチャートである。次に、図13を参照して、実施例に係るDNN学習装置10による学習処理の流れを説明する。
学習処理管理部11は、学習処理の開始を学習部13に通知する。また、学習処理管理部11は、エポック番号を1に設定する(ステップS1)。
次に、学習処理管理部11は、エポック番号を用いて今回のエポックが1番目又は量子化を見直すタイミングのエポックかを判定する(ステップS2)。
今回のエポックが1番目又は量子化を見直すタイミングのエポックのいずれかの場合(ステップS2:肯定)、学習処理管理部11は、量子化の見直しを学習部13に通知する。学習部13は、全てのレイヤーにおけるデータ型をFP32に設定する(ステップS3)。
次に、学習処理管理部11は、イテレーション番号を1に設定する(ステップS4)。
次に、学習部13は、全てのレイヤーにおけるデータ型をFP32としてフォワードプロパゲーションを実行する(ステップS5)。
次に、学習部13は、全てのレイヤーにおけるデータ型をFP32としてバックワードプロパゲーションを実行する(ステップS6)。
次に、学習部13は、DNNのパラメータを更新する(ステップS7)。
学習処理管理部11は、イテレーション番号を1つインクリメントする(ステップS8)。
次に、学習処理管理部11は、イテレーション番号を用いて次のイテレーションが最終イテレーションか否かを判定する(ステップS9)。次のイテレーションが最終イテレテーションでない場合(ステップS9:否定)、学習処理は、ステップS5へ戻る。
これ対して、次のイテレーションが最終イテレテーションの場合(ステップS9:肯定)、学習処理管理部11は、レイヤー毎のビット数の算出をビット数算出部12に指示する。学習部13は、フォワードプロパゲーションを実行する。ビット数算出部12は、レイヤー毎の出力テンソルを取得して、それぞれのレイヤーにおける量子化に用いるビット数を算出する(ステップS10)。
次に、学習部13は、バックワードプロパゲーションを実行する。ビット数算出部12は、レイヤー毎のerror gradientを取得して、それぞれのレイヤーにおける量子化に用いるビット数を算出する(ステップS11)。
そして、学習部13は、DNNのパラメータを更新する(ステップS12)。その後、学習処理は、ステップS21へ進む。
一方、今回のエポックが1番目又は量子化を見直すタイミングのエポックのいずれでもない場合(ステップS2:否定)、学習処理管理部11は、今回のエポックが2番目又は量子化を見直すタイミングの次のエポックか否かを判定する(ステップS13)。今回のエポックが2番目又は量子化を見直すタイミングの次のエポックのいずれでもない場合(ステップS13:否定)、学習処理は、ステップS15へ進む。
これに対して、今回のエポックが2番目又は量子化を見直すタイミングの次のエポックの場合(ステップS13:肯定)、学習処理管理部11は、ビット数の再設定を学習部13に指示する。学習部13は、ビット数算出部12により算出されたレイヤー毎のビット数を基に、各レイヤーのデータ型を設定する(ステップS14)。
次に、学習処理管理部11は、イテレーション番号を1に設定する(ステップS15)。
次に、学習部13は、ビット数算出部12により算出されたレイヤー毎のビット数を基に設定した各レイヤーのデータ型を用いてフォワードプロパゲーションを実行する(ステップS16)。
次に、学習部13は、ビット数算出部12により算出されたレイヤー毎のビット数を基に設定した各レイヤーのデータ型を用いてバックワードプロパゲーションを実行する(ステップS17)。
次に、学習部13は、DNNのパラメータを更新する(ステップS18)。
学習処理管理部11は、イテレーション番号を1つインクリメントする(ステップS19)。
次に、学習処理管理部11は、イテレーション番号を用いて今回のエポックの全てのイテレーションが終了したか否かを判定する(ステップS20)。実行するイテレーションが残っている場合(ステップS20:否定)、学習処理は、ステップS16へ戻る。
これ対して、今回のエポックの全てのイテレーションが終了した場合(ステップS20:肯定)、学習処理はステップS21へ進む。
学習部13は、学習が収束しターゲットに達したか否かを判定する(ステップS21)。学習が収束していない場合(ステップS21:否定)、学習処理管理部11は、エポック番号を1つインクリメントする(ステップS22)。その後、学習処理は、ステップS2へ戻る。これに対して、学習が収束した場合(ステップS21:肯定)、学習部13は、学習処理を終了する。
以上に説明したように、本実施例に係るDNN学習装置は、DNNに含まれるレイヤー毎に、量子化誤差に閾値を設けて指数ビット数を算出し、且つ、認識率が低下しない条件を用いて仮数ビット数を算出する。そして、DNN学習装置は、算出した指数ビット数及び仮数ビット数に応じて各レイヤーで用いるデータ型を設定して学習を行う。これにより、DNNの各レイヤーで適切なデータ型を用いることで認識率の低下を抑制して、DNNの学習時間を短縮させつつ認識率を向上させることができる。
例えば、ResNet-50を用いて、本実施例に係るDNN学習装置1による学習を行った場合について説明する。ここでは、ResNet-50における最後のレイヤーをfc1000とし、その前段のレイヤーをpool5とする。そして、フォワードプロパゲーションにおけるfc1000の演算結果をfc1000.Yとし、pool5の演算結果をpool5.Yとする。すなわち、pool5.Yは、フォワードプロパゲーションにおけるfc1000への入力である。また、バックワードプロパゲーションにおけるfc1000の入力をfc1000.dYとし、pool5の入力をpool5.dYとする。すなわち、pool5.dYは、バックワードプロパゲーションにおけるfc1000の演算結果である。
この場合、フォワードプロパゲーションでは、DNN学習装置1のビット数算出部12は、fc1000.Yを用いて、fc1000において量子化に用いるビット数をNmbit=12及びNebit=0からNmbit=23及びNebit=8に変更する。また、他のレイヤーについては、DNN学習装置1は、量子化に用いるビット数をNmbit=3及びNebit=4と設定する。いずれも1ビットの符号ビットと合わせて、8、16又は32ビットとなるようにビット数が設定される。
また、バックワードプロパゲーションでは、DNN学習装置1は、fc1000.dYを用いて、fc1000において量子化に用いるビット数をNmbit=3及びNebit=5からNmbit=23及びNebit=8に変更する。また、DNN学習装置1は、conv1.dYを用いて、conv1において量子化に用いるビット数をNmbit=3及びNebit=5からNmbit=23及びNebit=8に変更する。また、DNN学習装置1は、res¥d¥w_branch2b.dYを用いて、res¥d¥w_branch2bにおいて量子化に用いるビット数をNmbit=3及びNebit=5からNmbit=10及びNebit=5に変更する。ここで、「¥d」は数字1文字を表し、「¥w」はアルファベット1文字を表す。他のレイヤーについては、DNN学習装置1は、量子化に用いるビット数をNmbit=3及びNebit=4と設定する。
ただし、logitsを計算するレイヤーはFP32とするため、fc1000.Y及びfc1000.dYは、FP32とした。
ここで、全レイヤーのデータ型をFP32(Nmbit=23、Nebit=8)とした場合、学習の到達制度は75.92%であった。また、全レイヤーのデータ型をFP8(Nmbit=3、Nebit=4)として共有指数バイアスを用いた場合、学習の到達制度は75.26%であり、対FP32比で0.87%の精度低下となった。これに対して、本実施例に係るDNN学習装置1を用いて上述したビット数且つ共有指数バイアスを用いた場合、学習の到達制度は75.71%であり、対FP32比で0.28%の精度低下にとどまった。すなわち、全レイヤーのデータ型をFP32とした場合に比べて学習時間を短縮させつつ、全レイヤーのデータ型をFP8とした場合に比べて精度が向上した。
(ハードウェア構成)
図14は、コンピュータのハードウェア構成図である。DNN学習装置1は、例えば、図14に示すコンピュータ90により実現される。コンピュータ90は、図14に示すように、プロセッサ91、メモリ92、ハードディスク93及びネットワークインタフェース94を有する。プロセッサ91は、バスを介してメモリ92、ハードディスク93及びネットワークインタフェース94と接続される。
図14は、コンピュータのハードウェア構成図である。DNN学習装置1は、例えば、図14に示すコンピュータ90により実現される。コンピュータ90は、図14に示すように、プロセッサ91、メモリ92、ハードディスク93及びネットワークインタフェース94を有する。プロセッサ91は、バスを介してメモリ92、ハードディスク93及びネットワークインタフェース94と接続される。
ネットワークインタフェース94は、コンピュータ90と外部装置との通信を中継するインタフェースである。
ハードディスク93は、補助記憶装置である。ハードディスク93は、図1に例示した、学習処理管理部11、ビット数算出部12及び学習部13の機能を実現するためのプログラムを含む各種プログラムを格納する。
プロセッサ91は、ハードディスク93から各種プログラムを読み出してメモリ92に展開して実行する。これにより、プロセッサ91は、図1に例示した、学習処理管理部11、ビット数算出部12及び学習部13の機能を実現する。
10 DNN学習装置
11 学習処理管理部
12 ビット数算出部
13 学習部
121 指数ビット数算出部
122 仮数ビット数算出部
131 バイアス演算器
132 SIMD演算器
133 量子化器
11 学習処理管理部
12 ビット数算出部
13 学習部
121 指数ビット数算出部
122 仮数ビット数算出部
131 バイアス演算器
132 SIMD演算器
133 量子化器
Claims (7)
- 学習モデルに含まれる各レイヤーで高精度のデータ型で第1学習を行い、
前記第1学習で量子化を行った場合の第1量子化誤差及び量子化誤差の累積による減衰の程度に応じた閾値を基に各前記レイヤーにおける量子化で用いるビット数を算出し、
算出した前記レイヤー毎のビット数に基づくデータ型での量子化を含む第2学習を行い、収束するまで前記第2学習を繰り返す
処理をコンピュータに実行させることを特徴とする演算プログラム。 - 前記ビット数の算出は、指数部のビット数の算出及び仮数部のビット数の算出を含むことを特徴とする請求項1に記載の演算プログラム。
- 前記閾値以下の減衰量となる前記第1量子化誤差の上限を求め、前記第1量子化誤差の上限を基に前記指数部のビット数を算出することを特徴とする請求項2に記載の演算プログラム。
- 前記学習モデルの出力値を基に認識率が低下しない条件を生成し、前記認識率が低下しない条件を満たす第1量子化誤差の上限を求め、前記第1量子化誤差の上限を基に前記仮数部のビット数を算出することを特徴とする請求項2又は3に記載の演算プログラム。
- 前記第1学習及び前記第2学習を含む前記学習モデルの学習は複数のイテレーションを含むエポックを繰り返すことで実行され、
複数の所定エポックにおいて前記第1学習を実行し、
前記所定エポックにおける前記第1学習の最後のイテレーションにおいて各前記レイヤーにおける量子化で用いるビット数を算出し、
次の前記所定エポックに達する又は前記学習が収束するまで、各前記レイヤーにおける量子化の前記データ型を維持して前記第2学習を実行する
ことを特徴とする請求項1に記載の演算プログラム。 - 学習モデルに含まれる各レイヤーで高精度のデータ型で第1学習を行い、
前記第1学習で量子化を行った場合の第1量子化誤差及び量子化誤差の累積による減衰の程度に応じた閾値を基に各前記レイヤーにおける量子化で用いるビット数を算出し、
算出した前記レイヤー毎のビット数に基づくデータ型での量子化を含む第2学習を行い、収束するまで前記第2学習を繰り返す
処理をコンピュータに実行させることを特徴とする演算方法。 - 学習モデルに含まれる各レイヤーで高精度のデータ型で第1学習を行い、前記第1学習を基に算出された前記レイヤー毎のビット数に基づくデータ型での量子化を含む第2学習を収束するまで繰り返す学習部と、
前記第1学習で量子化を行った場合の第1量子化誤差及び量子化誤差の累積による減衰の程度に応じた閾値を基に各前記レイヤーにおける量子化で用いる前記ビット数を算出するビット数算出部と
を備えたことを特徴とする計算機。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2021181901A JP2023069780A (ja) | 2021-11-08 | 2021-11-08 | 演算プログラム、演算方法及び計算機 |
EP22184499.6A EP4177794A1 (en) | 2021-11-08 | 2022-07-12 | Operation program, operation method, and calculator |
US17/864,475 US20230144390A1 (en) | 2021-11-08 | 2022-07-14 | Non-transitory computer-readable storage medium for storing operation program, operation method, and calculator |
CN202210933289.7A CN116108915A (zh) | 2021-11-08 | 2022-08-04 | 非暂态计算机可读记录介质、操作方法和操作设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2021181901A JP2023069780A (ja) | 2021-11-08 | 2021-11-08 | 演算プログラム、演算方法及び計算機 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2023069780A true JP2023069780A (ja) | 2023-05-18 |
Family
ID=82458692
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2021181901A Pending JP2023069780A (ja) | 2021-11-08 | 2021-11-08 | 演算プログラム、演算方法及び計算機 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20230144390A1 (ja) |
EP (1) | EP4177794A1 (ja) |
JP (1) | JP2023069780A (ja) |
CN (1) | CN116108915A (ja) |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11475352B2 (en) | 2018-11-07 | 2022-10-18 | Alibaba Group Holding Limited | Quantizing machine learning models with balanced resolution via damped encoding |
KR20200086581A (ko) | 2019-01-09 | 2020-07-17 | 삼성전자주식회사 | 뉴럴 네트워크 양자화를 위한 방법 및 장치 |
CN112085192B (zh) * | 2019-06-12 | 2024-03-29 | 上海寒武纪信息科技有限公司 | 一种神经网络的量化参数确定方法及相关产品 |
JP7294017B2 (ja) * | 2019-09-13 | 2023-06-20 | 富士通株式会社 | 情報処理装置、情報処理方法および情報処理プログラム |
-
2021
- 2021-11-08 JP JP2021181901A patent/JP2023069780A/ja active Pending
-
2022
- 2022-07-12 EP EP22184499.6A patent/EP4177794A1/en not_active Withdrawn
- 2022-07-14 US US17/864,475 patent/US20230144390A1/en active Pending
- 2022-08-04 CN CN202210933289.7A patent/CN116108915A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
EP4177794A1 (en) | 2023-05-10 |
US20230144390A1 (en) | 2023-05-11 |
CN116108915A (zh) | 2023-05-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20200218982A1 (en) | Dithered quantization of parameters during training with a machine learning tool | |
KR20190034985A (ko) | 인공 신경망의 양자화 방법 및 장치 | |
US20190377548A1 (en) | Arithmetic processing apparatus, control method, and recording medium | |
US11809995B2 (en) | Information processing device and method, and recording medium for determining a variable data type for a neural network | |
US20210097397A1 (en) | Information processing apparatus and information processing method | |
CN112508166A (zh) | 信息处理装置和方法以及存储信息处理程序的记录介质 | |
US20220405561A1 (en) | Electronic device and controlling method of electronic device | |
JP2023069780A (ja) | 演算プログラム、演算方法及び計算機 | |
CN114830137A (zh) | 用于生成预测模型的方法和系统 | |
CN115552424A (zh) | 用于训练包含量化参数的人工神经网络的方法 | |
EP3742283A1 (en) | Arithmetic processing device, method for controlling arithmetic processing device, and program for controlling arithmetic processing device | |
US20210216867A1 (en) | Information processing apparatus, neural network computation program, and neural network computation method | |
US11410036B2 (en) | Arithmetic processing apparatus, control method, and non-transitory computer-readable recording medium having stored therein control program | |
CN110852361B (zh) | 基于改进深度神经网络的图像分类方法、装置与电子设备 | |
US20220245444A1 (en) | System for training an artificial neural network | |
TWI819627B (zh) | 用於深度學習網路的優化方法、運算裝置及電腦可讀取媒體 | |
JP7298266B2 (ja) | 情報処理装置、情報処理方法および情報処理プログラム | |
US20230376769A1 (en) | Method and system for training machine learning models using dynamic fixed-point data representations | |
JP2021124849A (ja) | 演算処理装置、演算処理装置の制御方法及び演算処理プログラム | |
KR20230066700A (ko) | 딥러닝 가속장치를 위한 적응적 파라미터 생성 장치 및 방법 | |
JP2022138606A (ja) | 情報処理装置、情報処理方法ならびにプログラム | |
JP2021111016A (ja) | 演算処理装置、演算処理装置の制御方法及び演算処理プログラム |