JP2023069780A - 演算プログラム、演算方法及び計算機 - Google Patents

演算プログラム、演算方法及び計算機 Download PDF

Info

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
Application number
JP2021181901A
Other languages
English (en)
Inventor
鉄太郎 橋本
Tetsutaro Hashimoto
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2021181901A priority Critical patent/JP2023069780A/ja
Priority to EP22184499.6A priority patent/EP4177794A1/en
Priority to US17/864,475 priority patent/US20230144390A1/en
Priority to CN202210933289.7A priority patent/CN116108915A/zh
Publication of JP2023069780A publication Critical patent/JP2023069780A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/082Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/0464Convolutional networks [CNN, ConvNet]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/0495Quantised networks; Sparse networks; Compressed networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/09Supervised learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2218/00Aspects of pattern recognition specially adapted for signal processing
    • G06F2218/12Classification; Matching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/048Activation 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により実行する技術がある。
特開2020-113273号公報 米国特許出願公開第2020/0143282号明細書
MPTにより学習を行う場合、FPOにより演算が実行されるレイヤーを決定する基準を設定することが望ましい。しかしながら、学習のフェーズによって、FPOを用いるレイヤーが変化するため、事前にFPOを用いるレイヤーを決定することは困難である。
例えば、AccumulationをFPOで行う技術や、重み係数を用いた演算時に量子化を行う技術や、重み係数の更新をFPOで行う技術では、いずれも量子化を行うレイヤーが事前に決定されており、学習フェーズに応じたFPOを実行するレイヤーの決定は困難である。
そこで、本開示では、上記に鑑みてなされたものであって、学習モデルの学習時間を短縮させつつ認識率を向上させる演算プログラム、演算方法及び計算機を提供することを目的とする。
本願の開示する演算プログラム、演算方法及び計算機の一つの態様において、学習モデルに含まれる各レイヤーで高精度のデータ型で第1学習を行い、前記第1学習で量子化を行った場合の第1量子化誤差及び量子化誤差の累積による減衰の程度に応じた閾値を基に各前記レイヤーにおける量子化で用いるビット数を算出し、算出した前記レイヤー毎のビット数に基づくデータ型での量子化を含む第2学習を行い、収束するまで前記第2学習を繰り返す。
本開示によれば、DNNの学習時間を短縮させつつ認識率を向上させることができる。
図1は、DNNの構成の一例を示す図である。 図2は、ダイナミックレンジ起因の量子化誤差を説明するための図である。 図3は、DNN学習装置のブロック図である。 図4は、ResNet-50の場合の誤差の大きさに応じた減衰を示す図である。 図5は、減衰の閾値に応じた誤差を示す図である。 図6は、logitsの計算における内積を表す図である。 図7は、フォワードプロパゲーションにおける浮動小数点数を用いた量子化でのビット数の算出処理のシンタックスの一例を示す図である。 図8は、バックワードプロパゲーションにおける浮動小数点数を用いた量子化でのビット数の算出処理のシンタックスの一例を示す図である。 図9は、フォワードプロパゲーションにおける整数表現を用いた量子化でのビット数の算出処理のシンタックスの一例を示す図である。 図10は、バックワードプロパゲーションにおける整数表現を用いた量子化でのビット数の算出処理のシンタックスの一例を示す図である。 図11は、学習部の詳細を表すブロック図である。 図12は、学習部におけるデータフローの一例を示す図である。 図13は、DNN学習装置による学習処理のフローチャートである。 図14は、コンピュータのハードウェア構成図である。
以下に、本願の開示する演算プログラム、演算方法及び計算機の実施例を図面に基づいて詳細に説明する。なお、以下の実施例により本願の開示する演算プログラム、演算方法及び計算機が限定されるものではない。
[実施形態]
浮動小数点演算の値valueは式(1)により与えられる。式(1)において、sは1ビット固定のサインビットであり、Nebitは指数部eのビット数であり、Nmbitは仮数部mのビット数である。例えば、FP32では、Nebit=8、Nmbit=23である。
Figure 2023069780000002
入力データに非正規化データが存在しない場合、式(1)に共有指数バイアス値bを適用したときのFFPOの値valueは式(2)及び(3)により与えられる。つまり、式(2)は値valueが正規化数である場合の式である。また、共有指数バイアス値bは、量子化の単位で共通の単一値である。
Figure 2023069780000003
Figure 2023069780000004
共有指数バイアス値bは次の式(4)によって与えられ、式(1)に示す浮動小数点演算のダイナミックレンジをシフトさせる。式(4)におけるemaxは、式(5)におけるfmaxの指数項であり、式(5)におけるfは、量子化対象の全要素である。
Figure 2023069780000005
Figure 2023069780000006
<量子化誤差の影響>
図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は、量子化後の最大値を表す。
Figure 2023069780000007
また、他の要因としては、仮数部の丸めに起因する量子化誤差がある。例えば、FP32をFP8に変換する場合、切り捨て時の絶対誤差は次の式(7)で表される。ここで、Nmbitは仮数部mのビット数である。これは切り上げ時も同様に表される。
Figure 2023069780000008
そして、絶対誤差の最大値は、次の式(8)で表される。
Figure 2023069780000009
以上の要因で発生する量子化誤差の認識率への影響について説明する。分類問題(Classification)のDNNの場合、ネットワークの出力値であるLogitsを次の式(9)で表されるSoftmax関数に入力した場合の出力結果が、推定確率とされる。
Figure 2023069780000010
量子化によってlogitsに誤差が生じると、推定確率にも誤差が生じ、認識率の低下につながる。例えば、同一バッチ内でのlogitsの最大値がx1であり2番目に大きい値がx2であり、量子化によりx1とx2とに誤差が生じた場合について説明する。その場合、次の式(10)で表されるように量子化誤差が生じるケースが、最も誤差が大きくなるケースである。
Figure 2023069780000011
この際に、量子化誤差によりx1とx2との大小関係が逆転した場合に認識率が低下する。そうだとすると、次の式(11)を満たせば認識率が低下しないと考えられる。
Figure 2023069780000012
また、誤差逆伝番によりDNNのtopからbottomへ伝搬するactivation gradientsからWeight gradientが計算される。ダイナミックレンジに起因する量子化誤差により、activation gradientsがbottom側へ伝搬して減衰すると、bottom側のweight gradientsの絶対値も減衰し、重み係数が更新される絶対値が減少する。つまり、学習結果が重み係数に反映される量が減るため、同じ学習結果を得るための学習量が増加してしまう。
<DNN学習装置の構成>
図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回あたりの量子化誤差をE とする。このとき、N回の量子化を行った場合の減衰後の値が、相対値でT以上となるようにするために、量子化誤差は以下の式(12)を満たすことが求められる。この場合、Tが減衰の閾値であり、量子化1回値の量子化誤差の上限を規定する値である。
Figure 2023069780000013
すなわち、量子化1回あたりの量子化誤差は相対値で次の式(13)と表される。
Figure 2023069780000014
例えば、ResNet-50の場合、N=112であるので、T=0.9であれば、E =0.00083585である。
ここで求めた式(13)で示される量子化誤差の条件を満たす指数部のビット数の算出について説明する。指数ビット数算出部121は、フォワードプロパゲーションの場合にはtopのactivationを分析対象のテンソルとし、バックワードプロパゲーションの場合にはbottom_diffのgradientを分析対象のテンソルとする。
そして、指数ビット数算出部121は、テンソルの全要素の絶対値の総和を算出する。ここでは、テンソルの全要素の絶対値の総和をΣ|D[i]|と表す。
次に、指数ビット数算出部121は、テンソルの要素を絶対値で小さい順にソートする。ここでは、ソートした配列をDabs[1:Nall]と表す。
次に、指数ビット数算出部121は、量子化で飽和される要素を0個とする。すなわち、指数ビット数算出部121は、量子化後の最大値がテンソルの要素の最大値に一致するように量子化の範囲を設定する。例えば、図2におけるグラフの最大値に量子化後のダイナミックレンジの最大値を合わせる。この場合、式(6)において量子化で飽和される要素が無いため、量子化1回あたりの量子化誤差であるE は、次の式(14)で表される。
Figure 2023069780000015
そして、指数ビット数算出部121は、ソートした配列を1から順に式(13)から求まる次の数式(15)を満たす上限まで加算する。
Figure 2023069780000016
この場合の最後に加算された要素であるDabs[Nzero]が、量子化誤差を規定する式(13)をみたす最大値となる。
次に、指数ビット数算出部121は、次の式(16)を用いてテンソルのダイナミックレンジRdynを算出する。
Figure 2023069780000017
この式(16)で表されるダイナミックレンジを用いて、指数ビット数算出部121は、次の式(17)を用いて指数部のビット数を算出する。
Figure 2023069780000018
ここで、減衰の閾値であるTの値の範囲について説明する。図4は、ResNet-50の場合の誤差の大きさに応じた減衰を示す図である。ResNet-50では、量子化が112回繰り返される。量子化の内訳は、Convolutionで48回、BatchNormで48回、eltwiseで16回である。そこで、ResNet-50の場合に、誤差が蓄積すると、E に応じて図4に示すように減衰する。例えば、量子化1回あたりの量子化誤差であるE が0.01の場合、元の数値を1とすると0.99を112乗した値である0.2919が減衰後の値となる。
図5は、閾値に応じた誤差を示す図である。例えば、減衰の閾値Tを0.90、0.95、0.98及び0.99の各値に設定した場合、誤差である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を表す。
Figure 2023069780000019
そして、Xに一律に量子化誤差ε が与えられると、Yの1要素の内積数はCiなので、誤差を含んだ場合のlogitsの計算の入力値は次の式(19)で表され、logitsは次の式(20)で表される。ここで、E は、量子化誤差ε の場合の相対誤差である。
Figure 2023069780000020
Figure 2023069780000021
ここで、量子化誤差は、ランダム性を有し且つ正負も存在する一様分布である。一様分布は再生性を有さないためその線型和は一様分布でなくなり、量子化誤差は、線型和を繰り返すことで分布の形が正規分布のような凸型の分布関数となる。したがって、量子化誤差の確率分布は、正規分布で近似できる。
正規分布は再現性を有するため、式(21)に示される正規分布にしたがう確率変数Xiの線形結合は式(22)に示される正規分布にしたがう。ここで、α=1、μ=μ、σ=σであれば、N(nμ、nσ)となる。
Figure 2023069780000022
Figure 2023069780000023
量子化誤差は、上述したように正規分布に近似できるため、正規分布にしたがうとして扱うことができ、量子化誤差を持つ値をNadd回加算するとして、誤差が最も大きくなる場合の合計値は、次の数式(23)で表される。このことから、誤差による変動量は加算回数の平方根で緩和可能である。そこで、上述した式(15)における量子化誤差は、Ci回の加算数で平準化されるため、誤差はCiの平方根で緩和可能である。
Figure 2023069780000024
また、重み係数であるWを[-1,1]の正規分布とすると、正の側では、値の累積は0.4に漸近する。ここで、標準偏差をσで表して4σで1とした場合、値の累積は0.1となる。また、負の側は同様に-0.4に漸近するため、重み係数W全体では総和が0になるが、量子化誤差εQmの項を残すため、負の側の影響を半分に減らす。これにより、重み係数Wの総和は、0.4/4/2=0.05と緩和することができる。
以上のことから、式(20)で表されるlogitsは、緩和されて次の式(24)で表される。
Figure 2023069780000025
この場合、式(11)で示される認識率が低下しない条件は、次の式(25)となり、最終的に量子化誤差は次の式(26)を満たすことが好ましい。
Figure 2023069780000026
Figure 2023069780000027
ここで、仮数部の丸め処理の量子化誤差の最大値は式(8)であることから、次の式(27)と表すことができる。
Figure 2023069780000028
この式(27)を変形することで、仮数部のビット数を求める次の式(28)が得られる。
Figure 2023069780000029
そこで、仮数ビット数算出部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のビット数である。
Figure 2023069780000030
次に、図8は、バックワードプロパゲーションにおける浮動小数点数を用いた量子化でのビット数の算出処理のシンタックスの一例を示す図である。図7の最終行は、C言語の式で記載すると、次の数式(30)で表すことができる。例えば、指数ビット数算出部121及び仮数ビット数算出部122は、図8に示されるシンタックスで表される処理を実行することで、error gradient nのビット数(1,Nebit,Nmbit)を算出することができる。このビット数が、レイヤーn-1のビット数である。
Figure 2023069780000031
図9は、フォワードプロパゲーションにおける整数表現を用いた量子化でのビット数の算出処理のシンタックスの一例を示す図である。整数表現を用いた量子化の場合、指数部が存在しないため、指数ビットが不要となる。図9の最終行は、C言語の式で記載すると、次の数式(31)で表すことができる。例えば、指数ビット数算出部121及び仮数ビット数算出部122は、図9に示されるシンタックスで表される処理を実行することで、出力テンソルnのビット数(1,Nmbit)を算出することができる。このビット数が、レイヤーn+1のビット数である。
Figure 2023069780000032
次に、図10は、バックワードプロパゲーションにおける整数表現を用いた量子化でのビット数の算出処理のシンタックスの一例を示す図である。図10の最終行は、C言語の式で記載すると、次の数式(32)で表すことができる。例えば、指数ビット数算出部121及び仮数ビット数算出部122は、図10に示されるシンタックスで表される処理を実行することで、error gradient nのビット数(1,Nmbit)を算出することができる。このビット数が、レイヤーn-1のビット数である。
Figure 2023069780000033
図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において、ステップ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と接続される。
ネットワークインタフェース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 量子化器

Claims (7)

  1. 学習モデルに含まれる各レイヤーで高精度のデータ型で第1学習を行い、
    前記第1学習で量子化を行った場合の第1量子化誤差及び量子化誤差の累積による減衰の程度に応じた閾値を基に各前記レイヤーにおける量子化で用いるビット数を算出し、
    算出した前記レイヤー毎のビット数に基づくデータ型での量子化を含む第2学習を行い、収束するまで前記第2学習を繰り返す
    処理をコンピュータに実行させることを特徴とする演算プログラム。
  2. 前記ビット数の算出は、指数部のビット数の算出及び仮数部のビット数の算出を含むことを特徴とする請求項1に記載の演算プログラム。
  3. 前記閾値以下の減衰量となる前記第1量子化誤差の上限を求め、前記第1量子化誤差の上限を基に前記指数部のビット数を算出することを特徴とする請求項2に記載の演算プログラム。
  4. 前記学習モデルの出力値を基に認識率が低下しない条件を生成し、前記認識率が低下しない条件を満たす第1量子化誤差の上限を求め、前記第1量子化誤差の上限を基に前記仮数部のビット数を算出することを特徴とする請求項2又は3に記載の演算プログラム。
  5. 前記第1学習及び前記第2学習を含む前記学習モデルの学習は複数のイテレーションを含むエポックを繰り返すことで実行され、
    複数の所定エポックにおいて前記第1学習を実行し、
    前記所定エポックにおける前記第1学習の最後のイテレーションにおいて各前記レイヤーにおける量子化で用いるビット数を算出し、
    次の前記所定エポックに達する又は前記学習が収束するまで、各前記レイヤーにおける量子化の前記データ型を維持して前記第2学習を実行する
    ことを特徴とする請求項1に記載の演算プログラム。
  6. 学習モデルに含まれる各レイヤーで高精度のデータ型で第1学習を行い、
    前記第1学習で量子化を行った場合の第1量子化誤差及び量子化誤差の累積による減衰の程度に応じた閾値を基に各前記レイヤーにおける量子化で用いるビット数を算出し、
    算出した前記レイヤー毎のビット数に基づくデータ型での量子化を含む第2学習を行い、収束するまで前記第2学習を繰り返す
    処理をコンピュータに実行させることを特徴とする演算方法。
  7. 学習モデルに含まれる各レイヤーで高精度のデータ型で第1学習を行い、前記第1学習を基に算出された前記レイヤー毎のビット数に基づくデータ型での量子化を含む第2学習を収束するまで繰り返す学習部と、
    前記第1学習で量子化を行った場合の第1量子化誤差及び量子化誤差の累積による減衰の程度に応じた閾値を基に各前記レイヤーにおける量子化で用いる前記ビット数を算出するビット数算出部と
    を備えたことを特徴とする計算機。
JP2021181901A 2021-11-08 2021-11-08 演算プログラム、演算方法及び計算機 Pending JP2023069780A (ja)

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)

* Cited by examiner, † Cited by third party
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 富士通株式会社 情報処理装置、情報処理方法および情報処理プログラム

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) 演算処理装置、演算処理装置の制御方法及び演算処理プログラム