IP Force 特許公報掲載プロジェクト 2022.1.31 β版

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

▶ 富士通株式会社の特許一覧

特開2024-116727分散学習プログラム、方法、及び装置
<>
  • 特開-分散学習プログラム、方法、及び装置 図1
  • 特開-分散学習プログラム、方法、及び装置 図2
  • 特開-分散学習プログラム、方法、及び装置 図3
  • 特開-分散学習プログラム、方法、及び装置 図4
  • 特開-分散学習プログラム、方法、及び装置 図5
  • 特開-分散学習プログラム、方法、及び装置 図6
  • 特開-分散学習プログラム、方法、及び装置 図7
  • 特開-分散学習プログラム、方法、及び装置 図8
  • 特開-分散学習プログラム、方法、及び装置 図9
  • 特開-分散学習プログラム、方法、及び装置 図10
  • 特開-分散学習プログラム、方法、及び装置 図11
  • 特開-分散学習プログラム、方法、及び装置 図12
  • 特開-分散学習プログラム、方法、及び装置 図13
  • 特開-分散学習プログラム、方法、及び装置 図14
  • 特開-分散学習プログラム、方法、及び装置 図15
  • 特開-分散学習プログラム、方法、及び装置 図16
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024116727
(43)【公開日】2024-08-28
(54)【発明の名称】分散学習プログラム、方法、及び装置
(51)【国際特許分類】
   G06N 3/098 20230101AFI20240821BHJP
   G06F 11/07 20060101ALI20240821BHJP
   G06F 11/20 20060101ALI20240821BHJP
   G06N 20/20 20190101ALI20240821BHJP
   G06N 3/045 20230101ALI20240821BHJP
   G06F 9/50 20060101ALI20240821BHJP
【FI】
G06N3/098
G06F11/07 196
G06F11/07 140A
G06F11/20 620
G06N20/20
G06N3/045
G06F9/50 150E
【審査請求】未請求
【請求項の数】8
【出願形態】OL
(21)【出願番号】P 2023022504
(22)【出願日】2023-02-16
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110001519
【氏名又は名称】弁理士法人太陽国際特許事務所
(72)【発明者】
【氏名】奥野 伸吾
【テーマコード(参考)】
5B034
5B042
【Fターム(参考)】
5B034BB17
5B042GA12
5B042KK04
5B042KK20
(57)【要約】
【課題】分散学習を実行するワーカに障害が発生した場合でも、機械学習モデルの学習時間の増大を抑制する。
【解決手段】複数のニューラルネットワークの推論結果を統合して最終的な推論結果を出力するマルチプルニューラルネットワークの複数のニューラルネットワークの各々の学習処理を複数のワーカで担当する分散学習において、検知部が、複数のワーカの各々に障害が発生したか否かを検知し、判定部が、複数のワーカのうち、1以上のワーカに障害の発生が検知された場合に、複数のワーカのうち、残存ワーカ群に分散学習を継続させるか否かを判定し、分散学習を継続させる場合、制御部が、離脱ワーカが担当する学習処理を、残存ワーカ群に分配して、分散学習を継続させる。
【選択図】図8
【特許請求の範囲】
【請求項1】
複数のニューラルネットワークの推論結果を統合して最終的な推論結果を出力するマルチプルニューラルネットワークの前記複数のニューラルネットワークの各々の学習処理を複数のワーカで担当する分散学習において、
前記複数のワーカの各々に障害が発生したか否かを検知し、
前記複数のワーカのうち、1以上の第1のワーカに障害の発生が検知された場合に、前記複数のワーカのうち、前記第1のワーカ以外の第2のワーカに前記分散学習を継続させるか否かを判定し、
前記分散学習を継続させる場合、前記第1のワーカが担当する学習処理を、前記第2のワーカに分配して、前記分散学習を継続させる
ことを含む処理をコンピュータに実行させるための分散学習プログラム。
【請求項2】
前記分散学習を継続させるか否かを判定する処理は、前記第1のワーカの代理となる前記複数のワーカ以外の第3のワーカの確保までに要する時間が閾値以上の場合に、前記分散学習を継続させると判定することを含む請求項1に記載の分散学習プログラム。
【請求項3】
前記閾値は、前記第2のワーカに前記分散学習を継続させた場合に増加する学習時間の推定値である請求項2に記載の分散学習プログラム。
【請求項4】
前記第2のワーカに分配する処理は、前記第1のワーカ当たりのバッチサイズを、前記第2のワーカの数で除算した値を、前記第2のワーカそれぞれに分配された、前記第1のワーカが担当する学習処理についてのバッチサイズとして設定することを含む請求項1~請求項3のいずれか1項に記載の分散学習プログラム。
【請求項5】
前記分散学習を継続させないと判定された場合に、前記第1のワーカの代理となる前記複数のワーカ以外の第3のワーカの確保を依頼し、
前記第3のワーカが確保された場合に、前記第2のワーカと、確保された前記第3のワーカとを用いて、前記分散学習を再開させる、
ことを含む処理を前記コンピュータに実行させるための請求項1~請求項3のいずれか1項に記載の分散学習プログラム。
【請求項6】
前記第2のワーカに前記分散学習を継続させると共に、前記第1のワーカの代理となる前記複数のワーカ以外の第3のワーカの確保を依頼し、
前記第3のワーカが確保された場合に、前記第2のワーカに分配していた前記第1のワーカの学習処理を、確保された前記第3のワーカに割り当て直して、前記分散学習を再開させる、
ことを含む処理を前記コンピュータに実行させるための請求項1~請求項3のいずれか1項に記載の分散学習プログラム。
【請求項7】
複数のニューラルネットワークの推論結果を統合して最終的な推論結果を出力するマルチプルニューラルネットワークの前記複数のニューラルネットワークの各々の学習処理を複数のワーカで担当する分散学習において、
前記複数のワーカの各々に障害が発生したか否かを検知し、
前記複数のワーカのうち、1以上の第1のワーカに障害の発生が検知された場合に、前記複数のワーカのうち、前記第1のワーカ以外の第2のワーカに前記分散学習を継続させるか否かを判定し、
前記分散学習を継続させる場合、前記第1のワーカが担当する学習処理を、前記第2のワーカに分配して、前記分散学習を継続させる
ことを含む処理をコンピュータが実行する分散学習方法。
【請求項8】
複数のニューラルネットワークの推論結果を統合して最終的な推論結果を出力するマルチプルニューラルネットワークの前記複数のニューラルネットワークの各々の学習処理を複数のワーカで担当する分散学習において、
前記複数のワーカの各々に障害が発生したか否かを検知する検知部と、
前記複数のワーカのうち、1以上の第1のワーカに障害の発生が検知された場合に、前記複数のワーカのうち、前記第1のワーカ以外の第2のワーカに前記分散学習を継続させるか否かを判定する判定部と、
前記分散学習を継続させる場合、前記第1のワーカが担当する学習処理を、前記第2のワーカに分配して、前記分散学習を継続させる制御部と、
を含む分散学習装置。
【発明の詳細な説明】
【技術分野】
【0001】
開示の技術は、分散学習プログラム、分散学習方法、及び分散学習装置に関する。
【背景技術】
【0002】
従来、ニューラルネットワーク等の機械学習モデルの機械学習を複数のノードで実行する分散学習に関する技術が提案されている。例えば、1つ以上のプロセッサによる、コンピューティング環境における非集中的な分散型深層学習の方法が提案されている。この方法は、複数のノードの中の各ノードについて近傍ノードのリストを生成して、重み管理動作に従った連続通信のための第1のスレッド及び各ノードの勾配の連続計算のための第2のスレッドを作成する。この方法は、1つ以上の機械学習モデルの非同期分散型訓練を実行するステップであって、1つ以上の変数が、第1のスレッドと第2のスレッドとの間で共有されるステップを含む。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特表2022-511716号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
複数のワーカで同じ機械学習モデルを使用し、データ並列により分散学習を行う場合、1つのワーカに障害が発生しても、学習精度の低下の恐れはあるものの、残りのワーカで学習を継続することは可能である。
【0005】
しかし、複数のニューラルネットワークの推論結果を統合して最終的な推論結果を出力するマルチプルニューラルネットワークの分散学習の場合、いずれかのワーカに障害が発生した場合には、学習が継続できないという問題がある。学習を継続するためには、障害により離脱したワーカに代わる新たなワーカを確保したうえで、分散学習を再開させる必要がある。すなわち、新たなワーカの準備が整うまでの待ち時間が発生するため、特に、新たなワーカの確保に時間を要する場合などには、学習時間の増大を招くことになる。
【0006】
一つの側面として、開示の技術は、分散学習を実行するワーカに障害が発生した場合でも、機械学習モデルの学習時間の増大を抑制することを目的とする。
【課題を解決するための手段】
【0007】
一つの態様として、開示の技術は、複数のニューラルネットワークの推論結果を統合して最終的な推論結果を出力するマルチプルニューラルネットワークの前記複数のニューラルネットワークの各々の学習処理を複数のワーカで担当する分散学習に関する。開示の技術は、前記複数のワーカの各々に障害が発生したか否かを検知する。また、開示の技術は、前記複数のワーカのうち、1以上の第1のワーカに障害の発生が検知された場合に、前記複数のワーカのうち、前記第1のワーカ以外の第2のワーカに前記分散学習を継続させるか否かを判定する。そして、開示の技術は、前記分散学習を継続させる場合、前記第1のワーカが担当する学習処理を、前記第2のワーカに分配して、前記分散学習を継続させる。
【発明の効果】
【0008】
一つの側面として、分散学習を実行するワーカに障害が発生した場合でも、機械学習モデルの学習時間の増大を抑制することができる、という効果を有する。
【図面の簡単な説明】
【0009】
図1】本実施形態に係る情報処理システムの概略構成を示すブロック図である。
図2】マルチプルニューラルネットワークの具体例を説明するための図である。
図3】マルチプルニューラルネットワークの出力を説明するための図である。
図4】データ並列による分散学習を説明するための図である。
図5】マルチプルニューラルネットワークの分散学習でワーカに障害が発生した場合の問題点を説明するための図である。
図6】マルチプルニューラルネットワークの分散学習でワーカに障害が発生した場合の問題点を説明するための図である。
図7】管理ワーカの機能ブロック図である。
図8】残存ワーカ群での分散学習の継続を説明するための図である。
図9】残存ワーカ群への学習データの分配を説明するための図である。
図10】データ並列での分散学習時におけるワーカ当たりのバッチサイズを説明するための図である。
図11】継続モデルに対するバッチサイズの計算を説明するための図である。
図12】コンピュータシステムとして機能するコンピュータの概略構成を示すブロック図である。
図13】分散学習処理の一例を示すフローチャートである。
図14】分配処理の一例を示すフローチャートである。
図15】代理ワーカ処理の一例を示すフローチャートである。
図16】分散学習処理の他の例を示すフローチャートである。
【発明を実施するための形態】
【0010】
以下、図面を参照して、開示の技術に係る実施形態の一例を説明する。
【0011】
図1に示すように、本実施形態に係る情報処理システム100は、コンピュータシステム10と、複数の利用者端末50とを含む。コンピュータシステム10と利用者端末50の各々とは、ネットワークを介して相互に通信可能に接続される。情報処理システム100は、利用者端末50を介して利用者から投入されたジョブに対して、コンピュータシステム10が有するリソースを割り当て、割り当てたリソースでジョブを実行するシステムである。
【0012】
利用者端末50は、情報処理システム100の利用者が利用する情報処理端末であり、例えば、パーソナルコンピュータ、タブレット端末、スマートフォン等で実現される。利用者端末50は、利用者から入力されるジョブを受け付け、コンピュータシステム10へ送信する。また、利用者端末50は、コンピュータシステム10から送信されるジョブの実行結果を受信し、実行結果を表示装置に表示するなどして、利用者に提示する。
【0013】
本実施形態では、ジョブは、機械学習モデルの機械学習である。特に、本実施形態では、複数のニューラルネットワークの推論結果を統合して最終的な推論結果を出力するマルチプルニューラルネットワークの分散学習を対象とする。
【0014】
コンピュータシステム10は、1以上のコンピュータを含み、これらのコンピュータが、管理部20及びワーカ群として機能する。また、コンピュータシステム10は、記憶装置を含み、記憶装置には、機械学習モデルの学習に用いられる複数の学習データである学習データセット52と、学習実行時の最新状態の機械学習モデルの情報であるチェックポイント54とが記憶される。コンピュータシステム10は、例えば、ハイパフォーマンスコンピュータとしてよい。
【0015】
管理部20は、キュー22と、ジョブ配備部24と、ジョブ管理部26とを含む。キュー22は、利用者端末50から送信されたジョブが順次格納される記憶領域である。ジョブ配備部24は、キュー22から1つずつジョブを取り出し、取り出したジョブを実行するワーカを割り当て、ワーカにジョブを実行させる。ジョブ管理部26は、ワーカによるジョブの実行結果を取得し、取得した実行結果を、ネットワークを介して利用者端末50へ送信する。
【0016】
ワーカ群は、複数のワーカを含む。ここで、ワーカとは、割り当てられたジョブ又はジョブの一部を実行する一単位であり、例えば、1又は複数のコンピュータであってもよいし、1又は複数のプロセッサであってもよい。本実施形態では、説明の都合上、分散学習を実行するワーカを実行ワーカ30とし、実行ワーカ30によるジョブの実行を管理するワーカを管理ワーカ40として説明する。また、以下では、1つのジョブを分散して実行する実行ワーカ群の各実行ワーカ30を「ワーカk」とも表記する。kは実行ワーカ群に含まれる実行ワーカ30の識別番号であり、本実施形態では、k=0,1,2,・・・とする。
【0017】
ここで、図2を参照して、マルチプルニューラルネットワークの具体例について説明する。図2は、HDNNP(High-Dimensional Neural Network Potential)の例であり、原子(分子)系全体のポテンシャルエネルギーを機械学習により計算するマルチプルニューラルネットワークの例である。図2上図に示すように、原子系が、原子i(i=a,b,c)を含む場合、図2下図に示すような、原子iに関するニューラルネットワーク(NN:Neural Network)に、それぞれデータGを入力し、原子iのポテンシャルエネルギーEを計算する。そして、Eの総和を、原子系全体のポテンシャルエネルギーEとして計算する。
【0018】
マルチプルニューラルネットワークの学習の並列化、すなわち分散学習では、図3に示すように、各ニューラルネットワークNNに対して実行ワーカ30(図3の例では、ワーカk、k=0,1,2)を割り当てる。そして、各ワーカkが、オールリデュース通信により他のワーカkから計算結果を取得し、自身の計算結果と、取得した他のワーカkの計算結果との総和を計算する。
【0019】
次に、マルチプルニューラルネットワークの分散学習において、ワーカに障害が発生した場合の問題を説明するために、まず、マルチプルニューラルネットワーク以外の場合について説明する。例えば、図4に示すように、各ワーカkで同じ機械学習モデルを使用し、学習データセットをワーカ間で分割し、データ並列による分散学習を行う場合を考える。データ並列による分散学習では、例えば、学習データをミニバッチの単位に分割し、各ワーカが、各ミニバッチについて、ニューラルネットワークの損失を小さくするための勾配を計算する。そして、ワーカ間で同期をとった上で通信を行うことにより、各ワーカkで計算された勾配の平均を計算し、ニューラルネットワークの重みを更新する。この場合、例えばワーカ2に障害が発生すると、障害が発生したワーカ2は分散学習から離脱し、ワーカ2の計算結果が反映されなくなるため、学習精度が低下する恐れはある。ただし、ワーカ0及びワーカ1による学習の継続は可能である。
【0020】
しかし、マルチプルニューラルネットワークの場合、図5に示すように、教師値(正解データ)は、各ニューラルネットワークの出力の総和に対して存在するため、障害発生時に損失の計算が不可能になる。具体的には、通常時には、ワーカ間の通信により計算した予測値E=Σと教師値Etrueとを比較して損失を算出する。しかし、例えば、ワーカ2に障害が発生した場合、NNの予測値E及びNNの予測値Eから計算された予測値E’には、NNの予測値Eが含まれていないため、教師値Etrueとの適切な比較が行えず、損失を算出することができない。
【0021】
この場合、分散学習を継続させるためには、分散学習から離脱したワーカ(以下、「離脱ワーカ」という)の代理となる新しいワーカ(以下、「代理ワーカ」という)を確保する。そして、代理ワーカを、障害が発生していない残りのワーカ(以下、「残存ワーカ」という)に加えて、分散学習を再開させることが考えられる。例えば、図6に示すように、ワーカ2が離脱した場合、ワーカ2’を代理ワーカとして確保し、ワーカ2’が使用するモデルとして、チェックポイント54からNNの最新の状態を復元する。そして、ワーカ2’が、NNを使用して勾配を計算する。以降は、ワーカ0及びワーカ1にワーカ2’を加えた実行ワーカ群で分散学習が実行される。
【0022】
このように、離脱ワーカを代理ワーカに入れ替える場合、代理ワーカの準備が整うまで、分散学習に待ち時間が発生する。特に、代理ワーカを確保し難い環境、例えば、コンピュータシステム10でのジョブが混雑しており、空きの実行ワーカ30がない場合等には、待ち時間が増大することになる。
【0023】
そこで、本実施形態では、残存ワーカ群で離脱ワーカの学習処理を分担することにより、残存ワーカ群で分散学習を継続させる。以下、この処理を実現するための管理ワーカ40の機能について詳述する。なお、管理ワーカ40は、開示の技術の分散学習装置の一例である。
【0024】
管理ワーカ40は、1つのジョブを実行する実行ワーカ群に対して1つ設けられる。図7に示すように、管理ワーカ40は、機能的には、検知部42と、判定部44と、制御部46とを含む。
【0025】
検知部42は、実行ワーカ30の各々に障害が発生したか否かを検知する。例えば、検知部42は、各実行ワーカ30から定期的にキープアライブを受信することにより、各実行ワーカ30の死活監視を行う。検知部42は、一定時間以上キープアライブが受信されない実行ワーカ30について、障害の発生を検知する。検知部42は、障害の発生を検知すると、障害が発生した実行ワーカ30の識別番号を判定部44へ通知する。
【0026】
判定部44は、1つのジョブを実行する実行ワーカ群のうち、1以上の実行ワーカ30に障害の発生が検知された場合に、実行ワーカ群のうち、障害の発生が検知されていない実行ワーカ30、すなわち残存ワーカ群に分散学習を継続させるか否かを判定する。具体的には、判定部44は、障害が検知された実行ワーカ30、すなわち離脱ワーカの代理となる代理ワーカの確保までに要する時間が閾値以上の場合に、残存ワーカ群による分散学習を継続させると判定する。
【0027】
具体的には、判定部44は、例えば、コンピュータシステム10におけるジョブの混雑度を取得するコマンドを実行して混雑度を取得し、取得した混雑度に基づいて、代理ワーカを要求してから確保までに要する時間を推定する。また、代理ワーカの要求に対して、代理ワーカが確保される予測時刻を返すシステムの場合、判定部44は、この予測時刻から、代理ワーカを要求してから確保までに要する時間を推定してもよい。また、判定部44は、閾値を、予め定めた時間としてもよいし、残存ワーカ群に分散学習を継続させた場合に増加する学習時間の推定値としてもよい。判定部44は、例えば、実行ワーカ30の処理能力、対象の機械学習モデルのサイズ、学習データのサイズ等に基づいて、増加する学習時間の推定値を算出する。判定部44は、残存ワーカ群に分散学習を継続させるか否かの判定結果を制御部46へ通知する。
【0028】
制御部46は、実行ワーカ30の各々が、担当する学習処理を実行するように制御する。また、制御部46は、残存ワーカ群に分散学習を継続させることを示す判定結果を判定部44から通知されると、離脱ワーカが担当する学習処理を、残存ワーカの各々に分配して、残存ワーカに分散学習を継続させるように設定する。具体的には、制御部46は、図8に示すように、ワーカ2が離脱した場合、ワーカ0及びワーカ1が使用するモデルとして、チェックポイント54からNNの最新の状態を復元する。以下、残存ワーカが使用するために復元した、離脱ワーカが使用していたNNを「継続モデル」ともいう。そして、制御部46は、ワーカ0及びワーカ1に、復元したNNを使用して勾配を計算させる。また、制御部46は、以降のオールリデュース通信は、ワーカ0とワーカ1間で行うように設定すると共に、ワーカ0には、NNの計算及びNNの計算を実行させ、ワーカ1には、NNの計算及びNNの計算を実行させるように設定する。なお、ワーカ2が第1のワーカの一例であり、ワーカ0及びワーカ1が第2のワーカの一例である。
【0029】
また、制御部46は、図9に示すように、学習データセット52のうち、離脱ワーカに割り当てられていた部分を、残存ワーカ間で分割する。図9の例では、離脱ワーカに割り当てられていたデータ2をデータ2とデータ2とに分割し、データ2をワーカ0に、データ2をワーカ1に分配している。制御部46は、離脱ワーカから残存ワーカへ分配したデータは、復元したNNへ入力して勾配を計算するように設定する。すなわち、制御部46は、ワーカ0では、データ0を所定のバッチサイズに分割した各ミニバッチをNNへ入力して計算を行うと共に、データ2を所定のバッチサイズに分割した各ミニバッチをNNへ入力して計算を行うように設定する。同様に、制御部46は、ワーカ1では、データ1を所定のバッチサイズに分割した各ミニバッチをNNへ入力して計算を行うと共に、データ2を所定のバッチサイズに分割した各ミニバッチをNNへ入力して計算を行うように設定する。
【0030】
これにより、図8に示すように、離脱ワーカが担当していた学習処理(図8の例では、破線部で示すNNの計算)を、残存ワーカで分担して並列に実行することで、学習時間の増加を最小化することができる。
【0031】
ここで、図10に示すように、データ並列での分散学習時における、ワーカ当たりのバッチサイズがsの場合、各ワーカkはミニバッチ単位(データ数s)で勾配を計算する(図10中の(1))。そして、オールリデュース通信により、ワーカ間で勾配の平均値を計算し(図10中の(2))、計算した勾配の平均値を用いて、各ワーカはモデルを更新する(図10中の(3))。このように、計算される勾配はワーカ間での平均値であるため、分散学習全体でのバッチサイズは、分散学習を実行するワーカ数に比例する。
【0032】
そこで、制御部46は、継続モデルに対する、残存ワーカ全体でのバッチサイズが、離脱ワーカ当たりのバッチサイズと同じになるように設定する。例えば、図11に示すように、ワーカ当たりのバッチサイズがs=64、残存ワーカの台数がn=2の場合、制御部46は、継続モデルに対する残存ワーカ当たりのバッチサイズを、s/n=32と設定する。これにより、ワーカ0とワーカ1とのオールリデュース通信による勾配の平均化により、継続モデルに対する、残存ワーカ全体での実質的なバッチサイズはs=64となる。
【0033】
また、制御部46は、残存ワーカ群での分散学習を継続しないことを示す判定結果を判定部44から通知されると、いったん分散学習を中断させ、代理ワーカの確保をジョブ配備部24へ依頼する。制御部46は、代理ワーカが確保されると、図6で説明したように、離脱ワーカと代理ワーカとを入れ替えて、すなわち、残存ワーカと代理ワーカとを用いて、分散学習を再開させる。なお、代理ワーカは第3のワーカの一例である。
【0034】
コンピュータシステム10は、例えば図12に示すようなコンピュータ60で実現される。コンピュータ60は、CPU(Central Processing Unit)61と、GPU(Graphics Processing Unit)62と、一時記憶領域としてのメモリ63と、不揮発性の記憶装置64とを備える。また、コンピュータ60は、入力装置、表示装置等の入出力装置65と、記憶媒体69に対するデータの読み込み及び書き込みを制御するR/W(Read/Write)装置66とを備える。また、コンピュータ60は、インターネット等のネットワークに接続される通信I/F(Interface)67を備える。CPU61、GPU62、メモリ63、記憶装置64、入出力装置65、R/W装置66、及び通信I/F67は、バス68を介して互いに接続される。
【0035】
記憶装置64は、例えば、HDD(Hard Disk Drive)、SSD(Solid State Drive)、フラッシュメモリ等である。記憶媒体としての記憶装置64には、コンピュータ60を、コンピュータシステム10の管理ワーカ40として機能させるための分散学習プログラム70が記憶される。なお、記憶装置64には、分散学習プログラム70以外にも、管理部20及び実行ワーカ30の各々の機能を実現するためのプログラムも含まれるが、本実施形態では詳細な説明を省略する。分散学習プログラム70は、検知プロセス制御命令72と、判定プロセス制御命令74と、制御プロセス制御命令76とを有する。
【0036】
CPU61は、分散学習プログラム70を記憶装置64から読み出してメモリ63に展開し、分散学習プログラム70が有する制御命令を順次実行する。CPU61は、検知プロセス制御命令72を実行することで、図7に示す検知部42として動作する。また、CPU61は、判定プロセス制御命令74を実行することで、図7に示す判定部44として動作する。また、CPU61は、制御プロセス制御命令76を実行することで、図7に示す制御部46として動作する。これにより、分散学習プログラム70を実行したコンピュータ60が、コンピュータシステム10の管理ワーカ40として機能することになる。なお、プログラムを実行するCPU61はハードウェアである。また、プログラムの一部は、GPU62により実行されてもよい。
【0037】
なお、分散学習プログラム70により実現される機能は、例えば半導体集積回路、より詳しくはASIC(Application Specific Integrated Circuit)、FPGA(Field-Programmable Gate Array)等で実現されてもよい。
【0038】
次に、本実施形態に係る情報処理システム100の動作について説明する。利用者端末50からコンピュータシステム10へ、マルチプルニューラルネットワークの分散学習の実行を指示するジョブが投入されると、ジョブ配備部24が、そのジョブを実行するための実行ワーカ30及び管理ワーカ40を配備する。そして、管理ワーカ40が、図13に示す分散学習処理を実行する。なお、分散学習処理は、開示の技術の分散学習方法の一例である。
【0039】
ステップS10で、制御部46が、分散学習を担当する実行ワーカ群に、マルチプルニューラルネットワークの分散学習を開始させる。次に、ステップS12で、制御部46が学習を続行するか否かを判定する。学習の繰り返し回数が所定数に到達した場合、損失が所定値以下になった場合、損失が収束した場合等の所定の終了条件を満たさない場合には、学習を続行すると判定し、ステップS14へ移行する。
【0040】
ステップS14では、検知部42が、分散学習を実行する実行ワーカ30のいずれかに障害が発生したか否かを判定する。いずれかの実行ワーカ30に障害が発生している場合には、ステップS16へ移行し、いずれの実行ワーカ30にも障害が発生していない場合には、ステップS12に戻る。ステップS16では、制御部46が、障害の発生が検知された実行ワーカ30を、分散学習を実行する実行ワーカ群から離脱させる。
【0041】
次に、ステップS18で、判定部44が、残存ワーカ群に分散学習を継続させるか否かを判定する。例えば、代理ワーカの確保までに要する時間が閾値以上の場合には、残存ワーカ群による分散学習を継続させると判定し、ステップS20へ移行し、分配処理が実行される。一方、代理ワーカの確保までに要する時間が閾値未満の場合には、残存ワーカ群による分散学習を継続しないと判定し、ステップS40へ移行し、代理ワーカ処理が実行される。
【0042】
ここで、図14を参照して、分配処理について説明する。
【0043】
ステップS22で、制御部46が、各残存ワーカが使用する継続モデルとして、チェックポイント54から、離脱ワーカが使用していたモデル(ニューラルネットワーク)の最新の状態を復元する。次に、ステップS24で、制御部46が、学習データセット52のうち、離脱ワーカに割り当てられていた部分を、各残存ワーカに分配する。
【0044】
次に、ステップS26で、制御部46は、継続モデルに対する、残存ワーカ全体でのバッチサイズが、離脱ワーカ当たりのバッチサイズと同じになるように、継続モデルに対する各残存ワーカでのバッチサイズを計算する。次に、ステップS28で、制御部46が、各残存ワーカに、上記ステップS24で分配されたデータを、上記ステップS26で計算したバッチサイズで分割したミニバッチを継続モデルに適用して学習処理を実行するように設定する。そして、分配処理は終了し、分散学習処理(図13)へリターンし、ステップS12に戻る。これにより、残存ワーカ群による分散学習が継続される。
【0045】
次に、図15を参照して、代理ワーカ処理について説明する。
【0046】
ステップS42で、制御部46が、いったん分散学習を中断させる。次に、ステップS44で、制御部46が、代理ワーカの確保をジョブ配備部24へ依頼する。次に、ステップS46で、制御部46が、代理ワーカを確保できたか否かを判定する。代理ワーカを確保できた場合には、ステップS48へ移行し、確保できていない場合には、確保できるまで待機する。
【0047】
ステップS48では、制御部46は、代理ワーカが確保されると、図6で説明したように、離脱ワーカと代理ワーカとを入れ替えて、すなわち、残存ワーカと代理ワーカとを用いて、分散学習を再開させる。そして、代理ワーカ処理は終了し、分散学習処理(図13)へリターンし、ステップS12に戻る。ステップS12で、制御部46が、所定の終了条件を満たし、学習を終了すると判定すると、分散学習処理は終了する。
【0048】
以上説明したように、本実施形態は、複数のニューラルネットワークの推論結果を統合して最終的な推論結果を出力するマルチプルニューラルネットワークの複数のニューラルネットワークの各々の学習処理を複数のワーカで担当する分散学習に関する。本実施形態において、管理ワーカは、複数のワーカの各々に障害が発生したか否かを検知する。また、管理ワーカは、複数のワーカのうち、1以上のワーカに障害の発生が検知された場合に、複数のワーカのうち、障害の発生が検知されていないワーカに分散学習を継続させるか否かを判定する。そして、管理ワーカは、分散学習を継続させる場合、障害が検知されたワーカが担当する学習処理を、障害の発生が検知されていないワーカに分配して、分散学習を継続させる。これにより、分散学習を実行するワーカに障害が発生した場合でも、機械学習モデルの学習時間の増大を抑制することができる。
【0049】
なお、上記実施形態では、残存ワーカ群で離脱ワーカの学習処理を分担して分散学習を継続する場合と、代理ワーカを確保して分散学習を継続する場合とを択一的に実行する場合について説明したが、これに限定されない。例えば、残存ワーカ群に分散学習を継続させると共に、代理ワーカの確保を依頼するようにしてもよい。この場合、代理ワーカが確保されるまでは、残存ワーカ群による分散学習を継続させる。そして、代理ワーカが確保された場合に、残存ワーカ群に代理ワーカを追加し、残存ワーカ群で分担していた離脱ワーカの学習処理を、代理ワーカに割り当て直して、すなわち、元の状態を復元して、分散学習を再開させればよい。
【0050】
より具体的に、この場合の分散学習処理を、図16に示すフローチャートを参照して説明する。なお、図16に示す分散学習処理において、上記実施形態の分散学習処理(図13図15)と同一の処理については、同一ステップ番号を付して詳細な説明を省略する。
【0051】
ステップS10~S16を経て、次のステップS60で、判定部44が、残存ワーカ群に分散学習を継続させるか否かを判定する。残存ワーカ群による分散学習を継続させる場合は、ステップS20へ移行し、分配処理を実行したうえで、ステップS44へ移行する。一方、残存ワーカ群による分散学習を継続しない場合は、そのままステップS44へ移行する。ステップS44で、制御部46が、代理ワーカの確保を依頼する。次に、ステップS62で、制御部46が、代理ワーカを確保できたか否かを判定し、確保できた場合には、ステップS64へ移行し、確保できていない場合には、ステップS12に戻る。
【0052】
ステップS64では、制御部46が、残存ワーカ群で分散学習を継続中か、すなわち、残存ワーカ群が離脱ワーカの学習処理を分担して分散学習を実行中か否かを判定する。残存ワーカ群での分散学習を継続中の場合には、ステップS66へ移行し、継続中ではない場合、すなわち、当初のワーカ群、又は代理ワーカが追加されたワーカ群による分散学習が実行されている場合には、ステップS68へ移行する。
【0053】
ステップS66では、制御部46が、残存ワーカ群で継続されている分散学習を終了させる。次に、ステップS68で、制御部46が、残存ワーカ群に代理ワーカを追加し、状態を復元して、分散学習を再開させて、ステップS12に戻る。
【0054】
このように、代理ワーカが確保できるまでは、残存ワーカ群による分散学習を継続させ、代理ワーカが確保できた場合に、元の状態を復元して分散学習を再開させることで、ワーカに障害が発生した場合でも、学習時間の増加を最小限に抑制することができる。
【0055】
また、上記実施形態では、分散学習プログラムが記憶装置に予め記憶(インストール)されているが、これに限定されない。開示の技術に係るプログラムは、CD-ROM、DVD-ROM、USBメモリ等の記憶媒体に記憶された形態で提供されてもよい。
【0056】
以上の実施形態に関し、さらに以下の付記を開示する。
【0057】
(付記1)
複数のニューラルネットワークの推論結果を統合して最終的な推論結果を出力するマルチプルニューラルネットワークの前記複数のニューラルネットワークの各々の学習処理を複数のワーカで担当する分散学習において、
前記複数のワーカの各々に障害が発生したか否かを検知し、
前記複数のワーカのうち、1以上の第1のワーカに障害の発生が検知された場合に、前記複数のワーカのうち、前記第1のワーカ以外の第2のワーカに前記分散学習を継続させるか否かを判定し、
前記分散学習を継続させる場合、前記第1のワーカが担当する学習処理を、前記第2のワーカに分配して、前記分散学習を継続させる
ことを含む処理をコンピュータに実行させるための分散学習プログラム。
【0058】
(付記2)
前記分散学習を継続させるか否かを判定する処理は、前記第1のワーカの代理となる前記複数のワーカ以外の第3のワーカの確保までに要する時間が閾値以上の場合に、前記分散学習を継続させると判定することを含む付記1に記載の分散学習プログラム。
【0059】
(付記3)
前記閾値は、前記第2のワーカに前記分散学習を継続させた場合に増加する学習時間の推定値である付記2に記載の分散学習プログラム。
【0060】
(付記4)
前記第2のワーカに分配する処理は、前記第1のワーカ当たりのバッチサイズを、前記第2のワーカの数で除算した値を、前記第2のワーカそれぞれに分配された、前記第1のワーカが担当する学習処理についてのバッチサイズとして設定することを含む付記1~付記3のいずれか1項に記載の分散学習プログラム。
【0061】
(付記5)
前記分散学習を継続させないと判定された場合に、前記第1のワーカの代理となる前記複数のワーカ以外の第3のワーカの確保を依頼し、
前記第3のワーカが確保された場合に、前記第2のワーカと、確保された前記第3のワーカとを用いて、前記分散学習を再開させる、
ことを含む処理を前記コンピュータに実行させるための付記1~付記4のいずれか1項に記載の分散学習プログラム。
【0062】
(付記6)
前記第2のワーカに前記分散学習を継続させると共に、前記第1のワーカの前記複数のワーカ以外の第3のワーカの確保を依頼し、
前記第3のワーカが確保された場合に、前記第2のワーカに分配していた前記第1のワーカの学習処理を、確保された前記第3のワーカに割り当て直して、前記分散学習を再開させる、
ことを含む処理を前記コンピュータに実行させるための付記1~付記4のいずれか1項に記載の分散学習プログラム。
【0063】
(付記7)
複数のニューラルネットワークの推論結果を統合して最終的な推論結果を出力するマルチプルニューラルネットワークの前記複数のニューラルネットワークの各々の学習処理を複数のワーカで担当する分散学習において、
前記複数のワーカの各々に障害が発生したか否かを検知し、
前記複数のワーカのうち、1以上の第1のワーカに障害の発生が検知された場合に、前記複数のワーカのうち、前記第1のワーカ以外の第2のワーカに前記分散学習を継続させるか否かを判定し、
前記分散学習を継続させる場合、前記第1のワーカが担当する学習処理を、前記第2のワーカに分配して、前記分散学習を継続させる
ことを含む処理をコンピュータが実行する分散学習方法。
【0064】
(付記8)
前記分散学習を継続させるか否かを判定する処理は、前記第1のワーカの代理となる前記複数のワーカ以外の第3のワーカの確保までに要する時間が閾値以上の場合に、前記分散学習を継続させると判定することを含む付記7に記載の分散学習方法。
【0065】
(付記9)
前記閾値は、前記第2のワーカに前記分散学習を継続させた場合に増加する学習時間の推定値である付記8に記載の分散学習方法。
【0066】
(付記10)
前記第2のワーカに分配する処理は、前記第1のワーカ当たりのバッチサイズを、前記第2のワーカの数で除算した値を、前記第2のワーカそれぞれに分配された、前記第1のワーカが担当する学習処理についてのバッチサイズとして設定することを含む付記7~付記9のいずれか1項に記載の分散学習方法。
【0067】
(付記11)
前記分散学習を継続させないと判定された場合に、前記第1のワーカの代理となる前記複数のワーカ以外の第3のワーカの確保を依頼し、
前記第3のワーカが確保された場合に、前記第2のワーカと、確保された前記第3のワーカとを用いて、前記分散学習を再開させる、
ことを含む処理を前記コンピュータに実行させるための付記7~付記10のいずれか1項に記載の分散学習方法。
【0068】
(付記12)
前記第2のワーカに前記分散学習を継続させると共に、前記第1のワーカの代理となる前記複数のワーカ以外の第3のワーカの確保を依頼し、
前記第3のワーカが確保された場合に、前記第2のワーカに分配していた前記第1のワーカの学習処理を、確保された前記第3のワーカに割り当て直して、前記分散学習を再開させる、
ことを含む処理を前記コンピュータに実行させるための付記7~付記10のいずれか1項に記載の分散学習方法。
【0069】
(付記13)
複数のニューラルネットワークの推論結果を統合して最終的な推論結果を出力するマルチプルニューラルネットワークの前記複数のニューラルネットワークの各々の学習処理を複数のワーカで担当する分散学習において、
前記複数のワーカの各々に障害が発生したか否かを検知する検知部と、
前記複数のワーカのうち、1以上の第1のワーカに障害の発生が検知された場合に、前記複数のワーカのうち、前記第1のワーカ以外の第2のワーカに前記分散学習を継続させるか否かを判定する判定部と、
前記分散学習を継続させる場合、前記第1のワーカが担当する学習処理を、前記第2のワーカに分配して、前記分散学習を継続させる制御部と、
を含む分散学習装置。
【0070】
(付記14)
前記判定部は、前記第1のワーカの代理となる前記複数のワーカ以外の第3のワーカの確保までに要する時間が閾値以上の場合に、前記分散学習を継続させると判定する付記13に記載の分散学習装置。
【0071】
(付記15)
前記閾値は、前記第2のワーカに前記分散学習を継続させた場合に増加する学習時間の推定値である付記14に記載の分散学習装置。
【0072】
(付記16)
前記制御部は、前記第1のワーカ当たりのバッチサイズを、前記第2のワーカの数で除算した値を、前記第2のワーカそれぞれに分配された、前記第1のワーカが担当する学習処理についてのバッチサイズとして設定する付記13~付記15のいずれか1項に記載の分散学習装置。
【0073】
(付記17)
前記制御部は、
前記分散学習を継続させないと判定された場合に、前記第1のワーカの代理となる前記複数のワーカ以外の第3のワーカの確保を依頼し、
前記第3のワーカが確保された場合に、前記第2のワーカと、確保された前記第3のワーカとを用いて、前記分散学習を再開させる、
付記13~付記16のいずれか1項に記載の分散学習装置。
【0074】
(付記18)
前記制御部は、
前記第2のワーカに前記分散学習を継続させると共に、前記第1のワーカの代理となる前記複数のワーカ以外の第3のワーカの確保を依頼し、
前記第3のワーカが確保された場合に、前記第2のワーカに分配していた前記第1のワーカの学習処理を、確保され前記第3のたワーカに割り当て直して、前記分散学習を再開させる、
付記13~付記16のいずれか1項に記載の分散学習装置。
【符号の説明】
【0075】
100 情報処理システム
10 コンピュータシステム
20 管理部
22 キュー
24 ジョブ配備部
26 ジョブ管理部
30 実行ワーカ
40 管理ワーカ
42 検知部
44 判定部
46 制御部
50 利用者端末
52 学習データセット
54 チェックポイント
60 コンピュータ
61 CPU
62 GPU
63 メモリ
64 記憶装置
65 入出力装置
66 R/W装置
67 通信I/F
68 バス
69 記憶媒体
70 分散学習プログラム
72 検知プロセス制御命令
74 判定プロセス制御命令
76 制御プロセス制御命令
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16