JP2020190901A - 演算処理装置、演算処理装置の制御プログラム及び演算処理装置の制御方法 - Google Patents
演算処理装置、演算処理装置の制御プログラム及び演算処理装置の制御方法 Download PDFInfo
- Publication number
- JP2020190901A JP2020190901A JP2019095513A JP2019095513A JP2020190901A JP 2020190901 A JP2020190901 A JP 2020190901A JP 2019095513 A JP2019095513 A JP 2019095513A JP 2019095513 A JP2019095513 A JP 2019095513A JP 2020190901 A JP2020190901 A JP 2020190901A
- Authority
- JP
- Japan
- Prior art keywords
- offset
- calculation
- fixed
- decimal point
- position information
- 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
- 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/49905—Exception handling
- G06F7/4991—Overflow or underflow
- G06F7/49915—Mantissa overflow or underflow in handling 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
-
- 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/047—Probabilistic or stochastic 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/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- 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/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Software Systems (AREA)
- Molecular Biology (AREA)
- Artificial Intelligence (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Mathematical Physics (AREA)
- Evolutionary Computation (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Neurology (AREA)
- Complex Calculations (AREA)
- Debugging And Monitoring (AREA)
Abstract
【課題】固定小数点を用いた学習における学習精度を向上させる演算処理装置、演算処理装置の制御プログラム及び演算処理装置の制御方法を提供する。【解決手段】演算実行部101は、小数点位置情報及び調整量を取得し、取得した前記小数点位置情報及び前記調整量を用いて同種の固定小数点演算を複数回繰り返す。スケールファクタ算出部102は、各回の演算に関する統計情報から回毎に次回の小数点位置情報を取得し演算実行部101に提供する。オフセット算出部103は、次回の小数点位置情報と以前の回の小数点位置情報との比較結果を基に調整量を算出して演算実行部101に提供する。【選択図】図4
Description
本発明は、演算処理装置、演算処理装置の制御プログラム及び演算処理装置の制御方法に関する。
ニューラルネットワークを多層に拡張したDeep Neural Network(DNN)は、従来困難であった問題に適用できることが明らかとなり、様々な分野への適用が期待される。ここで、ニューラルネットワークとは脳の神経細胞(ニューロン)を機械的に模したものである。
ニューラルネットワークは、全体で1つの関数になっており、入力が与えられれば、その入力にしたがって決まった値を出力する。ニューラルネットワークが既存のプログラムと異なる箇所は、入力に対して教師信号とも呼ばれる目的の値が与えられれば、その目的の値に合わせて出力する値を目的に近づけるように調整することができる点である。ニューラルネットワークには、内部に多数のパラメタが存在し、それらのパラメタの値を調整することにより、目的とする関数の形を実現していく。
そして、ニューラルネットワークの計算は全て数学的に表現できるため、ニューラルネットワークの出力の評価結果に対する各パラメタの偏微分を求めることができる。ここで、評価結果とは、2乗誤差などである。各パラメタに対して、評価結果が小さくなる方向、すなわち、負の偏微分の方向にパラメタを変化させて評価結果を小さくすることで、ニューラルネットワークが目的の関数の形に近づく。ここで、各パラメタの偏微分は、一度に求めることは困難であるが、誤差逆伝播法と呼ばれる方法により、ニューラルネットワークにおける出力側の層から入力側の層へと機械的に求めることができる。このような多層のニューラルネットワークによる機械的学習手法が、深層学習と呼ばれる。深層学習においては、乗算、積和演算、ベクトル乗算を含む様々な演算が実行される。
ところで、深層学習では、個々の演算精度への要求は、他のコンピュータ処理ほど厳密ではない。例えば、従来の信号処理等では、プログラマは極力桁あふれを発生させないようにコンピュータプログラムを開発する。一方、深層学習では、大きな値がある程度飽和することは許容される。深層学習では、複数の入力データを畳み込み演算するときの係数(重み)の調整が主な処理となり、入力データのうち、極端なデータは重視されないことが多いからである。また、大量のデータを繰り返し用いて係数を調整するため、一度飽和された値も、学習の進行に合わせて桁調整を行なうことで、飽和されずに係数調整に反映できるようになるためである。
そこで、このような深層学習の特性を考慮し、深層学習用の演算処理装置のチップ面積の削減、電力性能の向上等を図るため、浮動小数点数を用いないで、固定小数点数による整数演算を用いることが考えられる。浮動小数点数演算よりも整数演算の方が回路構成を簡素にできるからである。
しかしながら、固定小数点数は、ダイナミックレンジが狭いので、浮動小数点数より演算精度が劣化する場合がある。したがって、深層学習においても、小さな値を表現する精度、すなわち、有効桁数について、配慮が求められる。このため、固定小数点数を拡張した技術が提案されている。
具体的には、深層学習では、表現されるデータの範囲が、データの種類や学習の経過により変化する。そこで、固定小数点数を用いて演算を行う場合、小数点位置を表すスケールファクタが適切に調整されることが好ましい。スケールファクタとは、元の小数表現と量子化した整数表現、すなわち固定小数点数で表現されたデータとを繋ぎ合わせる乗数である。固定小数点表現は、元の値に対してスケールファクタ2ω(ωは整数)が掛けられて、小数部が切り捨てられた符号付整数値として表現される。例えば、値xの固定小数点表現は、R(x,ω)はR(x,ω)=ceil(x×2ω)と表される。ここで、ceil関数は、小数点以下の切り捨てを行う関数である。この場合、2ωがスケールファクタである。例えば、深層学習におけるイテレーション毎に計算結果のビット位置に関する統計情報を取得し、取得した統計情報に基づいてスケールファクタを決定する従来技術がある。
このスケールファクタを決定する従来技術では、以下の手順でスケールファクタの更新が行われる。まず、入力データから出力データが計算される。そして、全ての出力データを生成し終えると統計情報を解析し、イテレーションで参照されるスケールファクタが更新される。更新されたスケールファクタは、次のイテレーションにおけるデータの出力時に使用される。
なお、固定小数点演算の技術として、固定小数点精度でニューラルネットワークの処理を行うが、重み値は浮動小数点精度で保持し、重み更新時に浮動小数点演算を行う従来技術がある。また、画像処理において周辺画素値の平均値を固定小数点演算で求める際に平均値を求める範囲に応じて小数点位置を決定する従来技術がある。また、音声信号のデジタル処理において、処理対象の信号の平均値に基づいて固定小数点演算の小数点位置を求める従来技術がある。
しかしながら、上述した前段のイテレーションの統計情報から求めたスケールファクタを次のイテレーションの出力に用いる方法では、統計情報を取得するイテレーションとその統計情報に基づいて推定したスケールファクタを使用するイテレーションとが異なる。生成されるデータの分布がイテレーション間で異なる場合、推定したスケールファクタでは正しく値を表すことが困難である。
例えば、学習の初期段階では値の分布の変化が大きい。このため、学習の初期段階では、固定小数点表現の場合にはオーバーフローが発生する確率が上昇し精度を落とす要因となる。そこで、学習の初期段階では、推定されたスケールファクタにオフセットを加えて固定小数点数の上位桁に余裕を持たせることが好ましい。このようにすることで、オーバーフローを抑制し精度を維持することができる。逆に、学習がある程度進むと値の分布の変化が小さくなる。このため、スケールファクタにオフセットによる調整を加えなくても、固定小数点表現を行うことができる。
このように、固定小数点表現における適切な小数点位置は学習の経過に依存して変化する。このため、従来の前段のイテレーションの統計情報から求めたスケールファクタを次のイテレーションの出力に用いて固定小数点表現を行う方法では、固定小数点数を用いた学習における学習精度を向上させることは困難である。
また、固定小数点精度でのニューラルネットワーク処理で重み値に関しては浮動小数点数を用いる従来技術では、学習中のデータにしたがって小数点位置を変化させることは行われておらず、学習精度を向上させることは困難である。また、周辺画素値の平均値を求める範囲に応じて小数点位置を決定する従来技術では、計算式を用いて小数点位置を求めるため、実際の計算に則した小数点位置を得ることは困難であり、学習精度を向上させることは困難である。また、処理対象の信号の平均値に基づいて固定小数点演算の小数点位置を求める従来技術では、計算結果の分布に応じて小数点位置を決定するため適切な小数点位置の決定は困難であり、学習精度を向上させることは困難である。
開示の技術は、上記に鑑みてなされたものであって、固定小数点を用いた学習における学習精度を向上させる演算処理装置、演算処理装置の制御プログラム及び演算処理装置の制御方法を提供することを目的とする。
本願の開示する演算処理装置、演算処理装置の制御プログラム及び演算処理装置の制御方法の一つの態様において、演算実行部は、小数点位置情報及び調整量を取得し、取得した前記小数点位置情報及び前記調整量を用いて同種の固定小数点演算を複数回繰り返す。取得部は、各回の演算に関する統計情報から回毎に次回の小数点位置情報を取得し前記演算実行部に提供する。調整量算出部は、次回の前記小数点位置情報と以前の回の前記小数点位置情報との比較結果を基に調整量を算出し前記演算実行部に提供する。
1つの側面では、本発明は、固定小数点を用いた学習における学習精度を向上させることができる。
以下に、本願の開示する演算処理装置、演算処理装置の制御プログラム及び演算処理装置の制御方法の実施例を図面に基づいて詳細に説明する。なお、以下の実施例により本願の開示する演算処理装置、演算処理装置の制御プログラム及び演算処理装置の制御方法が限定されるものではない。
図1は、実施例に係る深層学習システムの概略構成図である。本実施例では、深層学習システムが、ホストマシン1、深層学習実行装置2及び利用者端末3を有する。
ホストマシン1と深層学習実行装置2は、専用インタフェースで接続される。利用者は、利用者端末3を用いてホストマシン1に接続し、深層学習実行装置2を操作して深層学習を実行させる。ホストマシン1は、利用者端末3から入力された利用者からの指示にしたがい、深層学習実行装置2が実行するプログラムを作成して深層学習実行装置2へ送信する。深層学習実行装置2は、送信されたプログラムを実行し結果のデータを生成する。
図2は、ホストマシンの一例のハードウェア構成図である。ホストマシン1は、例えば、高速入出力インタフェース11、プロセッサ12、RAM(Random Access Memory)13、内部バス14、HDD(Hard Disk Drive)15及び低速入出力インタフェース16を有する。
プロセッサ12は、高速入出力インタフェース11及びRAM13に接続される。また、プロセッサ12は、内部バス14を介してHDD15及び低速入出力インタフェース16に接続される。プロセッサ12は、HDD15に格納されたプログラムを読み出してRAM13に展開して実行する。
高速入出力インタフェース11は、プロセッサ12とホストマシン1の外部にある深層学習実行装置2とを接続する。高速入出力インタフェース11は、例えば、PCI(Peripheral Component Interconnect) Expressなどのプロトコルを用いて通信を行う。
RAM13は、プロセッサ12が実行するプログラムやデータを格納する。RAM13は、例えば、DDR(Double Data Rate)4−SDRAM(Synchronous Dynamic Random Access Memory)である。
内部バス14は、プロセッサ12と比較して低速な周辺機器とプロセッサ12とを接続する。そして、内部バス14は、周辺機器とプロセッサ12との間の通信を中継する。HDD15は、プロセッサ12が実行するプログラムやデータを永続的に格納する。
低速入出力インタフェース16は、利用者端末3とホストマシン1との通信におけるインタフェースである。低速入出力インタフェース16は、例えば、USB(Universal Serial Bus)によるキーボード及びマウスとの通信や、イーサネット(登録商標)によるネットワーク越しの通信に使用される。
図3は、深層学習実行装置の一例のハードウェア構成図である。深層学習実行装置2は、例えば、高速入出力インタフェース21、制御部22、深層学習実行プロセッサ23、メモリアクセスコントローラ24及び内部RAM25を有する。この深層学習実行装置2が、「演算処理装置」の一例にあたる。
深層学習実行プロセッサ23は、制御部22及びメモリアクセスコントローラ24に接続する。深層学習実行プロセッサ23は、制御部22を介してホストマシン1から提供されたプログラム及びデータを受信する。そして、深層学習実行プロセッサ23は、受信したプログラム及びデータを用いて深層学習の処理を実行する。
高速入出力インタフェース21は、ホストマシン1との通信インタフェースである。高速入出力インタフェース21は、例えば、PCI Expressなどのプロトコルを用いて通信を行う。
制御部22は、ホストマシン1からの指令にしたがって、深層学習実行プロセッサ23の駆動や内部RAM25に対するプログラム及びデータの転送を行う。
メモリアクセスコントローラ24は、制御部22及び深層学習実行プロセッサ23からの信号を選択して、メモリアクセスのためのプロトコルにしたがって内部RAM25に対するメモリアクセスを実行する。
内部RAM25は、深層学習実行プロセッサ23が実行するプログラム、深層学習の処理対象のデータ及び深層学習の処理結果のデータを格納する。内部RAM25としては、例えば、DDR4−SDRAM、より高速なGDDR(Graphics Double Data Rate)5のメモリ、又はより広帯域のHBM(High Bandwidth Memory)2のメモリ等が用いられる。
次に、図4を参照して、本実施例に係る深層学習実行装置2による深層学習処理について説明する。図4は、実施例に係る深層学習実行装置のブロック図である。
深層学習実行装置2は、演算実行部101、スケールファクタ算出部102及びオフセット算出部103を有する。これらの各部は、図3に示した深層学習実行プロセッサ23が、内部RAM25の上にプログラムを展開して実行することで実現される。
演算実行部101は、同種の固定小数点演算を複数回繰り返して学習処理を行い深層学習を実行する。演算実行部101は、学習処理として具体的には、学習データをミニバッチと呼ばれる集合に分割し、分割された学習データに対して順伝播処理、逆伝播処理、パラメタ更新処理を実行する。
演算実行部101は、順伝播処理、逆伝播処理、パラメタ更新処理は、多層のニューラルネットワークにおいて行われる。それぞれの階層で実行される計算の内容は異なるが、演算実行部101は、例えば、畳み込み(Convolution)演算及び内積演算とも呼ばれるフルコネクト(Full Connect)演算を実行する。また、演算実行部101は、例えば、正規化(Batch Normalization)、活性化演算とも呼ばれるReLU(Rectified Linear Unit)演算、プーリング(Pooling)演算、ソフトマックス(Softmax)演算及び誤差評価演算などを実行する。例えば、畳み込み演算は、フィルタ演算とも呼ばれ、主に画像データに対して実行される。
畳み込み演算では、入力及び出力の全てのチャネルの組み合わせに対してフィルタが用意されており、全ての入力チャネルの結果の合計にバイアスを加えることで出力値が算出される。また、フルコネクト演算は、内積演算とも呼ばれる。フルコネクト演算では、入力及び出力全ての組に対して重みが定義されており、全ての入力とその重みの積とを求めて、それらの和にバイアスを加えることで出力値が算出される。
例えば、画像分類の場合、演算実行部101は、ニューラルネットワークにおける初めのいくつかの層は畳み込み演算、ReLU演算及びプーリング演算を行う。その後、演算実行部101は、フルコネクト演算及びReLU演算を行い、最後に、ソフトマックス演算を行って入力画像に対する分類カテゴリの確率を出力する。
ここで、1つのバッチに対する順伝播処理、逆伝播処理及びパラメタ更新処理をまとめた単位が、1イテレーションと呼ばれる。また、全ての学習データに対する学習処理の単位が、1エポックと呼ばれる。1エポックは複数のイテレーションを含む。演算実行部101は、全てのミニバッチを処理し終えたら学習率と呼ばれるパラメタを更新し、再び同じデータに対して学習処理を実行する。このイテレーションで実行される演算が、複数回繰り返される「同種の固定小数点演算」の一例にあたる。
図5は、演算処理の概要を示す図である。演算実行部101は、図5に示す流れで各イテレーションにおける演算を繰り返す。演算実行部101は、各イテレーションにおける順伝播処理、逆伝播処理及びパラメタ更新処理において図5で示す固定小数点演算を実行する。
具体的には、演算実行部101は、入力D1〜DNのそれぞれを取得する。また、演算実行部101は、前回のイテレーションで取得した統計情報から求められたスケールファクタを取得する。ここで、本実施例で用いるスケールファクタは、2ω(ωは整数)で表される値である。演算実行部101は、固定小数点表現されていない数に対してスケールファクタである2ωを乗算し、さらに小数部を切り捨てて符号付整数値として表現すことで、元の数の固定小数点表現を行う。例えば、演算実行部101は、値xの固定小数点表現であるR(x,ω)を、R(x,ω)=ceil(x×2ω)により求める。このスケールファクタが、「小数点位置情報」の一例にあたる。本実施例に係るスケールファクタは、ビットを用いて表される固定小数点数における小数点以下を表すビットのうちの最下位ビットを指定する実数である。ただし、スケールファクタは、固定小数点数における小数点位置を表す情報であれば、他の表現を用いることもできる。
さらに、演算実行部101は、オフセットをオフセット算出部103から取得する。オフセットは、固定小数点表現を行う場合に上位桁に余裕を持たせるための値である。オフセットは、定期的に更新される値である。
そして、演算実行部101は、通常の演算処理の場合、入力D1〜DNに対して固定小数点演算P1を実行する。具体的には、演算実行部101は、入力D1〜DNを用いて演算を行い固定小数点表現前の演算結果を求める。例えば、8ビットの入力データを用いて乗算を行う演算の場合、演算実行部101は、演算を実行して演算結果を16ビットのレジスタに格納する。すなわち、この状態では、入力データに対する情報の欠落は発生しない。そして、演算実行部101は、固定小数点表現前の演算結果をスケールファクタ算出部102へ出力する。その後、演算実行部101は、演算結果に対してスケールファクタの冪指数にオフセットを加えた値を冪指数として用いて、出力データの固定小数点表現を行い出力する固定小数点数を算出する。その後、演算実行部101は、算出した固定小数点数を固定小数点演算P1の演算結果として出力する。
例えば、スケールファクタが2ωであれば、スケールファクタの冪指数はωである。さらに、オフセットがdの場合、演算実行部101は、ω+dを固定小数点表現に用いる冪指数とする。すなわち、演算実行部101は、値xの固定小数点表現であるR(x,ω)をceil(x×2ω+d)として算出する。このスケールファクタの冪指数にオフセットを加えた値が、「調整後小数点位置情報」の一例にあたる。
演算実行部101は、図5に示した固定小数点演算P1の演算結果として出力したデータを次のイテレーションの入力として演算を繰り返す。そして、演算実行部101は、指定回数のイテレーションの実行を終えると学習を終了する。
一方、演算実行部101は、予め決められたオフセット更新イテレーションに達するとオフセット更新処理を実行する。ここで、繰り返されるイテレーションのうち、1つ又は複数のイテレーションがオフセット更新イテレーションとして決定される。例えば、オフセット更新イテレーションは、所定回数毎のイテレーションとされる。本実施例では、オフセット更新イテレーションは、10万イテレーション毎に繰り返される。他にも、例えば、1エポック毎の間隔でオフセット更新イテレーションが繰り返されてもよい。
オフセット更新処理の場合、演算実行部101は、入力D1〜DNを用いて演算を行い固定小数点表現前の計算結果を求める。そして、演算実行部101は、固定小数点表現前の計算結果をオフセット算出部103へ出力する。その後、演算実行部101は、更新されたオフセットをオフセット算出部103から取得する。そして、演算実行部101は、スケールファクタ算出部102から取得したスケールファクタ及びオフセット算出部103から取得した新たなオフセットを用いて、入力D1〜DNに対して固定小数点演算P1を実行して演算結果を出力する。
図4に戻って説明を続ける。スケールファクタ算出部102は、演算実行部101が算出した固定小数点表現前の計算結果を取得する。そして、スケールファクタ算出部102は、取得した固定小数点表現前の計算結果を用いて図5に示すスケールファクタ更新処理P2を実行する。以下にスケールファクタ更新処理P2の詳細を説明する。
スケールファクタ算出部102は、演算実行部101から取得した固定小数点表現前の計算結果の統計情報を求める。本実施例では、スケールファクタ算出部102は、非符号となる最上位ビット位置(MSB:Most Significant Bit)のヒストグラムを求めて、非符号となる最上位ビット位置の分布を統計情報として取得する。統計情報には、他にも、非ゼロの最下位ビット位置の分布、非符号となる最上位ビットの最大値、非ゼロの最下位ビット位置の最小値などがある。この固定小数点表現前の計算結果の統計情報が、「各回の演算に関する統計情報」の一例にあたる。
次に、スケールファクタ算出部102は、求めた統計情報を解析して次回のイテレーションで使用するスケールファクタを算出する。その後、スケールファクタ算出部102は、算出したスケールファクタを次回のイテレーションで使用するスケールファクタとして演算実行部101へ出力する。また、オフセット更新イテレーションの場合、スケールファクタ算出部102は、算出したスケールファクタをオフセット算出部103へ出力する。このスケールファクタ算出部102が、「取得部」の一例にあたる。
オフセット算出部103は、オフセット更新イテレーションに達すると、そのイテレーションの入力データから求められた固定小数点表現前の演算結果を演算実行部101から取得する。また、オフセット算出部103は、そのイテレーションで求められたスケールファクタの入力をスケールファクタ算出部102から受ける。そして、オフセット算出部103は、図5に示すオフセット更新処理P3を実行してオフセットを更新する。ここで、本実施例では、オフセット更新イテレーションは、10万イテレーション毎に繰り返される。すなわち、オフセット算出部103は、10万イテレーション毎にオフセットの更新を行う。この10万イテレーションが、「所定回」の一例にあたる。以下に、オフセット更新処理P3の詳細を説明する。
オフセット算出部103は、取得した固定小数点表現前の計算結果を解析して統計情報を求める。そして、オフセット算出部103は、求めた統計情報からスケールファクタを求める。ここで、このスケールファクタの求め方は、スケールファクタ算出部102による方法と同じでよい。次に、オフセット算出部103は、今回の入力データから求めたスケールファクタの冪指数とスケールファクタ算出部102から取得したスケールファクタの冪指数の差を求めて新たなオフセットとする。その後、オフセット算出部103は、新たに求めたオフセットを演算実行部101へ出力する。このオフセット算出部103が、「調整量算出部」の一例にあたり、オフセットが「調整量」の一例にあたる。
ここで、本実施例に係るオフセットについて説明する。例えば、本実施例では、値xの固定小数点表現であるR(x,ω)は、R(x,ω)=ceil(x×2ω)と表される。この場合、2の冪数であるωの値を減らすことで固定小数点表現を行う場合の上位桁に余裕を持たせることができる。例えば、10進表現の0.75を2進数の固定小数点表現について説明する。0.75は、2進表現では、0.11と表される。ω=7であれば、R(0.75,7)=ceil(0.75×27)=96である。これに対して、ω=4であれば、R(0.75,4)=ceil(0.75×24)=12である。すなわち、ωを7から4に減らすことで、ビットで表した場合、上位桁の猶予を3ビット増やすことができる。すなわち、オフセットに応じた値をスケールファクタの冪指数から減らすことで、上位桁に余裕を与えることができ、桁あふれを回避することができる。
ここで、図6及び7を参照して、各イテレーションにおける処理の関係を説明する。図6は、通常の演算処理時のイテレーション間の各処理の関係を表す図である。また、図7は、オフセット更新時のイテレーション間の各処理の関係を表す図である。ここでは、n−1番目のイテレーション#n−1とn番目のイテレーション#nを例に説明する。
通常の演算処理の場合、図6に示すように、イテレーション#n−1では、固定小数点演算P11が実行される。さらに、固定小数点演算P11の中で求められた固定小数点表現前の演算結果を用いてスケールファクタ更新処理P21が実行される。そして、イテレーション#nでは、固定小数点演算P11により出力されたデータを入力データとして、スケールファクタ更新処理P21で算出されたスケールファクタ及び前のイテレーションでも用いたオフセットを用いて、固定小数点演算P12が実行される。さらに、固定小数点演算P12の中で求められた固定小数点表現前の演算結果を用いてスケールファクタ更新処理P22が実行される。スケールファクタ更新処理P22により算出されたスケールファクタは、次のイテレーションで使用される。
このように、通常の演算処理の場合、1つ前のイテレーションで算出されたスケールファクタを用いて、次のイテレーションで固定小数点表現が実行される。ここで、イテレーション間で生成されるデータの分布、すなわち統計情報が異なる場合、1つ前のイテレーションで算出されたスケールファクタを用いると、既存のオフセットを用いても桁あふれなどが発生して、正しく値を表すことができないおそれがある。
そこで、オフセットを調整することで、統計情報が異なる状態が発生した場合の桁あふれなどを抑制して、正しい値を求めることが好ましい。例えば、本実施例のように、10万イテレーション毎にオフセット更新イテレーションを設けて、オフセットを更新することで、その時点での統計情報に合わせたオフセットを設定することができる。
例えば、イテレーション#nがオフセット更新イテレーションの場合、図7に示すように、イテレーション#nでは、固定小数点演算P11により出力されたデータを用いて統計情報算出用演算P41が行われる。ここで、統計情報算出用演算P41は、固定小数点演算P12における固定小数点表示前の計算結果を算出する演算である。次に、イテレーション#nで算出される固定小数点表示前の計算結果からスケールファクタを算出するスケールファクタ取得処理P42が実行される。そして、イテレーション#n−1で求められたスケールファクタとイテレーション#n−1で求められたスケールファクタとを比較してオフセットを再評価してオフセットを更新するオフセット再評価処理P31が実行される。その後、通常の演算処理に戻り、固定小数点演算P11の出力を入力データとして、スケールファクタ更新処理P21で算出されたスケールファクタ及びオフセット再評価処理P31で求められた新たなオフセットを用いて、固定小数点演算P12が実行される。さらに、固定小数点演算P12の中で求められた固定小数点表現前の演算結果を用いてスケールファクタ更新処理P22が実行される。スケールファクタ更新処理P22により算出されたスケールファクタは、次回のイテレーションで使用される。
以上のように、オフセット更新イテレーションである図7のイテレーション#nでは、紙面に向かって一点鎖線より上のオフセット更新処理が実行される。その後、イテレーション#nでは、オフセット更新処理で求められた新たなオフセットを用いて、一点鎖線より下の通常の演算処理が実行される。
次に、図8及び9を参照して、深層学習の全体的な流れを説明する。図8は、深層学習全体の処理のフローチャートである。図9は、学習処理の実行におけるオフセット処理及び通常の演算処理の切り替えのフローチャートである。
深層学習実行装置2は、プログラム及び学習データの入力をホストマシン1から受ける。そして、深層学習実行装置2は、学習データをミニバッチに分割して、順伝播処理、逆伝播処理及びパラメタ更新処理を含む学習処理を実行する(ステップS1)。この1回の学習処理が1イテレーションにあたる。
その後、深層学習実行装置2は、指定回数学習処理を実行したか否かを判定する(ステップS2)。指定回数の学習処理の実行が完了していない場合(ステップS2:否定)、深層学習実行装置2は、ステップS1へ戻る。これに対して、指定回数の学習処理の実行が完了した場合(ステップS2:肯定)、深層学習実行装置2は、深層学習を終了する。
このように、深層学習実行装置2は、全体の処理として、学習データ全体に対する処理を指定回数実行する。また、実装によっては、深層学習実行装置2が実行する深層学習は、誤差として表される学習結果の評価値が一定の範囲内に収まったことを以て学習終了の条件としてもよい。
図9に示した各処理は、図8におけるステップS1で実行される処理の一例にあたる。
深層学習実行装置2は、現在のイテレーションがオフセット更新イテレーションか否かを判定する(ステップS21)。現在のイテレーションがオフセット更新イテレーションでない場合(ステップS21:否定)、深層学習実行装置2は、ステップS23へ進む。
これに対して、現在のイテレーションがオフセット更新イテレーションの場合(ステップS21:肯定)、深層学習実行装置2は、オフセット更新処理を実行する(ステップS22)。
その後、深層学習実行装置2は、1つ前のイテレーションで求められたスケールファクタ及びオフセットを用いて通常の演算処理を実行する(ステップS23)。
次に、図10を参照して、オフセット更新処理の流れを説明する。図10は、オフセット更新処理のフローチャートである。図10に示す各処理は、図9におけるステップS22で実行される処理の一例にあたる。
オフセット算出部103は、自己が有する統計情報を初期化する(ステップS101)。
次に、オフセット算出部103は、1つ前のイテレーションの統計情報から算出されたスケールファクタをスケールファクタ算出部102から取得する(ステップS102)。
演算実行部101は、1つ前のイテレーションで実行された固定小数点演算の出力を入力データとして取得する(ステップS103)。
次に、演算実行部101は、取得した入力データを用いて計算を実行する(ステップS104)。これにより、演算実行部101は、固定小数点表現前の計算結果を取得する。そして、演算実行部101は、算出した固定小数点表現前の計算結果をオフセット算出部103へ出力する。
オフセット算出部103は、現在のイテレーションにおける固定小数点表現前の計算結果の入力を演算実行部101から受ける。次に、オフセット算出部103は、取得した固定小数点表現前の計算結果から得られる統計情報を、その時点で有する統計情報に加えて統計情報を更新する(ステップS105)。
次に、オフセット算出部103は、全ての入力データの処理が完了したか否かを判定する(ステップS106)。処理を終えていない入力データが残っている場合(ステップS106:否定)、オフセット算出部103は、ステップS103へ戻る。
これに対して、全ての入力データの処理が完了した場合(ステップS106:肯定)、オフセット算出部103は、現在のイテレーションの統計情報に基づくスケールファクタを算出する(ステップS107)。
次に、オフセット算出部103は、現在のイテレーションの統計情報に基づくスケールファクタの冪指数と1つ前のイテレーションの統計情報に基づくスケールファクタの冪指数との差を求めてオフセットを算出する(ステップS108)。その後、オフセット算出部103は、求めた新しいオフセットを演算実行部101へ出力する。
ここで、図11を参照して、本実施例に係るオフセット算出処理の流れを説明する。図11は、スケールファクタの冪指数の差をオフセットとする場合のオフセット算出処理のフローチャートである。
オフセット算出部103は、1つ前のイテレーションで得られたスケールファクタの冪指数をω1とする(ステップS111)。
オフセット算出部103は、現在のイテレーションで得られたスケールファクタの冪指数をωとする(ステップS112)。
そして、オフセット算出部103は、ω−ω1によりオフセットを算出する(ステップS113)。
次に、図12を参照して、通常の演算処理の流れを説明する。図12は、通常の演算処理のフローチャートである。図12に示す各処理は、図9におけるステップS23で実行される処理の一例にあたる。
スケールファクタ算出部102は、自己が有する統計情報を初期化する(ステップS201)。
次に、演算実行部101は、前回のイテレーションの統計情報から算出されたスケールファクタをスケールファクタ算出部102から取得する(ステップS202)。
次に、演算実行部101は、取得したスケールファクタの冪指数にオフセットを加える(ステップS203)。
演算実行部101は、前回のイテレーションで実行された固定小数点演算の出力を入力データとして取得する(ステップS204)。
次に、演算実行部101は、入力データを用いて計算を実行する(ステップS205)。これにより、演算実行部101は、固定小数点表現前の計算結果を取得する。そして、演算実行部101は、算出した固定小数点表現前の計算結果をスケールファクタ算出部102へ出力する。
スケールファクタ算出部102は、現在のイテレーションにおける固定小数点表現前の計算結果の入力を演算実行部101から受ける。次に、スケールファクタ算出部102は、取得した固定小数点表現前の計算結果から得られる統計情報を、その時点で有する統計情報に加えて統計情報を更新する(ステップS206)。
演算実行部101は、オフセットを加えたスケールファクタを用いて固定小数点数を算出する(ステップS207)。
そして、演算実行部101は、算出した固定小数点数を出力する(ステップS208)。
その後、演算実行部101は、全ての入力データの処理が完了したか否かを判定する(ステップS209)。処理を終えていない入力データが残っている場合(ステップS209:否定)、演算実行部101は、ステップS204へ戻る。
これに対して、全ての入力データの処理が完了した場合(ステップS209:肯定)、スケールファクタ算出部102は、現在のイテレーションの統計情報を用いて次回のイテレーションのスケールファクタを算出する(ステップS210)。
その後、スケールファクタ算出部102は、算出したスケールファクタを演算実行部101へ出力して、演算実行部101が使用するスケールファクタを更新する(ステップS211)。
以上に説明したように、本実施例に係る深層学習実行装置は、統計情報の変化に応じてオフセットを調整して固定小数点演算を実行する。これにより、演算結果の正確性を向上させることができ、学習精度を向上させることができる。
ここで、オフセット更新時のイテレーションでは、オフセット更新用の演算と通常の演算との2回の演算を行うため、オフセットの更新による計算コストが、オフセットの更新をしない場合に比べて発生する。ただし、オフセットの更新はそれほど頻繁に行わなくてもよく、10万イテレーション程度の間隔でよい。そのため、オフセット更新に要する計算コスト及び実行時間は学習処理全体から見るとそれほど大きくない。したがって、学習に要する計算コスト及び実行時間の増加を抑えつつ、学習精度を向上することができる。
(変形例)
本実施例では、1つ前のイテレーションで求められたスケールファクタの冪指数から現在のイテレーションで求められたスケールファクタを減算したものをオフセットとして用いた。ただし、オフセットは他の指標を用いてもよい。どのような指標をオフセットとするかは、取り扱う学習データや演算内容に合わせて決定されることが好ましい。
本実施例では、1つ前のイテレーションで求められたスケールファクタの冪指数から現在のイテレーションで求められたスケールファクタを減算したものをオフセットとして用いた。ただし、オフセットは他の指標を用いてもよい。どのような指標をオフセットとするかは、取り扱う学習データや演算内容に合わせて決定されることが好ましい。
図13は、オフセットとして用いることが可能な指標のいくつかの例を表した図である。ここでは、オフセット更新イテレーションの1つ前のイテレーションからN個前までのイテレーションで求められた各スケールファクタを、2ω1,2ω2,・・・,2ωNとする。また、オフセット更新イテレーションで求められたスケールファクタを2ωとする。すなわち、オフセット更新イテレーションのスケールファクタの冪指数はωであり、オフセット更新イテレーションの1つ前のイテレーションからN個前までのイテレーションのスケールファクタの冪指数は、ω1,ω2,・・・・ωNである。そして、ω,ω1,ω2,・・・・ωNの平均をmean(ω)とし、標準偏差をσ(ω)とし、最大値をmax(ω)とし、min(ω)とする。
例えば、図13では、オフセットの指標の一例として、オフセット201〜205が記載されている。オフセット201は、スケールファクタの冪指数の最小値から最大値を減算した値である。オフセット202は、スケールファクタの冪指数の最小値から最小値を減算した値の半分の小数点以下を切り捨てた値である。オフセット203は、スケールファクタの冪指数の平均値から最大値を減算した値の小数点以下を切り捨てた値である。オフセット204は、スケールファクタの冪指数の最小値から平均値を減算した値の小数点以下を切り捨てた値である。オフセット205は、スケールファクタの冪指数の標準偏差の符号を反転させて小数点以下を切り捨てた値である。以下に各オフセットを算出する場合の処理の流れについて説明する。
図14は、スケールファクタの冪指数の最小値から最大値を減算した値をオフセットとする場合のオフセットの算出処理のフローチャートである。
オフセット算出部103は、1つ前からN個前までのイテレーションで得られたスケールファクタをスケールファクタ算出部102から取得する。そして、オフセット算出部103は、1つ前からN個前までのイテレーションで得られたスケールファクタの冪指数をω1,ω2,・・・・ωNとする(ステップS311)。
次に、オフセット算出部103は、現在のイテレーションの統計情報からスケールファクタを算出する。そして、オフセット算出部103は、現在のイテレーションで得られたスケールファクタの冪指数をωとする(ステップS312)。
次に、オフセット算出部103は、ω,ω1,ω2,・・・・ωNの最大値をmax(ω)とする(ステップS313)。
次に、オフセット算出部103は、ω,ω1,ω2,・・・・ωNの最小値をmin(ω)とする(ステップS314)。
その後、オフセット算出部103は、min(ω)−max(ω)をオフセットとする(ステップS315)。
図15は、スケールファクタの冪指数の最小値から最小値を減算した値の半分の小数点以下を切り捨てた値をオフセットとする場合のオフセットの算出処理のフローチャートである。
オフセット算出部103は、1つ前からN個前までのイテレーションで得られたスケールファクタをスケールファクタ算出部102から取得する。そして、オフセット算出部103は、1つ前からN個前までのイテレーションで得られたスケールファクタの冪指数をω1,ω2,・・・・ωNとする(ステップS321)。
次に、オフセット算出部103は、現在のイテレーションの統計情報からスケールファクタを算出する。そして、オフセット算出部103は、現在のイテレーションで得られたスケールファクタの冪指数をωとする(ステップS322)。
次に、オフセット算出部103は、ω,ω1,ω2,・・・・ωNの最大値をmax(ω)とする(ステップS323)。
次に、オフセット算出部103は、ω,ω1,ω2,・・・・ωNの最小値をmin(ω)とする(ステップS324)。
その後、オフセット算出部103は、(min(ω)−max(ω))の1/2の小数点以下を切り捨てた値をオフセットとする(ステップS325)。
図16は、スケールファクタの冪指数の平均値から最大値を減算した値の小数点以下を切り捨てた値をオフセットとする場合のオフセットの算出処理のフローチャートである。
オフセット算出部103は、1つ前からN個前までのイテレーションで得られたスケールファクタをスケールファクタ算出部102から取得する。そして、オフセット算出部103は、1つ前からN個前までのイテレーションで得られたスケールファクタの冪指数をω1,ω2,・・・・ωNとする(ステップS331)。
次に、オフセット算出部103は、現在のイテレーションの統計情報からスケールファクタを算出する。そして、オフセット算出部103は、現在のイテレーションで得られたスケールファクタの冪指数をωとする(ステップS332)。
次に、オフセット算出部103は、ω,ω1,ω2,・・・・ωNの最小値をmin(ω)とする(ステップS333)。
次に、オフセット算出部103は、ω,ω1,ω2,・・・・ωNの平均値をmean(ω)とする(ステップS334)。
その後、オフセット算出部103は、(min(ω)−mean(ω))の小数点以下を切り捨てた値をオフセットとする(ステップS335)。
図17は、スケールファクタの冪指数の最小値から平均値を減算した値の小数点以下を切り捨てた値をオフセットとする場合のオフセットの算出処理のフローチャートである。
オフセット算出部103は、1つ前からN個前までのイテレーションで得られたスケールファクタをスケールファクタ算出部102から取得する。そして、オフセット算出部103は、1つ前からN個前までのイテレーションで得られたスケールファクタの冪指数をω1,ω2,・・・・ωNとする(ステップS341)。
次に、オフセット算出部103は、現在のイテレーションの統計情報からスケールファクタを算出する。そして、オフセット算出部103は、現在のイテレーションで得られたスケールファクタの冪指数をωとする(ステップS342)。
次に、オフセット算出部103は、ω,ω1,ω2,・・・・ωNの最大値をmax(ω)とする(ステップS343)。
次に、オフセット算出部103は、ω,ω1,ω2,・・・・ωNの平均値をmean(ω)とする(ステップS344)。
その後、オフセット算出部103は、(mean(ω)−max(ω))の小数点以下を切り捨てた値をオフセットとする(ステップS345)。
図18は、スケールファクタの冪指数の標準偏差の符号を反転させて小数点以下を切り捨てた値をオフセットとする場合のオフセットの算出処理のフローチャートである。
オフセット算出部103は、1つ前からN個前までのイテレーションで得られたスケールファクタをスケールファクタ算出部102から取得する。そして、オフセット算出部103は、1つ前からN個前までのイテレーションで得られたスケールファクタの冪指数をω1,ω2,・・・・ωNとする(ステップS351)。
次に、オフセット算出部103は、現在のイテレーションの統計情報からスケールファクタを算出する。そして、オフセット算出部103は、現在のイテレーションで得られたスケールファクタの冪指数をωとする(ステップS352)。
次に、オフセット算出部103は、ω,ω1,ω2,・・・・ωNの標準偏差をσ(ω)とする(ステップS353)。
その後、オフセット算出部103は、−σ(ω)の小数点以下を切り捨てた値をオフセットとする(ステップS354)。
以上に説明したように、オフセットを表す指標には様々な値を利用することができる。そして、オフセットを表す指標としていずれを用いても、学習処理の各段階において統計情報に合わせたオフセットを設定することができ、より確からしい計算結果を得ることができ、学習精度を向上させることができる。
1 ホストマシン
2 深層学習実行装置
3 利用者端末
11 高速入出力インタフェース
12 プロセッサ
13 RAM
14 内部バス
15 HDD
16 低速入出力インタフェース
21 高速入出力インタフェース
22 制御部
23 深層学習実行プロセッサ
24 メモリアクセスコントローラ
25 内部RAM
101 演算実行部
102 スケールファクタ算出部
103 オフセット算出部
2 深層学習実行装置
3 利用者端末
11 高速入出力インタフェース
12 プロセッサ
13 RAM
14 内部バス
15 HDD
16 低速入出力インタフェース
21 高速入出力インタフェース
22 制御部
23 深層学習実行プロセッサ
24 メモリアクセスコントローラ
25 内部RAM
101 演算実行部
102 スケールファクタ算出部
103 オフセット算出部
Claims (8)
- 小数点位置情報及び調整量を取得し、取得した前記小数点位置情報及び前記調整量を用いて同種の固定小数点演算を複数回繰り返す演算実行部と、
各回の演算に関する統計情報から回毎に次回の小数点位置情報を取得し前記演算実行部に提供する取得部と、
次回の前記小数点位置情報と以前の回の前記小数点位置情報との比較結果を基に調整量を算出し前記演算実行部に提供する調整量算出部と
を備えたことを特徴とする演算処理装置。 - 前記調整量算出部は、前記演算実行部により前記固定小数点演算が所定回数繰り返される毎に、前記調整量の算出及び提供を行うことを特徴とする請求項1に記載の演算処理装置。
- 前記小数点位置情報は、前記固定小数点演算で用いる複数のビットで表される固定小数点数における少数点以下を表すビットのうちの最下位ビットを指定する実数であることを特徴とする請求項1又は2に記載の演算処理装置。
- 前記小数点位置情報は、2の冪数で表されることを特徴とする請求項1〜3のいずれか一つに記載の演算処理装置。
- 前記演算実行部は、前記取得部から提供された前記小数点位置情報の冪数に前記調整量を加えて前記固定小数点演算に用いる調整後小数点位置情報とすることを特徴とする請求項1〜4のいずれか一つに記載の演算処理装置。
- 前記取得部は、各回の演算における固定小数点表現が行われる前の計算結果の統計情報から前記小数点位置情報を取得することを特徴とする請求項1〜5のいずれか一つに記載の演算処理装置。
- 同種の固定小数点演算を複数回繰り返す演算処理装置の制御プログラムであって、
各回の演算に関する統計情報から回毎に次回の小数点位置情報を取得し
次回の前記小数点位置情報と以前の回の前記小数点位置情報との比較結果を基に調整量を算出し、
次回の前記小数点位置情報及び前記調整量を用いて次回の前記固定小数点演算を実行する
処理を前記演算処理装置に実行させることを特徴とする演算処理装置の制御プログラム。 - 同種の固定小数点演算を複数回繰り返す演算処理装置の制御方法であって、
各回の演算に関する統計情報から回毎に次回の小数点位置情報を取得し
次回の前記小数点位置情報と既に取得した以前の回の前記小数点位置情報との比較結果を基に調整量を算出し、
次回の前記小数点位置情報及び前記調整量を用いて次回の前記固定小数点演算を実行する
処理を前記演算処理装置に実行させることを特徴とする演算処理装置の制御方法。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019095513A JP2020190901A (ja) | 2019-05-21 | 2019-05-21 | 演算処理装置、演算処理装置の制御プログラム及び演算処理装置の制御方法 |
US16/854,947 US20200371746A1 (en) | 2019-05-21 | 2020-04-22 | Arithmetic processing device, method for controlling arithmetic processing device, and non-transitory computer-readable storage medium for storing program for controlling arithmetic processing device |
EP20171091.0A EP3742283A1 (en) | 2019-05-21 | 2020-04-23 | Arithmetic processing device, method for controlling arithmetic processing device, and program for controlling arithmetic processing device |
CN202010362770.6A CN111985604A (zh) | 2019-05-21 | 2020-04-30 | 运算处理设备、用于控制运算处理设备的方法和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019095513A JP2020190901A (ja) | 2019-05-21 | 2019-05-21 | 演算処理装置、演算処理装置の制御プログラム及び演算処理装置の制御方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2020190901A true JP2020190901A (ja) | 2020-11-26 |
Family
ID=70470737
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2019095513A Pending JP2020190901A (ja) | 2019-05-21 | 2019-05-21 | 演算処理装置、演算処理装置の制御プログラム及び演算処理装置の制御方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20200371746A1 (ja) |
EP (1) | EP3742283A1 (ja) |
JP (1) | JP2020190901A (ja) |
CN (1) | CN111985604A (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11275562B2 (en) * | 2020-02-19 | 2022-03-15 | Micron Technology, Inc. | Bit string accumulation |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04190399A (ja) | 1990-11-26 | 1992-07-08 | Oki Electric Ind Co Ltd | Vselp符号化方式 |
JPH0784975A (ja) | 1993-09-10 | 1995-03-31 | Hitachi Ltd | 情報処理装置および学習演算処理方法 |
JP2008059287A (ja) | 2006-08-31 | 2008-03-13 | Brother Ind Ltd | 画像処理装置および画像処理プログラム |
US10552119B2 (en) * | 2016-04-29 | 2020-02-04 | Intel Corporation | Dynamic management of numerical representation in a distributed matrix processor architecture |
JP2019057249A (ja) * | 2017-09-22 | 2019-04-11 | 富士通株式会社 | 演算処理装置および演算処理方法 |
CN108733349B (zh) * | 2018-07-27 | 2023-05-05 | 珠海一微半导体股份有限公司 | 一种基于定点数的三角函数运算电路 |
-
2019
- 2019-05-21 JP JP2019095513A patent/JP2020190901A/ja active Pending
-
2020
- 2020-04-22 US US16/854,947 patent/US20200371746A1/en not_active Abandoned
- 2020-04-23 EP EP20171091.0A patent/EP3742283A1/en not_active Withdrawn
- 2020-04-30 CN CN202010362770.6A patent/CN111985604A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
CN111985604A (zh) | 2020-11-24 |
US20200371746A1 (en) | 2020-11-26 |
EP3742283A1 (en) | 2020-11-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112074806A (zh) | 使用减小的位宽向量的块浮点计算 | |
US11475284B2 (en) | Information processing apparatus, neural network program, and processing method for neural network | |
CN110008952B (zh) | 一种目标识别方法及设备 | |
US10579334B2 (en) | Block floating point computations using shared exponents | |
JP2020077143A (ja) | 学習プログラム、学習方法、情報処理装置 | |
CN111758104B (zh) | 适合于硬件实现的神经网络参数优化方法、神经网络计算方法和装置 | |
KR20210015990A (ko) | 학습된 파라미터의 형태변환을 이용한 컨벌루션 신경망 파라미터 최적화 방법, 컨벌루션 신경망 연산방법 및 그 장치 | |
US20190377548A1 (en) | Arithmetic processing apparatus, control method, and recording medium | |
US20210097397A1 (en) | Information processing apparatus and information processing method | |
JP2020190901A (ja) | 演算処理装置、演算処理装置の制御プログラム及び演算処理装置の制御方法 | |
US11551087B2 (en) | Information processor, information processing method, and storage medium | |
EP3796233A1 (en) | Information processing device and method, and program | |
US11809995B2 (en) | Information processing device and method, and recording medium for determining a variable data type for a neural network | |
US20220405561A1 (en) | Electronic device and controlling method of electronic device | |
CN114830137A (zh) | 用于生成预测模型的方法和*** | |
JP2020067897A (ja) | 演算処理装置、学習プログラム及び学習方法 | |
US11410036B2 (en) | Arithmetic processing apparatus, control method, and non-transitory computer-readable recording medium having stored therein control program | |
JP2021140493A (ja) | 情報処理装置、情報処理方法およびプログラム | |
CN113971453A (zh) | 一种数据归一化处理方法、存储介质和计算机设备 | |
TWI830940B (zh) | 資訊處理電路以及資訊處理電路的設計方法 | |
JP7371499B2 (ja) | 演算処理装置、演算処理装置の制御方法及び演算処理プログラム | |
JP2023069780A (ja) | 演算プログラム、演算方法及び計算機 | |
JP2022138606A (ja) | 情報処理装置、情報処理方法ならびにプログラム | |
KR20230126110A (ko) | 보완된 신경망 양자화 연산을 이용한 데이터 처리 방법 및 데이터 처리 장치 | |
JP2021124849A (ja) | 演算処理装置、演算処理装置の制御方法及び演算処理プログラム |