【新規性喪失の例外の表示】特許法第30条第2項適用 公開日:2016年2月10日 公開場所:東京工業大学大岡山キャンパス 公開者:大山 洋介 公開日:2016年4月21日 公開場所:学会名 2016 NSF BIGDATA PI MEETING 開催場所 The Renaissance Arlington Capital View Hotel、2800 South Potomac Ave Arlington Virginia 22202 USA 開催期間 2016年4月20〜21日 公開者:松岡 聡 ウェブサイトの掲載日(推定):早くても2016年4月1日と推定される。ウェブサイトは次の学会で発表されたポスターである。 学会名 2016 NSF BIGDATA PI MEETING 開催場所 The Renaissance Arlington Capital View Hotel、2800 South Potomac Ave Arlington Virginia 22202 USA 開催期間 2016年4月20〜21日 ウェブサイトのアドレス:http://workshops.cs.georgetown.edu/BDPI−2016/slides/international/Satoshi%20Matsuoka%20−%20Tokyo%20Institute%20of%20Technology%20−%20Asian%20International%20Partnerships.pdf(該当は9頁) 公開者:大山 洋介、佐藤 育郎、西村 裕紀、野村 哲弘、松岡 聡 及び玉津 幸政 公開日:2016年5月31日 公開場所:学会名 ACM Symposium on High−Performance Parallel and Distributed Computing 開催場所 公益財団法人 京都市国際交流会館(京都市左京区粟田口鳥居町2番地の1) 開催期間 2016年5月31日〜6月4日 公開者:大山 洋介、佐藤 育郎、西村 裕紀、野村 哲弘、松岡 聡 及び玉津 幸政 ウェブサイトの掲載日(推定):早くても2016年4月25日と推定される。ウェブサイトは次の学会で発表されたポスターである。
(58)【調査した分野】(Int.Cl.,DB名)
それぞれがCPUおよびGPUを有する複数のノードから構成され、前記CPUが前記GPUを用いて複数の学習データに基づく畳み込みニューラルネットワーク用の重み更新量を算出するとともに、ノード間で前記重み更新量を通信して重みを更新する学習システムにおける学習時間および/または1回の重み更新に用いられる平均学習データ数である平均ミニバッチサイズを予測する予測装置であって、
畳み込みニューラルネットワーク構造を示すパラメータと、ノード台数と、各GPUに一括処理させる学習データ数であるサブバッチ数と、に基づいて、前記学習時間および/または前記平均ミニバッチサイズを予測する予測部を備える予測装置。
複数の前記サブバッチ数について、前記各処理に要する時間を計測してフィッティングを行うことにより、前記一次関数を定める定数を算出するパラメータ算出部を備える、請求項6に記載の予測装置。
前記判定部は、前記平均ミニバッチサイズが予め定めた範囲に収まる前記ノード台数および前記サブバッチ数の組のうち、前記学習時間が最小となる組を特定する、請求項8に記載の予測装置。
前記判定部は、前記平均ミニバッチサイズが予め定めた範囲に収まる前記ノード台数および前記サブバッチ数の組のうち、前記ノード台数が最小となる組を特定する、請求項8に記載の予測装置。
前記判定部は、前記平均ミニバッチサイズが予め定めた範囲に収まる前記ノード台数および前記サブバッチ数の組のうち、前記ノード台数と前記学習時間との積が最小となる組を特定する、請求項8に記載の予測装置。
それぞれがCPUおよびGPUを有する複数のノードから構成され、前記CPUが前記GPUを用いて複数の学習データに基づく畳み込みニューラルネットワーク用の重み更新量を算出するとともに、ノード間で前記重み更新量を通信して重みを更新する学習システムにおける学習時間および/または1回の重み更新に用いられる平均学習データ数である平均ミニバッチサイズを予測する予測方法であって、
畳み込みニューラルネットワーク構造を示すパラメータと、ノード台数と、各GPUに一括処理させる学習データ数であるサブバッチ数と、に基づいて、前記学習時間および/または前記平均ミニバッチサイズを予測する予測方法。
それぞれがCPUおよびGPUを有する複数のノードから構成され、前記CPUが前記GPUを用いて複数の学習データに基づく畳み込みニューラルネットワーク用の重み更新量を算出するとともに、ノード間で前記重み更新量を通信して重みを更新する学習システムにおける学習時間および/または1回の重み更新に用いられる平均学習データ数である平均ミニバッチサイズを予測する予測プログラムであって、コンピュータを、
畳み込みニューラルネットワーク構造を示すパラメータと、ノード台数と、各GPUに一括処理させる学習データ数であるサブバッチ数と、に基づいて、前記学習時間および/または前記平均ミニバッチサイズを予測する予測手段として機能させる予測プログラム。
【発明を実施するための形態】
【0020】
以下、本発明に係る実施形態について、図面を参照しながら具体的に説明する。
まずは、畳み込みニューラルネットワーク(Convolutional Neural Network:CNN)および重みの学習について説明する。次いで、複数のノード(計算機クラスタ)を用いてミニバッチ学習を行う学習システムを説明する。その上で、学習時間やミニバッチサイズを予測する手法を詳しく説明する。
【0021】
図1は、畳み込みニューラルネットワークの構造の一例を模式的に示す図である。CNNは、1または複数の畳み込み部21およびプーリング部22の組と、多層ニューラルネットワーク構造23とを備えている。初段の畳み込み部21に認識対象の画像が入力される。そして、多層ニューラルネットワーク構造23から認識結果が出力される。
【0022】
畳み込み部21は、入力される画像信号(初段の畳み込み部21にあっては認識(あるいは学習)対象の画像、2段目以降の畳み込み部21にあっては後述する特徴マップ)に対してフィルタ21aを適用して畳み込みを行い、次いで非線形写像を行う。フィルタ21aは複数ピクセルの要素を持つ重みであり、各重みはバイアスを含んでいてもよい。
【0023】
プーリング部22は、畳み込み部21からの画像信号の解像度を下げるプーリング操作を行い、特徴マップを生成する。
【0024】
多層ニューラルネットワーク構造23は、入力層231と、1または複数の隠れ層232と、出力層233とを有する。入力層231には最終段のプーリング部22からの特徴マップが入力される。隠れ層232は重みを用いて積和演算を行う。出力層233はCNN処理の最終結果を出力する。
【0025】
畳み込み部21におけるフィルタ21aの重みや、隠れ層232における重みがニューラルネットワーク用のパラメータである。本実施形態では、これらの重みWを短時間で学習することを目的としている。学習とは、認識対象の画像が入力されたときにCNNが理想の出力を返すよう、重みを更新することをいう。
【0026】
学習には、認識の対象となる画像と、それに対する理想的な出力値の組である学習データが用いられる。学習に先立ち、CNNの出力がどの程度理想的な出力値から離れているかを定量化した関数(例えば二乗誤差やクロスエントロピー)を定義し、全学習データ分だけ足し合わせたコスト関数E(W)を用意する。コスト関数E(W)は重みWの関数であり、コスト関数E(W)が小さいほどよいCNNであるといえる。学習とは、重みWを更新することで、コスト関数E(W)を小さくする処理とも言える。
【0027】
本実施形態では、コスト関数E(W)を最小化する手法として、誤差逆伝搬法と呼ばれる勾配法の一種を使用する。誤差逆伝搬法は重みの更新を多数回繰り返すものであり、一回の更新は下記(1)式で表される。
W←W−r*dW ・・・(1)
rは学習係数と呼ばれるスカラ量であり、更新の度に小さな値にしてもよいし、常に一定の値であってもよい。dWはコスト関数の重みに対する微分を表したものである。すなわち、重みの更新には、現時点での重みWと、微分値dWとが用いられる。
【0028】
ここで、一回の重み更新において、全学習データを用いて算出された微分値dWを用いる方法を「バッチ学習」といい、一部の学習データを用いて算出された微分値dWの近似値を用いる方法を「ミニバッチ学習」という。近年では、ミニバッチ学習を採用することが一般的である。その理由は、ミニバッチ学習は、バッチ学習と比較して、多くの場合収束速度が速く、さらには汎化性能(学習データに含まれない画像に対する識別性能)が高いためである。
【0029】
通常、ミニバッチ学習を採用する場合、ミニバッチサイズをあらかじめ決定しておく必要がある。ミニバッチサイズとは、1回の重み更新(微分値dWの算出)に使用する学習データの個数を指す。適切なミニバッチサイズは、問題依存ではあるが、少ない時で1、多い時でおよそ1000、といった事例がある。経験的に、ミニバッチサイズには適切な値があり、このサイズを大きく超えると、収束が遅くなったり、汎化性能が劣化したりするデメリットがあることが知られている。すなわち、必ずしもミニバッチサイズを大きくすればよい、というわけではない。また、適切なミニバッチサイズは、全学習データの数を遥かに下回ることもまたよく知られている。
【0030】
図2は、ミニバッチ学習を行う学習システムのハードウェア構成の一例を示すブロック図である。学習システムはインターコネクトによって接続されたN
Node個のノード1から構成される。そして、任意のノード1間でデータ通信が可能である。
【0031】
ノード1はハードウェアとしての単位であり、例えば1台の計算機である。また、ノード1は複数のプロセス(プログラム)を並列に処理できる。具体的には、ノード1は、1つのCPU(Central Processing Unit)11と、N
GPU個(同図では2つ)のGPU(Graphics Processing Unit)12と、SSD(Solid State Drive)などのストレージ13とを有する。なお、1つのノード1が有するGPU12の個数N
GPUは全ノード1で共通とする。
【0032】
CPU11は、ARスレッドと、N
GPU個の学習スレッドを実行する。学習スレッドは、GPU12を用い、他のGPU12とは非同期で、重み更新量(上記(1)式の微分値dWに対応)を算出する処理である。重み更新量の算出には、自学習スレッドのみが使用する学習データ(ストレージ13に格納されている)を用いてGPU12での学習を繰り返し、学習結果である重み更新量をホストメモリ上のバッファGradBufに積算する。なお、バッファGradBufは学習スレッドごと(言い換えるとGPU12ごと)に設けられる。
【0033】
また、ARスレッドは、各GPU12によって算出された重み更新量を他のノード1と通信することにより、重みを更新するとともに他のノード1と重みを同期させる処理である。より具体的には、ARスレッドは、学習スレッドとは非同期に、各バッファGradBufの値を用いて加算Allreduce通信を行い、重みを更新してホストメモリ上のバッファARResultBufに格納する。なお、バッファARResultBufはARスレッドごと(言い換えるとノード1ごと)に設けられる。
【0034】
学習スレッドは学習の度にバッファARResultBufが更新されているか確認し、更新されている場合はその値を最新の重みとして使用する。
【0035】
ここで、各GPU12(言い換えると、各学習スレッド)に一括処理させる学習データの数をサブバッチ数N
Subbatchとする。全学習データは学習開始前に各ノード1のストレージ13に分割して格納しておくこととする。具体的には、ストレージ13には、アクセスされるGPU12によって学習処理に用いられる学習データが格納されている。
【0036】
なお、
図2はあくまで一例にすぎず、例えばノード1内のCPU11やGPU12の数は任意である。また、ストレージ13は各ノード1に対して外付けであってもよいし、全ノード1からアクセス可能な1つのストレージ13に全学習データが格納されていてもよく、いずれにしても、各ノード1は学習データを高速に扱うことができる。
【0037】
図3は、
図2の学習システムにおける学習スレッドおよびARスレッドの処理動作の詳細を例示するフロー図である。同図では、1つのノード1が3つのGPU12を有する例を示している。また、
図4Aおよび
図4Bは、それぞれ学習スレッドおよびARスレッドの詳細アルゴリズムを示す擬似プログラムである。
【0038】
学習スレッドは次の各処理を他の学習スレッドとは非同期で繰り返し行う(
図3および
図4A参照)。
【0039】
[S1:LockARResult_GPU]
バッファARResultBufの排他制御を獲得するまで待機する。なお、本処理に要する時間をT
LockARResult_GPUと表記し、他の処理も同様とする。
【0040】
[S2:FetchARResult]
前回のFetchARResultの後に、バッファARResultBufが更新されている場合、パラメータWeightsにバッファARResultBufの値をコピーする。
【0041】
[S3:LoadImage]
ストレージ13からサブバッチ数N
Subbatch個の学習データを読み込む。
【0042】
[S4:DeformImage]
読み込んだ学習データの画像に対して、透視投影変換、射影変換、弾性ひずみ(Elastic distortion)、レンズ効果、クロッピング、左右反転、RGB値に対する乱数乗算などの変形を加える。
【0043】
[S5:CNN]
変形後の学習データに対して、畳み込み演算および逆拡散計算を行う。本処理の詳細は後述する。
【0044】
[S6:ComputeUpdateVal]
上記のパラメータWeightsおよび逆拡散計算による勾配に基づいて、微分値すなわち重み更新量Gradを計算する。
【0045】
[S7:LockGradient_GPU]
バッファGradBufの排他制御を獲得するまで待機する。
【0046】
[S8:UpdateGradient]
前回のUpdateGradientの後に、バッファGradBufが更新されている場合、ComputeUpdateValで得られた重み更新量GradをバッファGradBufにコピーし、更新されていない場合、バッファGradBufに加算する。
【0047】
以上説明した学習スレッドが1回の学習処理(つまり重み更新量Gradの算出)を行うのに要する時間T
GPUは上記S1〜S8に示す各処理に要する時間の総和であり、下記(2)式で表される。
T
GPU=
T
LockARResult_GPU +
+T
FetchARResult +
T
LoadImage +
T
DeformImage +
T
CNN +
T
ComputeUpdateVal +
T
LockGradient_GPU +
T
UpdateGradient ・・・(2)
【0048】
一方、ARスレッドは次の各処理を学習スレッドとは非同期で繰り返し行う(
図3および
図4B参照)。
【0049】
[S11:LockGradient_AR]
バッファGradBufの排他制御を獲得するまで待機する。
【0050】
[S12:SumGradient]
学習スレッドによって格納されたバッファGradBufが更新されている場合、その総和をパラメータSendBufに代入する。
【0051】
[S13:UpdateOldWeights]
MPIランクをn(n=0〜N
Node−1)としたとき、バッファARResultBufに格納された最新の値の{N
Param×n/N
Node}〜{N
Param×(n+1)/N
Node}番目の要素をバッファOldWeightsにコピーする。ここで、N
Paramは学習すべき全重み数である。
【0052】
[S14:AddMomentum]
バッファSendBufに、パラメータOldWeightsと、前回の重み更新量との差分に関するパラメータDeltaWeightsを加算する。
【0053】
[S15:MPI_Allreduce]
Allreduce命令を発行してバッファSendBufを全ノードで加算し、その結果をバッファRecvBufに代入する。この時点で、バッファRecvBufには更新された重みが格納される。
【0054】
[S16:UpdateMomentum]
バッファRecvBufおよびパラメータOldWeightsを用いて、重み更新前後の差分をパラメータDeltaWeightsに代入する。
【0055】
[S17:LockARResult_AR]
バッファARResultBufの排他制御を獲得するまで待機する。
【0056】
[S18:UpdateARResult]
バッファRecvBufをバッファARResultBufにコピーする。
【0057】
以上説明したARスレッドがAllreduce命令を発行して重み更新を1回行うのに要する時間T
Allreduceは上記S11〜S18の各時間の総和であり、下記(3)式で表される。
T
Allreduce=
T
LockGradient_AR +
T
SumGradient +
T
UpdateOldWeights +
T
AddMomentum +
T
MPI_Allreduce +
T
UpdateMomentum +
T
LockARResult_AR +
T
UpdateARResult ・・・(3)
【0058】
図5は、学習スレッドおよびARスレッドの処理タイミングを模式的に説明する図である。説明を簡略化するために、ノードが2つ(N
Node=2)あり、そのそれぞれが3つのGPUを有する(N
GPU=3)こととしている。
【0059】
各四角が各学習スレッドにおいて行われる1回の学習処理を示しており、
図3および
図4AのステップS1〜S8の処理に対応している。各学習処理に要する時間は上記(2)式に示すT
GPUである。一方、一点鎖線の枠がARスレッドにおいて行われる1回の通信処理を示しており、
図3および
図4BのステップS11〜S18の処理に対応している。各通信処理に要する時間は上記(3)式に示すT
Allreduceである。
【0060】
図5では、T
Allreduce:T
GPU=3:1としている。そのため、例えば、符号51で示す通信処理では、符号52,53で示す2つの学習処理によって得られた学習結果を用いて重みが更新される。他の通信処理でも、いずれか2つの学習スレッドによって得られた学習結果が用いられる。
【0061】
より一般的には、GPU12の総数がN
Node×N
GPU個であることを考慮し、1回の通信処理では下記(4)式に示す数の学習スレッドによって得られた学習結果が用いられる。
N
Node×N
GPU×T
Allreduce/T
GPU ・・・(4)
【0062】
したがって、各学習スレッドに一括処理させる学習データ数すなわちサブバッチ数をN
Subbatchとすると、1回の重み更新に用いられる学習データ数すなわち平均ミニバッチサイズN
Batchは下記(5)式で表される。
N
Batch=(N
Node×N
GPU×N
Subbatch×T
Allreduce)/T
GPU ・・・(5)
【0063】
また、総数N
Fileの全学習データを処理するのに要する学習時間T
Epochは、ミニバッチサイズN
Batchの学習データを処理するのに要する時間がT
Allreduceであることから、下記(6)式で表される。
T
Epoch=N
File×T
Allreduce/N
Batch
=(N
File×T
GPU)/(N
Node×N
GPU×N
Subbatch) ・・・(6)
【0064】
なお、学習時間T
Epochは「エポック時間」で表される。エポックとは、学習に使用したデータ量に関する単位である。1エポックとは総数N
Fileの全学習データ1回分の学習処理を行うことを意味し、nエポックとは全学習データn回分の学習処理を行うことを意味する。そして、「1エポック時間」を1エポックの学習処理に必要な時間と定義する。なお、通常は、目的関数の収束までに、多数のエポック、例えば100エポック程度を要する。
【0065】
以上を踏まえ、本実施形態では、上記(5),(6)式に基づき、ノード台数N
Node、サブバッチ数N
Subbatchから学習時間T
Epochおよび/または平均ミニバッチサイズN
Batchを予測するものとする。
【0066】
図6は、予測装置の概略構成を示すブロック図である。この予測装置は、ハードウェアで構成されてもよいし、コンピュータが所定のプログラムを実行することによって実現されてもよい。
【0067】
予測装置は予測部31を備えている。予測部31には、NN構造を示すパラメータ、ノード台数N
Node、および、各GPUに一括処理させる学習データ数すなわちサブバッチ数N
Subbatchが入力変数として入力される。
【0068】
そして、予測部31は、予測モデル式を用い、入力変数に基づいて学習時間T
Epochおよび平均ミニバッチサイズN
Batchを予測し、出力変数として出力する。なお、予測部31は学習時間T
Epochおよび平均ミニバッチサイズN
Batchの一方を予測してもよいが、以下では両方を予測するものとする。
【0069】
予測装置はパラメータ算出部32を備えていてもよい。パラメータ算出部32は、学習システムの構成から、上記のT
GPUおよびT
Allreduceを算出に必要なパラメータα,βを算出する。その詳細はT
GPUおよびT
Allreduceの算出と合わせて後述する。
【0070】
さらに、予測装置は判定部33を備えていてもよい。判定部33は、算出された平均ミニバッチサイズN
Batchが適切か否か、より具体的には、平均ミニバッチサイズN
Batchが予め定められた適切な範囲に収まっているか否かを判定する。
【0071】
また、判定部33は、与えられたNN構造に対して、平均ミニバッチサイズN
Batchが適切となるノード台数N
Nodeおよびサブバッチ数N
Subbatchの適切な組(望ましくはすべての組)を特定してもよい。
【0072】
そのような適切な組の中で、判定部33は学習時間T
Epochが最適(最小)となる組を特定してもよい。これにより、最速で適切な重みを学習できる。
【0073】
また、そのような適切な組の中で、判定部33はノード台数N
Nodeが最小となる組を特定してもよい。これにより、最小のノード台数で適切な重みを学習できる。
【0074】
あるいは、そのような適切な組の中で、判定部33はノード時間(ノード台数N
Nodeと学習時間T
Epochとの積)が最小となる組を特定してもよい。これにより、ノード時間すなわちリソース占有時間を抑えて、適切な重みを学習できる。
【0075】
図7は、予測部31の構成例を示すブロック図である。予測部31は、N
Param算出部41と、T
GPU・T
Allreduce算出部42と、T
Epoch算出部43と、N
Batch算出部44とを有する。T
Epoch算出部43は上記(6)式に基づいて学習時間T
Epochを算出する。N
Batch算出部44は上記(5)式に基づいて平均ミニバッチサイズN
Batchを算出する。以下、N
Param算出部41およびT
GPU・T
Allreduce算出部42について主に説明する。
【0076】
T
Allreduce,T
GPUは学習すべき総重み数N
Paramに依存する。そこで、N
Param算出部41は総重み数N
Paramを算出する。総重み数N
ParamはNN構造によって定まり、例えば以下の(7)式に基づいて算出できる。
【数1】
ここで、Lcは畳み込みレイヤ数、mlはl層目のマップ数(但しm0は入力層のマップ数)、cは畳み込みフィルタサイズ、Lは総レイヤ数、xlはl層目のマップサイズであり(
図1参照)、これらが予測部31にNN構造を示すパラメータとして入力される。言い換えると、NN構造を示すパラメータとは、総重み数N
Paramを定めるためのパラメータである。
【0077】
T
GPU・T
Allreduce算出部42は、総重み数N
Paramおよび上記(2),(3)式に基づいてT
GPUおよびT
Allreduceを算出する。
まずは、上記(2)式に基づくT
GPUの算出について説明する。
【0078】
[T
LockARResult_GPU]
T
LockARResult_GPUは各学習スレッドのロック時間の総和であり、下記(2A)式で表される。
【数2】
なお、T
FetchARResultは次の(2B)式で表され、T
UpdateARResultは後述する(3E)式で表される。
【0079】
[T
FetchARResult]
T
FetchARResultは前回のFetchARResultの後に、バッファARResultBufが更新されているか否かに依存する。更新されている確率は、T
Allreduce>T
GPUであればT
GPU/T
Allreduceであり、T
Allreduce<T
GPUであれば1と仮定できる。よって、T
FetchARResultは下記(2B)式で表される。
T
FetchARResult = α1×N
Param×min(T
GPU/T
Allreduce,1)
・・・(2B)
ここで、α1は学習システムに応じた固定パラメータであり、パラメータ算出部32によって予め算出されている。
【0080】
[T
LoadImage]
T
LoadImageはストレージ13からサブバッチ数N
Subbatch個の学習データを読み込むのに要する時間であり、下記(2C)式で表される。
T
LoadImage = α2×N
Subbatch+β2 ・・・(2C)
ここで、α2,β2は学習システムに応じた固定パラメータであり、パラメータ算出部32によって予め算出されている。
【0081】
[T
DeformImage]
T
DeformImageはサブバッチ数N
Subbatch個の学習データに変形を加えるのに要する時間であり、下記(2D)式で表される。
T
DeformImage = α3×N
Subbatch+β3 ・・・(2D)
ここで、α3,β3は学習システムに応じた固定パラメータであり、パラメータ算出部32によって予め算出されている。
【0082】
[T
CNN]
T
CNNは畳み込み演算および逆拡散計算、具体的には
図8に示すアルゴリズムを実行するのに要する時間である。
【0083】
[S21:im2col]
画像を列ベクトルに変換する。l層目におけるこの処理に要する時間は、上記l層目のマップサイズx
lおよびマップ数m
lならびに畳み込みフィルタサイズcを用いて下記(2E1’)式で表される。
T
im2col_l=α11
l×x
l×c
2×m
l-1×N
Subbatch+β11
l
・・・(2E1’)
ここで、α11
l,β11
lは学習システムに応じた固定パラメータであり、パラメータ算出部32によって予め算出されている。
そして、本処理に要する合計時間は下記(2E1)式で表される。
【数3】
【0084】
[S22:convolution]
列ベクトルに対して畳み込みを行う。l層目におけるこの処理に要する時間は下記(2E2’)式で表される。
T
convolution_l=α12
l×x
l2×N
Subbatch×m
l×c
2×m
l-1+β12
l
・・・(2E2’)
ここで、α12
l,β12
lは学習システムに応じた固定パラメータであり、パラメータ算出部32によって予め算出されている。
そして、本処理に要する合計時間は下記(2E2)式で表される。
【数4】
【0085】
[S23:fc]
全結合処理を行う。より詳しくは、特徴マップの全要素を使った線形結合と活性化処理であり、全結合層が複数層連続する場合には、線形結合と活性化処理とが繰り返される。l層目におけるこの処理に要する時間は下記(2E3’)式で表される。
T
fc_l=α13
l×N
Subbatch×m
l×x
l-12×m
l-1+β13
l ・・・(2E3’)
ここで、α13
l,β13
lは学習システムに応じた固定パラメータであり、パラメータ算出部32によって予め算出されている。
そして、本処理に要する合計時間は下記(2E3)式で表される。
【数5】
【0086】
[S24:activation]
バイアスの加算および活性化処理であり、l層目におけるこの処理に要する時間は下記(2E4’)式で表される。
T
activation_l=α14
l×x
l2×m
l×N
Subbatch+β14
l ・・・(2E4’)
ここで、α14
l,β14
lは学習システムに応じた固定パラメータであり、パラメータ算出部32によって予め算出されている。
そして、本処理に要する合計時間は下記(2E4)式で表される。
【数6】
【0087】
[S25:pooling]
プーリング処理であり、l層目におけるこの処理に要する時間は、l層目のプーリンググリッドサイズplを用いて下記(2E5’)式で表される。
T
pooling_l=α15
l×p
l2×x
l2×m
l×N
Subbatch+β15
l
・・・(2E5’)
ここで、α15
l,β15
lは学習システムに応じた固定パラメータであり、パラメータ算出部32によって予め算出されている。
そして、本処理に要する合計時間は下記(2E5)式で表される。
【数7】
【0088】
[S26:c2f]
列ベクトル画像に再変換する。この処理に要する時間は下記(2E6)式で表される。
T
c2f=α16×x
l2×m
l×N
Subbatch+β16 ・・・(2E6)
ここで、α16,β16は学習システムに応じた固定パラメータであり、パラメータ算出部32によって予め算出されている。
【0089】
[S27:bias]
バイアスの加算であり、この処理に要する時間は下記(2E7)式で表される。
T
bias=α17×m
L×N
Subbatch+β17 ・・・(2E7)
ここで、α17,β17は学習システムに応じた固定パラメータであり、パラメータ算出部32によって予め算出されている。
【0090】
[S28:softmax]
ソフトマックス処理であり、この処理に要する時間は下記(2E8)式で表される。
T
softmax=α18×m
L×N
Subbatch ・・・(2E8)
ここで、α18は学習システムに応じた固定パラメータであり、パラメータ算出部32によって予め算出されている。
【0091】
[S29:softmax_B]
コスト関数の、ソフトマックス関数の入力に対する微分計算であり、この処理に要する時間は下記(2E9)式で表される。
T
softmax_B=α19×m
L×N
Subbatch ・・・(2E9)
ここで、α19は学習システムに応じた固定パラメータであり、パラメータ算出部32によって予め算出されている。
【0092】
[S30:dedx_fc]
将来のベクトルに対する逆拡散処理であり、l層目におけるこの処理に要する時間は下記(2E10’)式で表される。
T
dedx_fc_l=α20
l×N
Subbatch×x
l2×m
l×m
l+1+β20
l
・・・(2E10’)
ここで、α20
l,β20
lは学習システムに応じた固定パラメータであり、パラメータ算出部32によって予め算出されている。
そして、本処理に要する合計時間は下記(2E10)式で表される。
【数8】
【0093】
[S31:dedx_conv]
将来のベクトルに対する逆拡散処理であり、l層目におけるこの処理に要する時間は下記(2E11’)式で表される。
T
dedx_conv=α21
l×x
l+12×N
Subbatch×c
2×m
l×m
l+1+β21
l
・・・(2E11’)
ここで、α21
l,β21
lは学習システムに応じた固定パラメータであり、パラメータ算出部32によって予め算出されている。
そして、本処理に要する合計時間は下記(2E11)式で表される。
【数9】
【0094】
[S32:c2f_B]
c2fの逆演算であり、この処理に要する時間は下記(2E12)式で表される。
T
c2f_B=α22×x
l2×m
l×N
Subbatch+β22 ・・・(2E12)
ここで、α22,β22は学習システムに応じた固定パラメータであり、パラメータ算出部32によって予め算出されている。
【0095】
[S33:im2col_B]
im2colの逆演算であり、l層目におけるこの処理に要する時間は下記(2E13’)式で表される。
T
im2col_B_l=α23
l×x
l2×c
2×m
l×N
Subbtach+β23
l
・・・(2E13’)
ここで、α23
l,β23
lは学習システムに応じた固定パラメータであり、パラメータ算出部32によって予め算出されている。
そして、本処理に要する合計時間は下記(2E13)式で表される。
【数10】
【0096】
[S34:pooling_B]
プーリングの逆演算であり、l層目におけるこの処理に要する時間は下記(2E14’)式で表される。
T
pooling_B=α24
l×x
l2×m
l×N
Subbatch+β24
l ・・・(2E14’)
ここで、α24
l,β24
lは学習システムに応じた固定パラメータであり、パラメータ算出部32によって予め算出されている。
そして、本処理に要する合計時間は下記(2E14)式で表される。
【0098】
[S35:activation_B]
コスト関数の、活性化関数の入力に対する微分計算であり、l層目におけるこの処理に要する時間は下記(2E15’)式で表される。
T
activation_B=α25
l×x
l2×m
l×N
Subbatch+β25
l
・・・(2E15’)
ここで、α25
l,β25
lは学習システムに応じた固定パラメータであり、パラメータ算出部32によって予め算出されている。
そして、本処理に要する合計時間は下記(2E15)式で表される。
【数12】
【0099】
[S36:dedw]
コスト関数の、重みに対する微分計算であり、l層目におけるこの処理に要する時間は下記(2E16’)式で表される。
T
dedw_l=α26
l×c
l-12×m
l-1×m
l×x
l2×N
Subbatch
+β26
l ・・・(2E16’)
ここで、α26
l,β26
lは学習システムに応じた固定パラメータであり、パラメータ算出部32によって予め算出されている。
そして、本処理に要する合計時間は下記(2E16)式で表される。
【数13】
【0100】
[S37:dedb]
コスト関数の、バイアスに対する微分計算であり、l層目におけるこの処理に要する時間は下記(2E17’)式で表される。
T
dedb_l=α27
l×m
l×x
l2×N
Subbatch+β27
l ・・・(2E17’)
ここで、α27
l,β27
lは学習システムに応じた固定パラメータであり、パラメータ算出部32によって予め算出されている。
そして、本処理に要する合計時間は下記(2E17)式で表される。
【数14】
【0101】
以上から、TNNは上記(2E1)〜(2E17)式の総和であり、下記(2E)式で表される。
T
CNN=
T
im2col +
T
convolution +
T
fc +
T
activation +
T
pooling +
T
c2f +
T
bias +
T
softmax +
T
softmax_B +
T
dedx_fc +
T
dedx_conv +
T
c2f_B +
T
im2col_B +
T
pooling_B +
T
activation_B +
T
dedw +
T
dedb ・・・(2E)
【0102】
上記(2)式に戻って説明を続ける。
[T
ComputeUpdateVal]
T
ComputeUpdateValは長さN
Paramのベクトル同士の演算に要する時間であり、下記(2F)式で表される。
T
ComputeUpdateVal=α4×N
Param ・・・(2F)
ここで、α4は学習システムに応じた固定パラメータであり、パラメータ算出部32によって予め算出されている。
【0103】
[T
LockGradient_GPU]
T
LockGradient_GPUは下記(2G)式で表される。
T
LockGradient_GPU=(T
SumGradient/N
GPU)
2/(2×T
Allreduce)
・・・(2G)
なお、T
SumGradientは後述する(3B)式で表される。
【0104】
[T
UpdateGradient]
T
UpdateGradientは主にホストメモリへの転送時間であり、下記(2H)式で表される。
T
UpdateGradient=α5×N
Param ・・・(2H)
ここで、α5は学習システムに応じた固定パラメータであり、パラメータ算出部32によって予め算出されている。
続いて、上記(3)式に基づくT
Allreduceの算出について説明する。
【0105】
[T
LockGradient_AR]
T
LockGradient_ARはT
LockARResult_GPUと同様に下記(3A)式で表される。
T
LockTrResutl_A=N
GPU×T
UpdateGradient2/(2×T
GPU)
・・・(3A)
【0106】
[T
SumGradient]
T
SumGradientはT
FetchARResultと同様に考えることができ、下記(3B)式で表される。
T
SumGradient=α31×N
GPU×N
Param×min(T
Allreduce/T
GPU,1)
・・・(3B)
ここで、α31は学習システムに応じた固定パラメータであり、パラメータ算出部32によって予め算出されている。
【0107】
[T
UpdateOldWeights]
T
UpdateOldWeightsはN
Nodeに反比例した長さのベクトル計算を行うため、下記(3C)式で表される。
T
SumGradient=α32×N
Param/N
Node ・・・(3C)
ここで、α32は学習システムに応じた固定パラメータであり、パラメータ算出部32によって予め算出されている。
【0108】
[T
AddMomentum]
T
AddMomentumはN
Nodeに反比例した長さのベクトル計算を行うため、下記(3D)式で表される。
T
AddMomentum=α33×N
Param/N
Node ・・・(3D)
ここで、α33は学習システムに応じた固定パラメータであり、パラメータ算出部32によって予め算出されている。
【0109】
[T
MPI_Allreduce]
T
MPI_AllreduceはAllreduceによる足し合わせを2ノードずつ行うとして、下記(3E)式で表される。
T
MPI_Allreduce=(α34×log
2N
Node+β34)×N
Param
・・・(3E)
ここで、α34,β34は学習システムに応じた固定パラメータであり、パラメータ算出部32によって予め算出されている。
【0110】
[T
UpdateMomentum]
T
UpdateMomentumはN
Nodeに反比例した長さのベクトル計算を行うため、下記(3F)式で表される。
T
UpdateMomentum=α35×N
Param/N
Node ・・・(3F)
ここで、α35は学習システムに応じた固定パラメータであり、パラメータ算出部32によって予め算出されている。
【0111】
[T
LockARResult_AR]
T
LockARResult_ARはT
LockGradient_ARと同様に下記(3G)式で表される。
T
LockARResult_AR=N
GPU×T
FetchARResult2/(2×T
GPU)
・・・(3G)
【0112】
[T
UpdateARResult]
T
UpdateARResultは長さN
Paramの配列のメモリコピーであるから、下記(3E)式で表される。
T
UpdateARResult=α36×N
Param ・・・(3E)
ここで、α36は学習システムに応じた固定パラメータであり、パラメータ算出部32によって予め算出されている。
【0113】
以上の数式の各α,β(添え字は省略)が確定していれば、上記(2),(2A)〜(2H),(3),(3A)〜(3E)式を連立させることでT
GPU,T
Allreduceが算出される。例えば、T
GPU,T
Allreduceに任意の初期値を入れて反復的に更新し、更新差分が十分に小さくなるまで更新を続けることで、T
GPU,T
Allreduceが得られる。あるいは、別の数値解法を用いてT
GPU,T
Allreduceを得てもよい。
【0114】
続いて、パラメータ算出部32によるα,βの算出法を説明する。添え字に関わらずα,βの算出法は共通するので、上記(2E6)式におけるTc2f用のα16,β16を代表して説明する。
【0115】
上記(2E6)式において、T
c2fはN
Subbatchについての一次関数で与えられる。そこで、少なくとも2通りのN
Subbatchを指定して所与の学習システムによりc2fを実行し、その所要時間T
c2fを計測する。そして、線形回帰を行うことで、α16,β16を算出できる。なお、β16は理想的には0であるが、関数の呼び出しなどのオーバーヘッドがあることも考慮して設定される定数である。
【0116】
他のα,βについてもN
Subbatchについての一次関数となっているから、同様にして算出可能である。
【0117】
α,βは学習システム(計算機クラスタ)の性能を表現しており、学習システムが変わらなければ一定値である。よって、同じ学習システムを使い続ける限り、予めα,βを算出しておけばよく、平均ミニバッチサイズN
Batchや学習時間T
Epochを算出する度に算出する必要はない。逆に言うと、学習システムが変わった場合には、α,βを算出し直す必要がある。
【0118】
以上のようにして、予めパラメータ算出部32によって算出されたα,βから、T
GPU・T
Allreduce算出部42(
図6)はT
GPU,T
Allreduceを算出できる。そして、T
Epoch算出部43およびN
Batch算出部44は、それぞれ上記(6),(5)式に基づいて、学習時間T
Epochおよび平均ミニバッチサイズN
Batchを算出できる。
【0119】
このように、本実施形態では、予測モデル式に所与のCNN構造を入力することで、平均ミニバッチサイズN
Batchや学習時間TEpochを予測できる。そのため、適正なミニバッチサイズや学習時間が得られる学習システム、より具体的には、ノード台数やサブバッチ数を設計できる。
【0120】
上述した実施形態は、本発明が属する技術分野における通常の知識を有する者が本発明を実施できることを目的として記載されたものである。上記実施形態の種々の変形例は、当業者であれば当然になしうることであり、本発明の技術的思想は他の実施形態にも適用しうることである。したがって、本発明は、記載された実施形態に限定されることはなく、特許請求の範囲によって定義される技術的思想に従った最も広い範囲とすべきである。