JP6540841B1 - 演算処理装置、情報処理装置、情報処理方法、およびプログラム - Google Patents
演算処理装置、情報処理装置、情報処理方法、およびプログラム Download PDFInfo
- Publication number
- JP6540841B1 JP6540841B1 JP2018033037A JP2018033037A JP6540841B1 JP 6540841 B1 JP6540841 B1 JP 6540841B1 JP 2018033037 A JP2018033037 A JP 2018033037A JP 2018033037 A JP2018033037 A JP 2018033037A JP 6540841 B1 JP6540841 B1 JP 6540841B1
- Authority
- JP
- Japan
- Prior art keywords
- statistical information
- bit
- circuit
- arithmetic
- acquisition
- 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.)
- Active
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/499—Denomination or exception handling, e.g. rounding or overflow
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/18—Complex mathematical operations for evaluating statistical data, e.g. average values, frequency distributions, probability functions, regression analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/499—Denomination or exception handling, e.g. rounding or overflow
- G06F7/49942—Significance control
-
- 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
- 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/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
- 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)
- Data Mining & Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Mathematical Physics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Software Systems (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Health & Medical Sciences (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Evolutionary Biology (AREA)
- Operations Research (AREA)
- Probability & Statistics with Applications (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Neurology (AREA)
- Executing Machine-Instructions (AREA)
Abstract
Description
ニーズが高まっている。深層学習は、多層ニューラルネットワーク(DNN:Deep Neural Network)を用いた機械学習の手法ということができる。図1は、ニューラルネットワ
ークの構成を例示する図である。ニューラルネットワークは、神経細胞(ニューロン)をコンピュータ上にモデル化したものである。神経細胞は、細胞体と、他の細胞体から入力される信号を受ける樹状突起と、他の細胞体に信号を出力する軸索とを有する。また、信号を出力する軸索の末端と信号を受ける樹状突起との間にはシナプスと呼ばれる信号の伝達構造が形成されている。ニューラルネットワークでは、神経細胞間でのシナプスを介した情報伝達がモデル化されている。
そこで、このような深層学習の特性を考慮し、深層学習用の演算処理装置のチップ面積の削減、電力効率の向上等を図るため、浮動小数点数を用いないで、固定小数点数による演算を用いることが考えられる。浮動小数点数演算よりも固定小数点演算の方が回路構成を簡素にできるからである。
数点数より演算精度が劣化する場合がある。図3に、32ビット浮動小数点数、16ビット固定小数点数、8ビット固定小数点数による処理と、推論の精度の関係をモデル化して例示する。図では、「固定小数点数」が「整数」と記述されている。固定小数点数が整数に限定される訳ではない。固定小数点数は2進整数とも理解できるので、本明細書中では、固定小数点数を整数という場合がある。図のように、ビット幅を削減すると演算精度が低下することが予測される。演算精度が低下すると、深層学習がうまく実施できない場合もあり得る。すなわち、深層学習では、フォーワッド方向およびバックワード方向に積和演算が多数回繰り返され、演算結果が固定小数点数のダイナミックレンジを超えてしまうこともあるからである。そこで、演算精度を改善する技術により、ビット幅を削減することに起因する上記課題を克服することが望まれる。
、重み係数の最適化のため図4のネットワークを1入力データ(1枚の画像データ)あたり100回通したとするとデータが10,000,000回多層ニューラルネットワークを通過する。
さらに、図5に例示したように、各階層で重みとパラメータとの内積(積和演算)が実行されるため、さらに数万倍の演算が行われる。このような場合のデータの桁位置が図6に例示されている。深層学習が初期、中盤、終盤と進行するにしたがって、データの桁位置がずれていく。したがって、固定小数点で単純に深層学習を継続すると、有効桁が少なくなり、究極的には、計算が破綻してしまうことが予想される。したがって、深層学習においても、小さな値を表現する精度、すなわち、有効桁数について、配慮が求められる。このため、固定小数点数を拡張した技術が提案されている。
置を使うのではなく、変数ごとに適した小数点位置(Qフォーマット)が用いられる。例えば、Q3.12フォーマットは、符号ビット1桁、整数部3桁、小数点以下12桁の16ビットデータを定義する。Mixed Fixed Pointでは、変数ごとに、小数点位置、つまり
、整数部の桁数と小数点以下の桁数が異なるものとして処理される。
能である。例えば、DSPがResult = Saturate (((in1 (演算子) in2) >> S), 16)とい
う命令を実行すると、演算結果を S ビットシフトし、下位16bit を残し、上位ビットを
飽和処理する。S ≧0 の場合には、DSPは、演算結果を算術右シフトし、すなわち、符号ビットを埋め込んで右シフトし、下位ビットを削除する。一方、S < 0 の場合は、DSPは、演算結果を算術左シフト、すなわち、符号ビットを維持して左シフトし、補数での下位ビットを削除する。
)、半精度浮動小数点数(Half Precision Floating Point)、固定小数点数(Fixed point)、Dynamic Fixed Point数を適用した場合の認識エラー率を例示する(非特許文献1
参照)。なお、図7で、第1行目のデータ(Goodfellow et al.(2013))は、他の論文の
評価結果である。また、図7の表で、Propは、認識(フォーワッド方向)および学習(バックワード方向)おけるデータ伝搬時のビット幅を示す。また、Up.は、重み係数アップ
デート時のビット幅を示す。さらに、PI MNIST、MNIST、CIFAR−10、およびSVHNは、深層学習に用いられたデータセットを示す。
ラー率が大きく増加しない。しかしながら、上記従来の技術においては、小数点位置を、
オーバーフロー率を基に1ビット調整するため学習結果の精度が劣化する。例えば、k個
のデータの学習ごとに小数点位置を調整する場合、小数点位置が適正位置からn ビットずれている場合、小数点位置が適切な位置に調整されるまでに、(n * k)回の学習が進む。
その結果、小数点位置が適正な位置になるまでに、飽和するデータやアンダーフローするデータが増え、学習が収束しない、あるいは、学習結果の精度劣化につながるおそれがある。
1つの側面では本発明の目的は、深層学習を固定小数点数で精度よく実行し、回路規模と消費電力を削減できるようにすることである。
[比較例]
図8から図10を参照して、比較例に係る情報処理装置での深層学習について説明する。図8は、比較例に係る深層学習の手順を例示する図である。
全結合層2(fc2)の処理により実行される。深層学習は、ミニバッチと呼ばれる処理の単
位に区切られて実行される。ここで、ミニバッチとは、学習の対象となる入力データの集合{(Ini,Ti),i=1〜N}をいう。また、ミニバッチは、このような個々の入力データの組(N個のデータ)で実行される学習の処理単位のことをいう。ここで、Iniは、入力データ(ベクトル)、Tiは正解データ(ベクトル)である。比較例の情報処理装置は、以下のように、深層学習中の所定数(k回)のミニバッチごとに、各層の各変数のオーバーフロー回数を取得してコンピュータプログラム中の変数に蓄積し、深層学習に用いる変数の固定小数点位置を自動調整する。
ユーザ指定により各変数の初期小数点位置を決定し、学習を開始する(S1)。そして、情報処理装置は、k回のミニバッチを学習中に、各層の各変数のオーバーフローの回数を
統計情報として保存する(S2)。このとき、情報処理装置は、学習を実行するプログラム中の各変数に対する演算、代入等がなされる毎に、オーバーフローの有無を判定し、回数を計数し、回数を保持するカウンタ変数に代入する。
)、カウンタ変数に蓄積したオーバーフロー回数からオーバーフロー率を求め、オーバーフロー率を基に、固定小数点数の小数点位置を調整する(S4)。そして、情報処理装置は、S2の処理に戻り、学習を進める。
例では、1層目の畳み込み層(Conv_1)において、入力データini=(x0,...,xn)と、重み(Wij)との間で、畳み込み演算が実行され、z0,...,zj,...等が計算される。また、z0,...,zj,...等に対して、活性化関数が演算され、u0,...,uj,...等が計算される。情報処理装置
は、この1層目の畳み込み層(Conv_1)での変数z0,...,zj,...のオーバーフロー回数をカ
ウンタ変数Conv_1_zに蓄積する。また、情報処理装置は、この1層目の畳み込み層(Conv_1)での変数u0,...,uj,...等でのオーバーフロー回数をカウンタ変数Conv_1_uに蓄積する
。例えば、カウンタ変数Conv_1_uが配列の場合、カウンタ変数Conv_1_u(1)には、変数u0,...,uj,...のうち、オーバーフローした変数の個数が累積される。また、カウンタ変
数Conv_1_u(2)には、変数u0,...,uj,...のうち、2倍するとオーバーフローする変数
の個数が累積される。
エラーδ0(7),...,δj(7),...を算出する。そして、情報処理装置は、エラーδ0(7),...,δj(7),...を基に、逆方向の伝播を実行する。その結果、情報処理装置は、下位の階層(例えば、結合層1(fc1))の出力でのエラーδ0(6),...,δj(6),...δn(6)と重みの変数Wijの次回の重みへの差分値ΔWijを算出する。また、差分値ΔWijを用いて重みWijを更新する。このとき、情報処理装置は、エラーδ0(6),...,δj(6),...,δn(6)でのオーバーフロー回数をカウンタ変数fc2_δに蓄積する。また、情報処理装置は、差分値ΔWijでのオー
バーフロー回数をカウンタ変数fc2_ΔWに蓄積する。また、情報処理装置は、重みの変数Wijでのオーバーフロー回数をカウンタ変数fc2_Wに蓄積する。また、2倍するとオーバー
フローする変数の個数もそれぞれ蓄積する。
ラーを逆方法に伝播させながら、重みの差分を計算し、重みを更新する。情報処理装置は、以上のような順伝播と逆伝播をk組の入力データを用いて、k回繰り返す。情報処理装置は、このようなk回のミニバッチによる学習終了後、各変数に対応するカウンタ変数のオーバーフロー回数を基に、各変数の固定小数点位置を更新する。
かを判定する(C3)。学習が終了するのは、全結合層(fc2)でのエラーが基準値以下と
なるか、または、学習回数が規定の最大値に達した場合である。
のため、小数点位置が不適切な状態で学習処理が繰り返される。つまり、学習中に、望ましくないレベルで固定小数点数データの飽和、あるいは、アンダーフローが発生し、学習結果の精度劣化につながり、収束が遅くなる恐れがある。
[実施形態1]
<統計情報>
を実行する。
(1)非符号となる最上位ビット位置の分布
中結果が40bitで、固定小数点数の桁あわせのために14bit右シフトされるデータに対する例である。非符号となる最上位ビット位置とは、正数に対しては、ビットが1となっている最上位のビット位置をいう。また、負数に対しては、ビット0となっている最上位のビット位置をいう。非符号となる最上位ビット位置は、例えば、ビットの並びを最上位ビットであるbit[39]から最下位ビットであるbit[0]としたとき、符号ビットbit[39]と異なるbit[k]のうち、インデックスkが最大のものをいう。非符号となる最上位ビット位置の分
布が得られると、絶対値としての値の分布範囲が把握可能となる。
数点があると仮定する。実施形態1では、情報処理装置1のプロセッサ10の演算回路および演算回路内のレジスタは、命令のオペランドで指定されるレジスタのビット数(例えば、16ビット)以上のビット幅(例えば、40ビット)を有する。ただし、情報処理装置1のプロセッサ10の演算回路および演算回路内のレジスタのビット幅が40ビットに限定される訳ではない。また、演算結果は、例えば、16ビットのレジスタ等、演算回路よりも少ないビット幅のレジスタ(命令のオペランドで指定されるレジスタ)に格納される。その結果、演算結果は(例えば、40ビット)、オペランドで指定されるシフト量でシフトし、ビット0未満に該当するビットは所定の丸め処理がなされ、オペランドで指定されるレジスタのビット幅を越えるデータ(ビット15を越えるデータ)は、飽和処理される。
が小数点位置を2ビット左にシフトすると、飽和される領域が2ビット拡張され、アンダーフローが発生する領域が2ビット減少する。また、例えば、情報処理装置がこの固定小数点数を2ビットだけ正方向にシフト(固定小数点数を左方向に2ビットシフト)すると、最上位ビットが18の位置にシフトし、飽和される領域が2ビット減少し、アンダーフローが発生する領域が2ビット拡張される。すなわち、情報処理装置1が小数点位置を2ビット右にシフトすると、飽和される領域が2ビット減少し、アンダーフローが発生する領域が2ビット拡張される。
を直ちに決定できる。例えば、情報処理装置1は、飽和されるデータが指定の割合以下になるように固定小数点位置を決定すればよい。つまり、一例としては、情報処理装置1は、データのアンダーフローが所定の程度となることよりもデータの飽和が所定の程度となること優先して、固定小数点位置を決定できる。
(2)非符号となる最下位ビット位置の分布
であるbit[0]までの並びとしたとき、符号ビットbit[39]と異なるbit[k]のうち、インデ
ックスkが最小のものをいう。また、非符号となる最下位ビット位置の分布では、データ
の桁数が把握される。
(3)非符号となる最上位ビット位置の最大値
つまり、適切な小数点位置の決定に利用できる。
(4)非符号となる最下位ビット位置の最小値
できる。
ルユニット13は、ベクトル演算用の演算器131、統計情報取得部102、データ変換部103を含む。スカラユニット14は、スカラ演算用の演算器141、統計情報取得部102、データ変換部103を含む。
1−1の演算結果は、積和演算用のアキュムレータ132と、ベクトル演算用の演算器131−2に入力される。
算用の演算器131−2は、命令によって指定される演算モードに従って、ベクトル演算用の演算器131−1の演算結果、あるいは、ベクトル演算用アキュムレータレジスタ(Vector ACC)のデータ、あるいは、それらを加算した結果を出力する。アキュムレータレジスタはベクトルレジスタファイルのビット数(例えば、16ビット)以上のビット幅(例えば、40ビット)を有する。
報取得部102およびデータ変換部103に入力する。統計情報取得部102で取得された統計情報は、統計情報集約部104に入力される。また、データ変換部103でデータ変換されたデータは、図示しないセレクタを介して、データ用メモリ22(Write Data0,…, Write Data n)にストアされるか、ベクトルレジスタ(Vector Reg2)に保持される
。
のデータを演算するスカラ用の演算器141を有する。スカラ用の演算器141の演算結果は、メモリインターフェース(Memory I/F)を介してデータ用メモリ22のアドレス(例えば、Addr)にストアされる。また、スカラ用の演算器141の演算結果は、セレクタ101を介して、統計情報取得部102およびデータ変換部103に入力される。
。セレクタ101は、選択したデータを、統計情報取得部102およびデータ変換部103に入力する。統計情報取得部102は、セレクタ101から入力されたデータから統計情報を取得し、統計情報集約部104に入力する。
。ここで、bは0または1のいずれかである。統計情報取得部102Aは、この入力データを処理し、非符号となる最上位ビット位置を1とし、他のビット位置を0とする出力データ(out(40bit))を生成する。入力データが全ビット0、または、全ビット1の場合は、統計情報取得部102Aは、39bit目に1を、38bit以下に0を出力する。なお、以下の説明では、プロセッサ10の演算回路のデータは40ビットのデータで例示されるが、プロセッサ10の演算回路のデータが40ビットに限定される訳ではない。
値を有するビットによる排他論理和値は0となり、符号ビットin[39]と異なる値を有する
ビットによる排他論理和値は1となる。
の固定小数点数データ中の符号ビットと一致しない最上位のビットの位置にフラグビットを設定する回路の一例である。
分布を取得する処理が例示される。図17では、ハードウェア回路である統計情報集約部104Aの処理が、擬似コードで記述されている。
ータの配列in[j][i]の各列iの要素の値が、すべての行(j=0から7)に対して加算される。したがって、図15とは異なり、図17の擬似コードでは、出力データ(配列要素)out[j]は、log2(SIMDデータ数)ビット(図17の例では3ビット)の整数である。なお、図
17では、SIMDデータ数(並列処理されるデータ数)は8であると想定したが、SIMDデータ数が8に限定される訳ではない。
の発生回数を計数する。統計情報集約部104Aは、計数結果を出力データout0からout39にそれぞれ格納する。
で取得したデータは、一回の演算においては、論理和演算されることなくそのまま出力データoutに出力される。outは、統計情報格納部105に引き渡すデータである。
する統計情報集約部104Bは、符号ビットと一致しない最下位のビットの位置を真値で示すビット列を複数の固定小数点数データについて論理和演算によって累積する回路の一例でもある。
ッサ10は、書き込み命令によってセレクタSELを介して、レジスタsr39からsr0のいずれか1つあるいは複数に初期値v39からv0を書き込む。ただし、プロセッサ10は、デコーダからのリセット信号によってレジスタsr39からsr0をリセットしても良い。プロセッサ1
0は、統計情報取得機能付き命令の実行ごとに、加算器を用いて統計情報を蓄積し、レジスタsr39からsr0に格納する。統計情報集約部104A(図17、図18)と、統計情報
集約部104Aからの統計情報を専用レジスタに格納する統計情報格納部105A(図20)の組み合わせは符号ビットと一致しない最上位のビットの位置を複数の固定小数点数データに対して累積して計数する回路の一例である。統計情報集約部104A(図17、図18)と、統計情報集約部104Aからの統計情報を専用レジスタに格納する統計情報格納部105A(図20)の組み合わせは符号ビットと一致しない最下位のビットの位置を複数の固定小数点数データに対して累積して計数する回路の一例でもある。また、プロセッサ10は、レジスタ(sr39からsr0)のいずれかの1つあるいは複数の値を読み出し、読み出し命令で指定されたデータ用メモリに保存する、あるいは、読み出し命令で指定された汎用レジスタに格納する。
…,k, i=0,…,39)の領域が確保され、indexによって、レジスタファイルの行jが指定される。
定されるレジスタファイルの行jの1つあるいは複数のレジスタに初期値を書き込む。ただし、プロセッサ10はデコーダ112からの制御信号により、indexによって指定される
レジスタファイルの行jをリセットしても良い。そして、プロセッサ10は、in39からin0の統計情報を加算器で蓄積し、indexによって指定されるレジスタファイルの行jに格納する。また、プロセッサ10は、デコーダ112からの制御信号により、indexによって指
定されるレジスタファイルの行jから統計情報を読み出す。また、プロセッサ10は、indexによって指定されるレジスタファイルの行jのいずれかの1つあるいは複数の値を読み出し、読み出し命令で指定されたデータ用メモリに保存する、あるいは、読み出し命令で指定された汎用レジスタに格納する。
納先の指定を取得するデコーダの一例である。
である。
[実施形態2]
そして、統計情報取得部102で取得された統計情報は、統計情報集約部104に入力さ
れる。一方、小数点位置調整のためデータ変換部103でデータ変換されたデータは、図示しないセレクタを介して、データ用メモリ22(Write Data0,…, Write Data n)にストアされるか、ベクトルレジスタ(Vector Reg2)に保持される。統計情報取得部102
は、プロセッサ10の演算命令が実行される各種の演算器とは別経路で用意されている。データ変換部103は、デコーダ112からの指令により、入力されるビットパターンを指令で指定されたビット数だけシフトする。データ変換部103は、更新回路の一例である。
1から510−Nを有している。以下、処理部510−1等をここに区別しないで総称するときは、処理部510という。制御CPU503と、各処理部510とはバス34で接続される。処理部510は、実施形態1のプロセッサ10と同様の構成であり、制御ユニット11、レジスタファイル12、ベクトル演算用の演算器131、および積和演算用のアキュムレータ132等を有する。なお、制御ユニット11は処理部510になくても構わない。制御ユニット11がない場合に、実施形態1のデコーダ112は、例えば、制御CPU503に設けられ、制御CPU503がデコードされた命令にしたがって、各処理部510に制御信号を発すればよい。
含む回路を削減する。したがって、実施形態1のような専用のハードウェアである統計情報集約部104および全体集計回路506を用いる場合と比較して、オーバーヘッドが発生する可能性がある。しかしながら、深層学習を処理の対象とするマシンでは、実行される処理は積和演算が主体となり、既存のレジスタ、バス、および演算器等を用いて統計情報を取得し、集約することによるオーバーヘッドは、深層学習全体の処理と比較すると極めて小さいか無視できる程度になることが予測される。
レジスタファイル(vReg)は16-bit x 8-way = 128-bitとし、ベクトル演算用アキュムレータレジスタ(Vector ACC)は、40-bit x 8-way = 320-bitと仮定する。なお、本実施形態では、処理部10Aは、図27の複数の処理部10Aとして採用される。したがって、図28の処理部10Aは、複数の演算処理装置の一例である。なお、ベクトル演算用の演算器131、スカラ用の演算器141等は実施形態1と同様であるので、その説明を省略する。ベクトル演算用の演算器131は、複数の演算回路の一例である。
演算器108の演算結果の固定小数点位置を調整し、メモリインターフェースを介してデータ用メモリ22に保存する。
CC0からACC7の出力は、1-hot-vector converter HVC0からHVC7に出力される。1-hot-vector converterは、入力される数値(例えば、40ビット)のうち、非符号となる最上位ビットを1とし、他のビットを0とするビット列に変換して出力する。1-hot-vector converterの構成は、例えば、実施形態1の図16と同様である。また、図16と同様、全ビット0または全ビット1の入力に対して、1-hot-vector converter HVC0からHVC7は、符号ビットを1に、他のビットを0に変換して出力する。1-hot-vector converter HVC0からHVC7は、演算実行後の固定小数点数データ中の符号ビットと一致しない最上位のビットの位置にフラグビットを設定する回路の一例である。
れ、CLS0からCLS7の信号のビット列中の指定されたビットを加算する回路である。すなわち、Bit Population Count回路BPC0からBPC3のそれぞれには、CLS0からCLS7中の指定ビットが入力される。指定ビットは、図示しないビット位置指定(N)の信号で指定される。例えば、ビット位置指定N=0とき、CLS0からCLS7の8列のビット列のビット0(CLS0[0]からCLS7[0])がBit Population Count回路BPC0に入力される。また、上記ビット位置指定N=0とき、CLS0からCLS7の8列のビット列のビット3(CLS0[3]からCLS7[3])がBit Population Count回路BPC3に入力される。
限定される訳ではなく、設計に応じて望ましい数(4列、16列等)が選択可能である。また、CLSのビット数が40ビットに限定される訳ではなく、設計に応じて望ましい数が選択可能である。また、図29では、Bit Population Count回路が4個設けられ、4ビット並列に加算が実行されるが、Bit Population Count回路の数が4個に限定される訳ではなく、設計に応じて望ましい個数が選択可能である。
からCLS7の各ビットを合計し、ベクトルレジスタファイルVregの10組それぞれの4個の要素に格納する。以上の結果、ベクトルレジスタファイルVregには、ベクトル演算用のアキュムレータレジスタ ACC0からACC7における非符号となる最上位ビット位置の分布が格納される。4個の加算器108Aは、ビット位置指定信号(N=0、4、・・・、36)の変更にしたがってフラグビットを積算する。したがって、4個の加算器108Aは、加算されたフラグビットをそれぞれのビット位置毎に積算する積算回路の一例である。したがって、図33で後述するように、4個の加算器108Aは、統計情報取得命令(cls_cnt)にしたがって、上記積算を実行する。ここで、加算器108Aは、既存
の積和演算命令(mac)あるいは加算命令等によって実行される演算回路である。したが
って、上記積算回路は、演算命令で用いられる加算回路108Aにより前記フラグビットをそれぞれのビット位置毎に積算するといえる。
8)のデコード結果にしたがって、セレクタ107による選択を制御することで、既存の加算命令による加算器108Aでの加算と、統計情報取得命令による1-hot-vector converter HVC0からHVC7による変換処理およびPopulation Count回路BPC0からBPC4による処理を介して取得される統計情報の積算と、を切り替えて実行できる。すなわち、実施形態2の処理部10Aは、実施形態1とは異なり、処理部10Aの既存命令、例えば、加算命令等で使用される既存のレジスタ、バス、および演算器等を用いて統計情報を取得できる。すなわち、統計情報取得命令による1-hot-vector converter HVC0からHVC7による変換処理およびPopulation Count回路BPC0からBPC3による処
理を介して取得される統計情報の積算は、取得回路による統計情報の取得ということができる。また、加算器108Aからデスティネーションレジスタ(ベクトルレジスタファイルVregの要素)に至る回路は既存の積和演算命令(mac命令という)、あるいは加算命令
を実行する演算回路の一例ということができる。ベクトルレジスタファイルVregの要素は、既存の演算命令の結果を出力するレジスタということができる。したがって、1-hot-vector converter HVC0からHVC7による変換処理、Population Count回路BPC0からBPC3、加算器108A、およびベクトルレジスタファイルを含む回路は、既存命令に対応する演算回路と取得命令にしたがって実行される取得回路とが少なくとも1つの共通の演算器または少なくとも1つの共通のレジスタを有している構成の一例ということができる。
図29と相違する。
いて、上位ビットとのOR演算を実行する38桁分のOR回路(or)とを有する。図31の回路により、ビット39からビットk+1までが0で、ビットkにおいて1となるデータについては、出力ビット(output[38]〜output[0])のうち、ビットk+1以上(output[38]からoutput[k+1])は0が設定され、ビットk以下(output[k]からoutput[0])は1に設定される。また、図31の回路で、最上位ビットに対応する出力ビットは0固定である。以上によって、非符号となる最上位ビット以下Least Significant Bit(LSB)まで
の範囲に対応するビット位置にフラグビット”1”を設定する処理がハードウェアで実行
される。したがって、図29の構成に代えて、図30の構成を用いることで、非符号となる最上位ビット以下LSBまでの範囲に対応するビット位置にフラグビット”1”が設定
された、累積分布と呼ばれる統計情報を収集することができる。処理部10Aは、図30の構成においても、図29と同様、処理部10Aの既存命令、例えば、加算命令等で使用される既存のレジスタ、バス、および演算器等を用いて統計情報を取得できる。
での範囲に対応するビット位置にフラグビット”1”を設定した累積分布による統計情報
を取得できることは明らかである。
<アセンブリイメージ>
で指定される係数ベクトルがベクトルレジスタvReg[11]にロードされる。そして、アドレスレジスタa[1]を変数iでインクリメントしながら、ベクトルデータがベクトルレジスタvReg[11]にロードされる。そして、積和演算macが、ベクトルレジスタvReg[10]とvReg[11]との間で、インデックスiを1から4095まで変更して実行される。
報取得ありを指示する。したがって、図32のプログラム例では、4095回の統計情報取得なしの積和演算の後の積和演算macで統計情報が取得される。実施形態1のプロセッ
サ10の場合には、既存命令のパスとは独立のハードウェアで統計情報が取得されるため、命令の末尾のパラメータで計情報取得あり、なしを指示し、1命令で統計情報を取得できる。なお、図32の最後の命令は、ベクタストア命令であり、積和演算の結果がアドレスレジスタa[2]で指定されるデータ用メモリ22のアドレスに格納される。
演算macの処理は、図32と同様である。ただし、実施形態2の処理部10Aでは、積和
演算を実行するmac命令のパラメータで統計情報取得の有無を指定する訳ではない。すな
わち、実施形態2の処理部10Aでは、mac命令と並列に統計情報の取得が実行されるの
ではなく、mac命令の終了後、統計情報取得命令cls_cntの実行により、図29、図30で説明したように、4ビット並列にCLS[0]からCLS[39]の統計情報が、例えば、32-bit x 4-wayのベクトルレジスタvReg[0]からvReg[9]に格納される。
ションレジスタ)である。ここで、実施形態2では、cnt(ビット位置指定N)は、図29、図30で説明したCLS0からCLS7内のビット位置を4ビットずつずらして指定する。cls_cntは、固定小数点数データ中のビットの分布中で取得対象のビット部分を指定
可能である命令の一例と言える。
だし、実施形態2の統計情報取得処理を実行する演算回路が4ビット並列の回路に限定される訳ではない。統計情報取得処理を実行する演算回路は、2ビット並列、8ビット並列、16ビット並列の回路であってもよい。
<統計情報取得命令の実行タイムチャート>
演算結果のレジスタへの書込と並列に統計情報がレジスタに格納される。
令フェッチからレジスタ書込までが完了後、統計情報取得命令cls_cntの命令フェッチ、
命令のデコードとレジスタからのデータ読み出し、統計情報取得、およびレジスタへの書込が実行される。なお、cls_cnt命令で統計情報を取得する対象は直前mac命令の演算結果のため、レジスタ・バイパスを用いて参照する。ただし、実施形態2の処理部10Aでは、統計情報取得命令cls_cntは、例えば、オペランドのビット位置指定(N)で指定され
るビット位置での4ビット分の処理であるため、40ビットの統計情報を取得するには、命令が10回実行されることになる。
<実施形態2の効果>
処理装置1Aは、実施形態1よりも複雑な処理を高速に実行できる。
コンピュータその他の機械、装置(以下、コンピュータ等)に上記いずれかの機能を実現させるプログラムをコンピュータ等が読み取り可能な記録媒体に記録することができる。そして、コンピュータ等に、この記録媒体のプログラムを読み込ませて実行させることにより、その機能を提供させることができる。
等に固定された記録媒体としても利用可能である。
10 プロセッサ
11 制御ユニット
12 レジスタファイル
13 ベクトルユニット
14 スカラユニット
21 命令用メモリ
22 データ用メモリ
101 セレクタ
102 統計情報取得部
103 データ変換部
104 統計情報集約部
105 統計情報格納部
107 セレクタ
108A 加算器
111 プログラムカウンタ
112 デコーダ
131 ベクトル演算用の演算器
132 積和演算用のアキュムレータ
141 スカラ用の演算器
502 Host CPU
503 制御CPU
ACC0〜ACC7 ベクトル演算用アキュムレータレジスタ
BPC0〜BPC4 Bit Population Count回路
HVC0〜HVC7 1-hot-vector converter
Claims (13)
- 演算命令にしたがって演算を実行する演算回路と、
前記演算回路による演算結果を格納するレジスタファイルと、
前記演算回路による演算結果である複数の第1固定小数点数データの各々の非符号となる最上位ビットまたは非符号となる最下位ビットの位置の分布についての統計情報の取得を取得命令にしたがって実行する取得回路と、
を備え、
前記取得命令は、前記統計情報の格納先として前記レジスタファイルの中の格納場所を指定し、
前記取得命令で指定される前記格納場所に前記統計情報が格納され、
前記演算回路による演算結果である第2固定小数点数データを前記レジスタファイルに格納する際にビット幅を制限するためのビットレンジが前記統計情報に基づいて特定される演算処理装置。 - 前記演算回路と前記取得回路とが、少なくとも1つの共通の演算器を用いて、前記演算および前記統計情報の前記取得をそれぞれ実行する請求項1に記載の演算処理装置。
- 前記取得回路は、前記複数の第1固定小数点数データに関し、前記非符号となる最上位ビットまたは前記非符号となる最下位ビットの位置にフラグビットを設定する回路を有する請求項1または2に記載の演算処理装置。
- 前記取得回路は、前記複数の第1固定小数点数データに関し、前記非符号となる最上位ビットの位置および前記非符号となる最上位ビットよりも下位のビット位置、または前記非符号となる最下位ビットの位置および前記非符号となる最下位ビットよりも上位のビット位置にフラグビットを設定する回路を有する請求項1または2に記載の演算処理装置。
- 前記取得回路は、
前記演算回路による演算結果である前記複数の第1固定小数点数データに関して設定された前記フラグビットをそれぞれのビット位置毎に加算する加算回路を有し、
前記加算回路は、前記演算命令に基づく前記演算において使用される請求項3または4
に記載の演算処理装置。 - 前記取得命令は、前記複数の第1固定小数点数データ中のビットのうち特定のビットを指定し、
前記取得回路は、指定された前記特定のビットに基づいて、前記統計情報を取得する請求項1から5のいずれか1項に記載の演算処理装置。 - 前記統計情報は、積和演算結果を保持するアキュムレータ中の前記複数の第1固定小数点データの前記非符号となる最上位ビットまたは前記非符号となる最下位ビットの位置の分布に対する統計情報である請求項1から6のいずれか1項に記載の演算処理装置。
- 演算命令にしたがって演算を実行する演算回路と、
前記演算回路による演算結果を格納するレジスタファイルと、
前記演算回路による演算結果である複数の第1固定小数点数データの各々の非符号となる最上位ビットまたは非符号となる最下位ビットの位置の分布についての統計情報の取得を取得命令にしたがって実行する取得回路と、を夫々が備える複数の演算処理装置と、
前記複数の演算処理装置に処理の実行を指示する制御装置と、を有し、
前記取得命令は、前記統計情報の格納先として前記レジスタファイルの中の格納場所を指定し、
前記取得命令で指定される前記格納場所に前記統計情報が格納され、
前記演算回路による演算結果である第2固定小数点数データを前記レジスタファイルに格納する際にビット幅を制限するためのビットレンジが前記統計情報に基づいて特定される情報処理装置。 - 前記演算回路と前記取得回路とが、少なくとも1つの共通の演算器を用いて、前記演算および前記統計情報の前記取得をそれぞれ実行する請求項8に記載の情報処理装置。
- 演算命令にしたがって演算を実行する演算回路と、前記演算回路による演算結果を格納するレジスタファイルと、を有する情報処理装置が、
前記演算回路による演算結果である複数の第1固定小数点数データの各々の非符号となる最上位ビットまたは非符号となる最下位ビットの位置の分布についての統計情報の取得を取得命令にしたがって実行し、
前記取得命令において前記統計情報の格納先として指定される前記レジスタファイルの中の格納場所に前記統計情報を格納し、
前記演算回路による演算結果である第2固定小数点数データを前記レジスタファイルに格納する際にビット幅を制限するためのビットレンジを前記統計情報に基づいて特定する情報処理方法。 - 前記演算および前記統計情報の前記取得において、前記演算命令と前記取得命令とが少なくとも1つの共通の演算器を用いてそれぞれ実行される請求項10に記載の情報処理方法。
- 演算命令にしたがって演算を実行する演算回路と、前記演算回路による演算結果を格納するレジスタファイルと、を有する情報処理装置に、
前記演算回路による演算結果である複数の第1固定小数点数データの各々の非符号となる最上位ビットまたは非符号となる最下位ビットの位置の分布についての統計情報の取得を取得命令にしたがって実行し、
前記取得命令において前記統計情報の格納先として指定される前記レジスタファイルの中の格納場所に前記統計情報を格納し、
前記演算回路による演算結果である第2固定小数点数データを前記レジスタファイルに
格納する際にビット幅を制限するためのビットレンジを前記統計情報に基づいて特定することを実行させるためのプログラム。 - 前記演算および前記統計情報の前記取得において、前記演算命令と前記取得命令とが少なくとも1つの共通の演算器を用いてそれぞれ実行される請求項12に記載のプログラム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018033037A JP6540841B1 (ja) | 2018-02-27 | 2018-02-27 | 演算処理装置、情報処理装置、情報処理方法、およびプログラム |
US16/275,383 US10936939B2 (en) | 2018-02-27 | 2019-02-14 | Operation processing apparatus, information processing apparatus and information processing method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018033037A JP6540841B1 (ja) | 2018-02-27 | 2018-02-27 | 演算処理装置、情報処理装置、情報処理方法、およびプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP6540841B1 true JP6540841B1 (ja) | 2019-07-10 |
JP2019148972A JP2019148972A (ja) | 2019-09-05 |
Family
ID=67212165
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2018033037A Active JP6540841B1 (ja) | 2018-02-27 | 2018-02-27 | 演算処理装置、情報処理装置、情報処理方法、およびプログラム |
Country Status (2)
Country | Link |
---|---|
US (1) | US10936939B2 (ja) |
JP (1) | JP6540841B1 (ja) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110533175A (zh) * | 2018-05-23 | 2019-12-03 | 富士通株式会社 | 深度学习加速的方法和设备及深度神经网络 |
JP7165018B2 (ja) * | 2018-10-03 | 2022-11-02 | キヤノン株式会社 | 情報処理装置、情報処理方法 |
JP7137067B2 (ja) * | 2018-10-25 | 2022-09-14 | 富士通株式会社 | 演算処理装置、学習プログラム及び学習方法 |
JP7272121B2 (ja) * | 2019-06-07 | 2023-05-12 | 富士通株式会社 | 演算処理装置、制御方法、及び制御プログラム |
JP7354736B2 (ja) * | 2019-09-30 | 2023-10-03 | 富士通株式会社 | 情報処理装置、情報処理方法、情報処理プログラム |
JP7371499B2 (ja) * | 2020-01-07 | 2023-10-31 | 富士通株式会社 | 演算処理装置、演算処理装置の制御方法及び演算処理プログラム |
JP2021124849A (ja) * | 2020-02-04 | 2021-08-30 | 富士通株式会社 | 演算処理装置、演算処理装置の制御方法及び演算処理プログラム |
JP7367595B2 (ja) * | 2020-04-07 | 2023-10-24 | 富士通株式会社 | 情報処理装置及び情報処理方法 |
KR102353816B1 (ko) * | 2021-05-18 | 2022-01-20 | 박희천 | 심층 신경망을 위한 뉴로모픽 컴퓨팅 구조의 최적화 시스템 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS60220423A (ja) | 1984-04-17 | 1985-11-05 | Fujitsu Ltd | Flml命令処理方式 |
JPH0784975A (ja) * | 1993-09-10 | 1995-03-31 | Hitachi Ltd | 情報処理装置および学習演算処理方法 |
JP3252954B2 (ja) * | 1997-04-01 | 2002-02-04 | 松下電器産業株式会社 | 乗算方法および乗算回路 |
JP2006048590A (ja) * | 2004-08-09 | 2006-02-16 | Matsushita Electric Ind Co Ltd | 正規化処理装置及び正規化処理方法 |
JP2009271598A (ja) | 2008-04-30 | 2009-11-19 | Toshiba Corp | プロセッサ |
US9092213B2 (en) | 2010-09-24 | 2015-07-28 | Intel Corporation | Functional unit for vector leading zeroes, vector trailing zeroes, vector operand 1s count and vector parity calculation |
JP2012203566A (ja) | 2011-03-24 | 2012-10-22 | Seiko Epson Corp | 状態推定装置、電子機器及びプログラム |
GB201607713D0 (en) * | 2016-05-03 | 2016-06-15 | Imagination Tech Ltd | Convolutional neural network |
JP6540725B2 (ja) * | 2017-01-30 | 2019-07-10 | 富士通株式会社 | 演算処理装置、方法、およびプログラム |
JP6540770B2 (ja) * | 2017-10-17 | 2019-07-10 | 富士通株式会社 | 演算処理回路、演算処理回路を含む演算処理装置、演算処理装置を含む情報処理装置、および方法 |
-
2018
- 2018-02-27 JP JP2018033037A patent/JP6540841B1/ja active Active
-
2019
- 2019-02-14 US US16/275,383 patent/US10936939B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
JP2019148972A (ja) | 2019-09-05 |
US20190266473A1 (en) | 2019-08-29 |
US10936939B2 (en) | 2021-03-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6540841B1 (ja) | 演算処理装置、情報処理装置、情報処理方法、およびプログラム | |
JP6540770B2 (ja) | 演算処理回路、演算処理回路を含む演算処理装置、演算処理装置を含む情報処理装置、および方法 | |
US11137981B2 (en) | Operation processing device, information processing device, and information processing method | |
JP7056225B2 (ja) | 演算処理装置、情報処理装置、情報処理方法、およびプログラム | |
CN111353579B (zh) | 利用反向传播为深度神经网络选择量化参数的方法和系统 | |
JP7013143B2 (ja) | 畳み込みニューラルネットワークハードウエア構成 | |
JP2019139338A (ja) | 情報処理装置、情報処理方法、およびプログラム | |
US11003736B2 (en) | Reduced dot product computation circuit | |
CN114626516A (zh) | 一种基于对数块浮点量化的神经网络加速系统 | |
US11288597B2 (en) | Computer-readable recording medium having stored therein training program, training method, and information processing apparatus | |
CN115552424A (zh) | 用于训练包含量化参数的人工神经网络的方法 | |
US20200311511A1 (en) | Accelerating neuron computations in artificial neural networks by skipping bits | |
US11551087B2 (en) | Information processor, information processing method, and storage medium | |
US11604973B1 (en) | Replication of neural network layers | |
JP7243498B2 (ja) | 演算処理装置、制御プログラム、及び制御方法 | |
US11847567B1 (en) | Loss-aware replication of neural network layers | |
GB2614705A (en) | Neural network accelerator with configurable pooling processing unit | |
JP7036224B2 (ja) | 演算処理装置及び演算処理装置の制御方法 | |
WO2020194032A1 (en) | Accelerating neuron computations in artificial neural networks by skipping bits | |
EP1429239A2 (en) | Floating-point multiplication | |
GB2615774A (en) | Method and system for calculating dot products | |
JPH0637592A (ja) | ディジタルフィルタ設計法 | |
EP3915057A1 (en) | Generic quantization of artificial neural networks | |
JPH04505978A (ja) | 高速収束係数判定のための方法および装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20181112 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20181211 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20181219 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20190129 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20190329 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20190514 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20190527 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6540841 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |