JP7367595B2 - 情報処理装置及び情報処理方法 - Google Patents

情報処理装置及び情報処理方法 Download PDF

Info

Publication number
JP7367595B2
JP7367595B2 JP2020069144A JP2020069144A JP7367595B2 JP 7367595 B2 JP7367595 B2 JP 7367595B2 JP 2020069144 A JP2020069144 A JP 2020069144A JP 2020069144 A JP2020069144 A JP 2020069144A JP 7367595 B2 JP7367595 B2 JP 7367595B2
Authority
JP
Japan
Prior art keywords
information processing
processing device
allocation
image
statistical information
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2020069144A
Other languages
English (en)
Other versions
JP2021165942A (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 JP2020069144A priority Critical patent/JP7367595B2/ja
Priority to EP21154527.2A priority patent/EP3893165A1/en
Priority to US17/167,124 priority patent/US20210312279A1/en
Priority to CN202110187706.3A priority patent/CN113496276A/zh
Publication of JP2021165942A publication Critical patent/JP2021165942A/ja
Application granted granted Critical
Publication of JP7367595B2 publication Critical patent/JP7367595B2/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
    • 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
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/15Correlation function computation including computation of convolution operations
    • 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/49905Exception handling
    • G06F7/4991Overflow or underflow
    • 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
    • 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/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)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Computing Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Neurology (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Image Processing (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)

Description

本発明は、情報処理装置及び情報処理方法に関する。
近年、DNN(Deep Neural Network)の認識性能を向上するために、深層学習(Deep Learning)に利用されるパラメータの数、学習データの数が増加している。ここで、パラメータには、ノード間の重み、ノードが保持するデータ、フィルタの要素などがある。このため、深層学習の高速化のために用いられる並列計算機の計算負荷、メモリ負荷が増大し、学習時間が増加している。DNNの運用時の再学習においては、学習時間の増加は大きな負担となる。
そこで、DNNの軽量化のために、パラメータのデータ表現に用いるビット数を縮小することが行われる。例えば、32ビットの浮動小数点数を用いる代わりに8ビットの固定小数点数を用いることで、データ量を削減することができ、処理量を削減することができる。
ただし、8ビットの固定小数点数を用いることで、演算の精度が低下する。そこで、学習に用いる変数の固定小数点位置を動的に変えることができる動的固定小数点数が用いられる。動的固定小数点数を用いる場合、並列計算機は、学習中に変数の統計情報を取得して変数の固定小数点位置を自動調整する。また、並列計算機は、並列に演算を行う各処理装置に統計情報取得回路を設けることで、統計情報の取得に要するオーバーヘッドを減らすことができる。
特開2018-124681号公報
並列計算機の全ての処理装置に統計情報取得回路を設けると、並列計算機の回路面積が大きくなる。そこで、回路面積を削減するために、統計情報取得回路を一部の処理装置のみに設けることが考えられる。しかしながら、統計情報を一部の処理装置だけで取得して間引くと、全ての処理装置から統計情報を取得する場合と比較して誤差が発生し、適切な小数点位置の設定ができない。このため、学習中に変数の値の飽和及び丸めが増加し、学習精度が低下するという問題がある。
本発明は、1つの側面では、統計情報取得回路を一部の処理装置に設ける場合の学習精度低下を抑制することを目的とする。
1つの態様では、情報処理装置は、並列に処理を行う第1の数の処理装置を用いて動的固定小数点数による深層学習を行う。前記第1の数の処理装置のうち前記第1の数より少ない第2の数の処理装置は、前記動的固定小数点数の小数点位置の調整に用いる統計情報を取得する取得処理装置をそれぞれ有する。また、前記情報処理装置は、割り付け部を有する。前記割り付け部は、前記深層学習の層における伝播演算を前記第1の数の処理装置に割り付ける際に、前記第1の数より少ない第3の数の入力データ毎に前記第2の数の処理装置を均等に割り付け、前記第3の数の入力データ毎に出力チャネルを第4の数ずらしながら割り付ける。
1つの側面では、本発明は、統計情報取得回路を一部の処理装置に設ける場合の学習精度低下を抑制することができる。
図1は、実施例に係る情報処理装置の構成を示す図である。 図2は、実施例に係る深層学習を説明するための図である。 図3は、統計情報の例を示す図である。 図4は、画像及び出力チャネルを機械的にPEに割り付ける例を示す図である。 図5Aは、間引きの統計情報への影響の例を示す第1の図である。 図5Bは、間引きの統計情報への影響の例を示す第2の図である。 図6Aは、出力チャネルを機械的にPEに割り付けたときに統計情報が間引きなしの場合と比べて異なる理由を説明するための図である。 図6Bは、画像を機械的にPEに割り付けたときに統計情報が間引きなしの場合と比べて異なる理由を説明するための図である。 図7は、割り付け部による割り付け例を示す図である。 図8は、割り付け部による他の割り付け例を示す図である。 図9は、情報処理装置による学習処理のフローを示すシーケンス図である。 図10は、伝播演算の呼び出しを説明するための図である。 図11は、画像及び出力チャネルを機械的にPEに割り付ける場合の割り付け処理のフローを示すフローチャートである。 図12は、図11に示す変数を説明するための図である。 図13は、割り付け部による割り付け処理のフローを示すフローチャートである。 図14は、図13に示す変数を説明するための図である。 図15は、割り付け部による図8に示した他の割り付けの処理のフローを示すフローチャートである。 図16は、図15に示す変数を説明するための図である。 図17Aは、割り付け部による割り付けの効果を説明するための第1の図である。 図17Bは、割り付け部による割り付けの効果を説明するための第2の図である。
以下に、本願の開示する情報処理装置及び情報処理方法の実施例を図面に基づいて詳細に説明する。なお、この実施例は開示の技術を限定するものではない。
まず、実施例に係る情報処理装置について説明する。図1は、実施例に係る情報処理装置の構成を示す図である。図1に示すように、実施例に係る情報処理装置1は、アクセラレータボード10と、ホスト20と、HDD(Hard Disk Drive)30とを有する。
アクセラレータボード10は、深層学習を高速に行う並列計算機を搭載したボードである。アクセラレータボード10は、コントローラ11と、複数のPE(Processing Element)12と、DRAM(Dynamic Random Access Memory)13と、PCIe(Peripheral Component Interconnect express)ハードウェア14とを有する。PE12の数は、例えば、2,048である。
コントローラ11は、アクセラレータボード10を制御する制御装置である。例えば、コントローラ11は、ホスト20からの指示に基づいて、各PE12に演算の実行を指示する。各PE12が入力するデータ及び出力するデータの格納場所は、ホスト20により指定される。なお、図1では省略されているが、コントローラ11は、各PE12と接続される。
PE12は、コントローラ11の指示に基づいて演算を実行する。PE12は、DRAM13に記憶されたプログラムを読み出して実行する。一部のPE12aは、統計情報取得回路と統計情報格納回路とを有する。PE12の全数に対する一部のPE12aの割合は、例えば、1/16である。一部のPE12aの数は、例えば、PE12の全数の約数である。なお、以下では、一部のPE12aを情報取得PE12aと呼ぶ。
統計情報取得回路は、統計情報を取得する。なお、統計情報については後述する。統計情報格納回路は、統計情報取得回路により取得された統計情報を記憶する。統計情報格納回路が記憶する統計情報は、コントローラ11により読み出されて、ホスト20に送られる。なお、統計情報は、DRAM13に格納され、DRAM13から読み出されてホスト20に送られてもよい。
また、情報取得PE12aは、統計情報を取得してホスト20に送ることができれば、専用の統計情報取得回路と統計情報格納回路とを有する構成に限られない。例えば、後述するPE12により実行されるプログラムが統計情報を取得するための命令列を含んでいてもよい。統計情報取得のための命令列は、例えば、積和演算の結果を32ビット整数でレジスタ#1に格納し、レジスタ#1に格納した結果の最上位桁位置の情報をレジスタ#2に格納して、レジスタ#2の値をインデックスとするテーブルの値に1を加える。
DRAM13は、PE12により実行されるプログラム、各PE12が入力するデータ、各PE12が出力するデータを記憶する揮発性記憶装置である。各PE12がデータの入力及び出力に用いるアドレスは、ホスト20により指定される。PCIeハードウェア14は、PCIエクスプレス(PCIe)によりホスト20と通信を行うハードウェアである。
ホスト20は、情報処理装置1を制御する装置である。ホスト20は、CPU21と、DRAM22と、PCIeハードウェア23とを有する。
CPU21は、DRAM22からプログラムを読み出して実行する中央処理装置である。CPU21は、深層学習プログラムを実行することによりアクセラレータボード10に並列演算の実行を指示して深層学習を行う。深層学習プログラムは、深層学習における演算を各PE12に割り付ける割り付けプログラムを含む。CPU21は、割り付けプログラムを実行することにより割り付け部40を実現する。なお、割り付け部40の詳細については後述する。
DRAM22は、HDD30に記憶されたプログラム及びデータ、CPU21によるプログラム実行の途中結果などを記憶する揮発性記憶装置である。深層学習プログラムは、HDD30からDRAM22に呼び出され、CPU21により実行される。
PCIeハードウェア23は、PCIエクスプレスによりアクセラレータボード10と通信を行うハードウェアである。
HDD30は、深層学習プログラム、深層学習に用いられる入力データ、深層学習により生成されたモデルなどを記憶する。情報処理装置1は、HDD30の代わりにSSD(Solid State Drive)を有してもよい。
次に、実施例に係る深層学習について説明する。図2は、実施例に係る深層学習を説明するための図である。図2に示すように、実施例に係る深層学習は、畳み込み層#1(Conv_1)、プーリング層#1(Pool_1)、畳み込み層#2(Conv_2)、プーリング層#2(Pool_2)、全結合層#1(fc1)、及び全結合層#2(fc2)の処理により実行される。実施例に係る深層学習では、入力データに対して、畳み込み層#1、プーリング層#1、畳み込み層#2、プーリング層#2、全結合層#1、全結合層#2の順に順伝播処理が行われる。そして、全結合層#2の出力と正解データに基づいて誤差が計算され、誤差に基づいて全結合層#2、全結合層#1、プーリング層#2、畳み込み層#2、プーリング層#1、畳み込み層#1の順に逆伝播処理が行われる。
実施例に係る深層学習は、ミニバッチと呼ばれる処理の単位に区切られて実行される。ここで、ミニバッチとは、学習の対象となる入力データの集合{(Ini,Ti),i=1~N}を複数組(例えば、k個のデータのM組、N=k*M)に分割したk個のデータの組み合わせをいう。また、ミニバッチは、このような個々の入力データの組(k個のデータ)で実行される学習の処理単位のことをいう。ここで、Iniは、入力データ(ベクトル)、Tiは正解データ(ベクトル)である。情報処理装置1は、以下のように、深層学習中のミニバッチごとに、各層の変数の一部について統計情報を取得し、各層の各変数の小数点位置を更新する。ここで、小数点位置eは、パラメータXの全要素共通の指数部に相当する。パラメータXの要素をxとし、整数表現をnとすると、x=n×2と表現できる。なお、情報処理装置1は、ミニバッチの学習を所定の回数終了するごとに小数点位置を更新してもよい。
情報処理装置1は、例えば、浮動小数点数による試行(ミニバッチ1回など)や、ユーザ指定により各変数の初期小数点位置を決定し、学習を開始する。そして、情報処理装置1は、1つのミニバッチ(k個のデータ)の学習中に、各層の一部の変数について統計情報を保存する(t1)。情報処理装置1は、ミニバッチを学習中にオーバーフローが発生した場合は、飽和処理を行い、学習を続行する。そして、情報処理装置1は、1回のミニバッチの学習の終了後に、統計情報から固定小数点数の小数点位置を更新する(t2)。そして、情報処理装置1は、所定の学習終了条件が満たされるまで、t1とt2を繰り返す。
図3は、統計情報の例を示す図である。図3は、統計情報の例として、非符号となる最上位ビット位置の分布を示す。ここで、非符号となる最上位ビット位置とは、正数に対しては、ビットが1となっている最上位のビット位置をいう。また、負数に対しては、ビット0となっている最上位のビット位置をいう。非符号となる最上位ビット位置は、例えば、ビットの並びを最上位ビットであるbit[39]から最下位ビットであるbit[0]としたとき、符号ビットbit[39]と異なるbit[k]のうち、インデックスkが最大のものをいう。非符号となる最上位ビット位置の分布が得られると、絶対値としての値の分布範囲が把握可能となる。
図3において、縦軸は、非符号となる最上位ビット位置の出現個数であり、横軸は非符号となる最上位のビット位置CLS(Count Leading Sign)に小数点位置eを加算した値である。情報処理装置1のPE12の演算回路及び演算回路内のレジスタは、命令のオペランドで指定されるレジスタのビット数(例えば、16ビット)以上のビット幅(例えば、40ビット)を有する。ただし、PE12の演算回路及び演算回路内のレジスタのビット幅が40ビットに限定される訳ではない。ここで、小数点位置eは、演算の入力の小数点位置によって決定され、例えば乗算の場合、2つの入力ベクトルの小数点位置をe1およびe2とすると、それらを加算した用e1+e2となる。また、演算結果は、例えば、16ビットのレジスタ等、演算回路よりも少ないビット幅のレジスタ(命令のオペランドで指定されるレジスタ)に格納される。その結果、演算結果は(例えば、40ビット)、オペランドで指定されるシフト量でシフトされ、ビット0未満に該当するビットは所定の丸め処理がなされ、オペランドで指定されるレジスタのビット幅を越えるデータは、飽和処理される。シフト量は、小数点位置eと出力の小数点位置eoの差分(eo-e)となる。図3は、シフト量が15ビットと仮定し、16ビットの固定小数点で表現可能な領域と、飽和される領域とアンダーフローが発生する領域を示す。
また、図3の横軸に付与された数値は、固定小数点で表現可能な数値を示す。例えば、情報処理装置1が小数点位置eoを-2すると、飽和される領域が2ビット拡張され、アンダーフローが発生する領域が2ビット減少する。また、例えば、情報処理装置1が小数点位置eoを+2すると、飽和される領域が2ビット減少し、アンダーフローが発生する領域が2ビット拡張される。
情報処理装置1は、学習実行中に、非符号となる最上位のビット位置の分布を得ることで、適切な固定小数点位置を決定できる。例えば、情報処理装置1は、飽和されるデータが指定の割合以下になるように固定小数点位置を決定すればよい。すなわち、一例としては、情報処理装置1は、データのアンダーフローが所定の程度となることよりもデータの飽和が所定の程度となること優先して、固定小数点位置を決定できる。
なお、情報処理装置1は、統計情報として、非符号となる最上位ビット位置の分布の代わりに、非符号となる最下位ビット位置の分布、非符号となる最上位ビット位置の最大値、非符号となる最下位ビット位置の最小値を用いてもよい。
ここで、非符号となる最下位ビット位置の分布とは、ビットが符号と異なる値となる最下位のビット位置をいう。例えば、ビットの並びを最上位ビットであるbit[39]から最下位ビットであるbit[0]までの並びとしたとき、符号ビットbit[39]と異なるbit[k]のうち、インデックスkが最小のものをいう。非符号となる最下位ビット位置の分布では、有効なデータが含まれる最下位ビットが把握される。
また、非符号となる最上位ビット位置の最大値は、統計情報格納回路がクリア命令によりクリアされたときから現在に至るまでに、命令実行の対象となった1以上の固定小数点数について符号ビットの値と異なる値となる最上位のビット位置のうちの最大値である。情報処理装置1は、非符号となる最上位のビット位置の最大値を動的固定小数点数の適切な小数点位置の決定に利用できる。
非符号となる最下位ビット位置の最小値は、統計情報格納回路がクリア命令によりクリアされたときから現在に至るまでの1以上の固定小数点数について符号と異なる値となる最下位のビット位置のうちの最小値である。情報処理装置1は、非符号となる最下位ビット位置の最小値を動的固定小数点数の適切な小数点位置の決定に利用できる。
次に、割り付け部40について説明する。情報処理装置1は、PE12を有効活用するために、深層学習において行われる全演算をできるだけ並列に実行する。ここでは、情報処理装置1は、ミニバッチをまとめて演算して学習を進める。
畳み込み層の演算を例とし、フィルタサイズを3×3、ミニバッチの画像数をN、入力チャネル数をCin、出力チャネル数をCout、画像の高さをH、画像の幅をWとする。入力するデータの画素数は、N*Cin*(H+2)*(W+2)である。ここで、「*」は乗算を示す。また、「2」は、画像の高さ方向又は幅方向の両端のパディングの数を示す。入力するフィルタの画素数は、Cin*Cout*3*3である。出力する結果の数は、N*Cout*H*Wである。演算内容を、以下の式(1)に示す。
Figure 0007367595000001
式(1)において、n=0、1、・・・、N-1であり、co=0、1、・・・、Cout-1であり、h=0、1、・・・、Hであり、w=0、1、・・・、W-1であり、ci=0、1、・・・、Cin-1であり、p=0、1、2であり、q=0、1、2である。また、出力[n][co][h][w]は、n番目の画像のco番目の出力チャネルの高さ方向がh番目で幅方向がw番目の画素値を示し、入力[n][ci][h+p][w+q]はn番目の画像のci番目の入力チャネルの高さ方向がh番目で幅方向がw番目の画素値を示す。フィルタ[ci][co][p][q]は、ci番目の入力チャネルのco番目の出力チャネルのフィルタの高さ方向がp番目で幅方向がq番目の画素値を示す。
式(1)に示すように、畳み込み層の演算は、画像(n)、出力チャネル(co)、画素(h,w)ごとに独立して計算可能である。また、入力画素のデータとフィルタのデータは何度も利用されるので、DRAM13とPE12の間のデータ転送の効率をよくするために、画像方向、出力チャネル方向の順に並列化をすることが効率的である。
そこで、図4に示すように、画像及び出力チャネルを機械的にPE12に割り付けることが考えられる。図4では、PE12の総数は、N*Coutである。また、横に並べられているPE12の数をXとすると、間引き率は1/Xであり、情報取得PE12aの数は、N*Cout/Xである。
この割り付けでは、画像#0などの特定の画像、出力チャネル#0などの特定の出力チャネルの統計情報しか取得されない。画像#1、画像#(N-1)など、出力チャネル#1、出力チャネル#(Cout-1)などの出力チャネルの統計情報は取得されない。このため、間引きなしの場合と比べると、統計情報が異なってしまう。
図5A及び図5Bは、間引きの統計情報への影響の例を示す図である。縦軸は、データの個数を示す。データの個数は、全体数に対する百分率で表される。横軸の負の整数の系列は、データを2進数で表したときの指数部分の値である。図5A(a)及び図5B(a)は、間引きなしのケース、画像間引きのケース、出力チャネル間引きのケース、画像×出力チャネル間引きのケースの4つのケースについての統計情報を示す。画像間引き率及び出力チャネル間引き率はそれぞれ1/4である。
また、図5A(b)及び図5B(b)は、各系列の-14~-19の範囲を個別に拡大した図である。図5A(b)及び図5B(b)において、横線は、小数点位置を決定するしきい値であるrmaxを示す。ここでは、rmax=0.002%である。縦線は、rmaxを超えない表現可能範囲の上限を示す。
図5A(a)及び図5B(a)に示すように、間引きした場合の分布は、間引きしない場合の分布と異なる。また、図5A(b)に示すように、間引かない場合は表現可能範囲の最上位ビットは「-18」であるが、間引きを行うと表現可能範囲の最上位ビットは「-15」又は「-16」である。また、図5B(b)に示すように、間引かない場合は表現可能範囲の最上位ビットは「-17」であるが、間引きを行うと表現可能範囲の最上位ビットは「-16」又は「-18」である。
このように、画像及び出力チャネルを機械的にPE12に割り付けると、統計情報が間引きなしの場合と異なってしまう。
図6Aは、出力チャネルを機械的にPE12に割り付けたときに統計情報が間引きなしの場合と比べて異なる理由を説明するための図である。また、図6Bは、画像を機械的にPE12に割り付けたときに統計情報が間引きなしの場合と比べて異なる理由を説明するための図である。
図6Aは、出力チャネル#0、#4、#8、・・・について統計情報を取得する場合を示す。図6Aに示すように、深層学習では、入力画像に対して様々なフィルタがかけられる。フィルタのパターンは、学習によって変化するが、類似したパターンのフィルタ(出力チャネル)が統計情報所得の対象となると、情報が偏る。フィルタのパターンは学習が進むにつれて変化するため、パターンの類似性を制御することは難しい。
図6Bでは、出力チャネル及び画像の間引き率は1/4である。図6Bに示すように、4つに1つの画像についてだけ統計情報の取得が行われると、3/4の画像は小数点位置決定に関係しない。したがって、1ミニバッチの画像のうち、実線枠の画像が統計情報の取得対象の場合、特徴(四足動物)が似た画像になっているため、データが偏り、統計情報が偏る。
そこで、割り付け部40は、全画像、全出力チャネルが統計情報の取得対象となるように、PE12を割り付ける。図7は、割り付け部40による割り付け例を示す図である。図7では、画像についての間引きはない。また、出力チャネルの間引き率は1/16であり、Nは16の倍数である。
図7に示すように、割り付け部40は、1画像ごとに出力チャネルをローテーションしてPE12に割り付ける。例えば、画像番号を16で割った余りが0の場合には、割り付け部40は、出力チャネル#0、#16、#32、・・・を情報取得PE12aに割り付ける。また、画像番号を16で割った余りが1の場合には、割り付け部40は、出力チャネル#1、#17、#33、・・・を情報取得PE12aに割り付ける。同様に、画像#(N-1)では、割り付け部40は、出力チャネル#15、#31、・・・、#(Cout-1)を情報取得PE12aに割り付ける。
このように、割り付け部40は、1画像ごとに出力チャネルをローテーションしてPE12に割り付けるので、情報取得PE12aを全体のPE12の中の一部に間引いた場合にも、統計情報の偏りを防ぐことができる。
図8は、割り付け部40による他の割り付け例を示す図である。図8では、画像及び出力チャネルの間引き率は1/4である。図8に示すように、割り付け部40は、情報取得PE12aを1/4の画像に割り付け、情報取得PE12aを割り付ける画像について、1画像ごとに出力チャネルをローテーションしてPE12に割り付ける。
例えば、割り付け部40は、画像#0、#4、#8、・・・には情報取得PE12aを割り付けるが、画像#1、#2、#3、#5、#6、#7、・・・には、情報取得PE12aを割り付けない。そして、画像番号を16で割った余りが0の場合には、割り付け部40は、出力チャネル#0、#4、#8、・・・を情報取得PE12aに割り付ける。また、画像番号を16で割った余りが4の場合には、割り付け部40は、出力チャネル#1、#5、#9、・・・を情報取得PE12aに割り付ける。同様に、画像番号を16で割った余りが12の場合には、割り付け部40は、出力チャネル#3、#7、#11、・・・を情報取得PE12aに割り付ける。
このように、割り付け部40は、情報取得PE12aを割り付ける画像について、1画像ごとに出力チャネルをローテーションしてPE12に割り付けるので、情報取得PE12aを全体のPE12の中の一部に間引いた場合にも、統計情報の偏りを防ぐことができる。
次に、情報処理装置1による学習処理のフローについて説明する。図9は、情報処理装置1による学習処理のフローを示すシーケンス図である。図9に示すように、ホスト20は、ニューラルネットワークを表すグラフを作成し、領域を確保する(ステップS1)。ここで、ニューラルネットワークを表すグラフとは、例えば、図2に示した畳み込み層#1、プーリング層#1、畳み込み層#2、プーリング層#2、全結合層#1、及び全結合層#2から構成されるグラフである。また、領域はパラメータを記憶する場所である。そして、ホスト20は、パラメータの初期値を生成する(ステップS2)。なお、ホスト20は、生成する代わりに初期値をファイルから読み込んでもよい。
そして、ホスト20は、学習の終了条件が満たされるまで、ステップS3~ステップS11の処理を繰り返す。学習の終了条件は、例えば、学習回数、目標値の達成がある。繰り返し処理として、ホスト20は、学習データをロードし(ステップS3)、レイヤ(層)の順伝播演算の呼び出し(ステップS4)を、レイヤの順方向にアクセラレータボード10に対して行う。伝播演算は、畳み込み層では畳み込み演算であり、プーリング層ではプーリング演算であり、全結合層では全結合演算である。
アクセラレータボード10は、ホスト20から呼び出されると、順伝播演算を実行する(ステップS5)。そして、ホスト20は、レイヤの逆伝播演算の呼び出し(ステップS6)を、レイヤの逆方向にアクセラレータボード10に対して行う。アクセラレータボード10は、ホスト20から呼び出されると、逆伝播演算を実行する(ステップS7)。
そして、ホスト20は、パラメータの更新をアクセラレータボード10に指示する(ステップS8)。アクセラレータボード10は、ホスト20から指示されると、パラメータの更新を実行する(ステップS9)。そして、ホスト20は、統計情報に基づいて動的固定小数点数の小数点位置を決定し、小数点位置の更新をアクセラレータボード10に指示する(ステップS10)。アクセラレータボード10は、ホスト20から指示されると、小数点位置の更新を実行する(ステップS11)。
図10は、伝播演算の呼び出しを説明するための図である。図10(a)は基本形を示し、図10(b)は派生形を示す。図10(a)に示すように、基本形では、ホスト20は、PE割り付けを行い(ステップS21)、PE割り付け情報、入力データアドレス、出力データアドレスとともに、伝播演算の呼び出しをアクセラレータボード10に対して行う(ステップS22)。そして、アクセラレータボード10は、伝播演算を実行し(ステップS23)、終了通知をホスト20へ送信する。
このように、基本形では、ホスト20は、PE割り付けを行うので、PE割り付け情報とともに伝播演算の実行をアクセラレータボード10に指示する。
一方、派生形では、図10(b)に示すように、ホスト20は、入力データアドレス、出力データアドレスとともに、伝播演算の呼び出しをアクセラレータボード10に対して行う(ステップS26)。そして、アクセラレータボード10のコントローラ11は、PE割り付けを行い(ステップS27)、各PE12に対してPE演算の呼び出しを実行する(ステップS28)。そして、各PE12は、演算を実行する(ステップS29)。そして、コントローラ11は、終了の待ち合わせを行い(ステップS30)、待ち合わせが完了すると、終了通知をホスト20へ送信する。
このように、派生形では、コントローラ11がPE割り付けを行うので、ホスト20は、PE割り付け情報なしで伝播演算の実行をアクセラレータボード10に指示する。
次に、割り付け処理のフローについて図11~図16を用いて説明する。図11は、画像及び出力チャネルを機械的にPE12に割り付ける場合の割り付け処理のフローを示すフローチャートであり、図12は、図11に示す変数を説明するための図である。
図11~図16において、Nは画像の数、Coutは出力チャネル数である。画像#式は識別番号が式の値の画像であり、出力チャネル#式は識別番号が式の値の出力チャネルであり、PE#pは識別番号がpのPE12である。図11、図12、図15、図16では、画像方向の間引き率は1/Xであり、出力チャネル方向の間引き率は1/Yである。図13、図14では、出力チャネル方向の間引き率は、1/Xである。
なお、NLはXの倍数であり、CoutはYの倍数であるとする。NLは、1回に割り付けられる画像の数である。例えば、NをNLの倍数とし、PE12の数をNPとすると、割り付け総数=NPと全PE12への割り付けの回数との積=NP*(N/NL)である。一方、割り付け総数=N*Coutであるので、NP*(N/NL)=N*Coutである。したがって、NP/NL=Coutであり、NP/Cout=NLである。CEIL(x)は、xを整数に切り上げる関数である。
また、図11、図12において、iは、全PE12への割り付けの回数を数えるための変数であり、0からNLずつN-1を超えない範囲で増加される。pはPE12を識別する番号である。nは画像の割り付け回数を数えるための変数であり、0からNL-1まで1ずつ増加される。cは、Cout個の出力チャネルの割り付けの回数を数えるための変数であり、0からCout-1まで1ずつ増加される。jは、X個の画像の割り付けの回数を数えるための変数であり、nをXで除算した商となる。kは、X個の画像の割り付けの中で、画像の割り付けの個数を数えるための変数であり、nをXで除算した剰余となる。lは、1つの画像への割り付けの中で、Y個の出力チャネルの割り付けの回数を数えるための変数であり、cをYで除算した商となる。mは、Y個の出力チャネルの割り付けの中で、出力チャネルの割り付けの個数を数えるための変数であり、cをYで除算した剰余となる。
図11に示すように、割り付け部40は、CEIL(NP/Cout)を計算し、NLに設定する(ステップS31)。ここで、割り付け部40は、画像及び出力チャネルを機械的にPE12に割り付ける。そして、割り付け部40は、全PE12のそれぞれに画像と出力チャネルの1つの組合せを割り付ける処理をN/NL回繰り返す。
割り付け部40は、nを0からNL-1まで1ずつ増加させ、画像#nの出力チャネルをPE12に割り付ける。割り付け部40は、変数j及び変数kを計算し、画像#nを割り付ける先頭PE番号を表す変数p0にk*Y+j*Coutを設定する(ステップS32)。割り付け部40は、cを0からCout-1まで1ずつ増加させ、画像#nの出力チャネル#cをPE12に割り付ける処理をCout回繰り返す。
全PE12のそれぞれに画像と出力チャネルの1つの組合せを割り付ける1回の処理では、割り付け部40は、変数l及び変数mを計算し、チャネル#cを割り付けるPE番号の相対値を表す変数p1にm+l*X*Yを設定し(ステップS33)、画像#(n+i*NL)、出力チャネル#cをPE#(p0+p1)に割り付ける(ステップS34)。割り付け部40は、cを0からCout-1まで1ずつ増加させ、ステップS33、S34を繰り返す。
図13は、割り付け部40による割り付け処理のフローを示すフローチャートであり、図14は、図13に示す変数を説明するための図である。
また、図13、図14において、iは、全PE12への割り付けの回数を数えるための変数であり、0からNLずつN-1を超えない範囲で増加される。nは、全PE12への割り付けの中で画像の割り付けの個数を数えるための変数であり、0からNL-1まで1ずつ増加される。cは、Cout個の出力チャネルの割り付けの回数を数えるための変数であり、0からCout-1まで1ずつ増加される。kは、1つの画像の割り付け、すなわち、Cout個の出力チャネルの割り付けの中でX個の出力チャネルの割り付けの回数を数えるための変数であり、cをXで除算した商となる。lは、X個の出力チャネルの割り付けの中で出力チャネルの割り付けの個数を数えるための変数であり、cをXで除算した剰余となる。
図13に示すように、割り付け部40は、CEIL(NP/Cout)を計算し、NLに設定する(ステップS41)。全PE12のそれぞれに画像と出力チャネルの1つの組合せを割り付ける処理をN/NL回繰り返す。そして、割り付け部40は、nを0からNL-1まで1ずつ増加させ、画像#nの出力チャネルをPE12に割り付ける。
割り付け部40は、画像#nを割り付ける先頭PE番号を表す変数p0にn*Coutを設定する(ステップS42)。割り付け部40は、cを0からCout-1まで1ずつ増加させ、画像#nの出力チャネル#cをPE12に割り付ける処理をCout回繰り返す。
全PE12のそれぞれに画像と出力チャネルの1つの組合せを割り付ける1回の処理では、割り付け部40は、チャネル#cに対して、変数c’に(c-n+Cout)%Coutを設定し、チャネル#nを割り付けるPE番号の相対値を表す変数p1にc’を設定し(ステップS43)、画像#(n+i*NL)、出力チャネル#cをPE#(p0+p1)に割り付ける(ステップS44)。すなわち、割り付け部40は、ステップS43において、nを用いて出力チャネルをずらす。割り付け部40は、cを0からCoutまで1ずつ増加させ、ステップS43、S44を繰り返す。
このように、割り付け部40は、画像と出力チャネルの組合せをPE12に割り付けるときに、nを用いて出力チャネルをずらす、すなわち画像ごとに出力チャネルをローテーションするので、統計情報の偏りを防ぐことができる。
図15は、割り付け部40による図8に示した他の割り付けの処理のフローを示すフローチャートであり、図16は、図15に示す変数を説明するための図である。図11と図15、図12と図16を比較すると、図15において、ステップS53の処理がステップS33の処理と異なる。具体的には、変数c’に(c-j+Cout)%Coutを設定し、変数cの代わりに変数c’を使って変数l及びmを設定する。n+i*NL、すなわち、割り付け部40は、jを用いて出力チャネルをずらす。
このように、割り付け部40は、画像と出力チャネルの組合せをPE12に割り付けるときに、jを用いて出力チャネルをずらす、すなわちX個の画像の割り付けごとに出力チャネルをローテーションするので、統計情報の偏りを防ぐことができる。
次に、割り付け部40による割り付けの効果について説明する。図17A及び図17Bは、割り付け部40による割り付けの効果を説明するための図である。図17A(a)及び図17B(a)に示すように、実施例に係る割り付けを行った場合の分布は、他の間引きを行った場合と比べて、間引きしない場合の分布と類似する。また、図17A(b)に示すように、間引きを行っても表現可能範囲の最上位ビットは間引きを行わない場合と同じ「-18」である。また、図17B(b)に示すように、間引きを行っても表現可能範囲の最上位ビットは間引きを行わない場合と同じ「-17」である。
上述してきたように、実施例では、アクセラレータボード10は、全体のPE12のうち一部に情報取得PE12aを有する。また、ホスト20の割り付け部40は、深層学習の層の伝播演算をPE12に割り付ける際に、一定数の画像ごとに均等に情報取得PE12aを割り付け、該一定数の画像ごとに出力チャネルをローテーションしてPE12に割り付ける。したがって、情報処理装置1は、統計情報の偏りを抑えることができ、学習精度の低下を抑えることができる。
また、実施例では、割り付け部40は、1画像ごとに均等に情報取得PE12aを割り付け、1画像ごとに出力チャネルをローテーションしてPE12に割り付けるので、統計情報の偏りを抑えることができる。
また、実施例では、割り付け部40は、深層学習の畳込み層における伝播演算をPE12に割り付ける際に、一定数の画像ごとに均等に情報取得PE12aを割り付け、該一定数の画像ごとに出力チャネルをローテーションしてPE12に割り付ける。したがって、情報処理装置1は、畳込み層における伝播演算において取得される統計情報の偏りを抑えることができる。
また、実施例では、割り付け部40の代わりにアクセラレータボード10のコントローラ11が割り付け処理を行ってもよいので、ホスト20の負荷を低減することができる。
また、実施例では、画像を学習する場合について説明したが、情報処理装置1は、他のデータを学習してもよい。
1 情報処理装置
10 アクセラレータボード
11 コントローラ
12 PE
12a 情報取得PE
13 DRAM
14 PCIeハードウェア
20 ホスト
21 CPU
22 DRAM
23 PCIeハードウェア
30 HDD
40 割り付け部

Claims (6)

  1. 並列に処理を行う第1の数の処理装置を用いて動的固定小数点数による深層学習を行う情報処理装置において、
    前記第1の数の処理装置のうち前記第1の数より少ない第2の数の処理装置は、前記動的固定小数点数の小数点位置の調整に用いる統計情報を取得する取得処理装置をそれぞれ有し、
    前記深層学習の層における伝播演算を前記第1の数の処理装置に割り付ける際に、前記第1の数より少ない第3の数の入力データ毎に前記第2の数の処理装置を均等に割り付け、前記第3の数の入力データ毎に出力チャネルを第4の数ずらしながら割り付ける割り付け部
    を有することを特徴とする情報処理装置。
  2. 前記割り付け部は、入力データごとに前記取得処理装置を均等に割り付け、入力データごとに出力チャネルを前記第4の数ずらしながら割り付けることを特徴とする請求項1に記載の情報処理装置。
  3. 前記割り付け部は、前記深層学習の畳込み層における伝播演算を前記第1の数の処理装置に割り付けることを特徴とする請求項1又は2に記載の情報処理装置。
  4. 前記伝播演算に用いるデータを指定して前記第1の数の処理装置に前記伝播演算の実行を指示する制御部を有し、
    前記制御部が前記割り付け部を有することを特徴とする請求項1、2又は3に記載の情報処理装置。
  5. 各処理装置に演算の実行を指示する第1の制御部と、
    前記第1の制御部に前記伝播演算に用いるデータを指定して前記伝播演算の実行を指示する第2の制御部を有し、
    前記第1の制御部が前記割り付け部を有することを特徴とする請求項1、2又は3に記載の情報処理装置。
  6. 並列に処理を行う第1の数の処理装置を用いて動的固定小数点数による深層学習を行う情報処理装置による情報処理方法において、
    前記情報処理装置は、前記第1の数の処理装置のうち前記第1の数より少ない第2の数の処理装置に前記動的固定小数点数の小数点位置の調整に用いる統計情報をそれぞれ取得させ、
    前記深層学習の層における伝播演算を前記第1の数の処理装置に割り付ける際に、前記第1の数より少ない第3の数の入力データごとに前記第2の数の処理装置を均等に割り付け、前記第3の数の入力データ毎に出力チャネルを第4の数ずらしながら割り付ける
    処理を行うことを特徴とする情報処理方法。
JP2020069144A 2020-04-07 2020-04-07 情報処理装置及び情報処理方法 Active JP7367595B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2020069144A JP7367595B2 (ja) 2020-04-07 2020-04-07 情報処理装置及び情報処理方法
EP21154527.2A EP3893165A1 (en) 2020-04-07 2021-02-01 Information processing apparatus and information processing method
US17/167,124 US20210312279A1 (en) 2020-04-07 2021-02-04 Information processing apparatus and information processing method
CN202110187706.3A CN113496276A (zh) 2020-04-07 2021-02-18 信息处理设备和信息处理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2020069144A JP7367595B2 (ja) 2020-04-07 2020-04-07 情報処理装置及び情報処理方法

Publications (2)

Publication Number Publication Date
JP2021165942A JP2021165942A (ja) 2021-10-14
JP7367595B2 true JP7367595B2 (ja) 2023-10-24

Family

ID=74494778

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020069144A Active JP7367595B2 (ja) 2020-04-07 2020-04-07 情報処理装置及び情報処理方法

Country Status (4)

Country Link
US (1) US20210312279A1 (ja)
EP (1) EP3893165A1 (ja)
JP (1) JP7367595B2 (ja)
CN (1) CN113496276A (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7137067B2 (ja) * 2018-10-25 2022-09-14 富士通株式会社 演算処理装置、学習プログラム及び学習方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018124681A (ja) 2017-01-30 2018-08-09 富士通株式会社 演算処理装置、情報処理装置、方法、およびプログラム
JP2019522291A (ja) 2016-07-01 2019-08-08 グーグル エルエルシー プログラマブル二次元画像プロセッサ上の畳み込みニューラルネットワーク
JP2019148972A (ja) 2018-02-27 2019-09-05 富士通株式会社 演算処理装置、情報処理装置、情報処理方法、およびプログラム

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102601604B1 (ko) * 2017-08-04 2023-11-13 삼성전자주식회사 뉴럴 네트워크의 파라미터들을 양자화하는 방법 및 장치
JP6528893B1 (ja) * 2018-11-07 2019-06-12 富士通株式会社 学習プログラム、学習方法、情報処理装置
JP2020098469A (ja) * 2018-12-18 2020-06-25 富士通株式会社 演算処理装置および演算処理装置の制御方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019522291A (ja) 2016-07-01 2019-08-08 グーグル エルエルシー プログラマブル二次元画像プロセッサ上の畳み込みニューラルネットワーク
JP2018124681A (ja) 2017-01-30 2018-08-09 富士通株式会社 演算処理装置、情報処理装置、方法、およびプログラム
JP2019148972A (ja) 2018-02-27 2019-09-05 富士通株式会社 演算処理装置、情報処理装置、情報処理方法、およびプログラム

Also Published As

Publication number Publication date
CN113496276A (zh) 2021-10-12
JP2021165942A (ja) 2021-10-14
EP3893165A1 (en) 2021-10-13
US20210312279A1 (en) 2021-10-07

Similar Documents

Publication Publication Date Title
JP7348971B2 (ja) 畳み込みニューラルネットワークハードウエア構成
JP6540725B2 (ja) 演算処理装置、方法、およびプログラム
US11222254B2 (en) Optimized neuron circuit, and architecture and method for executing neural networks
EP3816874A2 (en) Piecewise quantization method for artificial neural networks
US10642622B2 (en) Arithmetic processing device and control method of the arithmetic processing device
US11475284B2 (en) Information processing apparatus, neural network program, and processing method for neural network
JP2021516382A (ja) 機械学習のための画像変換
US20220083857A1 (en) Convolutional neural network operation method and device
US20210201120A1 (en) Inference apparatus, convolution operation execution method, and program
CN113222102B (zh) 用于神经网络模型量化的优化方法
US10755169B2 (en) Hybrid non-uniform convolution transform engine for deep learning applications
US11907834B2 (en) Method for establishing data-recognition model
EP3798929A1 (en) Information processing apparatus, information processing method, and information processing program
WO2019053835A1 (ja) 演算回路、演算方法、およびプログラム
JP7367595B2 (ja) 情報処理装置及び情報処理方法
US11551087B2 (en) Information processor, information processing method, and storage medium
JP7137067B2 (ja) 演算処理装置、学習プログラム及び学習方法
JP2020098469A (ja) 演算処理装置および演算処理装置の制御方法
CN114913193A (zh) 图像边缘填充方法和装置
US20220129725A1 (en) Method and system for convolution model hardware accelerator
JP6757349B2 (ja) 固定小数点を用いて認識処理を行う多層の畳み込みニューラルネットワーク回路を実現する演算処理装置
KR20220011676A (ko) 통합 이미지 계산을 위한 하드웨어 가속기

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230112

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20230824

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230925

R150 Certificate of patent or registration of utility model

Ref document number: 7367595

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150