JP7137067B2 - 演算処理装置、学習プログラム及び学習方法 - Google Patents

演算処理装置、学習プログラム及び学習方法 Download PDF

Info

Publication number
JP7137067B2
JP7137067B2 JP2018200993A JP2018200993A JP7137067B2 JP 7137067 B2 JP7137067 B2 JP 7137067B2 JP 2018200993 A JP2018200993 A JP 2018200993A JP 2018200993 A JP2018200993 A JP 2018200993A JP 7137067 B2 JP7137067 B2 JP 7137067B2
Authority
JP
Japan
Prior art keywords
data
bit
arithmetic
statistical information
output data
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
JP2018200993A
Other languages
English (en)
Other versions
JP2020067897A (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 JP2018200993A priority Critical patent/JP7137067B2/ja
Priority to US16/662,119 priority patent/US20200134434A1/en
Publication of JP2020067897A publication Critical patent/JP2020067897A/ja
Application granted granted Critical
Publication of JP7137067B2 publication Critical patent/JP7137067B2/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/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • 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/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/04Architecture, e.g. interconnection topology
    • G06N3/048Activation functions

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Biophysics (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Computational Linguistics (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Molecular Biology (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Neurology (AREA)
  • Databases & Information Systems (AREA)
  • Algebra (AREA)
  • Probability & Statistics with Applications (AREA)
  • Operations Research (AREA)
  • Evolutionary Biology (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Image Analysis (AREA)
  • Image Processing (AREA)
  • Complex Calculations (AREA)

Description

本発明は,演算処理装置、学習プログラム及び学習方法に関する。
深層学習(Deep Learning、以下DLと称する)は、多層のニューラルネットワークを用いた機械学習である。ディープ・ニューラルネットワーク(Deep Neural Network、以下DNNと称する)は、入力層、複数の隠れ層、出力層が順番に並べられたネットワークである。各層は、1または複数のノードを持ち、各ノードは値を持つ。そして、ある層と次の層の間のノード同士はエッジで結ばれ、各エッジは重みやバイアスと呼ばれる変数(パラメータ)を持つ。
DNNにおいて、各層のノードの値は、前段の層のノードの値とエッジの重み等に基づく所定の演算を実行して求められる。そして、入力データが入力層のノードに入力されると、次の層のノードの値が所定の演算により求められ、さらに、演算により求められたデータを入力として次の層のノードの値が別の所定の演算により求められる。そして、最終層である出力層のノードの値が、入力データに対する出力データとなる。
DNNにおいて、前の層の出力データをその平均と分散に基づいて正規化する正規化層を、前の層との間に挿入し、学習処理単位(ミニバッチ)毎に出力データを正規化するバッチノーマライゼーション(バッチ正規化)が行われる。正規化層を挿入することで、出力データの分布の偏りが補正されるため、NDD全体の学習が効率的に進行する。例えば、画像データを入力データとするDNNは、しばしば、畳み込み演算を行う畳み込み層(コンボリューション層)の後ろに正規化層を有する。
また、DNNにおいて、入力データを正規化することも行われる。この場合、入力層の直後に正規化層を設け、学習単位毎に入力データを正規化し、正規化された入力データについて学習を実行する。これにより、入力データの分布の偏りが補正され、DNN全体の学習が効率的に進行する。
特開2017-120609号公報 特開平07-121656号公報 特開2018-124681号公報
近年のDNNでは、DNNの認識性能を向上させるために学習データが増加する傾向にある。そのため、DNNの計算負荷が増大し、学習時間の増加と、DNNの演算を実行するコンピュータのメモリの負荷の増大が課題となっている。
この課題は、正規化層の演算負荷にも同様に当てはまる。例えば、除算正規化の演算では、データの値の平均を求め、平均に基づいてデータの値の分散を求め、データの値に対して平均と分散に基づく正規化演算を行う。学習データの増加に伴い、ミニバッチ数が増大すると、正規化演算の計算負荷の増大が学習時間の増加等を招くことになる。
そこで,本実施の形態の第1の側面の目的は,正規化演算を高速化する演算処理装置、学習プログラム及び学習方法を提供することにある。
本実施の形態の第1の側面は,演算器と、
前記演算器が出力する演算出力データを格納するレジスタと、
前記演算出力データまたは被正規化データのいずれかの対象データから、前記対象データの非符号となる最上位ビットの位置を示すビットパターンを生成する統計取得部と、
正の符号ビットを持つ複数の対象データの前記ビットパターンが示す前記非符号となる最上位ビットの位置の各ビットの第1の数と、負の符号ビットを持つ複数の対象データの前記ビットパターンが示す前記非符号となる最上位ビットの位置の各ビットの第2の数とを、それぞれ別々に加算し、正の統計情報または負の統計情報、または正及び負の統計情報の両方を生成する統計集約部とを有する、演算処理装置である。
第1の側面によれば,正規化演算を高速化することができる。
ディープ・ニューラルネットワーク(DNN)の構成例を示す図である。 DNNの学習処理の一例のフローチャートを示す図である。 畳み込み層の演算を説明する図である。 畳み込み演算の演算式を示す図である。 全結合層の演算を説明する図である。 バッチ正規化層での正規化を説明する図である。 ミニバッチ正規化演算のフローチャートを示す図である。 本実施の形態における畳み込み層とバッチ正規化層(1)の処理を示すフローチャートである。 統計情報を説明する図である。 本実施の形態におけるバッチ正規化処理のフローチャートを示す図である。 本実施の形態における畳み込み層とバッチ正規化層の処理をベクトル演算器により行うフローチャートを示す図である。 本実施の形態における畳み込み層とバッチ正規化層の処理を別々に行うフローチャートを示す図である。 本実施の形態におけるディープラーニング(DL)システムの構成例を示す図である。 ホストマシン30の構成例を示す図である。 DL実行マシンの構成例を示す図である。 ホストマシンとDL実行マシンによるディープラーニング処理の概略を示すシーケンスチャートの図である。 DL実行プロセッサ43の構成例を示す図である。 図17のDL実行プロセッサにより実行される畳み込み演算と正規化演算のフローチャートを示す図である。 図18の畳み込み演算と統計情報の更新の処理S51の詳細を示すフローチャート図である。 DL実行プロセッサによる統計情報の取得、集約、格納の処理を示すフローチャートの図である。 統計情報取得器ST_ACの論理回路例を示す図である。 統計情報取得器が取得する演算出力データのビットパターンを示す図である。 統計情報集約器ST_AGR_1の論理回路例を示す図である。 統計情報集約器ST_AGR_1の動作を説明する図である。 第2の統計情報集約器ST_AGR_2と統計情報レジスタファイルの例を示す図である。 DL実行プロセッサによる平均の演算処理の一例を示すフローチャートの図である。 DL実行プロセッサによる分散の演算処理の一例を示すフローチャートの図である。
図1は、ディープ・ニューラルネットワーク(DNN)の構成例を示す図である。図1のDNNは、例えば、画像を入力し、入力画像の内容(例えば数字)に応じて有限個のカテゴリに分類する物体カテゴリ認識のモデルである。DNNは、入力層10、畳み込み層11、バッチ正規化層12、活性化関数層13、畳み込み層などの隠れ層14、全結合層15、バッチ正規化層16,活性化関数層17,隠れ層18,全結合層19、ソフトマックス関数層20を有する。ソフトマックス関数層20は出力層に対応する。各層は、単数または複数のノードを有する。畳み込み層の出力側にプーリング層が挿入される場合もある。
畳み込み層11は、入力層10内の複数のノードに入力された例えば画像の画素データに、ノード間の重み等を積和演算して、畳み込み層11内の複数のノードに画像の特徴を有する出力画像の画素データをそれぞれ出力する。
バッチ正規化層12は、畳み込み層11内の複数のノードに出力された出力画像の画素データを正規化して例えば分布の偏りを抑制する。そして、活性化関数層13は、正規化された画素データを活性化関数に入力し、その出力を生成する。バッチ正規化層16も同様の正規化演算を行う。
前述したとおり、出力画像の画素データの分布を正規化することで、画素データの分布の偏りが補正され、DNN全体の学習が効率的に進行する。
図2は、DNNの学習処理の一例のフローチャートを示す図である。学習処理は、例えば、入力データと、入力データをDNNに入力して算出される出力の正解データとを有する複数の教師データを使用して、DNN内の重み等のパラメータを最適化する。図2の例は、ミニバッチ法により、複数の教師データを複数のミニバッチに分割し、各ミニバッチの複数の教師データの入力データを入力し、それぞれの入力データに対してDNNが出力した出力データと正解データとの差分(誤差)の二乗和がなるべく小さくなるように重み等のパラメータを最適化する。
図2に示されるとおり、事前の準備として、複数の教師データを並び替え(S1)、並び替えた複数の教師データを複数のミニバッチに分割する(S2)。そして、学習処理は、分割した複数のミニバッチそれぞれに対して(S3のNO)、順伝播処理S4と、誤差評価S5と、逆伝播処理S6と、パラメータ更新処理S7とを繰り返す。全てのミニバッチの処理が終了すると(S3のYES)、学習処理は、学習率を更新し(S8)、指定回数に達するまで(S9のNO)、同じ教師データについて、処理S1-S7を繰り返し実行する。
また、指定回数に達するまで同じ学習データで所定S1-S7を繰り返すことに代えて、学習結果の評価値、例えば、出力データと正解データとの差分(誤差)の二乗和が一定の範囲に収まったことで、学習処理を終了することも行われる。
順伝播処理S4では、DNNの入力側から出力側に向かって各層の演算が順番に実行される。図1の例で説明すると、畳み込み層11が、入力層10に入力された1つのミニバッチが有する複数の教師データの入力データを、エッジの重みで畳み込み演算を行い、複数の演算出力データを生成する。そして、正規化層12が、複数の演算出力データを正規化し、分布の偏りを補正する。または、隠れ層14が畳み込み層とすると、正規化された複数の演算出力データを畳み込み演算して複数の演算出力データを生成し、バッチ正規化層16が同様に正規化処理を行う。上記の演算が、DNNの入力側から出力側に向かって実行される。
次に、誤差評価処理S5は、DNNの出力データと正解データの差分の二乗和を誤差として演算する。そして、誤差をDNNの出力側から入力側に逆伝播する。パラメータ更新処理S7は、逆伝播された各層の誤差をできるだけ小さくするよう、各層の重み等を最適化する。重み等の最適化は勾配降下法により重み等を変化させることで行われる。
DNNは、複数の層をハードウエア回路で構成し、各層の演算をハードウエア回路が実行するようにしてもよい。または、DNNは、DNNの各層の演算を実行するプロセッサに、各層の演算を実行させるプログラムを実行させる構成でもよい。
図3は、畳み込み層の演算を説明する図である。図4は、畳み込み演算の演算式を示す図である。畳み込み層の演算は、例えば、入力画像IMG_inにフィルタWを畳み込む演算を行い、畳み込んだ積和演算結果にバイアスbを加算する。図3では、Cチャネルの入力画像IMG_inに各フィルタWを畳み込み、各バイアスbを加算し、Dチャネルの出力画像IMG_outが生成されている。従って、フィルタWとバイアスbはそれぞれDチャネル分有する。
図4に示される畳み込み演算式によれば、画像番号nのチャネルcの座標(Y,X)=(j-q+v, i-p+u)の画素の値xn,j-q+v,i-p+u,cに、フィルタWの各画素値(重み)wv,u,c,dを、フィルタサイズV*Uとチャネル数Cだけ積和演算し、バイアスbdを加算し、チャネル番号dの出力画像IMG_outの座標(j,i)の画素値zn,j,i,dを出力する。つまり、画像番号nの画像はチャネル数Cの画像を含み、畳み込み演算では、画像番号n毎に、各チャネルの二次元の画素をチャネル数C分積和演算され、画像番号nの出力画像が生成される。また、フィルタwとバイスbが複数チャネルdある場合、画像番号nの出力画像はチャネルd分の画像を有する。
DNNの入力層にはチャネル数Cの入力画像が入力され、畳み込み層での演算によりフィルタ数d、バイアス数d個の出力画像が出力される。同様に、DNNの中間層に設けられる畳み込み層でも、その前段の層にはチャネル数Cの画像が入力され、畳み込み層での演算によりフィルタ数d、バイアス数d個の出力画像が出力される。
図5は、全結合層の演算を説明する図である。全結合層は、入力側の層の全ノードx0-xcと出力側の層の全ノードz0-zdとがすべて結合し、入力側の層の全ノードの値x0-xcと各結合のエッジの重みwc,dを積和し、それぞれのバイアスbdを加算して、出力側の層の全ノードの値z0-zcを出力する。
図6は、バッチ正規化層での正規化を説明する図である。図6には、正規化前のヒストグラムN1と正規化後のヒストグラムN2とが示される。正規化前のヒストグラムN1は、中心0に対して左側の分布が偏っているが、正規化後のヒストグラムN2は、中心0に対して左右対称の分布になっている。
DNN内において、正規化層は、正規化層の前の層の複数の出力データをその平均と分散に基づいて正規化する層である。図6の例では、平均を0、分散を1にスケーリングする正規化である。そして、バッチ正規化層は、DNNの学習処理単位であるミニバッチ毎に、複数の出力データの平均と分散を演算し、複数の出力データを平均と分散に基づいて正規化する。
図7は、ミニバッチ正規化演算のフローチャートを示す図である。図7の正規化演算は、除算正規化の例である。正規化演算には、除算正規化の他に出力データから出力データの平均を減じる減算正規化もある。
図7において、全学習データが複数のミニバッチに分割される。ミニバッチ内の畳み込み演算の演算出力データの値をxiとし、1つのミニバッチ内の演算出力データの総サンプル数をMとする(S10)。図7の正規化演算では、まず、対象の1つのミニバッチ内の全データxi(i=1~M)を加算してデータ数Mで除算して、平均μBを求める(S11)。この平均を求める演算では1ミニバッチ内の全データ数M回の加算とMの除算が必要になる。次に、正規化演算では、各データの値xiから平均μBを減じた差分の二乗を求め、二乗の値を累積加算して、分散σ2 Bを求める(S12)。この演算では、全データ数M分の減算、二乗の乗算、加算が必要になる。そして、上記の平均μBと分散σ2 Bとに基づいて、図示される演算により全出力データそれぞれを正規化する(S13, S14)。この正規化の演算では、全出力データ数M分の減算と除算と、標準偏差を求めるための平方根の演算とが必要になる。
このようにバッチ正規化に必要な演算量が多いので、学習全体の演算量も多くなる。例えば、出力データの数がMの場合、平均を求める演算では、加算がM回、除算が1回必要である。また、分散を求める演算では加算が2M回、乗算がM回、除算が1回必要であり、M個の出力データを平均と分散に基づいて正規化する場合、減算がM回、除算がM回、平方根を求めるのが1回必要になる。
また、画像サイズがH×Hで、チャネル数がDで、バッチ内の画像数がKの場合、正規化対象の出力データの総数は、H*H*D*Kとなるので、上記の演算量は非常に大きくなる。
なお、正規化処理は、DNN内の畳み込み層などの出力データに行う場合以外に、学習データの入力データに行う場合もある。その場合の入力データの総数は、教師データのチャネル数C分の入力画像の画素数H*Hを教師データ数K倍した数になり、H*H*C*Kとなる。
本実施の形態では、演算器による演算出力データまたは入力データのような被正規化データのいずれかを、対象データと称する。本実施の形態では、この対象データの統計情報を取得し、正規化の演算を簡略化する。
[本実施の形態]
以下に説明する実施の形態は、正規化に必要な演算量を減らす方法に関する。
図8は、本実施の形態における畳み込み層とバッチ正規化層(1)の処理を示すフローチャートである。この処理は、ディープラーニング(DL)実行プロセッサにより行われる。ディープラーニングはDNNにより行われる。また、図8の例は、DL実行プロセッサ内のスカラー演算器により実行される例である。
畳み込み層とバッチ正規化層の演算S14は、1ミニバッチ内の全出力画像の各画素の値(出力データ)を求める畳み込み演算を、1ミニバッチ内の出力データ数分繰り返し実行する(S141)。ここで1ミニバッチ内の出力データ数とは、1ミニバッチ内の複数の教師データの各入力画像から生成された全出力画像の画素の数である。
まず、DL実行プロセッサ内のスカラー演算器が、入力画像の画素値である入力データとフィルタの重みとバイアスによる畳み込み演算を実行し、出力画像の1つの画素の値(演算出力データ)を算出する(S142)。次に、DL実行プロセッサが、正の演算出力データと負の演算出力データの統計情報をそれぞれ取得し、取得した正と負の統計情報を取得済みの正と負の統計情報の累積加算値にそれぞれ加算する(S143)。上記の畳み込み演算S142と統計情報の取得及び累積加算S143は、DNN演算プログラムに基づき、DL実行プロセッサのスカラー演算器などのハードウエアにより行う。
1ミニバッチ内の出力データ分の処理S142,S143が終了すると、DL実行プロセッサが、各演算出力データの値を、統計情報の各ビンの近似値に置き換えて、正規化演算を実行し、正規化された出力データを出力する(S144)。同じビンに属する演算出力データの値が近似値に置き換えられるので、近似値とビンに属するデータ数に基づいて、正規化に必要な出力データの平均や分布の演算を簡単に行うことができる。この処理S144は、バッチ正規化層の演算である。
図9は、統計情報を説明する図である。演算出力データの統計情報は、演算出力データXの底を2とする対数(log2X)に基づくヒストグラムの各ビンの数である。本実施の形態では、上記の処理S143で説明したとおり、演算出力データを正の数と負の数に分け、それぞれの集合について、ヒストグラムの各ビンの数を累積加算する。演算出力データXの底を2とする対数(log2X)は、演算出力データXが2進数の場合、出力データXの桁番号(ビット番号)を意味する。したがって、出力データXが20ビットの2進数の場合、ヒストグラムは20個のビンを有する。図9にはこの例が示される。
図9は、正または負の演算出力データのヒストグラムの例を示す。ヒストグラムの複数のビンは、横軸が、出力データXの底を2とする対数log2X(出力データのビット番号)に対応し、各ビンの数は、縦軸のサンプル数(演算出力データ数)に対応する。横軸の負の値は、演算出力データの小数点以下の非符号となる最上位ビットに対応し、横軸の正の値は、演算出力データの整数部の非符号となる最上位ビットに対応する。
例えば、横軸のビンの数20(-8~+11)は、2進数の演算出力データの20ビットに対応する。横軸の「3」のビンは、符号ビットを加えた演算出力データ(固定小数点数)の
「0 0000 0000 1000.0000 0000~0 0000 0000 1111.1111 1111」内のデータが含まれる。この場合、演算出力データの非符号となる最上位ビットの位置が「3」に対応する。「3」のビンの演算出力データの近似値は、例えば「0 0000 0000 1000.0000 0000~0 0000 0000 1111.1111 1111」内の最小値であるe3(=10進数の10)とする。
ここで、非符号とは、符号ビット0(正)または1(負)とは異なる1または0の意味である。正の数では符号ビットが0であるので非符号は1になる。負の数では符号ビットが1であるので非符号は0になる。
演算出力データが固定小数点表現の場合、ヒストグラムの横軸の各ビンは、非符号となる最上位ビットの位置に対応する。この場合、各演算出力データがどのビンに属するかを検出することは、演算出力ビットの非符号となる最上位ビットを検出するだけであり容易である。一方、演算出力データが浮動小数点表現の場合、ヒストグラムの横軸の各ビンは、仮数部の値(桁数)に対応する。この場合も、各演算出力データがどのビンに属するかを検出するのは容易である。
本実施の形態では、図9に示す出力データの桁に対応するヒストグラムの各ビンの数を統計情報として取得し、正規化処理に必要な出力データの平均や分散を、各ビンの近似値と統計情報(ビン内のデータ数)を使用して求める。具体的には、各ビンに属する出力データを、符号ビットが正なら+2e+i、負なら-2e+iの近似値に近似する。ここで、iは、非符号となる最上位ビットのビット位置、つまりヒストグラムの横軸の値を示す。各ビンに属する出力データを、前述の近似値で近似することで、平均や分散を求める演算を簡素化することができる。それにより、正規化処理のプロセッサの負荷を軽減でき、学習の処理負荷を軽減でき、学習時間を短くできる。
図9のヒストグラムのビン「3」に属する出力データを全て近似値2に近似すると、ビン3に属する出力データの値の和は、ビンに属するデータ数が1647とすれば、以下の演算で求めることができる。
Σ(23=<X<24)=1647 * 23
図10は、本実施の形態におけるバッチ正規化処理のフローチャートを示す図である。まず、バッチ正規化を実行するプロセッサは、ヒストグラムの統計情報を初期値として入力する(S20)。統計情報は、ヒストグラムのスケール(最小ビットの値のべき数)e、ビン数N、出力データの総サンプル数M、i-1番目のビンの正及び負の近似値+2e+i、-2e+i、正及び負の対象データそれぞれのヒストグラム(ビンに属するデータ数)Sp[N], Sn[N]などである。
正の対象データのヒストグラム(ビンに属するデータ数)Sp[N]は、
2e+i≦X<2e+i+1
に属するデータの数である。
また、負の対象データのヒストグラム(ビンに属するデータ数)Sn[N]は、
-2e+i+1<X≦-2e+i
に属するデータの数である。
次に、プロセッサは、ミニバッチのデータの平均を求める(S21)。平均μを求める演算式は、図10のS21に示される。この演算式では、正及び負の対象データそれぞれのヒストグラム(ビンに属するデータ数)Sp[N], Sn[N]を減じ、近似値2e+iを乗じたものを、1ミニバッチ内のビン数N分加算し、最後に総サンプル数Mで除算する。したがって、プロセッサは、1ミニバッチ内のビン数N分の加算を2回行い(加算を2N回)、乗算を1回行い(乗算をN回)、除算を1回行う。
さらに、プロセッサは、ミニバッチのデータの分散σを求める(S22)。分散を求める演算式は、図10のS22に示される。この演算式では、正の近似値2e+iから平均μを減じて二乗したものをビン内のデータ数Sp[N]で乗算し、同様に負の近似値-2e+iから平均μを減じて二乗したものをビン内のデータ数Sn[N]で乗算し、互いに加算し、累積する。最後にデータの総サンプル数Mで除算する。したがって、プロセッサは、加減算が4N回、乗算が4N回、除算が1回行う。
そして、プロセッサは、対象データxiを、平均μと分散σに基づいて、図10中のS23に示した演算式で正規化する(S23、S24)。各データxiの正規化に、減算と除算と、分散から標準偏差を求める平方根の演算が必要であり、プロセッサは、減算、除算、平方根をそれぞれN回行う。
図11は、本実施の形態における畳み込み層とバッチ正規化層の処理をベクトル演算器により行うフローチャートを示す図である。図8で説明したスカラー演算器により行う処理と異なり、処理S142Aで、ベクトル演算器のN要素それぞれが、入力データ、フィルタの重み、バイアスから、出力画像の各画素の値(出力データ)を算出する。同様に、処理S143Aでベクトル演算器のN要素それぞれの出力データの統計情報を取得し、取得した統計情報を累積加算する。処理S142A,S143Aの処理は、ベクトル演算器が行うことを除くと、図8の処理S142,S143と同じである。
従って、図11では、ベクトル演算器のN要素が並列に処理S132の演算を実行するので、図8のスカラー演算器による演算より演算時間が短い。
図12は、本実施の形態における畳み込み層とバッチ正規化層の処理を別々に行うフローチャートを示す図である。図12は、図8と同様にスカラー演算器により演算をする例である。
図12では、図8と異なり、プロセッサは、処理S141,S142で、出力画像の各画素の値(出力データ)を求める畳み込み演算を1ミニバッチ内の出力データ数分繰り返す。これらの出力データはそれぞれメモリに記憶される。次に、プロセッサは、処理S141A、S143で、メモリに記憶した出力データを読み出し、出力データの統計情報を取得し、累積加算し、統計情報をレジスタまたはメモリに記憶する。最後に、プロセッサは、処理S144で、各出力データの値を、各ビンの近似値に置き換えて、正規化演算を実行し、正規化された出力データを出力する。正規化された出力データはメモリに記憶される。上記の各処理S142,S143,S144は、図8と同じである。
図12の畳み込み演算処理S142は、図11で説明したように、ベクトル演算器のN要素で並列に行っても良い。その場合、処理S143でも、ベクトル演算器のN要素それぞれから出力される畳み込み演算の出力データから統計情報が取得され、集約され、累積加算される。
図13は、本実施の形態におけるディープラーニング(DL)システムの構成例を示す図である。DLシステムは、ホストマシン30とDL実行マシン40とを有し、例えば、専用インターフェースを介してホストマシン30とDL実行マシン40とが接続される。また、ホストマシン30には利用者端末50がアクセス可能にされ、利用者は、利用者端末50からホストマシン30にアクセスし、DL実行マシン40を操作し、ディープラーニングを実行する。ホストマシン30は、利用者端末からの指示に従い、DL実行マシンが実行するプログラムを作成し、DL実行マシンに送信する。そして、DL実行マシンは送信されたプログラムを実行し、ディープラーニングを実行する。
図14は、ホストマシン30の構成例を示す図である。ホストマシン30は、プロセッサ31と、DL実行マシン40と接続するための高速入出力インターフェース32と、メインメモリ33と、内部バス34とを有する。さらに、内部バス34に接続された大容量のHDDなどの補助記憶装置35と、利用者端末50と接続するための低速入出力インターフェース36とを有する。
ホストマシン30は、補助記憶装置35に記憶されているプログラムがメインメモリ33に展開されたプログラムを実行する。補助記憶装置35には、図示されるとおり、DLの実行プログラムと、教師データが記憶される。プロセッサ31は、DLの実行プログラムと教師データをDL実行マシンに送信し、DL実行マシンに実行させる。
高速入出力インターフェース32は、例えば、PCI Expressなどのプロセッサ31とLD実行マシンのハードウエアとを接続するインターフェースである。メインメモリ33は、プロセッサが実行するプログラムやデータを記憶し、例えば、SDRAMである。
内部バス34は、プロセッサより低速の周辺機器とプロセッサとを接続し、両者の通信を中継する。低速入出力インターフェース36は、例えば、USBなど利用者端末のキーボードやマウスとの接続を行い、または、イーサーネットのネットワークとの接続を行う。
図15は、DL実行マシンの構成例を示す図である。DL実行マシン40は、ホストマシン30との通信を中継する高速入出力インターフェース41と、ホストマシン30からの指令やデータに基づいて対応する処理を実行する制御部42とを有する。また、DL実行マシン40は、DL実行プロセッサ43と、メモリアクセスコントローラ44と、内部のメモリ45を有する。
DL実行プロセッサ43は、ホストマシンから送信されたDLの実行プログラムとデータに基づいて、プログラムを実行し、ディープラーニングの処理を実行する。高速入出力インターフェース41は、例えば、PCI Expressであり、ホストマシン30との通信を中継する。
制御部42は、ホストマシンから送信されるプログラムやデータをメモリ45に記憶し、ホストマシンからの指令に応答して、DL実行プロセッサによるプログラムの実行を指示する。メモリアクセスコントローラ44は、制御部42からのアクセス要求とDL実行プロセッサ43からのアクセス要求に応答して、メモリ45へのアクセス処理を制御する。
内部のメモリ45は、DL実行プロセッサが実行するプログラム、処理対象データ、処理結果のデータなどを記憶する。例えば、SDRAMや、より高速のGDR5や広帯域のHBM2などである。
図14で説明したとおり、ホストマシン30が、DL実行マシン40にDLの実行プログラムと教師データを送信する。これらの実行プログラムと教師データは、内部メモリ45に格納される。そして、ホストマシン30からの実行指示に応答して、DL実行マシン40のDL実行プロセッサプロセッサ43が、実行プログラムを実行する。
図16は、ホストマシンとDL実行マシンによるディープラーニング処理の概略を示すシーケンスチャートの図である。ホストマシン30は、DL実行マシン40に、教師データの入力データを送信し(S30)、ディープラーニングの実行プログラム(学習プログラム)を送信し(S31)、プログラム実行指示を送信する(S32)。
これらの送信に応答して、DL実行マシン40は、入力データと実行プログラムを内部のメモリ45に記憶し、プログラム実行指示に応答して、メモリ45に記憶した入力データについて実行プログラム(学習プログラム)の実行を行う(S40)。この間、ホストマシン30は、DL実行マシンによる学習プログラムの実行完了まで待機する(S33)。
DL実行マシン40は、ディープラーニングのプログラムの実行が完了すると、プログラム実行終了の通知をホストマシン30に送信し(S41)、出力データをホストマシン30に送信する(S42)。この出力データがDNNの出力データの場合、ホストマシン30が出力データと正解データとの誤差を小さくするようにDNNのパラメータ(重み等)を最適化する処理を実行する。または、DL実行マシン40がDNNのパラメータを最適化する処理を行い、DL実行マシンが送信する出力データが最適化されたDNNのパラメータ(重み等)の場合、ホストマシン30は、最適化されたパラメータを記憶する。
図17は、DL実行プロセッサ43の構成例を示す図である。DL実行プロセッサまたはDL実行演算処理装置43は、命令制御部INST_CONと、レジスタファイルREG_FLと、特別レジスタSPC_REGと、スカラー演算ユニットSC_AR_UNIT、ベクトル演算ユニットVC_AR_UNITと、統計情報集約器ST_AGR_1、ST_AGR_2とを有する。
また、DL実行プロセッサ43には、メモリアクセスコントローラ(MAC)44を介して、命令用メモリ45_1とデータ用メモリ45_2とが接続される。MAC44は、命令用のMAC44_1と、データ用のMAC44_2とを有する。
命令制御部INST_CONは、例えば、プログラムカウンタPCと、命令デコーダDECなどを有する。命令制御部は、プログラムカウンタPCのアドレスに基づいて命令を命令用メモリ45_1からフェッチし、命令デコーダDECがフェッチした命令をデコードし、演算ユニットに発行する。
スカラー演算ユニットSC_AR_UNITは、1組の整数演算器INTと、データ変換器D_CNVと、統計情報取得器ST_ACとを有する。データ変換器は、整数演算器INTが出力する固定小数点数の出力データを浮動小数点数に変換する。スカラー演算ユニットSC_AR_UNITは、スカラーレジスタファイルSC_REG_FL内のスカラーレジスタSR0-SR31とスカラーアキュムレートレジスタSC_ACCとを使用して演算を実行する。例えば、整数演算器INTは、スカラーレジスタSR0-SR31のいずれかに格納されている入力データを演算し、その出力データを別のレジスタに格納する。また、整数演算器INTは、積和演算を実行する場合、積和演算の結果をスカラーアキュムレートレジスタSC_ACCに格納する。
レジスタファイルREG_FLは、スカラー演算ユニットSC_AG_UNITが使用する、前述のスカラーレジスタファイルSC_REG_FLとスカラーアキュムレートレジスタSC_ACCとを有する。さらに、レジスタファイルREG_FLは、ベクトル演算ユニットVC_AR_UNITが使用する、ベクトルレジスタファイルVC_REG_FLと、ベクトルアキュムレートレジスタVC_ACCとを有する。
スカラーレジスタファイルSC_REG_FLは、例えば、それぞれ32ビットのスカラーレジスタSR0-SR31と、例えば、それぞれ32×2ビット+αビットのスカラーアキュムレートレジスタSC_ACCとを有する。
ベクトルレジスタファイルVC_REG_FLは、例えば、それぞれ32ビットのレジスタを8要素の数有するREGn0-REGn7を、8セットREG00-REG07~REG70-REG77有する。また、ベクトルアキュムレートレジスタVC_ACCは、例えば、それぞれ32×2ビット+αビットのレジスタを8要素の数有するA_REG0~A_REG7を有する。
ベクトル演算ユニットVC_AT_UNITは、8要素(エレメント)の演算ユニットEL0-EL7を有する。各エレメントEL0-EL7は、整数演算器INTと、浮動小数点演算器FPと、データ変換器D_CNVとを有する。ベクトル演算ユニットは、例えば、ベクトルレジスタファイルVC_REG_FL内のいずれかのセットの8エレメントのレジスタREGn0-REGn7を入力し、8エレメントの演算器で演算を並列に実行し、その演算結果を他のセットの8エレメントのレジスタREGn0-REGn7に格納する。
また、ベクトル演算ユニットは、8エレメントの演算器でそれぞれ積和演算を実行し、積和演算結果の累積加算値をベクトルアキュムレートレジスタVC_ACCの8エレメントのレジスタA_REG0~A_REG7に格納する。
ベクトルレジスタREGn0-REGn7及びベクトルアキュムレートレジスタA_REG0~A_REG7は、演算対象データのビット数が32ビット、16ビット、8ビットかに応じて、演算エレメント数が8,16,32と増加する。
ベクトル演算ユニットは、8エレメントの整数演算器INTの出力データの統計情報をそれぞれ取得する8つの統計情報取得器ST_ACを有する。統計情報は、整数演算器INTの正及び負の出力データの非符号となる最上位ビットの位置情報である。統計情報は、後述する図21で説明するビットパターンとして取得される。
統計情報レジスタファイルST_REG_FLは、後述する図25に示すとおり、例えばそれぞれ32ビット×40エレメントの統計情報レジスタSTR0-STR39を、例えば8セットSTR0_0-STR0_39~STR7_0-STR7_39有する。
スカラーレジスタSR0-SR31には、例えば、アドレスやDNNのパラメータなどが格納される。また、ベクトルレジスタREG00-REG07~REG70-REG77には、ベクトル演算ユニットの演算データが格納される。そして、ベクトルアキュムレートレジスタVC_ACCには、ベクトルレジスタ同士の乗算結果や加算結果が格納される。統計情報レジスタSTR0_0-STR0_39~STR7_0-STR7_39には、最大で8種類のヒストグラムの複数のビンに属するデータの数が格納される。整数演算器INTの出力データが40ビットの場合、40ビットそれぞれに対応するビンに属するデータ数が、例えば、統計情報レジスタSTR0_0-STR0_39に格納される。
スカラー演算ユニットSC_AR_UNITは、四則演算、シフト演算、分岐、ロード・ストアなどを有する。前述したとおり、スカラー演算ユニットは、整数演算器INTの出力データからヒストグラムのビンの位置を有する統計情報を取得する統計情報取得器ST_ACを有する。
ベクトル演算ユニットVC_AR_UNITは、浮動小数点演算、整数演算、ベクトルアキュムレートレジスタを用いた積和演算などを実行する。また、ベクトル演算ユニットは、ベクトルアキュムレートレジスタのクリア、積和演算(MAC: Multiply and Accumulate)、累積加算、ベクトルレジスタへの転送などを実行する。さらに、ベクトル演算ユニットは、ロードとストアも実行する。前述したとおり、ベクトル演算ユニットは、8エレメントそれぞれの整数演算器INTの出力データからヒストグラムのビンの位置を有する統計情報を取得する統計情報取得器ST_ACを有する。
[DL実行プロセッサによる畳み込み演算及び正規化演算]
図18は、図17のDL実行プロセッサにより実行される畳み込み演算と正規化演算のフローチャートを示す図である。図18は、図8及び図11の処理における正規化演算S144についてより詳細な処理を示している。
DL実行プロセッサは、統計情報レジスタファイルST_REG_FL内のレジスタセットに記憶されている正値の統計情報と負値の統計情報をクリアする(S50)。そして、DL実行プロセッサは、DNNの複数の層について順方向伝播しながら、例えば、畳み込み演算を実行しながら、畳込み演算出力データの正値の統計情報と負値の統計情報を更新する(S51)。
畳み込み演算は、例えば、ベクトル演算ユニット内の8要素の整数演算器INTとベクトルアキュムレートレジスタVC_ACCにより実行される。整数演算器INTは、畳み込み演算の積和演算を実行しその演算出力データをアキュムレートレジスタに記憶することを、繰り返し実行する。畳み込み演算は、スカラー演算ユニットSC_AR_UNIT内の整数演算器INTとスカラーアキュムレートレジスタSC_ACCにより実行されてもよい。
そして、統計情報取得器ST_ACが、整数演算器INTから出力される畳み込み演算の出力データの非符号である最上位ビットの位置を示すビットパターンを出力する。さらに、統計情報集約器ST_AC_1とST_AC_2とが、正値の非符号である最上位ビットの数を演算の出力データの全ビット別に加算し、更に、負値の非符号である最上位ビットの数を演算の出力データの全ビット別に加算し、それぞれの累積加算値を統計情報レジスタファイルST_REG_FL内の1つのセットのレジスタに格納する。1つのセットのレジスタは、畳み込み演算の出力データの全ビット数のレジスタからなり、後述する図25でその具体例を説明する。
次に、DL実行プロセッサは、S52,S53,S54の正規化演算を実行する。DL実行プロセッサは、正値と負値の統計情報から演算出力データの平均と分散を求める(S52)。平均と分散の演算は、図10で説明したとおりである。この場合、畳み込み演算の出力データが全て正値の場合は、正値の統計情報から平均と分散を求めることができる。逆に、畳み込み演算の出力データが全て負値の場合は、負値の統計情報から平均と分散を求めることができる。
次に、DL実行プロセッサは、畳み込み演算の出力データそれぞれから、平均を減算し、分散+εの平方根で除算して、正規化出力データを算出する(S53)。この正規化演算も、図10で説明したとおりである。
さらに、DL実行プロセッサは、S53で求めた正規化出力データそれぞれに、学習済みパラメータγを乗算し、学習済みパラメータβを加算して、分布を元のスケールに戻す(S54)。
図19は、図18の畳み込み演算と統計情報の更新の処理S51の詳細を示すフローチャート図である。図19の例は、図11に示したDL実行プロセッサのベクトル演算ユニットによるベクトル演算の例である。
DL実行プロセッサは、1つのミニバッチ内の畳み込み演算の全出力データを生成するまで、処理D61,S62,S63を繰り返す(S60)。DL実行プロセッサでは、ベクトル演算ユニット内の8つの要素EL0-EL7の整数演算器INTが、ベクトルレジスタの8つの要素ごとに畳み込み演算を実行し、8つの演算の出力データを、ベクトルアキュムレートレジスタVC_ACCの8つの要素に格納する(S61)。
次に、ベクトル演算ユニット内の8つの要素EL0-EL7それぞれの8つの統計情報取得器ST_ACと統計情報集約器ST_AGR_1,ST_AGR_2が、アキュムレートレジスタに格納される8つの出力データのうち、正の出力データの統計情報を集約し、統計情報レジスタファイル内の1つの統計情報レジスタ内の値に加算して格納する(S62)。
同様に、ベクトル演算ユニット内の8つの要素EL0-EL7それぞれの8つの統計情報取得器ST_ACと統計情報集約器ST_AGR_1,ST_AGR_2が、アキュムレートレジスタに格納される8つの出力データのうち、負の出力データの統計情報を集約し、統計情報レジスタファイル内の1つの統計情報レジスタ内の値に加算して格納する(S63)。
上記の処理S61,S62,S63を1つのミニバッチ内の畳み込み演算の全出力データを生成するまで繰り返すことで、DL実行プロセッサは、全出力データについて各出力データの非符号である最上位ビットの数を各ビット別に集計する。したがって、統計情報レジスタファイルの1つの統計情報レジスタは、図25に示すとおり、アキュムレートレジスタの40ビット別の数を格納する40個のレジスタを有する。
[統計情報の取得、集約、格納]
次に、DL実行プロセッサによる、演算出力データの統計情報の取得、集約、格納について、説明する。統計情報の取得、集約、格納は、ホストプロセッサから送信され命令であり、DL実行プロセッサが実行する命令をトリガにして実行される。したがって、ホストプロセッサは、DNNの各層の演算命令に加えて、統計情報の取得、集約、格納を実行する命令を、DL実行プロセッサに送信する。
図20は、DL実行プロセッサによる統計情報の取得、集約、格納の処理を示すフローチャートの図である。まず、ベクトル演算ユニット内の8つの統計情報取得器ST_ACが、整数演算器INTが出力する畳み込み演算の演算出力データの非符号となる最上位ビット位置を示すビットパターンをそれぞれ出力する(S70)。
次に、統計情報集約器ST_AGR_1が、8つのビットパターンの各ビットの「1」を、正または負の符号別に、加算して集約する。または、統計情報集約器ST_AGR_1は、8つのビットパターンの各ビットの「1」を、正と負の両符号について、加算して集約する(S71)。
さらに、統計情報集約器ST_AGR_2が、統計情報レジスタファイルST_REG_FL内の統計情報レジスタ内の値に、S71で加算して集約した値を加算し、統計情報レジスタに格納する(S72)。
上記の処理S70,S71,S72は、ベクトル演算ユニット内の8つのエレメントEL0-EL7による畳み込み演算の結果である演算出力データが生成されるたびに、繰り返される。1つのバッチ内のすべての演算出力データが生成され、上記の統計情報の取得、集約、格納処理が完了すると、統計情報レジスタには、1ミニバッチ内の全演算出力データの非符号となる最上位ビットのヒストグラムの各ビンの数である統計情報が生成される。これにより、1ミニバッチ内の演算出力データの非符号となる最上位ビットの位置の合計が、ビット別に集計される。
[統計情報の取得]
図21は、統計情報取得器ST_ACの論理回路例を示す図である。また、図22は、統計情報取得器が取得する演算出力データのビットパターンを示す図である。統計情報取得器ST_ACは、整数演算器INTが出力するNビット(N=40)の例えば畳み込み演算の演算出力データin[39:0]を入力し、非符号となる最上位ビットの位置を「1」でそれ以外を「0」で示すビットパターン出力out[39:0]を出力する。
図22に示されるとおり、統計情報取得器ST_ACは、演算出力データである入力in[39:0]について、非符号(符号ビットと異なる1または0)となる最上位ビットの位置で「1」をとり、それ以外の位置で「0」をとる出力out[39:0]をパターンビットとして出力する。但し、入力in[39:0]の全ビットが、符号ビットと同じ場合は、例外的に最上位ビットを「1」にする。図22に、統計情報取得器ST_ACの真理値表が示される。
この真理値表によれば、最初の2行は、入力in[39:0]の全ビットが符号ビット「1」、「0」と一致する例であり、出力out[39:0]の最上位ビットout[39]が「1」(0x8000000000)である。次の2行は、入力in[39:0]の38ビットin[38]が符号ビット「1」、「0」と異なる例であり、出力out[39:0]の38ビットout[38]が「1」、それ以外が「0」である。最も下の2行は、入力in[39:0]の0ビットin[0]が符号ビット「1」、「0」と異なる例であり、出力out[39:0]の0ビットout[0]が「1」、それ以外が「0」である。
図21に示す論理回路図は、以下のようにして非符号である最上位ビットの位置を検出する。まず、符号ビットin[39]とin[38]が不一致の場合、EOR38の出力が「1」となり、出力out[38]が「1」になる。EOR38の出力が「1」となると、論理和OR37-OR0と論理積AND37-AND0, 反転ゲートINVにより、他の出力out[39],out[38:0]は「0」となる。
また、符号ビットin[39]がin[38]と一致、in[37]と不一致の場合、EOR38の出力が「0」、EOR37の出力が「1」となり、出力out[37]が「1」になる。EOR37の出力が「1」となると、論理和OR36-OR0と論理積AND36-AND0, 反転ゲートINVにより、他の出力out[39:38],out[36:0]は「0」となる。以下、同様である。
図21,図22から理解できるとおり、統計情報取得器ST_ACは、演算出力データの符号ビットと異なる「1」または「0」の最上位ビットの位置を含む分布情報をビットパターンとして出力する。
[統計情報の集約]
図23は、統計情報集約器ST_AGR_1の論理回路例を示す図である。また、図24は、統計情報集約器ST_AGR_1の動作を説明する図である。統計情報集約器ST_AGR_1は、8つの統計情報であるビットパターンBP_0~BP_7を、命令が指定する制御値である、第1の選択フラグsel(符号ビット「0」ならsel=0, 「1」ならsel=1)と、第2の選択フラグall(正または負ならall=0、正及び負のすべてならall=1)とに基づいて選択し、選択されたビットパターンの各ビットの「1」を加算した出力out[39:0]を出力する。統計情報集約器ST_AGR_1に入力されるビットパターンBP_0~BP_7は、それぞれ40ビットであり、
BP_0~BP_7=in[0][39:0]~in[7][39:0]
である。各ビットパターンBPには、その符号ビットsが付加される。符号ビットsは、図17において、整数演算器INTが出力するSGNである。
従って、統計情報集約器ST_AGR_1の入力は、図24に示されるとおり、ビットパターンin[39:0]、符号s、正または負を指定する符号セレクト制御値sel、正と負の全てか否かを示す全セレクト制御値allである。符号セレクト制御値selと全セレクト制御値allの論理値表が図23に示される。
この論理値表によれば、符号セレクト制御値sel=0であれば、全セレクト制御値all=0となり、統計情報集約器は、制御値sel=0と一致する符号s=0を有する正値のビットパターンBPの各ビットの1の数を累積加算し、統計情報の集約値を出力[39:0]として出力する。一方、符号セレクト制御値sel=1であれば、全セレクト制御値all=0となり、統計情報集約器は、制御値sel=1と一致する符号s=1を有する負値のビットパターンBPの各ビットの1の数を累積加算し、統計情報の集約値を出力[39:0]として出力する。更に、全セレクト制御値all=1の場合、統計情報集約器は、全ビットパターンBPの各ビットの1の数を累積加算し、統計情報の集約値を出力[39:0]として出力する。
図23の論理回路に示すとおり、8エレメントに対応するビットパターンBP_0~BP_7それぞれに、符号セレクト制御値selと符号sとが一致するか否かを検出するEOR100-EOR107とインバータINV100-INV107と、符号セレクト制御値selと符号sが一致する場合と、全セレクト制御値all=1の場合に、「1」を出力する論理和OR100-OR107を有する。統計情報集約器ST_AGR_1は、論理和OR100-OR107の出力が「1」になるビットパターンBPの各ビットの「1」を、加算回路SGM_0-SGM_39で加算し、加算結果を出力out[39:0]として生成する。
図24の出力に示されるとおり、出力は、符号セレクト制御値selに基づき、sel=0の場合の正の集約値out_p[39:0]と、sel=1の場合の負の集約値out_n[39:0]のいずれかになる。出力の各ビットは、最大値8をカウントできるようにlog2(要素数=8)+1ビットであり、要素数が8の場合は4ビットとなる。
図25は、第2の統計情報集約器ST_AGR_2と統計情報レジスタファイルの例を示す図である。第2の統計情報集約器ST_AGR_2は、第1の統計情報集約器ST_AGR_1が集約した出力out[39:0]の各ビットの値を、統計情報レジスタファイル内の1つのレジスタセットの値に加算し、格納する。
統計情報レジスタファイルST_REG_FLは、例えば、40個の32ビットレジスタSTRn_39~STRn_0 をnセット(n=0~7)有する。したがって、n種類のヒストグラムのそれぞれ40ビンの数を格納できる。今仮に、集約対象の統計情報がn=0の40個の32ビットレジスタSTR0_39~STR0_0に格納されるとする。第2の統計情報集約器ST_ARG_2は、40個の32ビットレジスタSTR0_39~STR0_0に格納される累積加算値それぞれに、第1の統計情報集約器ST_AGR_1が集計した集約値in[39:0]のそれぞれの値を加算する加算器ADD_39~ADD_0を有する。そして、加算器ADD_39~ADD_0の出力が、40個の32ビットレジスタSTR0_39~STR0_0に再格納される。これにより、40個の32ビットレジスタSTR0_39~STR0_0に、対象のヒストグラムの各ビンのサンプル数が格納される。
図17及び図21乃至図25に示した演算ユニット内に設けられた統計情報取得器ST_AC、統計情報集約器ST_AGR_1, ST_AGR_2のハードウエア回路により、例えば、畳込み演算結果の演算出力データの2進数の各ビットの分布(ヒストグラムの各ビンのサンプル数)を取得することができる。したがって、図10に示したように、バッチ正規化処理での平均と分散を簡単な演算により求めることができる。
[平均と分散の演算例]
以下、ベクトル演算ユニットによる演算出力データの平均と分散の演算例について説明する。ベクトル演算ユニットは、一例として8要素の演算器を有し、8要素のデータを並列に演算する。また、本実施の形態では、各演算出力データの値を、非符号となる最上位ビットiに対応する近似値+2e+i、-2e+iとして、平均と分散を演算する。平均と分散の演算式は、図10のS21、S22で説明したとおりである。
図26は、DL実行プロセッサによる平均の演算処理の一例を示すフローチャートの図である。DL実行プロセッサは、浮動小数点ベクトルレジスタAに統計情報である非符号となる最上位ビットのヒストグラムの最小の8つのビンの近似値2e, 2e+1,…, 2e+7をロードする(S70)。さらに、DL実行プロセッサは、浮動小数点ベクトルレジスタCの全8要素を0にクリアする(S71)。
次に、DL実行プロセッサは、全ての統計情報について演算が終了するまで(S72のNO)、以下の処理を行う。まず、DL実行プロセッサは、浮動小数点ベクトルレジスタB1に正値の統計情報の最小ビット側の8要素をロードし(S73)、浮動小数点ベクトルレジスタB2に負値の統計情報の最小ビット側の8要素をロードする(S74)。
図9に示したヒストグラム(統計情報)は、横軸に-8~+11の20ビットに対応する20個のビンを有し、この場合の最小ビット側の8要素とは、-8~-1の8個のビンそれぞれのサンプル数を意味する。8要素で構成されるベクトル演算器に対応して、最小ビット側の8要素が浮動小数点ベクトルレジスタB1,B2にそれぞれロードされる。
そして、ベクトル演算ユニットVC_AR_UNITの8要素の浮動小数点演算器FPが、レジスタA、B1、B2の8要素のデータそれぞれについてA×(B1-B2)を演算し、その8要素の演算結果を、浮動小数点ベクトルレジスタCの各要素に加算する(S75)。これにより、ヒストグラムの最小ビット側の8つのビンについての演算が終わる。
そこで、ヒストグラムの次の8つのビン(0~+7の8個のビン)について演算を行うために、DL実行プロセッサは、ベクトル演算ユニット内の8要素の浮動小数点演算器により、浮動小数点ベクトルレジスタAの各要素に28を乗算する(S76)。そして、DL実行プロセッサは、処理S72-S76を実行する。処理S73,S74では、それぞれのレジスタB1,B2に、正値の統計情報の次の8要素(次の8つのビンのサンプル数)と、負値の統計情報の次の8要素(次の8つのビンのサンプル数)がロードされる。
図9の例では、ヒストグラムの次の4つのビン(+8~+11)について、処理S72-S76が実行されると、全ての統計情報の演算が終了し(S72のYES)、DL実行プロセッサは、浮動小数点ベクトルレジスタC内の全ての8要素を加算し、加算値をサンプル数Mで除算して、平均を出力する。
上記の演算は、ベクトル演算ユニット内の8要素の浮動小数点演算器FPで行ったが、ベクトル演算ユニット内の8要素の整数演算器INTで十分なビット数を処理できる場合は、整数演算器で演算してもよい。
図27は、DL実行プロセッサによる分散の演算処理の一例を示すフローチャートの図である。DL実行プロセッサは、浮動小数点ベクトルレジスタAに統計情報である非符号となる最上位ビットのヒストグラムの最小の8つのビンの近似値2e, 2e+1,…, 2e+7をロードする(S80)。さらに、DL実行プロセッサは、浮動小数点ベクトルレジスタCの全8要素を0にクリアする(S81)。
次に、DL実行プロセッサは、全ての統計情報について演算が終了するまで(S82のNO)、以下の処理を行う。まず、DL実行プロセッサは、レジスタAの8つの近似値Aそれぞれと平均値の差をそれぞれ二乗し、浮動小数点ベクトルレジスタA1の8要素に演算結果を格納する(S83)。また、DL実行プロセッサは、レジスタAの8つの近似値のマイナス-Aそれぞれと平均値の差をそれぞれ二乗し、浮動小数点ベクトルレジスタA2の8要素に演算結果を格納する(S84)。
そして、DL実行プロセッサは、浮動小数点ベクトルレジスタB1に正値の統計情報の最小ビット側の8要素をロードし(S85)、浮動小数点ベクトルレジスタB2に負値の統計情報の最小ビット側の8要素をロードする(S86)。
さらに、DL実行プロセッサでは、ベクトル演算ユニットの8要素の浮動小数点演算器が、レジスタA1とB1の8要素のデータの乗算と、レジスタA2とB2の8要素のデータの乗算と、両乗算値の加算を行い、8要素の加算結果をレジスタCの8要素のデータにそれぞれ加算して、レジスタCの8要素に格納する(S87)。これにより、ヒストグラムの最小ビット側の8つのビンについての演算が終わる。
そこで、ヒストグラムの次の8つのビン(0~+7の8個のビン)について演算を行うために、DL実行プロセッサは、ベクトル演算ユニット内の8要素の浮動小数点演算器により、浮動小数点ベクトルレジスタAの各要素に28を乗算する(S88)。そして、DL実行プロセッサは、処理S82-S88を実行する。処理S83,S84では、レジスタA内の新たな近似値2e+8, 2e+9,…, 2e+15について演算される。また、処理S85,S86では、それぞれのレジスタB1,B2に、正値の統計情報の次の8要素(次の8つのビンのサンプル数)と、負値の統計情報の次の8要素(次の8つのビンのサンプル数)がロードされる。
図9の例では、ヒストグラムの次の4つのビン(+8~+11)について、処理S82-S88が実行されると、全ての統計情報の演算が終了し(S82のYES)、DL実行プロセッサは、浮動小数点ベクトルレジスタC内の全ての8要素のデータを加算し、加算値をサンプル数Mで除算して、分散を出力する。
上記の演算も、ベクトル演算ユニット内の8要素の浮動小数点演算器FPで行ったが、ベクトル演算ユニット内の8要素の整数演算器INTで十分なビット数を処理できる場合は、整数演算器で演算してもよい。
最後に、ベクトル演算ユニット内の8要素の浮動小数点演算器FPは、全ての演算出力データについて8個ずつ、図7の処理S13に示した正規化演算を実行し、正規化した演算出力データをベクトルレジスタまたはメモリに書き込む。
[正規化演算の変形例]
上記の実施の形態では、正規化演算の例として、演算出力データxの平均と分散を求め、演算出力データxから平均を減じ、分散の二乗の平方根(標準偏差)で除す除算正規化を説明した。しかし、正規化演算の別の例として、演算出力データの平均を求め、演算出力データから平均を減じる減算正規化にも、本実施の形態を適用できる。
[正規化演算対象のデータ例]
上記の実施の形態では、演算器の演算出力データxに正規化する例を説明した。しかし、ミニバッチの複数の入力データを正規化する場合にも、本実施の形態を適用できる。この場合は、複数の入力データの統計情報を取得し集約したヒストグラムの各ビンのサンプル数と近似値を使用して平均値の演算を簡略化できる。
本明細書では、正規化対象のデータ(被正規化データまたは対象データ)は、演算出力データ、入力データなどを含む。
[ヒストグラムのビンの例]
上記の実施の形態では、演算出力データXの底を2とする対数(log2X)をビンの単位とした。しかし、上記対数の2倍(2×log2X)をビンの単位としても良い。その場合は、演算出力データXの非符号となる最上位の偶数ビットの分布(ヒストグラム)を統計情報として取得し、各ビンの範囲は2e+2i~2e+2(i+1)(iは0以上の整数)となり、近似値は2e+2iとなる。
[近似値の例]
上記の実施の形態では、各ビンの近似値を非符号となる最上位ビットの値2e+iにしている。しかし、各ビンの範囲2e+i~2e+i+1(iは0以上の整数)の場合、近似値を(2e+i+2e+i+1)/2としてもよい。
以上説明したとおり、本実施の形態によれば、DNN内の入力データや中間データ(演算出力データ)の非符号となる最上位ビットの分布(ヒストグラム)を統計情報として取得し、正規化演算で求める平均や分散を、ヒストグラムの各ビンの近似値+2e+i, -2e+iと、各ビンのデータ数とで簡単に演算することができる。したがって、プロセッサの正規化演算に要する消費電力を削減でき、学習に必要な時間を短くできる。
43:DL実行プロセッサ、演算処理装置
VC_AR_UNIT:ベクトル演算ユニット
INT:整数演算器
FP:浮動小数点演算器
ST_AC:統計情報取得器
ST_AGR_1, ST_AGR_2:統計情報集約器
ST_REG_FL:統計情報レジスタファイル
BP:ビットパターン

Claims (12)

  1. 演算器と、
    前記演算器が出力する演算出力データを格納するレジスタと、
    前記演算出力データまたは被正規化データのいずれかの対象データから、前記対象データの非符号となる最上位ビットの位置を示すビットパターンを生成する統計取得部と、
    正の符号ビットを持つ複数の対象データの前記ビットパターンが示す前記非符号となる最上位ビットの位置の各ビットの第1の数と、負の符号ビットを持つ複数の対象データの前記ビットパターンが示す前記非符号となる最上位ビットの位置の各ビットの第2の数とを、それぞれ別々に加算し、正の統計情報または負の統計情報、または正及び負の統計情報の両方を生成する統計集約部とを有する、演算処理装置。
  2. 前記統計集約部は、正の符号ビットを持つ複数の対象データ及び負の符号ビットを持つ複数の対象データそれぞれの前記ビットパターンが示す前記非符号となる最上位ビットの位置の各ビットの第3の数を加算し、正及び負のトータル統計情報を生成する、請求項1に記載の演算処理装置。
  3. 前記統計集約部は、正の符号ビット、負の符号ビットのいずれかを示す制御ビットに基づいて、前記第1の数または前記第2の数を加算し、正の統計情報または負の統計情報を生成する、請求項1に記載の演算処理装置。
  4. 前記演算器は、ディープ・ニューラルネットワークの入力層の複数のノードそれぞれの入力データに、前記入力層と出力層の間の前記ノードに対応するエッジの重みを乗算して乗算値を求め、前記乗算値を累積加算して前記出力層の複数のノードに前記演算出力データをそれぞれ算出し、
    前記統計取得部は、前記演算器が算出する前記演算出力データについて、前記ビットパターンを生成し、
    前記演算器は、前記演算出力データを前記レジスタに格納する、請求項1に記載の演算処理装置。
  5. 前記演算器は、前記演算出力データを、前記正の統計情報及び負の統計情報が有する前記非符号となる最上位ビットの位置に対応する近似値に置き換えて、前記第1の数及び第2の数に基づいて、前記演算出力データの平均値を算出する、請求項1に記載の演算処理装置。
  6. 前記演算器は、前記演算出力データを前記非符号となる最上位ビットの位置に対応する近似値に置き換えて前記演算出力データの分散値を算出する、請求項5に記載の演算処理装置。
  7. 前記演算器は、前記演算出力データから前記平均値を減算し、前記減算した値を前記分散値の平方根で除算して、前記演算出力データの正規化演算を行う、請求項6に記載の演算処理装置。
  8. 前記演算器は、前記被正規化データを、前記正の統計情報及び負の統計情報が有する前記非符号となる最上位ビットの位置に対応する近似値に置き換えて、前記第1の数及び第2の数に基づいて、前記被正規化データの平均値を算出する、請求項1に記載の演算処理装置。
  9. 前記演算器は、前記被正規化データを前記非符号となる最上位ビットの位置に対応する近似値に置き換えて前記被正規化データの分散値を算出する、請求項8に記載の演算処理装置。
  10. 前記演算器は、前記被正規化データから前記平均値を減算し、前記減算した値を前記分散値の平方根で除算して、前記被正規化データの正規化演算を行う、請求項9に記載の演算処理装置。
  11. ディープ・ニューラルネットワークの学習処理をコンピュータに実行させるコンピュータ読み取り可能な学習プログラムであって、前記学習処理は、
    演算器が出力する複数の演算出力データまたは被正規化データのいずれかの対象データの非符号となる最上位ビットの位置の各ビットの数を各ビンの数とするヒストグラムの統計データをメモリから読み出し、
    各ビンに属する前記対象データを、前記非符号となる最上位ビットの位置に対応する近似値に置き換えて、前記対象データの平均値及び分散値を算出し、
    前記平均値及び分散値に基づいて、前記対象データの正規化演算を行う、ことを有する学習プログラム。
  12. ディープ・ニューラルネットワークの学習処理をプロセッサに実行させる学習方法であって、前記学習処理は、
    演算器が出力する複数の演算出力データまたは被正規化データのいずれかの対象データの非符号となる最上位ビットの位置の各ビットの数を各ビンの数とするヒストグラムの統計データをメモリから読み出し、
    各ビンに属する前記対象データを、前記非符号となる最上位ビットの位置に対応する近似値に置き換えて、前記対象データの平均値及び分散値を算出し、
    前記平均値及び分散値に基づいて、前記対象データの正規化演算を行う、ことを有する学習方法。
JP2018200993A 2018-10-25 2018-10-25 演算処理装置、学習プログラム及び学習方法 Active JP7137067B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2018200993A JP7137067B2 (ja) 2018-10-25 2018-10-25 演算処理装置、学習プログラム及び学習方法
US16/662,119 US20200134434A1 (en) 2018-10-25 2019-10-24 Arithmetic processing device, learning program, and learning method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018200993A JP7137067B2 (ja) 2018-10-25 2018-10-25 演算処理装置、学習プログラム及び学習方法

Publications (2)

Publication Number Publication Date
JP2020067897A JP2020067897A (ja) 2020-04-30
JP7137067B2 true JP7137067B2 (ja) 2022-09-14

Family

ID=70327301

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018200993A Active JP7137067B2 (ja) 2018-10-25 2018-10-25 演算処理装置、学習プログラム及び学習方法

Country Status (2)

Country Link
US (1) US20200134434A1 (ja)
JP (1) JP7137067B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020135011A (ja) * 2019-02-13 2020-08-31 キオクシア株式会社 情報処理装置及び方法
CN111709470B (zh) * 2020-06-08 2023-10-03 北京百度网讯科技有限公司 图像生成方法、装置、设备及介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004070947A (ja) 2002-07-31 2004-03-04 Agilent Technol Inc ヒストグラム計算システム、電子試験装置及びヒストグラム計算方法
JP2018124681A (ja) 2017-01-30 2018-08-09 富士通株式会社 演算処理装置、情報処理装置、方法、およびプログラム

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2807170B2 (ja) * 1993-06-01 1998-10-08 松下電器産業株式会社 演算装置
US7024439B2 (en) * 2002-01-24 2006-04-04 Intel Corporation Leading Zero Anticipatory (LZA) algorithm and logic for high speed arithmetic units
US8250126B2 (en) * 2007-12-26 2012-08-21 Oracle America, Inc. Efficient leading zero anticipator
US8239441B2 (en) * 2008-05-15 2012-08-07 Oracle America, Inc. Leading zero estimation modification for unfused rounding catastrophic cancellation
JP6540770B2 (ja) * 2017-10-17 2019-07-10 富士通株式会社 演算処理回路、演算処理回路を含む演算処理装置、演算処理装置を含む情報処理装置、および方法
JP2019139338A (ja) * 2018-02-07 2019-08-22 富士通株式会社 情報処理装置、情報処理方法、およびプログラム
JP7056225B2 (ja) * 2018-02-26 2022-04-19 富士通株式会社 演算処理装置、情報処理装置、情報処理方法、およびプログラム
JP6540841B1 (ja) * 2018-02-27 2019-07-10 富士通株式会社 演算処理装置、情報処理装置、情報処理方法、およびプログラム
WO2019168084A1 (ja) * 2018-03-02 2019-09-06 日本電気株式会社 推論装置、畳み込み演算実行方法及びプログラム
JP6528893B1 (ja) * 2018-11-07 2019-06-12 富士通株式会社 学習プログラム、学習方法、情報処理装置
JP7174243B2 (ja) * 2018-12-21 2022-11-17 富士通株式会社 情報処理装置、ニューラルネットワークプログラム、ニューラルネットワークの処理方法
JP7188237B2 (ja) * 2019-03-29 2022-12-13 富士通株式会社 情報処理装置、情報処理方法、情報処理プログラム
JP7243498B2 (ja) * 2019-07-11 2023-03-22 富士通株式会社 演算処理装置、制御プログラム、及び制御方法
JP7354736B2 (ja) * 2019-09-30 2023-10-03 富士通株式会社 情報処理装置、情報処理方法、情報処理プログラム
JP7367595B2 (ja) * 2020-04-07 2023-10-24 富士通株式会社 情報処理装置及び情報処理方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004070947A (ja) 2002-07-31 2004-03-04 Agilent Technol Inc ヒストグラム計算システム、電子試験装置及びヒストグラム計算方法
JP2018124681A (ja) 2017-01-30 2018-08-09 富士通株式会社 演算処理装置、情報処理装置、方法、およびプログラム

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
R.Cmar et al,A methodology and design environment for DSP ASIC fixed point refinement,Design, Automation and Test in Europe Conference and Exhibition, 1999. Proceedings,米国,IEEE,1999年03月12日,https://ieeexplore.ieee.org/document/761133

Also Published As

Publication number Publication date
JP2020067897A (ja) 2020-04-30
US20200134434A1 (en) 2020-04-30

Similar Documents

Publication Publication Date Title
JP6528893B1 (ja) 学習プログラム、学習方法、情報処理装置
Valueva et al. Application of the residue number system to reduce hardware costs of the convolutional neural network implementation
CN108701250B (zh) 数据定点化方法和装置
US11423311B2 (en) Automatic tuning of artificial neural networks
JP7174243B2 (ja) 情報処理装置、ニューラルネットワークプログラム、ニューラルネットワークの処理方法
CN110689125A (zh) 计算装置
CN110163359B (zh) 一种计算装置及方法
US20190244097A1 (en) Information processing apparatus and information processing method
JP2021072103A (ja) 人工ニューラルネットワークの量子化方法とそのためのシステム及び人工ニューラルネットワーク装置
CN111026544A (zh) 图网络模型的节点分类方法、装置及终端设备
JP7137067B2 (ja) 演算処理装置、学習プログラム及び学習方法
US11551087B2 (en) Information processor, information processing method, and storage medium
US20210097397A1 (en) Information processing apparatus and information processing method
Kalali et al. A power-efficient parameter quantization technique for CNN accelerators
JP7367595B2 (ja) 情報処理装置及び情報処理方法
Ueki et al. Learning accelerator of deep neural networks with logarithmic quantization
WO2019127480A1 (zh) 用于处理数值数据的方法、设备和计算机可读存储介质
TW201935286A (zh) 電路規劃結果產生方法與系統
EP4345692A1 (en) Methods and systems for online selection of number formats for network parameters of a neural network
JPWO2020084723A1 (ja) 演算処理装置及び演算処理装置の制御方法
JP7453563B2 (ja) ニューラルネットワークシステム、ニューラルネットワークの学習方法及びニューラルネットワークの学習プログラム
US20220413806A1 (en) Information processing circuit and method of designing information processing circuit
CN117852596A (zh) 用于硬件量化过程的数学建模的***和方法
Yang et al. CANET: Quantized Neural Network Inference With 8-bit Carry-Aware Accumulator
Olegovich et al. Hardware Implementation of Classical and Bipolar Morphological Models for Convolutional Neural Network

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210709

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220615

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: 20220802

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220815

R150 Certificate of patent or registration of utility model

Ref document number: 7137067

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150