特許第6635265号(P6635265)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社デンソーアイティーラボラトリの特許一覧 ▶ 国立大学法人東京工業大学の特許一覧 ▶ 株式会社デンソーの特許一覧

特許6635265予測装置、予測方法および予測プログラム
<>
  • 特許6635265-予測装置、予測方法および予測プログラム 図000016
  • 特許6635265-予測装置、予測方法および予測プログラム 図000017
  • 特許6635265-予測装置、予測方法および予測プログラム 図000018
  • 特許6635265-予測装置、予測方法および予測プログラム 図000019
  • 特許6635265-予測装置、予測方法および予測プログラム 図000020
  • 特許6635265-予測装置、予測方法および予測プログラム 図000021
  • 特許6635265-予測装置、予測方法および予測プログラム 図000022
  • 特許6635265-予測装置、予測方法および予測プログラム 図000023
  • 特許6635265-予測装置、予測方法および予測プログラム 図000024
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6635265
(24)【登録日】2019年12月27日
(45)【発行日】2020年1月22日
(54)【発明の名称】予測装置、予測方法および予測プログラム
(51)【国際特許分類】
   G06N 3/08 20060101AFI20200109BHJP
【FI】
   G06N3/08
【請求項の数】13
【全頁数】22
(21)【出願番号】特願2016-150221(P2016-150221)
(22)【出願日】2016年7月29日
(65)【公開番号】特開2018-18422(P2018-18422A)
(43)【公開日】2018年2月1日
【審査請求日】2018年11月9日
【新規性喪失の例外の表示】特許法第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日と推定される。ウェブサイトは次の学会で発表されたポスターである。
(73)【特許権者】
【識別番号】502324066
【氏名又は名称】株式会社デンソーアイティーラボラトリ
(73)【特許権者】
【識別番号】304021417
【氏名又は名称】国立大学法人東京工業大学
(73)【特許権者】
【識別番号】000004260
【氏名又は名称】株式会社デンソー
(74)【代理人】
【識別番号】230104019
【弁護士】
【氏名又は名称】大野 聖二
(74)【代理人】
【識別番号】100106840
【弁理士】
【氏名又は名称】森田 耕司
(74)【代理人】
【識別番号】100131451
【弁理士】
【氏名又は名称】津田 理
(74)【代理人】
【識別番号】100167933
【弁理士】
【氏名又は名称】松野 知紘
(74)【代理人】
【識別番号】100174137
【弁理士】
【氏名又は名称】酒谷 誠一
(72)【発明者】
【氏名】大山 洋介
(72)【発明者】
【氏名】佐藤 育郎
(72)【発明者】
【氏名】西村 裕紀
(72)【発明者】
【氏名】野村 哲弘
(72)【発明者】
【氏名】松岡 聡
【審査官】 坂庭 剛史
(56)【参考文献】
【文献】 米国特許出願公開第2014/0142929(US,A1)
【文献】 特開平06−060050(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/08
(57)【特許請求の範囲】
【請求項1】
それぞれがCPUおよびGPUを有する複数のノードから構成され、前記CPUが前記GPUを用いて複数の学習データに基づく畳み込みニューラルネットワーク用の重み更新量を算出するとともに、ノード間で前記重み更新量を通信して重みを更新する学習システムにおける学習時間および/または1回の重み更新に用いられる平均学習データ数である平均ミニバッチサイズを予測する予測装置であって、
畳み込みニューラルネットワーク構造を示すパラメータと、ノード台数と、各GPUに一括処理させる学習データ数であるサブバッチ数と、に基づいて、前記学習時間および/または前記平均ミニバッチサイズを予測する予測部を備える予測装置。
【請求項2】
前記予測部は、下記(1)式に基づいて前記学習時間を予測する、請求項1に記載の予測装置。
Epoch=(NFile×TGPU)/(NNode×NGPU×NSubbatch) ・・・(1)
ここで、TEpochは前記学習時間、NNodeは前記ノード台数、NSubbatchは前記サブバッチ数、NFileは総学習データ数、NGPUは各ノードが有するGPU数、TGPUは各GPUが1回の重み更新量を算出するのに要する時間。
【請求項3】
前記予測部は、下記(2)式に基づいて平均ミニバッチサイズを予測する、請求項1または2に記載の予測装置。
Batch=(NNode×NGPU×NSubbatch×TAllreduce)/TGPU ・・・(2)
ここで、NBatchは前記平均ミニバッチサイズ、NNodeは前記ノード台数、NSubbatchは前記サブバッチ数、NGPUは各ノードが有するGPU数、TGPUは各GPUが1回の重み更新量を算出するのに要する時間、TAllreduceは前記CPUが通信を行って重みを更新するのに要する時間。
【請求項4】
前記TAllreduceは、前記CPUが通信を行って重みを更新するのに必要な各処理に要する時間の総和である、請求項3に記載の予測装置。
【請求項5】
前記TGPUは、前記CPUが重み更新量を算出するのに必要な各処理に要する時間の総和である、請求項2乃至4のいずれかに記載の予測装置。
【請求項6】
前記各処理に要する時間は、前記サブバッチ数についての一次関数で与えられる、請求項4または5に記載の予測装置。
【請求項7】
複数の前記サブバッチ数について、前記各処理に要する時間を計測してフィッティングを行うことにより、前記一次関数を定める定数を算出するパラメータ算出部を備える、請求項6に記載の予測装置。
【請求項8】
前記予測部によって予測された前記平均ミニバッチサイズが予め定めた範囲に収まるか否かを判定する判定部を備える請求項1乃至7のいずれかに記載の予測装置。
【請求項9】
前記判定部は、前記平均ミニバッチサイズが予め定めた範囲に収まる前記ノード台数および前記サブバッチ数の組のうち、前記学習時間が最小となる組を特定する、請求項8に記載の予測装置。
【請求項10】
前記判定部は、前記平均ミニバッチサイズが予め定めた範囲に収まる前記ノード台数および前記サブバッチ数の組のうち、前記ノード台数が最小となる組を特定する、請求項8に記載の予測装置。
【請求項11】
前記判定部は、前記平均ミニバッチサイズが予め定めた範囲に収まる前記ノード台数および前記サブバッチ数の組のうち、前記ノード台数と前記学習時間との積が最小となる組を特定する、請求項8に記載の予測装置。
【請求項12】
それぞれがCPUおよびGPUを有する複数のノードから構成され、前記CPUが前記GPUを用いて複数の学習データに基づく畳み込みニューラルネットワーク用の重み更新量を算出するとともに、ノード間で前記重み更新量を通信して重みを更新する学習システムにおける学習時間および/または1回の重み更新に用いられる平均学習データ数である平均ミニバッチサイズを予測する予測方法であって、
畳み込みニューラルネットワーク構造を示すパラメータと、ノード台数と、各GPUに一括処理させる学習データ数であるサブバッチ数と、に基づいて、前記学習時間および/または前記平均ミニバッチサイズを予測する予測方法。
【請求項13】
それぞれがCPUおよびGPUを有する複数のノードから構成され、前記CPUが前記GPUを用いて複数の学習データに基づく畳み込みニューラルネットワーク用の重み更新量を算出するとともに、ノード間で前記重み更新量を通信して重みを更新する学習システムにおける学習時間および/または1回の重み更新に用いられる平均学習データ数である平均ミニバッチサイズを予測する予測プログラムであって、コンピュータを、
畳み込みニューラルネットワーク構造を示すパラメータと、ノード台数と、各GPUに一括処理させる学習データ数であるサブバッチ数と、に基づいて、前記学習時間および/または前記平均ミニバッチサイズを予測する予測手段として機能させる予測プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、畳み込みニューラルネットワークシステムの重みを更新する学習システムにおける学習時間および/または平均ミニバッチサイズを予測する予測装置、予測方法および予測プログラムに関する。
【背景技術】
【0002】
画像認識の分野において、一般物体認識と呼ばれる問題がある。これは、画像の中に存在する鳥や車といった物体の種別(クラス)を推定する問題である。近年、一般物体認識問題の認識性能の改善が目覚ましい。これは、とりわけ層数の多い、畳み込みニューラルネットワーク(例えば、非特許文献1)によるところが大きい。
【0003】
画像認識の分野では、過去様々な認識アルゴリズムが提案されてきたが、学習データが膨大になるにつれ、畳み込みニューラルネットワークが他のアルゴリズムの認識性能を上回る傾向となっている。畳み込みニューラルネットワークは、モデルの表現能力が高い反面、学習データの特徴に過度に特化してしまう「過学習」と呼ばれる問題があることが従来指摘されてきた。しかしながら、近年の学習データ量が、過学習の問題の回避を可能にするレベルにまで増大しつつあることが背景にある。
【0004】
畳み込みニューラルネットワークは認識性能において大きな利点があるが、学習時間が長大であるという弱点を併せ持っている。学習とは、ニューラルネットワークにおける重みやバイアスといったパラメータを最適化する処理である。ソーシャルネットワークに関するデータや、自動運転に関係するデータなどは、今後とも増加の一途をたどるものの一例であるが、いつか学習時間が膨大になりすぎて、実質的な時間内に学習が終了しない可能性も充分に考えられる。場合によっては、学習に年単位の時間を要することも考えられる。こうなった場合、製品化は現実的ではなく、認識性能で劣る畳み込みニューラルネットワーク以外のアルゴリズムの使用を余儀なくされることにもなり兼ねない。すなわち、ニューラルネットワーク学習の抜本的高速化は、産業応用にとって極めて重要な課題である。
【0005】
上記の課題に対応すべく、CPUやGPUを備えた複数の計算機(ノードとも呼ばれる)を通信路で接続した計算機クラスタを利用して学習システムを構築し、学習を分散処理させることで、学習時間を大幅に短縮する検討が試みられている(例えば、非特許文献1〜5)。適切な学習システムを構築するためには、学習システムの構成と学習時間との関係を予測できるのが望ましい。
【0006】
また、学習手法の1つとして勾配法が知られているが、その際に全学習データを用いるのではなく、一部の学習データのみを用いるミニバッチ確率的勾配法(以下、単にミニバッチ学習という)が近年では広く使われている。ミニバッチとは、1回の重み更新に使用される学習データの集合を指し、ミニバッチサイズとはミニバッチを構成するデータの個数を指す。
【0007】
ミニバッチサイズには適正な範囲があり、これを逸脱すると、学習の収束が遅くなることや、認識精度が悪くなることなどの問題が生じる可能性が高まることが知られている(例えば、非特許文献2、3、5)。そのため、計算機クラスタを用いてミニバッチ学習を行う際には、学習システムの構成と、ミニバッチサイズとの関係を予測できるのが望ましい。
【先行技術文献】
【非特許文献】
【0008】
【非特許文献1】Ren Wu, Shengen Yan, Yi Shan, Qingqing Dang, and Gang Sun, "Deep Image: Scaling up Image Recognition", arXiv:1501.02876, 2015.
【非特許文献2】D. Amodei, et. al, "Deep Speech 2: End-to-End Speech Recognition in English and Mandarin", arXiv:1512.02595, 2015.
【非特許文献3】S. Zhang, C. Zhang, Z. You, R. Zheng, and B. Xu, "Asynchronous stochastic gradient descent for dnn training", Acoustics, Speech and Signal Processing (ICASSP), 2013 IEEE International Conference on, pages 6660.6663, May 2013.
【非特許文献4】Forrest N. Iandola, Khalid Ashraf, Mattthew W. Moskewicz, Kurt Keutzer, "FireCaffe: near-linear acceleration of deep neural network training on compute clusters", arXiv:1511.00175, 2015.
【非特許文献5】S. Gupta, W. Zhang, and J. Milthorpe, "Model Accuracy and Runtime Tradeo in Distributed Deep Learning", arXiv:1509.04210, 2015.
【発明の概要】
【発明が解決しようとする課題】
【0009】
本発明はこのような問題点に鑑みてなされたものであり、本発明の課題は、複数のノードを用いて畳み込みニューラルネットワークシステム用の重みを学習する学習システムの学習時間および/またはミニバッチサイズを予測する予測装置、予測方法および予測プログラムを提供することである。
【課題を解決するための手段】
【0010】
本発明の一態様によれば、それぞれがCPUおよびGPUを有する複数のノードから構成され、前記CPUが前記GPUを用いて複数の学習データに基づく畳み込みニューラルネットワーク用の重み更新量を算出するとともに、ノード間で前記重み更新量を通信して重みを更新する学習システムにおける学習時間および/または1回の重み更新に用いられる平均学習データ数である平均ミニバッチサイズを予測する予測装置であって、畳み込みニューラルネットワーク構造を示すパラメータと、ノード台数と、各GPUに一括処理させる学習データ数であるサブバッチ数と、に基づいて、前記学習時間および/または前記平均ミニバッチサイズを予測する予測部を備える予測装置が提供される。
【0011】
前記予測部は、下記(1)式に基づいて前記学習時間を予測してもよい。
Epoch=(NFile×TGPU)/(NNode×NGPU×NSubbatch) ・・・(1)
ここで、TEpochは前記学習時間、NNodeは前記ノード台数、NSubbatchは前記サブバッチ数、NFileは総学習データ数、NGPUは各ノードが有するGPU数、TGPUは各GPUが1回の重み更新量を算出するのに要する時間である。
【0012】
前記予測部は、下記(2)式に基づいて平均ミニバッチサイズを予測してもよい。
Batch=(NNode×NGPU×NSubbatch×TAllreduce)/TGPU ・・・(2)
ここで、NBatchは前記平均ミニバッチサイズ、NNodeは前記ノード台数、NSubbatchは前記サブバッチ数、NGPUは各ノードが有するGPU数、TGPUは各GPUが1回の重み更新量を算出するのに要する時間、TAllreduceは前記CPUが通信を行って重みを更新するのに要する時間である。
【0013】
前記TAllreduceは、前記CPUが通信を行って重みを更新するのに必要な各処理に要する時間の総和であってもよい。
前記TGPUは、前記CPUが重み更新量を算出するのに必要な各処理に要する時間の総和であってもよい。
【0014】
前記各処理に要する時間は、前記サブバッチ数についての一次関数で与えられてもよい。
この場合、複数の前記サブバッチ数について、前記各処理に要する時間を計測してフィッティングを行うことにより、前記一次関数を定める定数を算出するパラメータ算出部を備えるのが望ましい。
【0015】
前記予測部によって予測された前記平均ミニバッチサイズが予め定めた範囲に収まるか否かを判定する判定部を備えてもよい。
この場合、前記判定部は、前記平均ミニバッチサイズが予め定めた範囲に収まる前記ノード台数および前記サブバッチ数の組のうち、前記学習時間が最小となる組を特定してもよい。
あるいは、前記判定部は、前記平均ミニバッチサイズが予め定めた範囲に収まる前記ノード台数および前記サブバッチ数の組のうち、前記ノード台数が最小となる組を特定してもよい。
また、前記判定部は、前記平均ミニバッチサイズが予め定めた範囲に収まる前記ノード台数および前記サブバッチ数の組のうち、前記ノード台数と前記学習時間との積が最小となる組を特定してもよい。
【0016】
本発明の別の態様によれば、それぞれがCPUおよびGPUを有する複数のノードから構成され、前記CPUが前記GPUを用いて複数の学習データに基づく畳み込みニューラルネットワーク用の重み更新量を算出するとともに、ノード間で前記重み更新量を通信して重みを更新する学習システムにおける学習時間および/または1回の重み更新に用いられる平均学習データ数である平均ミニバッチサイズを予測する予測方法であって、畳み込みニューラルネットワーク構造を示すパラメータと、ノード台数と、各GPUに一括処理させる学習データ数であるサブバッチ数と、に基づいて、前記学習時間および/または前記平均ミニバッチサイズを予測する予測方法が提供される。
【0017】
本発明の別の態様によれば、それぞれがCPUおよびGPUを有する複数のノードから構成され、前記CPUが前記GPUを用いて複数の学習データに基づく畳み込みニューラルネットワーク用の重み更新量を算出するとともに、ノード間で前記重み更新量を通信して重みを更新する学習システムにおける学習時間および/または1回の重み更新に用いられる平均学習データ数である平均ミニバッチサイズを予測する予測プログラムであって、コンピュータを、畳み込みニューラルネットワーク構造を示すパラメータと、ノード台数と、各GPUに一括処理させる学習データ数であるサブバッチ数と、に基づいて、前記学習時間および/または前記平均ミニバッチサイズを予測する予測手段として機能させる予測プログラムが提供される。
【発明の効果】
【0018】
学習システムの学習時間および/またはミニバッチサイズを予測できる。
【図面の簡単な説明】
【0019】
図1】畳み込みニューラルネットワークの構造の一例を模式的に示す図。
図2】ミニバッチ学習を行う学習システムのハードウェア構成の一例を示すブロック図。
図3図2の学習システムにおける学習スレッドおよびARスレッドの処理動作の詳細を例示するフロー図。
図4A】学習スレッドの詳細アルゴリズムを示す擬似プログラム。
図4B】ARスレッドの詳細アルゴリズムを示す擬似プログラム。
図5】学習スレッドおよびARスレッドの処理タイミングを模式的に説明する図。
図6】予測装置の概略構成を示すブロック図。
図7】予測部31の構成例を示すブロック図。
図8】CNNの詳細アルゴリズムを示す擬似プログラム。
【発明を実施するための形態】
【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は、ミニバッチ学習を行う学習システムのハードウェア構成の一例を示すブロック図である。学習システムはインターコネクトによって接続されたNNode個のノード1から構成される。そして、任意のノード1間でデータ通信が可能である。
【0031】
ノード1はハードウェアとしての単位であり、例えば1台の計算機である。また、ノード1は複数のプロセス(プログラム)を並列に処理できる。具体的には、ノード1は、1つのCPU(Central Processing Unit)11と、NGPU個(同図では2つ)のGPU(Graphics Processing Unit)12と、SSD(Solid State Drive)などのストレージ13とを有する。なお、1つのノード1が有するGPU12の個数NGPUは全ノード1で共通とする。
【0032】
CPU11は、ARスレッドと、NGPU個の学習スレッドを実行する。学習スレッドは、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(言い換えると、各学習スレッド)に一括処理させる学習データの数をサブバッチ数NSubbatchとする。全学習データは学習開始前に各ノード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の排他制御を獲得するまで待機する。なお、本処理に要する時間をTLockARResult_GPUと表記し、他の処理も同様とする。
【0040】
[S2:FetchARResult]
前回のFetchARResultの後に、バッファARResultBufが更新されている場合、パラメータWeightsにバッファARResultBufの値をコピーする。
【0041】
[S3:LoadImage]
ストレージ13からサブバッチ数NSubbatch個の学習データを読み込む。
【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の算出)を行うのに要する時間TGPUは上記S1〜S8に示す各処理に要する時間の総和であり、下記(2)式で表される。
GPU
LockARResult_GPU
+TFetchARResult
LoadImage
DeformImage
CNN
ComputeUpdateVal
LockGradient_GPU
UpdateGradient ・・・(2)
【0048】
一方、ARスレッドは次の各処理を学習スレッドとは非同期で繰り返し行う(図3および図4B参照)。
【0049】
[S11:LockGradient_AR]
バッファGradBufの排他制御を獲得するまで待機する。
【0050】
[S12:SumGradient]
学習スレッドによって格納されたバッファGradBufが更新されている場合、その総和をパラメータSendBufに代入する。
【0051】
[S13:UpdateOldWeights]
MPIランクをn(n=0〜NNode−1)としたとき、バッファARResultBufに格納された最新の値の{NParam×n/NNode}〜{NParam×(n+1)/NNode}番目の要素をバッファOldWeightsにコピーする。ここで、NParamは学習すべき全重み数である。
【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回行うのに要する時間TAllreduceは上記S11〜S18の各時間の総和であり、下記(3)式で表される。
Allreduce
LockGradient_AR
SumGradient
UpdateOldWeights
AddMomentum
MPI_Allreduce
UpdateMomentum
LockARResult_AR
UpdateARResult ・・・(3)
【0058】
図5は、学習スレッドおよびARスレッドの処理タイミングを模式的に説明する図である。説明を簡略化するために、ノードが2つ(NNode=2)あり、そのそれぞれが3つのGPUを有する(NGPU=3)こととしている。
【0059】
各四角が各学習スレッドにおいて行われる1回の学習処理を示しており、図3および図4AのステップS1〜S8の処理に対応している。各学習処理に要する時間は上記(2)式に示すTGPUである。一方、一点鎖線の枠がARスレッドにおいて行われる1回の通信処理を示しており、図3および図4BのステップS11〜S18の処理に対応している。各通信処理に要する時間は上記(3)式に示すTAllreduceである。
【0060】
図5では、TAllreduce:TGPU=3:1としている。そのため、例えば、符号51で示す通信処理では、符号52,53で示す2つの学習処理によって得られた学習結果を用いて重みが更新される。他の通信処理でも、いずれか2つの学習スレッドによって得られた学習結果が用いられる。
【0061】
より一般的には、GPU12の総数がNNode×NGPU個であることを考慮し、1回の通信処理では下記(4)式に示す数の学習スレッドによって得られた学習結果が用いられる。
Node×NGPU×TAllreduce/TGPU ・・・(4)
【0062】
したがって、各学習スレッドに一括処理させる学習データ数すなわちサブバッチ数をNSubbatchとすると、1回の重み更新に用いられる学習データ数すなわち平均ミニバッチサイズNBatchは下記(5)式で表される。
Batch=(NNode×NGPU×NSubbatch×TAllreduce)/TGPU ・・・(5)
【0063】
また、総数NFileの全学習データを処理するのに要する学習時間TEpochは、ミニバッチサイズNBatchの学習データを処理するのに要する時間がTAllreduceであることから、下記(6)式で表される。
Epoch=NFile×TAllreduce/NBatch
=(NFile×TGPU)/(NNode×NGPU×NSubbatch) ・・・(6)
【0064】
なお、学習時間TEpochは「エポック時間」で表される。エポックとは、学習に使用したデータ量に関する単位である。1エポックとは総数NFileの全学習データ1回分の学習処理を行うことを意味し、nエポックとは全学習データn回分の学習処理を行うことを意味する。そして、「1エポック時間」を1エポックの学習処理に必要な時間と定義する。なお、通常は、目的関数の収束までに、多数のエポック、例えば100エポック程度を要する。
【0065】
以上を踏まえ、本実施形態では、上記(5),(6)式に基づき、ノード台数NNode、サブバッチ数NSubbatchから学習時間TEpochおよび/または平均ミニバッチサイズNBatchを予測するものとする。
【0066】
図6は、予測装置の概略構成を示すブロック図である。この予測装置は、ハードウェアで構成されてもよいし、コンピュータが所定のプログラムを実行することによって実現されてもよい。
【0067】
予測装置は予測部31を備えている。予測部31には、NN構造を示すパラメータ、ノード台数NNode、および、各GPUに一括処理させる学習データ数すなわちサブバッチ数NSubbatchが入力変数として入力される。
【0068】
そして、予測部31は、予測モデル式を用い、入力変数に基づいて学習時間TEpochおよび平均ミニバッチサイズNBatchを予測し、出力変数として出力する。なお、予測部31は学習時間TEpochおよび平均ミニバッチサイズNBatchの一方を予測してもよいが、以下では両方を予測するものとする。
【0069】
予測装置はパラメータ算出部32を備えていてもよい。パラメータ算出部32は、学習システムの構成から、上記のTGPUおよびTAllreduceを算出に必要なパラメータα,βを算出する。その詳細はTGPUおよびTAllreduceの算出と合わせて後述する。
【0070】
さらに、予測装置は判定部33を備えていてもよい。判定部33は、算出された平均ミニバッチサイズNBatchが適切か否か、より具体的には、平均ミニバッチサイズNBatchが予め定められた適切な範囲に収まっているか否かを判定する。
【0071】
また、判定部33は、与えられたNN構造に対して、平均ミニバッチサイズNBatchが適切となるノード台数NNodeおよびサブバッチ数NSubbatchの適切な組(望ましくはすべての組)を特定してもよい。
【0072】
そのような適切な組の中で、判定部33は学習時間TEpochが最適(最小)となる組を特定してもよい。これにより、最速で適切な重みを学習できる。
【0073】
また、そのような適切な組の中で、判定部33はノード台数NNodeが最小となる組を特定してもよい。これにより、最小のノード台数で適切な重みを学習できる。
【0074】
あるいは、そのような適切な組の中で、判定部33はノード時間(ノード台数NNodeと学習時間TEpochとの積)が最小となる組を特定してもよい。これにより、ノード時間すなわちリソース占有時間を抑えて、適切な重みを学習できる。
【0075】
図7は、予測部31の構成例を示すブロック図である。予測部31は、NParam算出部41と、TGPU・TAllreduce算出部42と、TEpoch算出部43と、NBatch算出部44とを有する。TEpoch算出部43は上記(6)式に基づいて学習時間TEpochを算出する。NBatch算出部44は上記(5)式に基づいて平均ミニバッチサイズNBatchを算出する。以下、NParam算出部41およびTGPU・TAllreduce算出部42について主に説明する。
【0076】
Allreduce,TGPUは学習すべき総重み数NParamに依存する。そこで、NParam算出部41は総重み数NParamを算出する。総重み数NParamはNN構造によって定まり、例えば以下の(7)式に基づいて算出できる。
【数1】
ここで、Lcは畳み込みレイヤ数、mlはl層目のマップ数(但しm0は入力層のマップ数)、cは畳み込みフィルタサイズ、Lは総レイヤ数、xlはl層目のマップサイズであり(図1参照)、これらが予測部31にNN構造を示すパラメータとして入力される。言い換えると、NN構造を示すパラメータとは、総重み数NParamを定めるためのパラメータである。
【0077】
GPU・TAllreduce算出部42は、総重み数NParamおよび上記(2),(3)式に基づいてTGPUおよびTAllreduceを算出する。
まずは、上記(2)式に基づくTGPUの算出について説明する。
【0078】
[TLockARResult_GPU
LockARResult_GPUは各学習スレッドのロック時間の総和であり、下記(2A)式で表される。
【数2】
なお、TFetchARResultは次の(2B)式で表され、TUpdateARResultは後述する(3E)式で表される。
【0079】
[TFetchARResult
FetchARResultは前回のFetchARResultの後に、バッファARResultBufが更新されているか否かに依存する。更新されている確率は、TAllreduce>TGPUであればTGPU/TAllreduceであり、TAllreduce<TGPUであれば1と仮定できる。よって、TFetchARResultは下記(2B)式で表される。
FetchARResult = α1×NParam×min(TGPU/TAllreduce,1)
・・・(2B)
ここで、α1は学習システムに応じた固定パラメータであり、パラメータ算出部32によって予め算出されている。
【0080】
[TLoadImage
LoadImageはストレージ13からサブバッチ数NSubbatch個の学習データを読み込むのに要する時間であり、下記(2C)式で表される。
LoadImage = α2×NSubbatch+β2 ・・・(2C)
ここで、α2,β2は学習システムに応じた固定パラメータであり、パラメータ算出部32によって予め算出されている。
【0081】
[TDeformImage
DeformImageはサブバッチ数NSubbatch個の学習データに変形を加えるのに要する時間であり、下記(2D)式で表される。
DeformImage = α3×NSubbatch+β3 ・・・(2D)
ここで、α3,β3は学習システムに応じた固定パラメータであり、パラメータ算出部32によって予め算出されている。
【0082】
[TCNN
CNNは畳み込み演算および逆拡散計算、具体的には図8に示すアルゴリズムを実行するのに要する時間である。
【0083】
[S21:im2col]
画像を列ベクトルに変換する。l層目におけるこの処理に要する時間は、上記l層目のマップサイズxlおよびマップ数mlならびに畳み込みフィルタサイズcを用いて下記(2E1’)式で表される。
im2col_l=α11l×xl×c2×ml-1×NSubbatch+β11l
・・・(2E1’)
ここで、α11l,β11lは学習システムに応じた固定パラメータであり、パラメータ算出部32によって予め算出されている。
そして、本処理に要する合計時間は下記(2E1)式で表される。
【数3】
【0084】
[S22:convolution]
列ベクトルに対して畳み込みを行う。l層目におけるこの処理に要する時間は下記(2E2’)式で表される。
convolution_l=α12l×xl2×NSubbatch×ml×c2×ml-1+β12l
・・・(2E2’)
ここで、α12l,β12lは学習システムに応じた固定パラメータであり、パラメータ算出部32によって予め算出されている。
そして、本処理に要する合計時間は下記(2E2)式で表される。
【数4】
【0085】
[S23:fc]
全結合処理を行う。より詳しくは、特徴マップの全要素を使った線形結合と活性化処理であり、全結合層が複数層連続する場合には、線形結合と活性化処理とが繰り返される。l層目におけるこの処理に要する時間は下記(2E3’)式で表される。
fc_l=α13l×NSubbatch×ml×xl-12×ml-1+β13l ・・・(2E3’)
ここで、α13l,β13lは学習システムに応じた固定パラメータであり、パラメータ算出部32によって予め算出されている。
そして、本処理に要する合計時間は下記(2E3)式で表される。
【数5】
【0086】
[S24:activation]
バイアスの加算および活性化処理であり、l層目におけるこの処理に要する時間は下記(2E4’)式で表される。
activation_l=α14l×xl2×ml×NSubbatch+β14l ・・・(2E4’)
ここで、α14l,β14lは学習システムに応じた固定パラメータであり、パラメータ算出部32によって予め算出されている。
そして、本処理に要する合計時間は下記(2E4)式で表される。
【数6】
【0087】
[S25:pooling]
プーリング処理であり、l層目におけるこの処理に要する時間は、l層目のプーリンググリッドサイズplを用いて下記(2E5’)式で表される。
pooling_l=α15l×pl2×xl2×ml×NSubbatch+β15l
・・・(2E5’)
ここで、α15l,β15lは学習システムに応じた固定パラメータであり、パラメータ算出部32によって予め算出されている。
そして、本処理に要する合計時間は下記(2E5)式で表される。
【数7】
【0088】
[S26:c2f]
列ベクトル画像に再変換する。この処理に要する時間は下記(2E6)式で表される。
c2f=α16×xl2×ml×NSubbatch+β16 ・・・(2E6)
ここで、α16,β16は学習システムに応じた固定パラメータであり、パラメータ算出部32によって予め算出されている。
【0089】
[S27:bias]
バイアスの加算であり、この処理に要する時間は下記(2E7)式で表される。
bias=α17×mL×NSubbatch+β17 ・・・(2E7)
ここで、α17,β17は学習システムに応じた固定パラメータであり、パラメータ算出部32によって予め算出されている。
【0090】
[S28:softmax]
ソフトマックス処理であり、この処理に要する時間は下記(2E8)式で表される。
softmax=α18×mL×NSubbatch ・・・(2E8)
ここで、α18は学習システムに応じた固定パラメータであり、パラメータ算出部32によって予め算出されている。
【0091】
[S29:softmax_B]
コスト関数の、ソフトマックス関数の入力に対する微分計算であり、この処理に要する時間は下記(2E9)式で表される。
softmax_B=α19×mL×NSubbatch ・・・(2E9)
ここで、α19は学習システムに応じた固定パラメータであり、パラメータ算出部32によって予め算出されている。
【0092】
[S30:dedx_fc]
将来のベクトルに対する逆拡散処理であり、l層目におけるこの処理に要する時間は下記(2E10’)式で表される。
dedx_fc_l=α20l×NSubbatch×xl2×ml×ml+1+β20l
・・・(2E10’)
ここで、α20l,β20lは学習システムに応じた固定パラメータであり、パラメータ算出部32によって予め算出されている。
そして、本処理に要する合計時間は下記(2E10)式で表される。
【数8】
【0093】
[S31:dedx_conv]
将来のベクトルに対する逆拡散処理であり、l層目におけるこの処理に要する時間は下記(2E11’)式で表される。
dedx_conv=α21l×xl+12×NSubbatch×c2×ml×ml+1+β21l
・・・(2E11’)
ここで、α21l,β21lは学習システムに応じた固定パラメータであり、パラメータ算出部32によって予め算出されている。
そして、本処理に要する合計時間は下記(2E11)式で表される。
【数9】
【0094】
[S32:c2f_B]
c2fの逆演算であり、この処理に要する時間は下記(2E12)式で表される。
c2f_B=α22×xl2×ml×NSubbatch+β22 ・・・(2E12)
ここで、α22,β22は学習システムに応じた固定パラメータであり、パラメータ算出部32によって予め算出されている。
【0095】
[S33:im2col_B]
im2colの逆演算であり、l層目におけるこの処理に要する時間は下記(2E13’)式で表される。
im2col_B_l=α23l×xl2×c2×ml×NSubbtach+β23l
・・・(2E13’)
ここで、α23l,β23lは学習システムに応じた固定パラメータであり、パラメータ算出部32によって予め算出されている。
そして、本処理に要する合計時間は下記(2E13)式で表される。
【数10】
【0096】
[S34:pooling_B]
プーリングの逆演算であり、l層目におけるこの処理に要する時間は下記(2E14’)式で表される。
pooling_B=α24l×xl2×ml×NSubbatch+β24l ・・・(2E14’)
ここで、α24l,β24lは学習システムに応じた固定パラメータであり、パラメータ算出部32によって予め算出されている。
そして、本処理に要する合計時間は下記(2E14)式で表される。
【0097】
【数11】
【0098】
[S35:activation_B]
コスト関数の、活性化関数の入力に対する微分計算であり、l層目におけるこの処理に要する時間は下記(2E15’)式で表される。
activation_B=α25l×xl2×ml×NSubbatch+β25l
・・・(2E15’)
ここで、α25l,β25lは学習システムに応じた固定パラメータであり、パラメータ算出部32によって予め算出されている。
そして、本処理に要する合計時間は下記(2E15)式で表される。
【数12】
【0099】
[S36:dedw]
コスト関数の、重みに対する微分計算であり、l層目におけるこの処理に要する時間は下記(2E16’)式で表される。
dedw_l=α26l×cl-12×ml-1×ml×xl2×NSubbatch
+β26l ・・・(2E16’)
ここで、α26l,β26lは学習システムに応じた固定パラメータであり、パラメータ算出部32によって予め算出されている。
そして、本処理に要する合計時間は下記(2E16)式で表される。
【数13】
【0100】
[S37:dedb]
コスト関数の、バイアスに対する微分計算であり、l層目におけるこの処理に要する時間は下記(2E17’)式で表される。
dedb_l=α27l×ml×xl2×NSubbatch+β27l ・・・(2E17’)
ここで、α27l,β27lは学習システムに応じた固定パラメータであり、パラメータ算出部32によって予め算出されている。
そして、本処理に要する合計時間は下記(2E17)式で表される。
【数14】
【0101】
以上から、TNNは上記(2E1)〜(2E17)式の総和であり、下記(2E)式で表される。
CNN
im2col
convolution
fc
activation
pooling
c2f
bias
softmax
softmax_B
dedx_fc
dedx_conv
c2f_B
im2col_B
pooling_B
activation_B
dedw
dedb ・・・(2E)
【0102】
上記(2)式に戻って説明を続ける。
[TComputeUpdateVal
ComputeUpdateValは長さNParamのベクトル同士の演算に要する時間であり、下記(2F)式で表される。
ComputeUpdateVal=α4×NParam ・・・(2F)
ここで、α4は学習システムに応じた固定パラメータであり、パラメータ算出部32によって予め算出されている。
【0103】
[TLockGradient_GPU
LockGradient_GPUは下記(2G)式で表される。
LockGradient_GPU=(TSumGradient/NGPU2/(2×TAllreduce
・・・(2G)
なお、TSumGradientは後述する(3B)式で表される。
【0104】
[TUpdateGradient
UpdateGradientは主にホストメモリへの転送時間であり、下記(2H)式で表される。
UpdateGradient=α5×NParam ・・・(2H)
ここで、α5は学習システムに応じた固定パラメータであり、パラメータ算出部32によって予め算出されている。
続いて、上記(3)式に基づくTAllreduceの算出について説明する。
【0105】
[TLockGradient_AR
LockGradient_ARはTLockARResult_GPUと同様に下記(3A)式で表される。
LockTrResutl_A=NGPU×TUpdateGradient2/(2×TGPU
・・・(3A)
【0106】
[TSumGradient
SumGradientはTFetchARResultと同様に考えることができ、下記(3B)式で表される。
SumGradient=α31×NGPU×NParam×min(TAllreduce/GPU,1)
・・・(3B)
ここで、α31は学習システムに応じた固定パラメータであり、パラメータ算出部32によって予め算出されている。
【0107】
[TUpdateOldWeights
UpdateOldWeightsはNNodeに反比例した長さのベクトル計算を行うため、下記(3C)式で表される。
SumGradient=α32×NParam/NNode ・・・(3C)
ここで、α32は学習システムに応じた固定パラメータであり、パラメータ算出部32によって予め算出されている。
【0108】
[TAddMomentum
AddMomentumはNNodeに反比例した長さのベクトル計算を行うため、下記(3D)式で表される。
AddMomentum=α33×NParam/NNode ・・・(3D)
ここで、α33は学習システムに応じた固定パラメータであり、パラメータ算出部32によって予め算出されている。
【0109】
[TMPI_Allreduce
MPI_AllreduceはAllreduceによる足し合わせを2ノードずつ行うとして、下記(3E)式で表される。
MPI_Allreduce=(α34×log2Node+β34)×NParam
・・・(3E)
ここで、α34,β34は学習システムに応じた固定パラメータであり、パラメータ算出部32によって予め算出されている。
【0110】
[TUpdateMomentum
UpdateMomentumはNNodeに反比例した長さのベクトル計算を行うため、下記(3F)式で表される。
UpdateMomentum=α35×NParam/NNode ・・・(3F)
ここで、α35は学習システムに応じた固定パラメータであり、パラメータ算出部32によって予め算出されている。
【0111】
[TLockARResult_AR
LockARResult_ARはTLockGradient_ARと同様に下記(3G)式で表される。
LockARResult_AR=NGPU×TFetchARResult2/(2×TGPU
・・・(3G)
【0112】
[TUpdateARResult
UpdateARResultは長さNParamの配列のメモリコピーであるから、下記(3E)式で表される。
UpdateARResult=α36×NParam ・・・(3E)
ここで、α36は学習システムに応じた固定パラメータであり、パラメータ算出部32によって予め算出されている。
【0113】
以上の数式の各α,β(添え字は省略)が確定していれば、上記(2),(2A)〜(2H),(3),(3A)〜(3E)式を連立させることでTGPU,TAllreduceが算出される。例えば、TGPU,TAllreduceに任意の初期値を入れて反復的に更新し、更新差分が十分に小さくなるまで更新を続けることで、TGPU,TAllreduceが得られる。あるいは、別の数値解法を用いてTGPU,TAllreduceを得てもよい。
【0114】
続いて、パラメータ算出部32によるα,βの算出法を説明する。添え字に関わらずα,βの算出法は共通するので、上記(2E6)式におけるTc2f用のα16,β16を代表して説明する。
【0115】
上記(2E6)式において、Tc2fはNSubbatchについての一次関数で与えられる。そこで、少なくとも2通りのNSubbatchを指定して所与の学習システムによりc2fを実行し、その所要時間Tc2fを計測する。そして、線形回帰を行うことで、α16,β16を算出できる。なお、β16は理想的には0であるが、関数の呼び出しなどのオーバーヘッドがあることも考慮して設定される定数である。
【0116】
他のα,βについてもNSubbatchについての一次関数となっているから、同様にして算出可能である。
【0117】
α,βは学習システム(計算機クラスタ)の性能を表現しており、学習システムが変わらなければ一定値である。よって、同じ学習システムを使い続ける限り、予めα,βを算出しておけばよく、平均ミニバッチサイズNBatchや学習時間TEpochを算出する度に算出する必要はない。逆に言うと、学習システムが変わった場合には、α,βを算出し直す必要がある。
【0118】
以上のようにして、予めパラメータ算出部32によって算出されたα,βから、TGPU・TAllreduce算出部42(図6)はTGPU,TAllreduceを算出できる。そして、TEpoch算出部43およびNBatch算出部44は、それぞれ上記(6),(5)式に基づいて、学習時間TEpochおよび平均ミニバッチサイズNBatchを算出できる。
【0119】
このように、本実施形態では、予測モデル式に所与のCNN構造を入力することで、平均ミニバッチサイズNBatchや学習時間TEpochを予測できる。そのため、適正なミニバッチサイズや学習時間が得られる学習システム、より具体的には、ノード台数やサブバッチ数を設計できる。
【0120】
上述した実施形態は、本発明が属する技術分野における通常の知識を有する者が本発明を実施できることを目的として記載されたものである。上記実施形態の種々の変形例は、当業者であれば当然になしうることであり、本発明の技術的思想は他の実施形態にも適用しうることである。したがって、本発明は、記載された実施形態に限定されることはなく、特許請求の範囲によって定義される技術的思想に従った最も広い範囲とすべきである。
【符号の説明】
【0121】
1 ノード
11 CPU
12 GPU
13 ストレージ
21 畳み込み層
22 プーリング部
23 多層ニューラルネットワーク構造
31 予測部
32 パラメータ算出部
41 NParam算出部
42 TGPU・TAllreduce算出部
43 TEpoch算出部
44 NBatcch算出部
図1
図2
図3
図4A
図4B
図5
図6
図7
図8