JP6540841B1 - 演算処理装置、情報処理装置、情報処理方法、およびプログラム - Google Patents

演算処理装置、情報処理装置、情報処理方法、およびプログラム Download PDF

Info

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
Application number
JP2018033037A
Other languages
English (en)
Other versions
JP2019148972A (ja
Inventor
充 伴野
充 伴野
真紀子 伊藤
真紀子 伊藤
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 JP2018033037A priority Critical patent/JP6540841B1/ja
Priority to US16/275,383 priority patent/US10936939B2/en
Application granted granted Critical
Publication of JP6540841B1 publication Critical patent/JP6540841B1/ja
Publication of JP2019148972A publication Critical patent/JP2019148972A/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/499Denomination or exception handling, e.g. rounding or overflow
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/18Complex mathematical operations for evaluating statistical data, e.g. average values, frequency distributions, probability functions, regression analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49942Significance control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/544Methods 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/5443Sum of products
    • 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/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • 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

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

【課題】深層学習を固定小数点数で精度よく実行することで、回路規模と消費電力を削減する。【解決手段】演算処理装置は、演算命令にしたがって演算を実行する演算回路と、固定小数点数データに対する演算実行後の固定小数点数データ中のビットの分布についての統計情報の取得を取得命令にしたがって実行する取得回路と、を備える。そして、取得回路は、取得命令で指定されるレジスタに統計情報を出力する。【選択図】図28

Description

本発明は、演算処理装置、この演算処理装置を含む情報処理装置、情報処理方法、およびプログラムに関する。
今日、人工知能を用いた機械学習のうち、特に深層学習(DL:Deep Learning)への
ニーズが高まっている。深層学習は、多層ニューラルネットワーク(DNN:Deep Neural Network)を用いた機械学習の手法ということができる。図1は、ニューラルネットワ
ークの構成を例示する図である。ニューラルネットワークは、神経細胞(ニューロン)をコンピュータ上にモデル化したものである。神経細胞は、細胞体と、他の細胞体から入力される信号を受ける樹状突起と、他の細胞体に信号を出力する軸索とを有する。また、信号を出力する軸索の末端と信号を受ける樹状突起との間にはシナプスと呼ばれる信号の伝達構造が形成されている。ニューラルネットワークでは、神経細胞間でのシナプスを介した情報伝達がモデル化されている。
さらに、ニューラルネットワークが多層化された多層ニューラルネットワークでは、深層学習が実行される。そして、深層学習が実行される多層ニューラルネットワークの認識性能を高めるため、多層ニューラルネットワークが大規模化される傾向にある。例えば、多層ニューラルネットワークで処理されるパラメータ数は、数百万から1億数千万にも及ぶ。多層ニューラルネットワークが人の脳に近づくためには、究極的に、パラメータ数は1千数百億にも及ぶと考えられる。したがって、今後、深層学習における学習データは増加し、多層ニューラルネットワークにおける計算負荷、メモリ負荷が増大することが予想される。そのため、増え続ける学習データに対して、認識性能と学習効率の改善が望まれている。認識性能と学習効率を改善し、負荷を軽減するため、多層ニューラルネットワークが軽量化されることが望ましい。
ところで、深層学習においては、乗算、積和演算、ベクトル乗算を含む様々な演算が実行される。ただし、深層学習では、個々の演算精度への要求は、通常の演算処理ほど厳密ではない。例えば、通常の演算処理等では、プログラマは極力桁あふれを発生させないようにコンピュータプログラムを開発する。一方、深層学習では、大きな値がある程度飽和することは許容される。深層学習では、複数の入力データを畳み込み演算するときの係数(重み)の調整が主な処理となり、入力データのうち、極端なデータは重視されないことが多いからである。また、大量のデータを繰り返し用いて係数を調整するため、一度飽和された値も、学習の進行に合わせて桁調整を行なうことで、飽和されずに係数の調整に反映できるようになるためである。
そこで、このような深層学習の特性を考慮し、深層学習用の演算処理装置のチップ面積の削減、電力効率の向上等を図るため、浮動小数点数を用いないで、固定小数点数による演算を用いることが考えられる。浮動小数点数演算よりも固定小数点演算の方が回路構成を簡素にできるからである。
図2にデータ表現に用いるビットの構成を例示する。32ビット浮動小数点数、16ビット固定小数点数、8ビット固定小数点数のように、深層学習で処理するデータ(重みとパラメータ)のデータ表現に用いるビット幅を縮小することで、多層ニューラルネットワークで扱うデータ量を削減できる。扱うデータ量が削減されることで、深層学習の処理量が削減され、学習時間が短縮されることが期待できる。
しかしながら、固定小数点数は、取りうる値のダイナミックレンジが狭いので、浮動小
数点数より演算精度が劣化する場合がある。図3に、32ビット浮動小数点数、16ビット固定小数点数、8ビット固定小数点数による処理と、推論の精度の関係をモデル化して例示する。図では、「固定小数点数」が「整数」と記述されている。固定小数点数が整数に限定される訳ではない。固定小数点数は2進整数とも理解できるので、本明細書中では、固定小数点数を整数という場合がある。図のように、ビット幅を削減すると演算精度が低下することが予測される。演算精度が低下すると、深層学習がうまく実施できない場合もあり得る。すなわち、深層学習では、フォーワッド方向およびバックワード方向に積和演算が多数回繰り返され、演算結果が固定小数点数のダイナミックレンジを超えてしまうこともあるからである。そこで、演算精度を改善する技術により、ビット幅を削減することに起因する上記課題を克服することが望まれる。
ビット幅を削減することに起因する課題を考察するため、まず、深層学習の手順を説明する。図4に、深層学習における処理手順を例示する。また、図5に、図4の処理手順のうち、Conv_1の順方向処理とFC2の逆方向処理を詳細化したものを例示する。深層学習の処理の流れは図4のとおりである。深層学習の処理では、それぞれの入力データに対応した正解データが存在する。深層学習を実行するネットワークの構成は人が決定する。
ネットワークは、入力データを左から入力し、各層の処理結果を右方向へ伝播させ(順伝播)、正解データと結果を比較し、結果の差分を左方向へ伝播させる(逆伝播)。例えば、図5の例では、入力パラメータxjに、係数Wijの積和演算を実行することで、Conv_1層の畳み込み演算が実行される。各階層は係数(Wij)を持っており、多層ニューラルネットワークの最上位の層(図4で、FC2)まで演算がなされると、演算結果が正解データと比較され、比較結果を基に各層の係数が更新される。この係数の変化(ΔWij)によりニューラルネットワークが最適化される。なお、多層ニューラルネットワークは、1データごとに上記の係数の更新を行ってもよい。あるいは多層ニューラルネットワークは、複数データ(例えば256データ)について並列に同時に計算を行い、256通りの係数の更新情報を平均した結果を元に重みを更新しても良い。このとき、重み更新に用いる複数データの集合をミニバッチという。複数データの集合を並列に処理して重み更新が行われる場合、並列同時処理されるデータの集合をミニバッチということもできる。
図6に、深層学習におけるパラメータと重みのビット幅を縮小することによる課題を例示する。ビット幅を縮小することでデータ量は削減可能である。しかし深層学習では、図4に例示した処理を多数回繰り返す。例えば入力データが100,000枚の画像データであり
、重み係数の最適化のため図4のネットワークを1入力データ(1枚の画像データ)あたり100回通したとするとデータが10,000,000回多層ニューラルネットワークを通過する。
さらに、図5に例示したように、各階層で重みとパラメータとの内積(積和演算)が実行されるため、さらに数万倍の演算が行われる。このような場合のデータの桁位置が図6に例示されている。深層学習が初期、中盤、終盤と進行するにしたがって、データの桁位置がずれていく。したがって、固定小数点で単純に深層学習を継続すると、有効桁が少なくなり、究極的には、計算が破綻してしまうことが予想される。したがって、深層学習においても、小さな値を表現する精度、すなわち、有効桁数について、配慮が求められる。このため、固定小数点数を拡張した技術が提案されている。
例えば、Mixed Fixed Pointによる処理では、プログラム全体として統一した小数点位
置を使うのではなく、変数ごとに適した小数点位置(Qフォーマット)が用いられる。例えば、Q3.12フォーマットは、符号ビット1桁、整数部3桁、小数点以下12桁の16ビットデータを定義する。Mixed Fixed Pointでは、変数ごとに、小数点位置、つまり
、整数部の桁数と小数点以下の桁数が異なるものとして処理される。
他の例として、Dynamic Fixed Point (動的固定小数点数)による処理では、実行中に変数の値域が取得され、一定のタイミングで小数点位置が見直される。したがって、Mixed Fixed Point演算、およびDynamic Fixed Point演算は、浮動小数点演算よりも処理が簡単な固定小数点演算に、浮動小数点演算の側面を加えたものと言える。
さらに、Mixed Fixed Point演算、Dynamic Fixed Point演算による処理を実行するためのプログラム向けの機能を有するDigital Signal Processor(DSP)も提案されている。例えば、ブロック・シフト指定付きの演算命令を実行するDSPがある。ブロック・シフト指定付きの演算命令は、変数のビット幅より大きいビット幅で演算を実行し、演算結果から値をシフトして切り出して変数用のレジスタに格納する。この命令では、演算結果から値を切り出すときのシフト量 S (例えば、-128〜127)が即値/汎用レジスタで指定可
能である。例えば、DSPがResult = Saturate (((in1 (演算子) in2) >> S), 16)とい
う命令を実行すると、演算結果を S ビットシフトし、下位16bit を残し、上位ビットを
飽和処理する。S ≧0 の場合には、DSPは、演算結果を算術右シフトし、すなわち、符号ビットを埋め込んで右シフトし、下位ビットを削除する。一方、S < 0 の場合は、DSPは、演算結果を算術左シフト、すなわち、符号ビットを維持して左シフトし、補数での下位ビットを削除する。
ブロック・カウント・リーディング・サイン(BCLS)出力を実行するDSPも提案されている。BCLS出力は、DSPが演算結果の count leading sign を取って、結果をレジスタに書き込む機能である。ここで、count leading signとは、正数最上位のビット1の位置(負数で最上位のビット0の位置)をいう。例えば、DSPが、max (block_count_leading_sign(in1 (演算子) in2) -1)を実行すると、変数in1 と変数in2の演算子による演算結果から、正数最上位のビット1の位置(負数で最上位のビット0の位置)がレジスタに記録される。
図7は、深層学習において、単精度浮動小数点数(Single Precision Floating Point
)、半精度浮動小数点数(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は、深層学習に用いられたデータセットを示す。
特開昭60−220423号公報 特表2013−543173号公報
Courbariaux et al.、 "TRAINING DEEP NEURAL NETWORKS WITH LOW PRECISION MULTIPLICATIONS" Accepted as a workshop contribution at ICLR 2015, International Conference on Learning Representations(ICLR),2015年9月23日
上述のように、従来技術のDynamic Fixed Point数による処理結果においても、認識エ
ラー率が大きく増加しない。しかしながら、上記従来の技術においては、小数点位置を、
オーバーフロー率を基に1ビット調整するため学習結果の精度が劣化する。例えば、k個
のデータの学習ごとに小数点位置を調整する場合、小数点位置が適正位置からn ビットずれている場合、小数点位置が適切な位置に調整されるまでに、(n * k)回の学習が進む。
その結果、小数点位置が適正な位置になるまでに、飽和するデータやアンダーフローするデータが増え、学習が収束しない、あるいは、学習結果の精度劣化につながるおそれがある。
1つの側面では本発明の目的は、深層学習を固定小数点数で精度よく実行し、回路規模と消費電力を削減できるようにすることである。
本発明の一側面は、以下の演算処理装置によって例示される。すなわち、本演算処理装置は、演算命令にしたがって演算を実行する演算回路と、固定小数点数データに対する演算実行後の前記固定小数点数データ中のビットの分布についての統計情報の取得を取得命令にしたがって実行する取得回路と、を備える。そして、前記取得回路は、前記取得命令で指定されるレジスタに前記統計情報を出力する。
本実施形態によれば、深層学習を固定小数点数で精度よく実行することで、回路規模と消費電力を削減することができる。
ニューラルネットワークの構成を例示する図である。 データ表現に用いるビットの構成を例示する図である。 32ビット浮動小数点数、16ビット固定小数点数、8ビット固定小数点数による処理と、推論の精度の関係をモデル化して例示する図である。 深層学習における処理手順を例示する図である。 図4の処理手順のを詳細化した図である。 深層学習におけるパラメータと重みのビット幅を縮小することによる課題を例示する図である。 深層学習において、単精度浮動小数点数、半精度浮動小数点数、固定小数点数、Dynamic Fixed Point数を適用した場合の認識エラー率を例示する図である。 比較例に係る深層学習の手順を例示する図である。 図8における各層の処理の詳細を例示する図である。 比較例の情報処理装置による学習処理のフローチャートを例示する図である。 非符号となる最上位ビット位置の分布データを例示する図である。 プロセッサの回路ブロックを例示する図である。 ベクトルユニットの詳細を例示する図である。 スカラユニットの構成を例示する図である。 非符号となる最上位ビット位置を取得する統計情報取得部の処理を例示する図である。 非符号となる最上位ビット位置を取得する統計情報取得部のハードウェア回路の構成を例示する図である。 統計情報集約部の処理を例示する図である。 統計情報集約部のハードウェア回路の構成を例示する図である。 統計情報集約部のハードウェア回路の構成を例示する図である。 統計情報格納部のハードウェア回路の構成を例示する図である。 統計情報集約部の変形例である。 命令フォーマットを例示する図である。 命令フォーマットを例示する図である。 情報処理装置による学習処理のフローチャートを例示する図である。 実施形態1の演算処理装置におけるさらなる課題を説明する図である。 実施形態1のプロセッサの構成を単純に情報処理装置に適用した場合の構成例である。 実施形態2に係る情報処理装置の構成を例示する図である。 情報処理装置内の処理部の回路ブロックを例示する図である。 統計情報取得命令による統計情報取得処理を実行する演算回路の詳細を例示する図である。 非符号となる最上位ビットからビット0までをビット1に設定したビット列を取得する回路の詳細構成例である。 累積分布生成回路の構成を例示する図である。 実施形態1で説明したプロセッサで統計情報を取得するためのアセンブリ言語によるプログラムのイメージを例示する図である。 実施形態2の処理部で統計情報を取得するためのアセンブリ言語によるプログラムのイメージを例示する図である。 施形態1のプロセッサにおける積和演算命令と統計情報取得処理の実行タイムチャートを例示する図である。 実施形態2の処理部10Aにおける積和演算命令と統計情報取得処理の実行タイムチャートを例示する図である。
以下、図面を参照して一実施形態に係る情報処理装置について説明する。本情報処理装置は、深層学習を実行する。
[比較例]
図8から図10を参照して、比較例に係る情報処理装置での深層学習について説明する。図8は、比較例に係る深層学習の手順を例示する図である。
図8のように、比較例の深層学習は、1層目の畳み込み層(Conv_1)とプーリング層(Pool_1)、2層目の畳み込み層(Conv_2)とプーリング層(Pool_2)、全結合層1(fc1)、および
全結合層2(fc2)の処理により実行される。深層学習は、ミニバッチと呼ばれる処理の単
位に区切られて実行される。ここで、ミニバッチとは、学習の対象となる入力データの集合{(Ini,Ti),i=1〜N}をいう。また、ミニバッチは、このような個々の入力データの組(N個のデータ)で実行される学習の処理単位のことをいう。ここで、Iniは、入力データ(ベクトル)、Tiは正解データ(ベクトル)である。比較例の情報処理装置は、以下のように、深層学習中の所定数(k回)のミニバッチごとに、各層の各変数のオーバーフロー回数を取得してコンピュータプログラム中の変数に蓄積し、深層学習に用いる変数の固定小数点位置を自動調整する。
比較例の情報処理装置は、例えば、浮動小数点数による試行(ミニバッチ1回など)や、
ユーザ指定により各変数の初期小数点位置を決定し、学習を開始する(S1)。そして、情報処理装置は、k回のミニバッチを学習中に、各層の各変数のオーバーフローの回数を
統計情報として保存する(S2)。このとき、情報処理装置は、学習を実行するプログラム中の各変数に対する演算、代入等がなされる毎に、オーバーフローの有無を判定し、回数を計数し、回数を保持するカウンタ変数に代入する。
ミニバッチを学習中に変数にオーバーフローが発生した場合は、変数に対する飽和処理を行ない、学習を続行する(S3)。ここで、飽和処理とは、正の数がオーバーフローした際には正の最大値に、負の数がオーバーフローした際は負の最小値にクリップする処理である。
そして、情報処理装置は、k組のデータに対するミニバッチ終了後(k回の学習終了後
)、カウンタ変数に蓄積したオーバーフロー回数からオーバーフロー率を求め、オーバーフロー率を基に、固定小数点数の小数点位置を調整する(S4)。そして、情報処理装置は、S2の処理に戻り、学習を進める。
図9は、図8における各層の処理の詳細を例示する図である。図では、1層目の畳み込み層(Conv_1)、プーリング層(Pool_1)、および全結合層2(fc2)が例示されている。この
例では、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倍するとオーバーフローする変数
の個数が累積される。
1層目の畳み込み層(Conv_1)での演算結果は、1層目のプーリング層(Pool_1)から、さらに上位層へ伝播される。このとき、情報処理装置は、2層目以上の層でも同様の演算と、オーバーフロー回数の蓄積を実行する。情報処理装置は、以上のような演算を上位層においても実行して演算結果をさらに上位層へ伝播させる。そして、情報処理装置は、最終的には、全結合層2(fc2)において、得られた演算結果と、正解データTiとの差分値から
エラーδ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倍するとオーバー
フローする変数の個数もそれぞれ蓄積する。
そして、情報処理装置は、全結合層1(fc1)から1層目の畳み込み層(Conv_1)まで、エ
ラーを逆方法に伝播させながら、重みの差分を計算し、重みを更新する。情報処理装置は、以上のような順伝播と逆伝播をk組の入力データを用いて、k回繰り返す。情報処理装置は、このようなk回のミニバッチによる学習終了後、各変数に対応するカウンタ変数のオーバーフロー回数を基に、各変数の固定小数点位置を更新する。
図10に、比較例の情報処理装置による学習処理のフローチャートを例示する。この処理では、情報処理装置は、初期小数点位置を決定する(C1)。そして、情報処理装置は、回数kを値0で初期化する。そして、情報処理装置は学習終了の条件が充足されたか否
かを判定する(C3)。学習が終了するのは、全結合層(fc2)でのエラーが基準値以下と
なるか、または、学習回数が規定の最大値に達した場合である。
学習終了の条件が充足されない場合、情報処理装置は、次のミニバッチを実行し、変数kをカウントアップする(C4)。そして、情報処理装置は、統計情報としてオーバーフロー回数を各カウンタ変数に蓄積する(C5)。すなわち、情報処理装置は、各層において、オーバーフローした変数の個数、2倍するとオーバーフローする変数の個数を累積する。
そして、情報処理装置は、回数kが更新間隔に達したか否かを判定する(C6)。回数kが更新間隔に達していない場合、情報処理装置は、C3の処理に戻る。一方、回数kが更新間隔に達した場合、情報処理装置は、変数のオーバーフロー回数にしたがって、小数点位置を更新する。例えば、情報処理装置は、非特許文献1と同様、オーバーフロー回数を演算の実行回数で除算したオーバーフロー率を求めればよい。そして、オーバーフロー率が規定値を超えた場合に、情報処理装置は、該当する変数の小数点位置を1つ下げ、整数部を1ビット拡張すればよい。また、オーバーフロー率の2倍の値が規定値以下の場合、情報処理装置は、小数点位置を1つ上げ、整数部を1ビット削減すればよい。そして、情報処理装置1は、C3の処理に戻る。
しかし、以上の処理は、各層の演算ごとにオーバーフロー回数を累積し、オーバーフロー率が既定値を越えた場合、および、オーバーフロー率の2倍の値が既定値未満となった場合に固定小数点位置を1ビットずらす処理である。この処理は、オーバーフロー回数あるいはオーバーフロー率に基づく固定小数点位置の更新処理である。情報処理装置は、オーバーフロー回数あるいはオーバーフロー率からは、適正な小数点位置がどこであるかを判断することが困難である。
したがって、比較例の処理は、固定小数点位置の更新時、小数点位置を1つ下げる、あるいは上げる等の処理で、適正な位置を試行し、その結果からさらに判断を重ねていくという手順となる。このため、情報処理装置が適正な小数点位置を決定するまでに、小数点位置が複数回更新されることになる。例えば、上記のように、情報処理装置がk回のミニバッチごとにオーバーフロー率を判定し、1ビットずつ小数点位置を更新する場合には、小数点位置をNビットずらすために、N*k回(*は乗算)分のミニバッチが実行される。こ
のため、小数点位置が不適切な状態で学習処理が繰り返される。つまり、学習中に、望ましくないレベルで固定小数点数データの飽和、あるいは、アンダーフローが発生し、学習結果の精度劣化につながり、収束が遅くなる恐れがある。
また、比較例の情報処理装置は、単にオーバーフロー回数を取得し、蓄積する処理を深層学習のプログラム中で実行するため、学習時間が増大する可能性がある。つまり、情報処理装置は、適正な小数点位置を決定するための情報をプログラムに提供する機能がないため、プログラムにオーバーフロー回数を累積するコードが組み込まれ、処理時間が増加する恐れがある。
[実施形態1]
以下、図11から図32により、実施形態1に係る情報処理装置1、情報処理装置1が実行する情報処理方法、および情報処理装置1で実行されるプログラムについて説明する。
<統計情報>
実施形態1では、図12に示す情報処理装置1のプロセッサ10が統計情報を取得することで、統計情報取得のためのプログラム中のオーバーヘッドが削減される。ここで、プロセッサ10が取得する統計情報は、例えば、以下(1)から(4)のいずれか、または、これらの組み合わせをいう。情報処理装置1が実行するアプリケーションプログラムは、プロセッサから統計情報を取得することで、小数点位置を最適化する。アプリケーションプログラムの処理にしたがってプロセッサは、Dynamic Fixed Point演算のための命令
を実行する。
(1)非符号となる最上位ビット位置の分布
図11に、非符号となる最上位ビット位置の分布データを例示する。図11は演算の途
中結果が40bitで、固定小数点数の桁あわせのために14bit右シフトされるデータに対する例である。非符号となる最上位ビット位置とは、正数に対しては、ビットが1となっている最上位のビット位置をいう。また、負数に対しては、ビット0となっている最上位のビット位置をいう。非符号となる最上位ビット位置は、例えば、ビットの並びを最上位ビットであるbit[39]から最下位ビットであるbit[0]としたとき、符号ビットbit[39]と異なるbit[k]のうち、インデックスkが最大のものをいう。非符号となる最上位ビット位置の分
布が得られると、絶対値としての値の分布範囲が把握可能となる。
図11で、縦軸は、非符号となる最上位ビット位置の出現個数であり、横軸は最上位のビットの位置 Count Leading Sign(CLS)である。図11では、ビット0の右側に小
数点があると仮定する。実施形態1では、情報処理装置1のプロセッサ10の演算回路および演算回路内のレジスタは、命令のオペランドで指定されるレジスタのビット数(例えば、16ビット)以上のビット幅(例えば、40ビット)を有する。ただし、情報処理装置1のプロセッサ10の演算回路および演算回路内のレジスタのビット幅が40ビットに限定される訳ではない。また、演算結果は、例えば、16ビットのレジスタ等、演算回路よりも少ないビット幅のレジスタ(命令のオペランドで指定されるレジスタ)に格納される。その結果、演算結果は(例えば、40ビット)、オペランドで指定されるシフト量でシフトし、ビット0未満に該当するビットは所定の丸め処理がなされ、オペランドで指定されるレジスタのビット幅を越えるデータ(ビット15を越えるデータ)は、飽和処理される。
また、図11の横軸に付与された数値は、固定小数点で表現可能な数値を示す。例えば、情報処理装置1がこの固定小数点数を−2ビットだけシフト(右方向に2ビットシフト)すると、最上位ビットが14の位置にシフトし、飽和される領域が2ビット拡張され、アンダーフローが発生して0となる領域が2ビット減少する。すなわち、情報処理装置1
が小数点位置を2ビット左にシフトすると、飽和される領域が2ビット拡張され、アンダーフローが発生する領域が2ビット減少する。また、例えば、情報処理装置がこの固定小数点数を2ビットだけ正方向にシフト(固定小数点数を左方向に2ビットシフト)すると、最上位ビットが18の位置にシフトし、飽和される領域が2ビット減少し、アンダーフローが発生する領域が2ビット拡張される。すなわち、情報処理装置1が小数点位置を2ビット右にシフトすると、飽和される領域が2ビット減少し、アンダーフローが発生する領域が2ビット拡張される。
情報処理装置1は、学習実行中に、非符号となる最上位のビット位置の分布を得ることで、Dynamic Fixed Point演算における適正なシフト量、つまり、適切な固定小数点位置
を直ちに決定できる。例えば、情報処理装置1は、飽和されるデータが指定の割合以下になるように固定小数点位置を決定すればよい。つまり、一例としては、情報処理装置1は、データのアンダーフローが所定の程度となることよりもデータの飽和が所定の程度となること優先して、固定小数点位置を決定できる。
非符号となる最上位ビット位置の分布は、情報処理装置1のプロセッサ10(図12参照)内の所定のレジスタ(統計情報レジスタともいう)内に積算される。プロセッサ10は、当該統計情報レジスタからの分布データの読み出し、書き込み、統計情報レジスタのクリア等の命令を実行する。したがって、統計情報レジスタには、前回のクリア命令の実行から現在までに命令実行の対象となった1以上の固定小数点数についての分布データが蓄積される。蓄積された分布データは、読み出し命令によってメモリに読み出される。なお、プロセッサ10は、クリア命令に代えて、統計情報レジスタへのロード命令の実行を可能とし、値0を統計情報レジスタにロードできるようにしてもよい。
(2)非符号となる最下位ビット位置の分布
非符号となる最下位ビット位置の分布とは、ビットが符号と異なる値となる最下位のビット位置をいう。例えば、ビットの並びを最上位ビットであるbit[39]から最下位ビット
であるbit[0]までの並びとしたとき、符号ビットbit[39]と異なるbit[k]のうち、インデ
ックスkが最小のものをいう。また、非符号となる最下位ビット位置の分布では、データ
の桁数が把握される。
(3)非符号となる最上位ビット位置の最大値
非符号となる最上位ビット位置の最大値は、前回クリア命令が実行されたときから現在に至るまでに、命令実行の対象となった1以上の固定小数点数について符号ビットの値と異なる値となる最上位のビット位置のうちの最大値である。情報処理装置1は、非符号となる最上位のビット位置の最大値をDynamic Fixed Point演算における適正なシフト量、
つまり、適切な小数点位置の決定に利用できる。
プロセッサ10は、上記統計情報レジスタからの上記最大値の読み出し、統計情報レジスタのクリア等の命令を実行する。したがって、統計情報レジスタには、前回のクリア命令の実行から現在までの最大値が蓄積され、読み出し命令によって最大値がメモリに読み出される。
(4)非符号となる最下位ビット位置の最小値
非符号となる最下位ビット位置の最小値は、前回クリア命令が実行されたときから現在に至るまでの1以上の固定小数点数について符号と異なる値となる最下位のビット位置のうちの最小値である。情報処理装置1は、非符号となる最下位ビット位置の最小値をDynamic Fixed Point演算における適正なシフト量、つまり、適切な小数点位置の決定に利用
できる。
プロセッサ10は、統計情報レジスタからの上記最小値の読み出し、クリア等の命令を実行する。したがって、統計情報レジスタには、前回のクリア命令の実行から現在までの上記最小値が蓄積され、読み出し命令によってメモリに読み出される。
図12に、情報処理装置1および情報処理装置1内のプロセッサ10の回路ブロックを例示する。図12では、プロセッサ10とともに、命令用メモリ(IRAM)21およびデータ用メモリ(DRAM)22も例示されている。プロセッサ10は、制御ユニット11、レジスタファイル12、ベクトルユニット13、スカラユニット14を含む。制御ユニット11は、プログラムカウンタ111とデコーダ112を含む。レジスタファイルは、ベクトルレジスタファイル、ベクトル演算用アキュムレータレジスタ(Vector ACC)、スカラレジスタファイル、スカラ演算用アキュムレータレジスタ(ACC)を含む。ベクト
ルユニット13は、ベクトル演算用の演算器131、統計情報取得部102、データ変換部103を含む。スカラユニット14は、スカラ演算用の演算器141、統計情報取得部102、データ変換部103を含む。
また、図12では、プロセッサ10は、複数の統計情報取得部102からの統計情報を集約する統計情報集約部104を含む。また、レジスタファイル12の一部に、統計情報格納部105が含まれている。また、命令用メモリ21は、メモリインターフェース(Memory I/F)を介して制御ユニット11に接続される。また、データ用メモリ22は、メモリインターフェース(Memory I/F)を介してベクトルユニット13およびスカラユニット14に接続される。
図13にベクトルユニット13の詳細を例示する。図では、統計情報集約部104も例示されている。ベクトルユニット13は、ベクトル・レジスタVector Reg0、Vector Reg1のデータをベクトル演算用の演算器131−1で演算する。ベクトル演算用の演算器13
1−1の演算結果は、積和演算用のアキュムレータ132と、ベクトル演算用の演算器131−2に入力される。
積和演算用のアキュムレータ132は、ベクトル演算用の演算器131−1の演算結果をスカラ加算し、スカラ演算用アキュムレータレジスタ(ACC)に格納する。ベクトル演
算用の演算器131−2は、命令によって指定される演算モードに従って、ベクトル演算用の演算器131−1の演算結果、あるいは、ベクトル演算用アキュムレータレジスタ(Vector ACC)のデータ、あるいは、それらを加算した結果を出力する。アキュムレータレジスタはベクトルレジスタファイルのビット数(例えば、16ビット)以上のビット幅(例えば、40ビット)を有する。
セレクタ101は、ベクトル演算用の演算器131−2の出力結果と、データ用メモリ22からの読み出し結果(Read Data 0,…, Read Data 0)のいずれかを選択し、統計情
報取得部102およびデータ変換部103に入力する。統計情報取得部102で取得された統計情報は、統計情報集約部104に入力される。また、データ変換部103でデータ変換されたデータは、図示しないセレクタを介して、データ用メモリ22(Write Data0,…, Write Data n)にストアされるか、ベクトルレジスタ(Vector Reg2)に保持される
図14にスカラユニット14の構成を例示する。スカラユニット14は、即値(Immediate)オペランドで得られるデータとスカラ・レジスタScalar Reg1からのデータの一方を選択するセレクタ142と、セレクタ142の選択結果とスカラ・レジスタScalar Reg0
のデータを演算するスカラ用の演算器141を有する。スカラ用の演算器141の演算結果は、メモリインターフェース(Memory I/F)を介してデータ用メモリ22のアドレス(例えば、Addr)にストアされる。また、スカラ用の演算器141の演算結果は、セレクタ101を介して、統計情報取得部102およびデータ変換部103に入力される。
セレクタ101は、スカラ用の演算器141の演算結果、スカラ・レジスタScalar Reg2のデータ、スカラ演算用アキュムレータレジスタ(ACC)のデータ、およびメモリインターフェース(Memory I/F)を介して読み出されたデータ(Read Data)の1つを選択する
。セレクタ101は、選択したデータを、統計情報取得部102およびデータ変換部103に入力する。統計情報取得部102は、セレクタ101から入力されたデータから統計情報を取得し、統計情報集約部104に入力する。
図15に、非符号となる最上位ビット位置を取得する統計情報取得部102Aの処理を例示する。図では、統計情報取得部102Aに含まれる非符号最上位ビット検出器による処理が例示されている。図13Aの例では、符号ビットが0、「非符号となる最上位ビット位置」として示される位置のビットが1、このビットより上位側のビットがすべて0、かつ、このビットより下位側のビットはbの入力データ(in(40bit))が例示されている
。ここで、bは0または1のいずれかである。統計情報取得部102Aは、この入力データを処理し、非符号となる最上位ビット位置を1とし、他のビット位置を0とする出力データ(out(40bit))を生成する。入力データが全ビット0、または、全ビット1の場合は、統計情報取得部102Aは、39bit目に1を、38bit以下に0を出力する。なお、以下の説明では、プロセッサ10の演算回路のデータは40ビットのデータで例示されるが、プロセッサ10の演算回路のデータが40ビットに限定される訳ではない。
図16に、非符号となる最上位ビット位置を取得する統計情報取得部102Aのハードウェア回路の構成を例示する。この回路では、符号ビットin[39]と他のビット(in[38]からin[0])との排他論理和(EXOR)が実行される。そうすると、符号ビットin[39]と同じ
値を有するビットによる排他論理和値は0となり、符号ビットin[39]と異なる値を有する
ビットによる排他論理和値は1となる。
今、仮にin[38]がin[39]と異なる値であった場合、排他論理和によって出力データのout[38]は1となる。一方、出力データのout[37]には、in[39]とin[37]の排他論理和値がANDゲートを介して入力される。このANDゲートの一方の入力には、in[39]とin[38]の排他論理和値を反転したビット値が入力されるため、in[39]とin[38]とが不一致の場合、in[39]とin[37]の排他論理和値によらず、ANDゲートの出力は0となる。図16は、演算実行後
の固定小数点数データ中の符号ビットと一致しない最上位のビットの位置にフラグビットを設定する回路の一例である。
図17は、統計情報取得部102が取得したデータからビットの分布を取得する統計情報集約部104Aの処理を例示する図である。図では、40ビットのデータが8個並列に処理されるSingle Instruction Multiple Data stream(SIMD)データからビットの
分布を取得する処理が例示される。図17では、ハードウェア回路である統計情報集約部104Aの処理が、擬似コードで記述されている。
すなわち、入力データは、8(行)×40(ビット)の配列データで例示されている。また、各行の40ビットの入力データは、非符号となる最上位ビット位置(図16の統計情報取得部102Aの出力)または非符号となる最下位ビット位置である。この処理では、40ビットの出力データoutについて、まず、全ビットがクリアされる。次に、入力デ
ータの配列in[j][i]の各列iの要素の値が、すべての行(j=0から7)に対して加算される。したがって、図15とは異なり、図17の擬似コードでは、出力データ(配列要素)out[j]は、log2(SIMDデータ数)ビット(図17の例では3ビット)の整数である。なお、図
17では、SIMDデータ数(並列処理されるデータ数)は8であると想定したが、SIMDデータ数が8に限定される訳ではない。
図18に、統計情報取得部102が取得したデータからビットの分布を取得する統計情報集約部104Aのハードウェア回路の構成を例示する。統計情報取得部102が取得したデータ(ここでは、統計取得0から統計取得(SIMDデータ数−1))がbit population count演算によって、8個の統計情報のiビット目(i=0から39)における1の個数がそれぞれカウントされる。入力データは、統計情報取得部102A(図15)によって取得された非符号となる最上位ビット位置である。したがって、統計情報集約部104Aは、統計情報取得部102Aによって取得された非符号となるSIMDデータ個数分の最上位ビット位置に対して、各ビットの’1’の発生回数をカウントすることで最上位ビット位置
の発生回数を計数する。統計情報集約部104Aは、計数結果を出力データout0からout39にそれぞれ格納する。
図19に、統計情報取得部102が取得したデータからビット位置の最大値と最小値を取得する前提として、論理和演算によってビット位置を集約する統計情報集約部104Bのハードウェア回路の構成を例示する。統計情報取得部102が取得したデータ(ここでは、統計取得0から統計取得SIMDデータ数−1)がORゲート(40ビット)によってOR演算される。また、図18でセレクタ(SEL)は、論理和演算(OR)と、スカラユニット14から取得されるデータを選択する。セレクタ(SEL)されたデータが、出力データoutに出力される。したがって、統計情報取得部102がスカラユニット14
で取得したデータは、一回の演算においては、論理和演算されることなくそのまま出力データoutに出力される。outは、統計情報格納部105に引き渡すデータである。
論理和演算によってビット位置を集約する統計情報集約部104Bは、符号ビットと一致しない最上位のビットの位置を真値で示すビット列を複数の固定小数点数データについて論理和演算によって累積する回路の一例である。論理和演算によってビット位置を集約
する統計情報集約部104Bは、符号ビットと一致しない最下位のビットの位置を真値で示すビット列を複数の固定小数点数データについて論理和演算によって累積する回路の一例でもある。
図20に、統計情報格納部105(図12参照)の具体例として、統計情報集約部104Aからの統計情報を専用レジスタに格納する統計情報格納部105Aの構成を例示する。図で、in39からin0は、図18のout39からout0に相当する統計情報集約部104からの統計情報を示す。また、sr39からsr0は、統計情報を格納するレジスタ値である。プロセ
ッサ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つあるいは複数の値を読み出し、読み出し命令で指定されたデータ用メモリに保存する、あるいは、読み出し命令で指定された汎用レジスタに格納する。
図21は、統計情報集約部104の変形例であり、統計情報の格納先がデコーダ112からのインデックスで指定される回路の構成例である。図では、例えば、sr[j][i](j=0,
…,k, i=0,…,39)の領域が確保され、indexによって、レジスタファイルの行jが指定される。
プロセッサ10は、書き込み命令によってセレクタSELを介して、indexによって指
定されるレジスタファイルの行jの1つあるいは複数のレジスタに初期値を書き込む。ただし、プロセッサ10はデコーダ112からの制御信号により、indexによって指定される
レジスタファイルの行jをリセットしても良い。そして、プロセッサ10は、in39からin0の統計情報を加算器で蓄積し、indexによって指定されるレジスタファイルの行jに格納する。また、プロセッサ10は、デコーダ112からの制御信号により、indexによって指
定されるレジスタファイルの行jから統計情報を読み出す。また、プロセッサ10は、indexによって指定されるレジスタファイルの行jのいずれかの1つあるいは複数の値を読み出し、読み出し命令で指定されたデータ用メモリに保存する、あるいは、読み出し命令で指定された汎用レジスタに格納する。
図22に実施形態1における統計情報取得を指示する命令の命令フォーマットを例示する。図22のように、既存の命令フォーマットを拡張し、統計情報を取得するか否かを指定するビットを追加するようにしてもよい。図22の例にしたがって、例えば、全命令について統計情報取得機能を追加してもよい。図のように、FLG=1は、統計情報の取得を指定する。一方、FLG=0は、統計情報の取得を指定せず、従来と同じ命令を示す。
図23に命令フォーマットの変形を例示する。図23のように、命令フォーマットを拡張し、統計情報を格納するレジスタ・インデックスを指定するようにしてもよい。図でIDXは、レジスタ・インデックス(図21等のindex)を示す。ただし、IDX=000 の場合には、プロセッサ10は統計情報を取得しない。図23の命令フォーマットをデコードし、レジスタ・インデックスIDXを取得する図12のデコーダ112は、統計情報の格
納先の指定を取得するデコーダの一例である。
図24に、実施形態1の情報処理装置1による学習処理のフローチャートを例示する。この処理では、情報処理装置1は、初期小数点位置を決定する(WE1)。情報処理装置1は、過去の実験値、実績値、あるいは、ユーザ指定により各変数の初期小数点位置を決定すればよい。
そして、情報処理装置1は、回数kを0に初期化する。また、情報処理装置1は、プログラム内の統計情報を格納する変数を初期化する(WE2)。そして、情報処理装置1は学習終了の条件が充足されたか否かを判定する(WE3)。学習が終了するのは、全結合層(fc2)でのエラーが基準値以下となるか、または、学習回数が規定の最大値に達した場合
である。
学習終了の条件が充足されない場合、情報処理装置1は、次のミニバッチを実行する。このとき、情報処理装置1は、各レイヤの各変数の統計情報を統計情報レジスタあるいは統計情報レジスタファイルに累積する。統計情報を累積は、上記で説明したように、プロセッサ10のハードウェアで実行される。そして、情報処理装置1は、変数kをカウントアップする(WE4)。
そして、情報処理装置1は、回数kが更新間隔に達したか否かを判定する(WE5)。回数kが更新間隔に達していない場合、情報処理装置1は、WE3の処理に戻る。一方、回数kが更新間隔に達した場合、情報処理装置1は、各種の統計情報が蓄積された統計情報を統計情報レジスタあるいは統計情報レジスタファイルあるいは統計情報をメモリに退避した領域から統計情報を読み出す。そして、情報処理装置1は、読み出された統計情報を基に各レイヤの各変数の小数点位置を更新する(WE6)。
このとき、情報処理装置1は、例えば、飽和するデータとアンダーフローするデータの全体のデータ数に対する比率が目標条件を充足するように、小数点位置を決定すればよい。また、情報処理装置1は、飽和するデータの全体のデータに対する比率とアンダーフローするデータの全体のデータに対する比率の両方が目標条件を充足することが困難である場合、一方を優先してもよい。また、情報処理装置1は、飽和が発生しない上限のビット位置と、有効なデータが存在する下限のビット位置の平均を、固定小数点数で表現可能な範囲の中央を位置づけて、小数点位置を設定してもよい。さらに、情報処理装置1は、回数kを0に初期化し、さらに統計情報を格納するレジスタをリセットする。そして、情報処理装置1は、C3の処理に戻る。
WE4で各レイヤの各変数の統計情報を累積することと、WE6で各種の統計情報が蓄積されたレジスタあるいはレジスタファイルから統計情報を読み出すことは、1以上の層の少なくとも1つの層において前記演算の命令を含む命令実行時の固定小数点数データ中のビットの分布についての統計情報を取得することの一例である。また、WE6で、読み出された統計情報を基に各レイヤの各変数の小数点位置を更新することは、ビットの分布についての統計情報に基づいて固定小数点数データの小数点位置を更新することの一例である。
[実施形態2]
図25から図35を参照して実施形態2に係る情報処理装置1Aを説明する。上記実施形態1では、図13に例示のように、セレクタ101がベクトル演算用の演算器131−2の出力結果と、データ用メモリ22からの読み出し結果(Read Data 0,…, Read Data 0)のいずれかを選択し、統計情報取得部102およびデータ変換部103に入力する。
そして、統計情報取得部102で取得された統計情報は、統計情報集約部104に入力さ
れる。一方、小数点位置調整のためデータ変換部103でデータ変換されたデータは、図示しないセレクタを介して、データ用メモリ22(Write Data0,…, Write Data n)にストアされるか、ベクトルレジスタ(Vector Reg2)に保持される。統計情報取得部102
は、プロセッサ10の演算命令が実行される各種の演算器とは別経路で用意されている。データ変換部103は、デコーダ112からの指令により、入力されるビットパターンを指令で指定されたビット数だけシフトする。データ変換部103は、更新回路の一例である。
より具体的には、図13で統計情報は、例えばベクトル演算用の演算器131が出力するデータの経路であるデータ変換部103、メモリインターフェースとは別経路で用意されている統計情報取得部102および統計情報集約部104によって取得される。なお、統計情報取得部102および統計情報集約部104は、他の演算命令、例えば、積和演算用のアキュムレータ132あるいは図示しない他の加算器とも別経路で用意されている。すなわち、実施形態1では、統計情報取得部102および統計情報集約部104は、プロセッサ10のデコーダ112でデコードされた命令にしたがって演算が実行される演算器の出力のデータパスから分岐した回路で実現されている。したがって、実施形態のプロセッサ10では、例えば、1回のベクトル演算実行時に、ベクトル演算の結果とともに図11のような統計情報を取得することが可能となる。
図25は、実施形態1におけるさらなる課題を説明する図である。実施形態1で説明したプロセッサ10の構成をマルチコアに拡張して適用し、各コアから統計情報を取得しようとした場合、各コアにおいて統計情報を取得し、さらに集約するための回路が設けられる結果、プロセッサ10の回路規模が大きくなる。図25は、マルチコア構成の情報処理装置501の構成を例示する図である。情報処理装置501は、Host CPU502と、制御CPU503と、複数の処理部(Processor Element、PEともいう)510−
1から510−Nを有している。以下、処理部510−1等をここに区別しないで総称するときは、処理部510という。制御CPU503と、各処理部510とはバス34で接続される。処理部510は、実施形態1のプロセッサ10と同様の構成であり、制御ユニット11、レジスタファイル12、ベクトル演算用の演算器131、および積和演算用のアキュムレータ132等を有する。なお、制御ユニット11は処理部510になくても構わない。制御ユニット11がない場合に、実施形態1のデコーダ112は、例えば、制御CPU503に設けられ、制御CPU503がデコードされた命令にしたがって、各処理部510に制御信号を発すればよい。
図26は、実施形態1のプロセッサ10の構成を単純に情報処理装置501の処理部510に適用した場合の構成例である。図26では、各処理部510に実施形態1と同様の統計情報取得部102と統計情報集約部104(集計回路とも呼ぶ)が追加される。図26では、処理部510内の統計情報集約部104は、「集約部」と記述されている。統計情報取得部102と統計情報集約部104の構成および作用は、実施形態1と同様であるので、その説明を省略する。図26では、さらに、各処理部510の統計情報集約部104で集計された統計情報を全体で集計する全体集計回路506が追加されている。このように、実施形態1のプロセッサ10の構成を単純にマルチコア構成で複数の処理部510を有する情報処理装置501に適用すると、統計情報の取得、集約、および全体集計のための回路、さらにこれらの回路を接続する専用のバスが増加し、回路規模が大きくなる。
そのため、実施形態2では、図26の処理部510に代えて、統計情報を取得するための専用命令を追加した処理部10Aが採用される。この専用命令は、専用命令を追加前の既存の命令を実行するための既存のレジスタ、バス、および演算器等を用いて処理を実行する。既存のレジスタ、バス、および演算器等を用いることで、図26に例示した統計情報の集約、および全体集計のための回路、さらにこれらの回路を接続する専用のバス等を
含む回路を削減する。したがって、実施形態1のような専用のハードウェアである統計情報集約部104および全体集計回路506を用いる場合と比較して、オーバーヘッドが発生する可能性がある。しかしながら、深層学習を処理の対象とするマシンでは、実行される処理は積和演算が主体となり、既存のレジスタ、バス、および演算器等を用いて統計情報を取得し、集約することによるオーバーヘッドは、深層学習全体の処理と比較すると極めて小さいか無視できる程度になることが予測される。
図27に、実施形態2に係る情報処理装置1Aの構成を例示する。情報処理装置1Aは、情報処理装置501は、Host CPU502と、制御CPU503と、複数の処理部10A−1から10A−Nを有している。図では、処理部10AはPEと記述されている。制御CPU503と、各処理部10Aとはバス34で接続される。さらに、図27では、バス34に、バスインターフェース36、メモリメモリインターフェースを介して接続される命令用メモリ21およびデータ用メモリ22が記載されている。
図28に、情報処理装置1A内の処理部10Aの回路ブロックを例示する。図28では、処理部10Aとともに、メモリインターフェース、命令用メモリ21およびデータ用メモリ22も例示されている。処理部10Aは、制御ユニット11、レジスタファイル12、ベクトルユニット13、スカラユニット14を含む。制御ユニット11は、プログラムカウンタ111とデコーダ112を含む。レジスタファイル12は、ベクトルレジスタファイル、ベクトル演算用アキュムレータレジスタ(Vector ACC)、スカラレジスタファイル、スカラ演算用アキュムレータレジスタ(ACC)を含む。以降、説明のため、ベクトル
レジスタファイル(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は、複数の演算回路の一例である。
ベクトルユニット13は実施形態1と同様、ベクトル演算用の演算器131を含む。また、スカラユニット14は、実施形態1と同様、スカラ演算器141を含む。ベクトル演算用の演算器131は、複数の演算回路の一例である。
ただし、実施形態1では、プロセッサ10は、専用の統計情報集約部104、統計情報格納部105を有し、既存演算回路の演算と並列にハードウェアで統計情報を取得していた。実施形態2では、図28のように、統計取得処理は、処理部10Aの命令(統計情報取得命令という)により実行される。統計情報取得命令にしたがって統計取得処理を実行するハードウェア回路は、既存命令により実行される演算回路のデータパスに統合される。その結果、統計情報取得命令は、処理部10A内の演算器、レジスタ、バスといった資源を他の既存命令と共有する。
図28のように、実施形態2の処理部10Aは、セレクタ107を有する。そして、ベクトル演算用の演算器131からの出力は、セレクタ107に直接入力されるパスと、統計情報取得部102に入力されるパスを通る。ベクトルユニット13内のセレクタ107は、ベクトル演算用の演算器131から出力される信号と統計情報取得部102から出力される信号を選択して、既存命令の演算器108に入力する。同様に、スカラ演算用の演算器141からの出力は、スカラユニット14内のセレクタ107に直接入力されるパスと、統計情報取得部102に入力されるパスを通る。スカラユニット14のセレクタ107はスカラ演算用の演算器141から出力される信号と統計情報取得部102から出力される信号を選択して、既存命令の演算器108に入力する。既存命令の演算器108は、加算命令で実行される加算回路等である。データ変換部103は、既存の加算命令による
演算器108の演算結果の固定小数点位置を調整し、メモリインターフェースを介してデータ用メモリ22に保存する。
図29は、統計情報取得命令による統計情報取得処理を実行する演算回路の詳細を例示する図である。図29の回路は、取得回路の一例である。図29は、図28のベクトル演算用のアキュムレータレジスタ(Vector ACC)と、ベクトルユニット13とを含む演算回路内の統計情報取得処理を実行する回路の詳細構成例ということができる。上述のように、処理部10Aは、40-bitのベクトル演算用のアキュムレータレジスタ ACC0からACC7(合わせて8-way)を有している。各ベクトル演算用のアキュムレータレジスタ A
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は、演算実行後の固定小数点数データ中の符号ビットと一致しない最上位のビットの位置にフラグビットを設定する回路の一例である。
1-hot-vector converter HVC0からHVC7による変換結果は、CLS0からCLS7として出力される。CLS0からCLS7は、ベクトル演算用アキュムレータレジスタ ACC0からACC7それぞれにおける演算結果のCount Leading Signの信号である。ただし、図29の回路内に、CLS0からCLS7の信号を格納するレジスタを設けてもよい。1-hot-vector converter HVC0からHVC7による変換結果によって設定される1のビットはフラグビットの一例である。
CLS0からCLS7の出力先には、Bit Population Count回路BPC0からBPC3が4回路並列に設けられる。Bit Population Count回路BPC0からBPC3は、それぞ
れ、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に入力される。
すなわち、一般化すると、CLS0からCLS7の8列のビット列のビットk+N(CLS0[k+N]からCLS7[k+N])がBit Population Count回路BPCk+Nに入力される(k=0,1,2,3)。したがって、Bit Population Count回路BPC0からBPC3は、4ビット並列にCLS0からCLS7の各ビットを合計する。処理部10Aの図示しない制御回路は、統計情報取得命令のビット位置指定オペランドによって指定されるビット位置指定信号(N)に対して、Bit Population Count回路BPC0からBPC3による演算を行なうことで、CLS0からCLS7の8列のビット列の連続した4つの同一ビット位置のビットを並列に加算する。例えば、CLS0からCLS7のビット幅が40ビットの場合には、統計情報取得命令のビット位置指定オペランドを0、4、・・・、36と変更して、統計情報取得命令を繰り返し実行することで、40ビットの統計情報を得ることができる。Bit Population Count回路BPC0からBPC3は、複数の固定小数点数データに関して設定されたフラグビットをそれぞれのビット位置毎に加算する回路の一例である。ビット位置指定オペランドは、0、4、・・・、36の4刻みでも、0から36までの任意としてもよい。また、CLSの数が、CLS0からCLS7の8列に
限定される訳ではなく、設計に応じて望ましい数(4列、16列等)が選択可能である。また、CLSのビット数が40ビットに限定される訳ではなく、設計に応じて望ましい数が選択可能である。また、図29では、Bit Population Count回路が4個設けられ、4ビット並列に加算が実行されるが、Bit Population Count回路の数が4個に限定される訳ではなく、設計に応じて望ましい個数が選択可能である。
Bit Population Count回路BPC0からBPC3の出力は、セレクタ107を介して加算器108Aに入力される。加算器108Aも4個並列に設けられる。4個の加算器108Aは、それぞれ、Bit Population Count回路BPC0からBPC3の出力のそれぞれとソースレジスタのそれぞれに蓄積済みの積算結果とを加算し、デスティネーションレジスタに出力する。ここで、ソースレジスタおよびデスティネーションレジスタは、ベクトルレジスタファイルvRegの要素であり、統計情報取得命令のオペランドとしてインデックスが指定される。ソースレジスタとデスティネーションレジスタがベクトルレジスタファイルvRegの同一の要素の場合には、加算器108Aは、ソースレジスタおよびデスティネーションレジスタとともにアキュムレータを形成し、統計情報を積算する。加算器108A、ソースレジスタおよびデスティネーションレジスタであるベクトルレジスタファイルvRegの上記要素は、累積回路の一例である。図29では、加算器108Aが4個設けられ、4個の加算器108Aが並列に加算を実行するが、加算器108Aの数が4個に限定される訳ではなく、設計に応じて望ましい個数が選択可能である。
ソースレジスタおよびデスティネーションレジスタのそれぞれは、例えば、それぞれCLS0からCLS7内の各ビット(4ビットを1組にして10組)に対応して、ベクトルレジスタファイルから4個の要素を1組にして10組用いられ、各要素は、例えば、それぞれ32ビットのビット幅を有する。ただし、32ビットのビット幅に限定がある訳ではなく、ソースレジスタおよびデスティネーションレジスタのそれぞれは、8ビット、16ビット等であってもよい。また、上述のように、図29に例示されたCLS[0:39]は、40ビットの信号線である。ただし、40ビットの信号線からの信号を受けるレジスタが設けられてもよい。そして、ソースレジスタおよびデスティネーションレジスタのそれぞれは、ビット位置指定信号(N=0、4、・・・、36)によりアクセスされる4個の要素が1組指定され、4個並列にアクセスされる。また、CLSについては、例えば、ビット位置指定信号(N)のとき、CLS[N]、 CLS[N+1]、CLS[N+2]、 CLS[N+3]の4つの信号が並列にアクセスされる。したがって、Bit Population Count回路BPC0からBPC4および4個の加算器108Aは、10回の統計情報取得命令(cls_cnt)の実行で、CLS0
からCLS7の各ビットを合計し、ベクトルレジスタファイルVregの10組それぞれの4個の要素に格納する。以上の結果、ベクトルレジスタファイルVregには、ベクトル演算用のアキュムレータレジスタ ACC0からACC7における非符号となる最上位ビット位置の分布が格納される。4個の加算器108Aは、ビット位置指定信号(N=0、4、・・・、36)の変更にしたがってフラグビットを積算する。したがって、4個の加算器108Aは、加算されたフラグビットをそれぞれのビット位置毎に積算する積算回路の一例である。したがって、図33で後述するように、4個の加算器108Aは、統計情報取得命令(cls_cnt)にしたがって、上記積算を実行する。ここで、加算器108Aは、既存
の積和演算命令(mac)あるいは加算命令等によって実行される演算回路である。したが
って、上記積算回路は、演算命令で用いられる加算回路108Aにより前記フラグビットをそれぞれのビット位置毎に積算するといえる。
さらに、処理部10Aは、ベクトルレジスタファイルに保存された統計情報を、ストア命令等の既存命令によってデータ用メモリ22に保存すればよい。Host CPU502または制御CPU503は、データ用メモリ22に保存された統計情報を、深層学習等を実行するアプリケーションプログラムに引き渡せばよい。
なお、図29で、セレクタ107には、Bit Population Count回路BPC0からBPC3からの出力と、他のパスからの出力が入力される。したがって、デコーダ112(図2
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つの共通のレジスタを有している構成の一例ということができる。
図33に例示するように、アセンブリ言語等のプログラムから指定される取得命令にしたがって、1-hot-vector converter HVC0からHVC7、Population Count回路BPC0からBPC3、及び4個の加算器108Aが起動される。そして、加算器108Aは、統計情報を取得し、取得命令で指定される汎用のベクトルレジスタファイルvRegの要素に統計情報を出力する。また、加算器108Aと汎用のベクトルレジスタファイルvRegとは、積和演算(mac)、加算(add)等の演算命令にしたがって演算を実行する演算回路の一例である。なお、図28のベクトルユニット、スカラユニット14、既存命令の演算器108も演算器の一例である。1-hot-vector converter HVC0からHVC7、Population Count回路BPC0からBPC3、及び4個の加算器108Aは、取得回路に含まれる演算回路の一例である。なお、積和演算、加算等の既存の演算命令、および取得命令は、いずれもデコーダ112でデコードされ、処理部10Aで実行される。
図30は、非符号となる最上位ビットの分布に代えて、非符号となる最上位ビットからビット0までをビット1に設定したビット列(以下、非符号となる最上位ビットの累積分布と呼ぶ)を取得する回路の詳細構成例である。図30の回路も、取得回路の一例である。図30は、図29の1-hot-vector converter HVC0からHVC7に代えて、累積分布生成回路(1-hot-vector converter + copy)HVCC0からHVCC7を有する点で
図29と相違する。
図31に、累積分布生成回路の構成を例示する。図のように、累積分布生成回路は、符号ビット(bit[39])と、ビット38(bit[38])からビット0(bit[0])の排他論理和を実行する39桁分の排他論理和回路(XOR)と、ビット37(bit[37])以下のビットにつ
いて、上位ビットとの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の既存命令、例えば、加算命令等で使用される既存のレジスタ、バス、および演算器等を用いて統計情報を取得できる。
なお、図29において、1-hot-vector converterとして、非符号となる最下位ビットの位置に1を出力する回路を用いることで、処理部10Aは、非符号となる最下位ビットの統計情報を図29と同様に取得できることは明らかである。また、図30において、累積分布生成回路として、非符号となる最下位ビット以上Most Significant Bit (MSB)ま
での範囲に対応するビット位置にフラグビット”1”を設定した累積分布による統計情報
を取得できることは明らかである。
<アセンブリイメージ>
図32に、実施形態1で説明したプロセッサ10で統計情報を取得するアセンブリ言語によるプログラムのイメージを例示する。また、図32には、ベクトルレジスタファイルのベクトルレジスタvRegの構成も記載されている。ベクトルレジスタvReg[addr]は、各アドレスaddrにおいて、128ビットであり、16-bit x 8-wayまたは32-bit x 4-wayでアクセスされる。
図では、まず、ベクトルデータをロードするvls命令によって、アドレスレジスタa[0]
で指定される係数ベクトルがベクトルレジスタvReg[11]にロードされる。そして、アドレスレジスタa[1]を変数iでインクリメントしながら、ベクトルデータがベクトルレジスタvReg[11]にロードされる。そして、積和演算macが、ベクトルレジスタvReg[10]とvReg[11]との間で、インデックスiを1から4095まで変更して実行される。
ここで、mac命令の末尾のパラメータは、0が統計情報取得なしを指示し、1が統計情
報取得ありを指示する。したがって、図32のプログラム例では、4095回の統計情報取得なしの積和演算の後の積和演算macで統計情報が取得される。実施形態1のプロセッ
サ10の場合には、既存命令のパスとは独立のハードウェアで統計情報が取得されるため、命令の末尾のパラメータで計情報取得あり、なしを指示し、1命令で統計情報を取得できる。なお、図32の最後の命令は、ベクタストア命令であり、積和演算の結果がアドレスレジスタa[2]で指定されるデータ用メモリ22のアドレスに格納される。
図33に、実施形態2の処理部10Aで統計情報を取得するアセンブリ言語によるプログラムのイメージを例示する。図のように、ベクトルデータのロードするvls命令、積和
演算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]に格納される。
図33には、cls_cntの命令フォーマットも例示されている。cls_cntの命令フォーマットは、cls_cnt cnt(ビット位置指定N)、src(ソースレジスタ)、dst(デェスティネー
ションレジスタ)である。ここで、実施形態2では、cnt(ビット位置指定N)は、図29、図30で説明したCLS0からCLS7内のビット位置を4ビットずつずらして指定する。cls_cntは、固定小数点数データ中のビットの分布中で取得対象のビット部分を指定
可能である命令の一例と言える。
したがって,実施形態2の処理部10Aでは、例えば、積和演算の終了後、40ビットのCLS0からCLS7に対して、10回の統計情報取得命令cls_cntが実行される。た
だし、実施形態2の統計情報取得処理を実行する演算回路が4ビット並列の回路に限定される訳ではない。統計情報取得処理を実行する演算回路は、2ビット並列、8ビット並列、16ビット並列の回路であってもよい。
<統計情報取得命令の実行タイムチャート>
図34に、実施形態1のプロセッサ10における積和演算命令と統計情報取得処理の実行タイムチャートを例示する。図で、1つの枠がクロックサイクル(CLOCK)に対応している。実施形態1のプロセッサ10では、命令フェッチの後、デコードと並列に、レジスタからのデータ読み出しおよび統計情報のレジスタからの読み出しが実行される。そして、積和演算命令(mac)の実行後、統計情報が1クロックサイクルで取得され、積和
演算結果のレジスタへの書込と並列に統計情報がレジスタに格納される。
図35に、実施形態2の処理部10Aにおける積和演算命令と統計情報取得処理の実行タイムチャートを例示する。実施形態2の処理部10Aでは、積和演算命令(mac)の命
令フェッチからレジスタ書込までが完了後、統計情報取得命令cls_cntの命令フェッチ、
命令のデコードとレジスタからのデータ読み出し、統計情報取得、およびレジスタへの書込が実行される。なお、cls_cnt命令で統計情報を取得する対象は直前mac命令の演算結果のため、レジスタ・バイパスを用いて参照する。ただし、実施形態2の処理部10Aでは、統計情報取得命令cls_cntは、例えば、オペランドのビット位置指定(N)で指定され
るビット位置での4ビット分の処理であるため、40ビットの統計情報を取得するには、命令が10回実行されることになる。
<実施形態2の効果>
以上述べたように、実施形態2の処理部10Aは、例えば、ベクトルユニット13による固定小数点数データについての演算結果が出力されるベクトル演算用のアキュムレータレジスタ ACC0からACC7から、固定小数点数データ中のビットの分布についての統計情報を取得する。取得された統計情報は、汎用レジスタであるvRegに出力される。したがって、処理部10Aは、既存の演算命令と少なくとも一部の回路を共通にして統計情報を取得できるので、回路規模を削減して統計情報を取得できる。
また、処理部10Aは、統計情報取得命令により1-hot-vector converter HVC0からHVC7、Population Count回路BPC0からBPC3、加算器108Fにより、既存の演算命令を実行する回路と少なくとも一部の回路を共通にして統計情報を取得できるので、回路規模を削減して統計情報を取得できる。
ここで、既存の加算器108Aは、デコーダ112の加算命令により加算を実行する回路である。したがって、実施形態2においては、統計情報取得部102は、既存の命令を実行するための既存のレジスタ、バス、および演算器等を用いて処理を実行する。このため、実施形態2の処理部10Aは、実施形態1のプロセッサ10と比較して、簡素な回路構成で統計情報を取得し、集約できる。
より具体的には、Bit Population Count回路BPC0からBPC3は、ベクトル演算用の演算器131での演算結果をベクトル演算用のアキュムレータレジスタ ACC0からACC7を介して取得し、統計情報(符号ビットと異なる値となる最上位のビット位置等)をビット位置ごとに加算して統計情報の分布を生成する。そして、既存の加算器108Aは、生成された統計情報の各ビットをデスティネーションレジスタに累積する。このため、実施形態2の処理部10Aは、実施形態1のプロセッサ10と比較して、簡素な回路構成で統計情報を累積できる。
ここで、ビットの分布についての統計情報としては、例えば、符号ビットと異なる値(非符号のビット)となる最上位のビット位置の分布、符号ビットと異なる値となる最上位ビットの位置からビット0(LSB)までをビット1に設定したビット列の分布(累積分布)が例示される。さらに、統計情報としては、符号ビットと異なる値となる最下位ビットの分布、符号ビットと異なる値となる最下位ビットの位置からから最上位ビット(MSB)までをビット1に設定したビット列の分布(累積分布)が例示される。したがって、処理部10Aは、オーバーフロー回数、アンダーフロー回数等の統計情報を取得できる。
そして、処理部10Aが符号ビットと異なる値となる最上位のビット位置の分布を取得する場合には、オーバーフロー回数の発生とアンダーフロー回数の発生を適切に制御できる。
また、処理部10Aが符号ビットと異なる値となる最上位のビット位置の累積分布を取得する場合にも、オーバーフロー回数とアンダーフロー回数の発生を適切に制御できる。
実施形態2の処理部10Aおよび処理部10Aを複数有する情報処理装置1Aは、実施形態1のプロセッサ10およびプロセッサ10を有する情報処理装置1と同様、統計情報を少なくとも1回のベクトル演算において、統計情報取得命令で取得し、アプリケーションプログラムに提供できる。したがって、深層学習を実行する情報処理装置1Aは、取得した統計情報を基に迅速、早期にデータ変換部103において、固定小数点位置を調整できる。
累積分布の各桁が表すサンプル数は、最上位桁(MSB)からその桁までの累積サンプル数である。このため、情報処理装置1Aは、2進数で一桁分のサンプル数情報とその桁位置情報を転送するだけで、累積分布全体に対する分布の割合を算出できる。累積分布全体に対する分布の割合を算出するためには、分母となる累積分布全体の総サンプル数が要求される。しかしながら、累積分布全体の総サンプル数は、回路構成から既知となる。例えば、処理部10A内で1回のベクトル演算では、ベクトル演算器の並列数だけ演算が実行される。したがって、1回のベクトル演算当りの総サンプル数は、ベクトル演算器の並列数となる。
仮に、累積分布全体のサンプル数に、スカラ演算も含める場合には、累積分布の集計対象である各演算器の回数分を積算すればよい。したがって、各処理部10Aにおいては、演算回路の構造から、累積分布全体に対する分布の割合(A%)を算出し、分布の割合が所定の閾値(所定のオーバーフロー率等)を越えた桁でのサンプル数を上位装置、例えば、Host CPU502、制御CPU503等に転送すればよい。Host CPU502、制御CPU503等は、処理部10Aから転送された桁のサンプル数を基に、情報処理装置1A全体で、各変数の小数点位置を調整すればよい。各変数の小数点位置を調整の仕方は、実施形態1の図24と同様である。
また、実施形態2においては、統計情報取得部102は、統計情報取得命令にしたがって処理を実行する。統計情報取得命令は、固定小数点数データ中のビット部分を指定され、指定されるビット部分の統計情報をレジスタに格納する。処理部10Aを制御する上位装置のプログラムは、統計情報取得命令において、統計情報中のビット分を選択して取得できる。
また、実施形態2においては、情報処理装置1Aは、Host CPU502および制御CPU503と、複数の処理部10Aを有する。Host CPU502および制御CPU503の少なくとも一方は、制御装置として処理の実行を指示する。このため、情報
処理装置1Aは、実施形態1よりも複雑な処理を高速に実行できる。
[コンピュータが読み取り可能な記録媒体]
コンピュータその他の機械、装置(以下、コンピュータ等)に上記いずれかの機能を実現させるプログラムをコンピュータ等が読み取り可能な記録媒体に記録することができる。そして、コンピュータ等に、この記録媒体のプログラムを読み込ませて実行させることにより、その機能を提供させることができる。
ここで、コンピュータ等が読み取り可能な記録媒体とは、データやプログラム等の情報を電気的、磁気的、光学的、機械的、または化学的作用によって蓄積し、コンピュータ等から読み取ることができる記録媒体をいう。このような記録媒体のうちコンピュータ等から取り外し可能なものとしては、例えばフレキシブルディスク、光磁気ディスク、CD−ROM、CD−R/W、DVD、ブルーレイディスク、DAT、8mmテープ、フラッシュメモリなどのメモリカード等がある。また、コンピュータ等に固定された記録媒体としてハードディスク、ROM(リードオンリーメモリ)等がある。さらに、SSD(Solid State Drive)は、コンピュータ等から取り外し可能な記録媒体としても、コンピュータ
等に固定された記録媒体としても利用可能である。
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. 演算命令にしたがって演算を実行する演算回路と、
    前記演算回路による演算結果を格納するレジスタファイルと、
    前記演算回路による演算結果である複数の第1固定小数点数データの各々の非符号となる最上位ビットまたは非符号となる最下位ビットの位置の分布についての統計情報の取得を取得命令にしたがって実行する取得回路と、
    を備え、
    前記取得命令は、前記統計情報の格納先として前記レジスタファイルの中の格納場所を指定し、
    前記取得命令で指定される前記格納場所に前記統計情報が格納され、
    前記演算回路による演算結果である第2固定小数点数データを前記レジスタファイルに格納する際にビット幅を制限するためのビットレンジが前記統計情報に基づいて特定される演算処理装置。
  2. 前記演算回路と前記取得回路とが、少なくとも1つの共通の演算器を用いて、前記演算および前記統計情報の前記取得をそれぞれ実行する請求項1に記載の演算処理装置。
  3. 前記取得回路は、前記複数の第1固定小数点数データに関し、前記非符号となる最上位ビットまたは前記非符号となる最下位ビットの位置にフラグビットを設定する回路を有する請求項1または2に記載の演算処理装置。
  4. 前記取得回路は、前記複数の第1固定小数点数データに関し、前記非符号となる最上位ビットの位置および前記非符号となる最上位ビットよりも下位のビット位置、または前記非符号となる最下位ビットの位置および前記非符号となる最下位ビットよりも上位のビット位置にフラグビットを設定する回路を有する請求項1または2に記載の演算処理装置。
  5. 前記取得回路は、
    前記演算回路による演算結果である前記複数の第1固定小数点数データに関して設定された前記フラグビットをそれぞれのビット位置毎に加算する加算回路を有し、
    前記加算回路は、前記演算命令に基づく前記演算において使用される請求項3または4
    に記載の演算処理装置。
  6. 前記取得命令は、前記複数の第1固定小数点数データ中のビットのうち特定のビットを指定し、
    前記取得回路は、指定された前記特定のビットに基づいて、前記統計情報を取得する請求項1から5のいずれか1項に記載の演算処理装置。
  7. 前記統計情報は、積和演算結果を保持するアキュムレータ中の前記複数の第1固定小数点データの前記非符号となる最上位ビットまたは前記非符号となる最下位ビットの位置の分布に対する統計情報である請求項1から6のいずれか1項に記載の演算処理装置。
  8. 演算命令にしたがって演算を実行する演算回路と、
    前記演算回路による演算結果を格納するレジスタファイルと、
    前記演算回路による演算結果である複数の第1固定小数点数データの各々の非符号となる最上位ビットまたは非符号となる最下位ビットの位置の分布についての統計情報の取得を取得命令にしたがって実行する取得回路と、を夫々が備える複数の演算処理装置と、
    前記複数の演算処理装置に処理の実行を指示する制御装置と、を有し、
    前記取得命令は、前記統計情報の格納先として前記レジスタファイルの中の格納場所を指定し、
    前記取得命令で指定される前記格納場所に前記統計情報が格納され、
    前記演算回路による演算結果である第2固定小数点数データを前記レジスタファイルに格納する際にビット幅を制限するためのビットレンジが前記統計情報に基づいて特定される情報処理装置。
  9. 前記演算回路と前記取得回路とが、少なくとも1つの共通の演算器を用いて、前記演算および前記統計情報の前記取得をそれぞれ実行する請求項8に記載の情報処理装置。
  10. 演算命令にしたがって演算を実行する演算回路と、前記演算回路による演算結果を格納するレジスタファイルと、を有する情報処理装置が、
    前記演算回路による演算結果である複数の第1固定小数点数データの各々の非符号となる最上位ビットまたは非符号となる最下位ビットの位置の分布についての統計情報の取得を取得命令にしたがって実行し、
    前記取得命令において前記統計情報の格納先として指定される前記レジスタファイルの中の格納場所に前記統計情報を格納し、
    前記演算回路による演算結果である第2固定小数点数データを前記レジスタファイルに格納する際にビット幅を制限するためのビットレンジを前記統計情報に基づいて特定する情報処理方法。
  11. 前記演算および前記統計情報の前記取得において、前記演算命令と前記取得命令とが少なくとも1つの共通の演算器を用いてそれぞれ実行される請求項10に記載の情報処理方法。
  12. 演算命令にしたがって演算を実行する演算回路と、前記演算回路による演算結果を格納するレジスタファイルと、を有する情報処理装置に、
    前記演算回路による演算結果である複数の第1固定小数点数データの各々の非符号となる最上位ビットまたは非符号となる最下位ビットの位置の分布についての統計情報の取得を取得命令にしたがって実行し、
    前記取得命令において前記統計情報の格納先として指定される前記レジスタファイルの中の格納場所に前記統計情報を格納し、
    前記演算回路による演算結果である第2固定小数点数データを前記レジスタファイル
    格納する際にビット幅を制限するためのビットレンジを前記統計情報に基づいて特定することを実行させるためのプログラム。
  13. 前記演算および前記統計情報の前記取得において、前記演算命令と前記取得命令とが少なくとも1つの共通の演算器を用いてそれぞれ実行される請求項12に記載のプログラム。
JP2018033037A 2018-02-27 2018-02-27 演算処理装置、情報処理装置、情報処理方法、およびプログラム Active JP6540841B1 (ja)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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 富士通株式会社 演算処理回路、演算処理回路を含む演算処理装置、演算処理装置を含む情報処理装置、および方法

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