JP7174243B2 - 情報処理装置、ニューラルネットワークプログラム、ニューラルネットワークの処理方法 - Google Patents
情報処理装置、ニューラルネットワークプログラム、ニューラルネットワークの処理方法 Download PDFInfo
- Publication number
- JP7174243B2 JP7174243B2 JP2018239640A JP2018239640A JP7174243B2 JP 7174243 B2 JP7174243 B2 JP 7174243B2 JP 2018239640 A JP2018239640 A JP 2018239640A JP 2018239640 A JP2018239640 A JP 2018239640A JP 7174243 B2 JP7174243 B2 JP 7174243B2
- Authority
- JP
- Japan
- Prior art keywords
- special
- calculation
- layer
- computation
- sum
- 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/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/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
-
- 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/048—Activation functions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/082—Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
-
- 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)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- General Health & Medical Sciences (AREA)
- General Physics & Mathematics (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Image Analysis (AREA)
- Complex Calculations (AREA)
Description
前記プロセッサは、
複数の層を有するニューラルネットワーク内の前記特殊演算を含む第1の演算を実行する第1の層の前記第1の演算を、前記第1の演算の特殊演算を第2の演算器で計算する第2の方法で実行した時の、前記第1の演算に要する第2の演算時間が、前記第1の演算のために行われる前記メモリと前記レジスタ間のメモリ転送に要するメモリ転送時間以下の場合、前記第1の演算を前記第2の方法で実行し、
前記第2の演算時間が前記メモリ転送時間以下でない場合、
前記第1の演算を、前記第1の演算の特殊演算を前記第1の演算器で近似計算する第1の方法で実行した時の、前記第1の演算に要する第1の演算時間が、前記メモリ転送時間以下の場合、前記第1の演算を前記第1の方法で実行する、情報処理装置である。
1.NNの例
2.NNを実行する情報処理装置の構成例
3.NN実行プロセッサの演算器の例
4.NN実行プロセッサの問題点
5.本実施の形態におけるNNプロセッサの概略
6.特殊演算を特殊演算器により計算するか積和演算器により近似計算するかの選択
7.近似計算の選択
8.NNの各層の演算と演算回数、演算命令数、データ量の例
9.具体例に基づく選択方法
以下、上記の目次に沿って本実施の形態を説明する。
図1は、ニューラルネットワーク(以下NN)の一例を示す図である。図1のNNは、非特許文献1のAlexNetであり、本実施の形態が適用されるNNがこのNNに限定されるわけではない。
図2は、本実施の形態におけるNNの演算を実行する情報処理装置のシステムの構成例を示す図である。情報処理システムは、ホストマシン30とNN実行マシン40とを有し、例えば、専用インターフェース32,41を介して、ホストマシン30とNN実行マシン40とが接続される。また、ホストマシン30には利用者端末50がアクセス可能にされ、利用者は、利用者端末50からホストマシン30にアクセスし、NN実行マシン40を操作し、NNに対する学習処理や本番処理(推論処理)を実行する。ホストマシン30は、利用者端末からの指示に従い、NN実行マシンが実行するNNプログラムを作成し、NN実行マシンに送信する。そして、NN実行マシンは送信されたNNプログラムを実行し、学習処理や本番処理を実行する。
図6は、積和演算器MAの構成例を示す図である。積和演算器MAは、乗算器MUL、加減算器ADD_1、論理演算器LGCと、複数のセレクタSEL_1, SEL_2, SEL_3を有する。また、積和演算器MAは、浮動小数点数の指数を減算する加減算器ADD_2を有する。論理演算器LGCは、入力値の論理和、論理積、排他的論理和など種々の論理演算を実行する。また、加減算器ADD_1は、加算と減算を実行する。
図8は、NN内の複数の層の演算に含まれる特殊演算の例を示す図である。NN内の複数の層は、一般に、積和演算器により実行可能な多くの演算、特に積和演算、を有する。一方、特定の層は、積和演算器により実行可能な演算に加えて、特殊演算器により実行される特殊演算を有する。または、特定の層は、積和演算器により実行可能な演算を含まず、特殊演算器により実行される特殊演算を有する。
それに対して、LRN層の演算時間が全体の演算時間の約50%を占めている。その結果、全体の演算時間が長くなっている。このような場合、特殊演算を有するLRN層の演算時間が、全体の演算時間のボトルネックとなっている。この原因は、例えば、NNプロセッサが、積和演算器MAに比較して少数の特殊演算器SPしか搭載していないため、特殊演算の処理能力が低いからである。そのため、LRN層の特殊演算である累乗を特殊演算器SPで実行すると、図9に示すようにそのLRN層の実行時間が比較的長くなり、演算時間短縮のボトルネックとなる。
図10は、ボトルネックとなっているNN内の特定の層の演算時間を短縮する方法を説明する図である。図10の横軸は時間軸である。NN内の特定の層の演算を実行する場合、演算器による演算処理と、メモリ転送処理とが発生する。メモリ転送処理は、演算のための入力データをメモリからプロセッサ内のレジスタに転送し、演算結果である中間データや出力データをレジスタからメモリに転送する処理である。
図13は、特殊演算を特殊演算器で行うか近似計算により積和演算器で行うかの選択処理のフローチャート図である。この選択処理は、図11,図12の工程S2,S6,S42の処理である。
積和演算性能nma = 積和演算器数 * クロック周波数
特殊演算性能ns = 特殊演算器数 * クロック周波数
メモリ転送性能m = MAC数 * MAC当たりのデータ転送量
次に、NNプロセッサは、積和演算時間tcmaと、特殊演算時間tcsと、メモリ転送時間tmを以下のとおり求める(S71)。
積和演算時間tcma = 積和演算命令数Xma* 積和演算サイクル数Cma/積和演算性能nma
特殊演算時間tcs = Σ(特殊演算命令数Xs * 特殊演算サイクル数Cs)/特殊演算性能ns
メモリ転送時間tm = メモリ転送量y(=データ要素数 * 1要素のデータサイズ)/メモリ転送性能m
上記のΣ(特殊演算命令数Xs * 特殊演算サイクル数Cs)は、特殊演算が複数の特殊演算エレメントで実行される場合の、複数の演算エレメントそれぞれの(特殊演算命令数Xs *特殊演算サイクル数Cs)の合計を意味する。
(1)特殊演算を特殊演算器で実行する場合、層の演算に要する演算時間は、非特殊演算の積和演算時間tcma + 特殊演算の特殊演算時間tcsとなる。また、
(2)特殊演算を近似計算により積和演算器で実行する場合、層の演算に要する演算時間は、(非特殊演算の積和演算時間+ 近似計算の積和演算時間)tcmaとなる。
図15は、近似計算を選択する処理S63のフローチャートを示す図である。特殊演算の近似計算は複数存在する。例えば、ニュートン法は、所定の演算で初期値を推定する初期値推定と、初期値に基づいて近似計算を繰り返し収束演算とにより、近似値を算出する。一般に収束演算の回数を増やすほど誤差が少なくなるが、その分演算時間が長くなる。
tcma + tca = (非特殊演算の積和演算命令数Xma* 積和演算サイクル数Csa +
特殊演算の近似計算による積和演算命令数Xma * 積和演算サイクル数Csa)/積和演算性能nma
上記の特殊演算の近似計算による積和演算命令数Xmaは、近似計算の初期値推定のための演算回数aと、収束演算の演算回数bと、収束演算の反復回数rとから、以下の式で求める。
Xma = a + r*b
近似計算の初期値推定は、例えば、クエイク(Quake)のアルゴリズムと同様の初期値推定で行う。この場合、入力の浮動小数点数の指数部分に関しては、ビット演算のみで正確な近似解が得られる。一方、仮数部(Kビット)は、前もって符号ビットを含めたK+1ビットの全通り(2K+1通り)をNNプロセッサで実験し、最も誤差が少ない初期値を決定する。この初期値を得るのに要した演算回数がaとなる。
詳細は、例えば、http://takashiijiri.com/study/miscs/fastsqrt.htmlを参照。
次に、図1のNNの具体例について、各層の演算、演算回数、演算命令数、データ量の例を示し、図8に示した各層の特殊演算の有無と、各層が特殊演算を含む場合の特殊演算を説明する。以下に説明する図1のNNの演算例は、非特許文献1のAlexNetのプログラムのソースコードに基づく。
図16は、畳込み層の演算を説明する図である。畳込み層は、Hin×Winの入力画像を入力チャネルCin数有する入力INPUTを入力する。入力画像の周囲にはフィルタサイズに基づく幅の画素がパディングされる。畳込み層は、Hin×Winの入力画像に、kH×kW(2×2)のフィルタFILTERをストライドSt間隔で移動させながら、畳込み演算する。各フィルタFILTERは、入力画像の入力チャネルCinと同じ数を有し、全フィルタは出力チャネルCout数分のフィルタを有する。畳込み層の演算は、入力チャネルCin分の入力画像に各フィルタFILTERを畳込み演算し、Hout×Woutの出力画像をフィルタの数Cout有するOUTPUTを出力する。
Wout = (Win+2pad-kW)/St - 1 or Win = Wout×St + kW +St -2pad
Hout = (Hin+2pad-kH)/St - 1 or Hin = Hout×St + kH +St -2pad
したがって、畳込み層の積の演算回数と和の演算回数は、それぞれ以下のとおりである。
演算回数(積) = (Hout×Wout×Cout÷Gr×kH×kW×Cin÷Gr)×Gr×MB
演算回数(和) = { (Hout×Wout×Cout÷Gr×kH×kW×Cin÷Gr×Gr+ Hout×Wout×Cout}×MB
但し、Grは入力INPUTと出力OUTPUTのグループ数、MBはミニバッチのデータ数である。具体例の畳込み層は、入力チャネルCinと出力チャネルCoutをグループ数Grに分け、各グループ内で畳込み演算を行い、その畳込み演算をグループ数Grだけ行い、これをミニバッチデータ数MB分行う。これにより演算回数を1/Gr回数に減らす。
命令数(積和) = (Hout×Wout×Cout÷Gr×kH×kW×Cin÷Gr)×Gr×MB
命令数(和) = 演算回数(和) - 命令数(積和) = Hout×Wout×Cout}×MB
命令数(積) = 演算回数(積) - 命令数(積和) = 0
上記から、畳込み層の演算は、全て積和演算器で実行され、特殊演算は含まれない。
bottom = Hin×Win×Cin×MB
top = Hout×Wout×Cout × MB
bias = Cout
weight = kH×kW×Cin÷Gr×Cout÷Gr×Gr
[Max Pooling層]
図18は、マックスプーリング層の演算を説明する図である。マックスプーリング層は、図1の具体例では、畳込み演算結果をLRN層で正規化した画像や畳込み演算された画像を入力し、近接する画素の最大値を選択して出力する。近傍の要素の最大値を選択するために、マックスプーリング層は、Hout * Wout * Cout * MB分、kH * kW回の比較演算(論理演算)を実行する。
図20は、活性化関数ReLU層の演算を説明する図である。ReLU層は、Hin×Win×Cinの入力データI(i)がI(i)<0か、I(i)≧0かの比較を行い、I(i)<0なら出力O(i)=0とし、I(i)≧0なら出力O(i)=I(i)とする演算を行う。
図22は、全結合層FCの演算を説明する図である。全結合層は、入力画像の全画素(全ニューロン)を並べたHin*Win*Cinサイズの入力I(i)それぞれに重みwijを乗算したものを累積し、累積値にバイアスbiasを加算した値O(i)を出力する。
bottom = Hin × Win × Cin × MB
top = Hout × Wout × Cout × MB
そして、バイアスbiasのデータ数は出力チャネルCout分であるので、bias=Cout、重みweightのデータ数は、全入力数×全出力数であるので、weight = Hin×Win×Cin×Hout×Wout×Coutである。
図24は、Dropout層の演算を説明する図である。Dropout層は、図1に示されるとおり、全結合層FCの出力のうち、ランダムに選択したノードを不活性化し、不活性化されなかったノードを強化する。Dropout層は、脳科学の知見に基づく手法であり、学習時に、ランダムに選択したノードを不活性化することでネットワークに負荷をかけ、不活性化されなかったノードに定数scaleを乗じて強化する。本番時(推論時)は、Dropout層の演算は行われない。
O(i) = I(i) * mask(i) * scale
また、入力画像サイズはHin×Win×Cin、出力画像サイズはHout×Wout×Coutである。また、ミニバッチのデータ数はMBである。このことから、乗算の演算回数は、学習時に入力データそれぞれにマスクビットmask(i)を乗算し、更にスケールscaleを乗算するので、2×I×MBである。本番時の演算回数はゼロである。そして、学習時の乗算演算の命令数は、乗算の演算回数と等しく、2×I×MBである。
borrow = Hin×Win×Cin×MB
top = Hout×Wout×Cout×MB
mask = Hin×Win×Cin×MB
したがって、Dropout層の演算は、全て積和演算器で実行され、特殊演算は含まない。
図26は、Softmax層の演算を説明する図である。図26のSoftmax層の演算は、合計が1になる確率を各出力のノード(ニューロン)に生成するとともに、逆方向伝播時に利用する各ノードの出力の誤差(クロスエントロピー誤差)を求める。
(1)関数maxで入力bottom_xの最大値scaleを出力する。関数maxは比較演算である。
(2)全入力bottom_yそれぞれから最大値scaleを減じ、全入力x-最大値maxを負にする。
(3)更に、x-max(<0)のexpを求め、その範囲を0~1.0にする。
(4)そして、全ex-maxの和scaleを求める。
(5)各ex-maxを全ex-maxの和scaleで割り、和が1になる確率 = ex-max/(全ex-maxの和scale)を求める。
(6)そして、正解ベクトルt[mb][i]=1の場合に、上記確率のlogである、log(ex-max/Σex-max)(クロスエントロピー誤差)を求め、log(ex-max/Σex-max)が負であるので、(-1)倍して正の誤差eを求める。
I = Hin×Win×Cin
O = Hout×Wout×Cout
そして、ミニバッチのデータ数をMBとすると、
上記の(1)~(6)の比較、差、exp、和、商、比較、logの演算回数はそれぞれ以下のとおりである。入力サイズをI、ミニバッチのデータ数をMBとする。
演算回数(比較)= I × MB×2
演算回数(差)= I × MB×2
演算回数(exp)= I × MB
演算回数(和)= I × MB
演算回数(商)= I × MB
演算回数(log)= I × MB
これらの演算のうち、比較、差、和は積和演算器で実行され、exp、商、logは特殊演算器で実行される。それぞれの演算命令数は、演算回数と同じになる。このように、Softmax層は、非特殊演算を積和演算器で実行し特殊演算を特殊演算器で実行する。
bottom = Hin×Win×Cin×MB
top = Hout×Wout×Cout × MB(学習時のみ、本番時はゼロ)
[LRN層]
図29は、LRN層の演算を説明する図である。LRN層は、図1に示されるとおり、畳込み層CONVの出力側に設けられ、畳込み層が生成した画像データのチャネル方向の局所的な数の画素データの正規化を行う。
(1)畳込み層CONVの出力であるLRN層の入力X(bottom_data)の二乗X2をHin*Win*Cinの要素分求める。二乗X2は変数Padded_squareとなる。この演算は積である。
(2)Padded_squareのチャネルCin内のLocal_size=nの要素をそれぞれα倍しLocal_size=nで除算し(α/n倍)、padded_squareの各要素X2のチャネル方向の局所数Local_size分の平均scale_data[cin](=scale_data[mb][0][i], Cin=0の平均)を求める。この演算は積と和である。
(3)チャネルCin内で移動しながら、残りのc=1~Cinについてそれぞれの平均を求める。具体的には、(2)でc=0について求めた平均(scale_data[mb][c-1][i])から、その平均の端tailを減じ先頭headを加算してc=1の平均を求める。c=2以降も同様に繰り返す。これらの平均はLocal_size=nの要素の移動平均である。この演算は、和、積を2回、差の演算である。
(4)(3)の出力を-3/4乗し、出力top_data[i]を求める。出力top_data[i]は、i=Cin*Hin*Win分求める。ここの演算は、累乗powであり、特殊演算である。
(5)(4)の出力top_data[i]に入力bottom_data[i]をそれぞれ乗算する。ここの演算は積である。
I = Hin×Win×Cin (Cinは入力チャネル数)
O = Hout×Wout×Cout (Coutは入力チャネル数)
そして、ミニバッチのデータ数はMBである。
(1)積:Cin×Hin×Win
(2)積:local_size×Hin×Win 和:local_size×Hin×Win
(3)積:(Cin-1)×Hin×Win ×2 和:(Cin-1)×Hin×Win 差:(Cin-1)×Hin×Win
(4)累乗:Cin×Hin×Win
(5)積:Cin×Hin×Win
よって、
演算回数(積): (4Cin + local_size - 2)×Win×Hin×MB
演算回数(和): (Cin + local_size - 1) ×Win×Hin×MB
演算回数(差): (Cin -1)×Win×Hin×MB
演算回数(Pow): Cin×Win×Hin×MB
次に、演算の命令数は、積和、積差でまとめると、次の通りである。
命令数(積和): {lsize×Win×Hin + (Cin - 1)×Win×Hin}×MB
命令数(積差): (Cin - 1)×Win×Hin×MB
命令数(和): 演算回数(和) - 命令数(積和) = 0
命令数(差): 演算回数(差) - 命令数(積差) = 0
命令数(積): 演算回数(積) - 命令数(積和) - 命令数(積差) = Cin×Win×Hin×MB×4
命令数(pow): 演算回数(pow) = Cin×Win×Hin×M
さらに、データ数は、以下のとおりである。
bottom = Hin×Win×Cin×MB
top = Hout×Wout×Cout × MB
scale = Hin×Win×Cin×MB
padded square = Win×Hin×Cin
上記の通り、LRN層の演算では、非特殊演算を積和演算器で実行し、特殊演算(累乗pow)を特殊演算器で実行される。
図33は、バッチ正規化層の演算内容の演算式を示す図である。図34、図35は、バッチ正規化層の演算内容、入力サイズ、出力サイズ、演算回数、演算器の演算命令数及びデータ数などを示す図表である。
(1)各ミニバッチ(MB)で算出した各チャネルCiの出力画像の平均、分散、正規化、スケール及びシフトを実行する。
(2)現MBで算出したチャネルCiの平均+前MBで算出したチャネルCiの平均*係数=移動平均、の演算を、全チャネルC0-Cnに対して繰り返す。
(3)現MBで算出したチャネルCiの分散*係数+前MBで算出したチャネルCiの分散*係数=移動平均、の演算を、全チャネルC0-Cnに対して繰り返す。
bottom = Hin×Win×Cin×MB
top = Hout×Wout×Cout×MB
ミニバッチのデータ数はMBである。
平均(mean):
演算回数(積) = 演算回数(和) = Hin×Win×Cin×MB
分散(variance):
演算回数(差) = Hin×Win×Cin×MB
演算回数(積) = 2×Hin×Win×Cin×MB
演算回数(和) = Hin×Win×Cin×MB
移動平均:
演算回数(積) = 3×Cin
演算回数(和) = 2×Cin
正規化:
演算回数(和) = Cin
演算回数(平方根) = Cin
演算回数(商) = Hin×Win×Cin×MB
スケール&シフト:
演算回数(積) = Hin×Win×Cin×MB、演算回数(和) = Hin×Win×Cin×MB
平均(mean)、分散(variance)、移動平均、正規化、スケール&シフトの積和、積、和、差、商、平方根の演算の命令数は、図35に示すとおりである。積と和、積と差は積和演算で一緒に演算できるので、積和演算の命令数でまとめられる。
平均(mean):
命令数(積和) = Hin×Win×Cin×MB
分散(variance):
命令数(差) = Hin×Win×Cin×MB
命令数(積) = Hin×Win×Cin×MB
命令数(積和) = Hin×Win×Cin×MB
移動平均:
命令数(積) = Cin
命令数(積和) = 2×Cin
正規化:
命令数(和) = Cin
命令数(平方根) = Cin
命令数(商) = Hin×Win×Cin×MB
スケール&シフト:
命令数(積和) = 演算回数(積) = Hin×Win×Cin×MB
さらに、データ数は、図35に示すとおりである。
bottom = Hin×Win×Cin×MB
top = Hout×Wout×Cout × MB
deviation = Cin
bias (β) = Cout
bias(γ) = Cout
上記の通り、バッチ正規化層は、非特殊演算を積和演算器で行い、商、平方根の特殊演算を特殊演算器で行う。
LSTM層の特殊演算はsigmoid関数の演算と、tanh関数の演算である。これらの具体例については省略する。
次に、具体例に基づき、特殊演算を特殊演算器で実行するか近似計算により積和演算器で実行するかの判定と、どの近似計算により積和演算器で実行するかの選択について説明する。具体例は、特殊演算を有するLRN層とバッチ正規化層である。
図11,図12で示した、LRN層の特殊演算と近似計算のテーブルについて説明し、図13~図15に示した、ある性能を有するNNプロセッサでLRN層の演算を実行する場合の上記判定及び選択について説明する。
(1)初期値設定のみの演算は、実験の結果、右論理シフトisrlが2命令、減算isubが2命令である。命令isrl, isubは、いずれも固定小数点演算器の命令である。これらの命令の演算は積和演算器で実行可能であり、命令数の合計は積和演算命令数が4である。したがって、合計クロックサイクル数は4となる。
(2)初期値推定と3次Householder法を2回転の演算では、初期値推定の命令数が前述と同じ4であり、収束演算の命令数は積和演算fmaが5*2命令+乗算fmuが5*2命令となる。したがって、命令数の合計は積和演算命令数が24である。したがって、合計クロックサイクルは24*1=24となる。誤差は19.53である。
(3)初期値推定とNewton法を4回転の演算は、初期値推定の命令数は前述と同じ4であり、収束演算の命令数は積和演算fmaが2*4命令+乗算fmuが6*4命令となる。したがって、命令数の合計は積和演算命令数が36である。したがって、合計クロックサイクルは36*1=36となる。誤差は0.95である。
(4)初期値推定と3次Householder法と4次Householder法の演算は、初期値推定の命令数は前述と同じ4であり、収束演算の命令数は積和演算fmaが5+5命令+乗算fmuが5+7命令となる。したがって、命令数の合計は積和演算命令数が26である。したがって、合計クロックサイクルは36*1=36となる。誤差は0.87である。
Xma +Xs = 1,200,000,000 (積和) + 300,000,000 (特殊)
y = 300,000,000 * 4 [byte]
そして、NNプロセッサの性能は、以下のとおりである(S81)。
積和演算性能: nma = 2,000 GFLOPS, 特殊演算性能: ns = 125 GFLOPS
メモリ転送性能 (メモリ帯域) : m = 200 GB/s
そこで、LRN層の演算を非特殊演算と特殊演算の一部を積和演算器で実行する時間tcmaと特殊演算の残りを特殊演算器で実行する時間tcsは、特殊演算サイクル数の合計が68サイクルだったので、図37に示すとおり、tcma + tcs= 163,950μsecとなる。
図38は、バッチ正規化層の特殊演算(-1/2乗)と近似計算のテーブルを示す図である。図38と近似計算が異なる。減算fsubは浮動小数点演算器の命令である。特殊演算器による演算と、4種類の近似計算に対する、初期値推定の命令数、収束演算の命令数、合計命令数、合計命令数に必要なクロックサイクル数、誤差は、図38に示されるとおりであり、それぞれの説明は省略する。
40:ニューラルネットワーク(NN)実行マシン
43:NNプロセッサ
MA_0~MA_n-1:積和演算器
SP_0~SP_m-1:特殊演算器
SP_E:特殊演算エレメント
tcma :積和演算器の演算時間
tca :特殊演算器の演算時間
tcs :近似計算による積和演算器の演算時間
tm :メモリ転送時間
Claims (9)
- メモリと、
前記メモリと接続され、少なくとも乗算及び加算、論理演算、積和演算を実行可能な第1の演算器と、前記乗算及び加算、論理演算、積和演算と異なる特殊演算を実行可能な第2の演算器と、レジスタとを有するプロセッサとを有し、
前記プロセッサは、
複数の層を有するニューラルネットワーク内の前記特殊演算を含む第1の演算を実行する第1の層の前記第1の演算を、前記第1の演算の特殊演算を第2の演算器で計算する第2の方法で実行した時の、前記第1の演算に要する第2の演算時間が、前記第1の演算のために行われる前記メモリと前記レジスタ間のメモリ転送に要するメモリ転送時間以下の場合、前記第1の演算を前記第2の方法で実行し、
前記第2の演算時間が前記メモリ転送時間以下でない場合、
前記第1の演算を、前記第1の演算の特殊演算を前記第1の演算器で近似計算する第1の方法で実行した時の、前記第1の演算に要する第1の演算時間が、前記メモリ転送時間以下の場合、前記第1の演算を前記第1の方法で実行する、情報処理装置。 - 前記第1の演算を前記第1の方法で実行することは、
前記第1の方法の近似計算が複数有り、
前記第1の演算時間が前記メモリ転送時間以下である前記近似計算のうち、前記近似計算の誤差が最小の近似計算で前記第1の演算を前記第1の方法で実行する、請求項1に記載の情報処理装置。 - 前記プロセッサは、
前記第2の演算時間が前記メモリ転送時間以下か否か判定し、前記判定が真の場合、前記第1の演算を前記第2の方法で実行すると決定し、前記判定が偽の場合、前記第1の演算時間が前記メモリ転送時間以下を満たす複数の近似計算のうち、前記近似計算の誤差が最小の近似計算を選択し、前記選択した近似計算で前記第1の演算を前記第1の方法で実行する、特殊演算実行方法の決定を実行する、請求項1に記載の情報処理装置。 - 前記プロセッサは、
前記ニューラルネットワークの学習工程において、
(1)初回の学習工程で、前記特殊演算を前記第1の方法か第2の方法かを決定し、前記決定した第1の方法または第2の方法で前記第1の演算を実行し、
(2)前記初回後の繰り返し学習工程で、前記初回の学習工程で決定した第1の方法または第2の方法で前記第1の演算を実行する、請求項3に記載の情報処理装置。 - 前記第2の演算時間は、前記第1の演算に含まれる前記特殊演算以外の非特殊演算を実行するための前記第1の演算器の命令実行回数に要する非特殊演算時間と前記第1の演算に含まれる前記特殊演算を実行するための前記第2の演算器の命令実行回数に要する特殊演算時間の和であり、
前記第1の演算時間は、前記第1の演算に含まれる前記特殊演算以外の非特殊演算を実行するための前記第1の演算器の命令実行回数に要する非特殊演算時間と、前記第1の演算に含まれる前記特殊演算の近似計算を実行するための前記第1の演算器の命令実行回数に要する近似計算時間の和である、請求項1に記載の情報処理装置。 - 前記第1及び第2の演算時間は、前記命令実行回数に演算器が1つの命令を実行するために要する平均クロックサイクル数を乗じ、演算を実行する複数の演算器の単位時間当たりの総クロックサイクル数で除算した値である、請求項5に記載の情報処理装置。
- 前記第1の演算器の数は、前記第2の演算器の数より多い、請求項1に記載の情報処理装置。
- メモリと接続され、少なくとも乗算及び加算、論理演算、積和演算を実行可能な第1の演算器と、前記乗算及び加算、論理演算、積和演算と異なる特殊演算を実行可能な第2の演算器と、レジスタとを有するプロセッサにニューラルネットワークの処理を実行させるニューラルネットワークプログラムであって、
前記処理は、
複数の層を有するニューラルネットワーク内の前記特殊演算を含む第1の演算を実行する第1の層の前記第1の演算を、前記第1の演算の特殊演算を第2の演算器で計算する第2の方法で実行した時の、前記第1の演算に要する第2の演算時間が、前記第1の演算のために行われる前記メモリと前記レジスタ間のメモリ転送に要するメモリ転送時間以下の場合、前記第1の演算を前記第2の方法で実行し、
前記第2の演算時間が前記メモリ転送時間以下でない場合、
前記第1の演算を、前記第1の演算の特殊演算を前記第1の演算器で近似計算する第1の方法で実行した時の、前記第1の演算に要する第1の演算時間が、前記メモリ転送時間以下の場合、前記第1の演算を前記第1の方法で実行する、プロセッサが実行可能なニューラルネットワークプログラム。 - メモリと接続され、少なくとも乗算及び加算、論理演算、積和演算を実行可能な第1の演算器と、前記乗算及び加算、論理演算、積和演算と異なる特殊演算を実行可能な第2の演算器と、レジスタとを有するプロセッサが、
複数の層を有するニューラルネットワーク内の前記特殊演算を含む第1の演算を実行する第1の層の前記第1の演算を、前記第1の演算の特殊演算を第2の演算器で計算する第2の方法で実行した時の、前記第1の演算に要する第2の演算時間が、前記第1の演算のために行われる前記メモリと前記レジスタ間のメモリ転送に要するメモリ転送時間以下の場合、前記第1の演算を前記第2の方法で実行し、
前記第2の演算時間が前記メモリ転送時間以下でない場合、
前記第1の演算を、前記第1の演算の特殊演算を前記第1の演算器で近似計算する第1の方法で実行した時の、前記第1の演算に要する第1の演算時間が、前記メモリ転送時間以下の場合、前記第1の演算を前記第1の方法で実行する、ニューラルネットワークの処理方法。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018239640A JP7174243B2 (ja) | 2018-12-21 | 2018-12-21 | 情報処理装置、ニューラルネットワークプログラム、ニューラルネットワークの処理方法 |
EP19212664.7A EP3671572A1 (en) | 2018-12-21 | 2019-11-29 | Information processing apparatus, neural network program, and processing method for neural network |
US16/709,962 US11475284B2 (en) | 2018-12-21 | 2019-12-11 | Information processing apparatus, neural network program, and processing method for neural network |
CN201911319384.2A CN111353578A (zh) | 2018-12-21 | 2019-12-19 | 信息处理装置、神经网络程序和用于神经网络的处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018239640A JP7174243B2 (ja) | 2018-12-21 | 2018-12-21 | 情報処理装置、ニューラルネットワークプログラム、ニューラルネットワークの処理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2020101991A JP2020101991A (ja) | 2020-07-02 |
JP7174243B2 true JP7174243B2 (ja) | 2022-11-17 |
Family
ID=68762456
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2018239640A Active JP7174243B2 (ja) | 2018-12-21 | 2018-12-21 | 情報処理装置、ニューラルネットワークプログラム、ニューラルネットワークの処理方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11475284B2 (ja) |
EP (1) | EP3671572A1 (ja) |
JP (1) | JP7174243B2 (ja) |
CN (1) | CN111353578A (ja) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP7137067B2 (ja) * | 2018-10-25 | 2022-09-14 | 富士通株式会社 | 演算処理装置、学習プログラム及び学習方法 |
US20200210840A1 (en) * | 2018-12-31 | 2020-07-02 | Microsoft Technology Licensing, Llc | Adjusting precision and topology parameters for neural network training based on a performance metric |
CN114077482B (zh) * | 2020-08-18 | 2024-04-16 | 中国科学院沈阳自动化研究所 | 一种工业智能制造边缘智能计算优化方法 |
CN112051980B (zh) * | 2020-10-13 | 2022-06-21 | 浙江大学 | 一种基于牛顿迭代法的非线性激活函数计算装置 |
CN112633212B (zh) * | 2020-12-29 | 2022-10-04 | 长沙湘丰智能装备股份有限公司 | 一种基于计算机视觉的茶叶嫩芽等级的识别和分类方法 |
JP2022121055A (ja) | 2021-02-08 | 2022-08-19 | キオクシア株式会社 | 演算装置及び演算回路 |
CN114139693B (zh) * | 2021-12-03 | 2024-08-13 | 安谋科技(中国)有限公司 | 神经网络模型的数据处理方法、介质和电子设备 |
CN116481128B (zh) * | 2023-05-10 | 2023-11-24 | 佛山市清源科技有限公司 | 空气净化系统、空气净化方法及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005275626A (ja) | 2004-03-23 | 2005-10-06 | Fujitsu Ltd | 演算種別と精度を選択可能な近似演算処理方法および近似演算処理装置 |
CN108734281A (zh) | 2017-04-21 | 2018-11-02 | 上海寒武纪信息科技有限公司 | 处理装置、处理方法、芯片及电子装置 |
JP2018190045A (ja) | 2017-04-28 | 2018-11-29 | 日立オートモティブシステムズ株式会社 | 車両電子制御装置 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06215021A (ja) * | 1993-01-12 | 1994-08-05 | Fujitsu Ltd | 関数近似計算方法 |
JP3096387B2 (ja) * | 1994-01-28 | 2000-10-10 | 三菱電機株式会社 | 数値演算処理装置 |
JP5199212B2 (ja) * | 2009-09-29 | 2013-05-15 | 富士通株式会社 | プログラム生成方法およびシステムの動作方法 |
US10235232B2 (en) * | 2014-02-10 | 2019-03-19 | Via Alliance Semiconductor Co., Ltd | Processor with approximate computing execution unit that includes an approximation control register having an approximation mode flag, an approximation amount, and an error threshold, where the approximation control register is writable by an instruction set instruction |
EP3035249B1 (en) * | 2014-12-19 | 2019-11-27 | Intel Corporation | Method and apparatus for distributed and cooperative computation in artificial neural networks |
JP6802480B2 (ja) * | 2017-01-27 | 2020-12-16 | 富士通株式会社 | プロセッサ、情報処理装置及びプロセッサの動作方法 |
IT201700008949A1 (it) * | 2017-01-27 | 2018-07-27 | St Microelectronics Srl | Procedimento di funzionamento di reti neurali, rete, apparecchiatura e prodotto informatico corrispondenti |
CN107622305A (zh) * | 2017-08-24 | 2018-01-23 | 中国科学院计算技术研究所 | 用于神经网络的处理器和处理方法 |
CN107862374B (zh) * | 2017-10-30 | 2020-07-31 | 中国科学院计算技术研究所 | 基于流水线的神经网络处理系统和处理方法 |
US10698766B2 (en) * | 2018-04-18 | 2020-06-30 | EMC IP Holding Company LLC | Optimization of checkpoint operations for deep learning computing |
-
2018
- 2018-12-21 JP JP2018239640A patent/JP7174243B2/ja active Active
-
2019
- 2019-11-29 EP EP19212664.7A patent/EP3671572A1/en not_active Withdrawn
- 2019-12-11 US US16/709,962 patent/US11475284B2/en active Active
- 2019-12-19 CN CN201911319384.2A patent/CN111353578A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005275626A (ja) | 2004-03-23 | 2005-10-06 | Fujitsu Ltd | 演算種別と精度を選択可能な近似演算処理方法および近似演算処理装置 |
CN108734281A (zh) | 2017-04-21 | 2018-11-02 | 上海寒武纪信息科技有限公司 | 处理装置、处理方法、芯片及电子装置 |
JP2018190045A (ja) | 2017-04-28 | 2018-11-29 | 日立オートモティブシステムズ株式会社 | 車両電子制御装置 |
Also Published As
Publication number | Publication date |
---|---|
US20200202201A1 (en) | 2020-06-25 |
JP2020101991A (ja) | 2020-07-02 |
EP3671572A1 (en) | 2020-06-24 |
US11475284B2 (en) | 2022-10-18 |
CN111353578A (zh) | 2020-06-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7174243B2 (ja) | 情報処理装置、ニューラルネットワークプログラム、ニューラルネットワークの処理方法 | |
JP6528893B1 (ja) | 学習プログラム、学習方法、情報処理装置 | |
WO2019168084A1 (ja) | 推論装置、畳み込み演算実行方法及びプログラム | |
CN111353579A (zh) | 利用反向传播为深度神经网络选择量化参数的方法和系统 | |
US10579334B2 (en) | Block floating point computations using shared exponents | |
JP2019139338A (ja) | 情報処理装置、情報処理方法、およびプログラム | |
US20210097397A1 (en) | Information processing apparatus and information processing method | |
KR20200121497A (ko) | 가중치 신경망의 신경망 연산 방법 및 장치 | |
US11551087B2 (en) | Information processor, information processing method, and storage medium | |
WO2021245370A1 (en) | Modulo operation unit | |
JP2020067897A (ja) | 演算処理装置、学習プログラム及び学習方法 | |
CN110659014B (zh) | 乘法器及神经网络计算平台 | |
JP2021111081A (ja) | 情報処理装置、ニューラルネットワークの演算プログラム及びニューラルネットワークの演算方法 | |
JP2020190901A (ja) | 演算処理装置、演算処理装置の制御プログラム及び演算処理装置の制御方法 | |
TW201935286A (zh) | 電路規劃結果產生方法與系統 | |
Evdokimov et al. | Adaptive finite ring neural network | |
US20240046098A1 (en) | Computer implemented method for transforming a pre trained neural network and a device therefor | |
Alijani et al. | Fractional Concepts in Neural Networks: Enhancing Activation and Loss Functions | |
WO2020194032A1 (en) | Accelerating neuron computations in artificial neural networks by skipping bits | |
JP7310910B2 (ja) | 情報処理回路および情報処理回路の設計方法 | |
JP7364026B2 (ja) | 情報処理回路 | |
JP2023042056A (ja) | 演算処理装置および演算処理方法 | |
US20240143985A1 (en) | Identifying one or more quantisation parameters for quantising values to be processed by a neural network | |
US20210334635A1 (en) | Neural network accelerator configured to perform operation on logarithm domain | |
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: 20210909 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20220720 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20220802 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20220926 |
|
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: 20221004 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20221017 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 7174243 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |