JP2022178916A - 機械学習システム、機械学習プログラム、及び、機械学習方法 - Google Patents
機械学習システム、機械学習プログラム、及び、機械学習方法 Download PDFInfo
- Publication number
- JP2022178916A JP2022178916A JP2021086047A JP2021086047A JP2022178916A JP 2022178916 A JP2022178916 A JP 2022178916A JP 2021086047 A JP2021086047 A JP 2021086047A JP 2021086047 A JP2021086047 A JP 2021086047A JP 2022178916 A JP2022178916 A JP 2022178916A
- Authority
- JP
- Japan
- Prior art keywords
- execution
- node
- machine learning
- nodes
- management 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.)
- Pending
Links
Images
Abstract
【課題】機械学習システムにおいて複数のノードで分散して実行される機械学習処理の効率向上を図る。【解決手段】機械学習処理の実行を制御する制御ノード2は、機械学習処理の少なくとも一部分である部分処理の入力データと、前記部分処理に含まれる順序付けられた複数の処理の実行状態を実行ノード3ごとに管理するための管理情報50とを各ノードからアクセス可能な記憶領域4、5に格納し、各実行ノード3は、前記記憶領域4、5に格納された前記入力データ及び前記管理情報50に基づく前記部分処理の実行において、各処理から出力される出力データ40と、各処理の実行状態を設定した前記管理情報50とを前記記憶領域4、5に格納し、前記制御ノード2は、第1実行ノード3の管理情報50における各処理の実行状態と前記第1実行ノード3の複数の出力データ40とに基づき、前記第1実行ノード3において未完了の処理を第2実行ノード3に実行させる。【選択図】図7
Description
本発明は、機械学習システム、機械学習プログラム、及び、機械学習方法に関する。
機械学習システム(例えばクラスタ)が備える複数のノードに機械学習の部分処理を並列に実行させる技術が知られている。複数のノードは、例えば、仮想化技術によってクラスタ上に分散して配置される。部分処理は、例えば、機械学習処理のうちの並列に実行可能な処理、例えばタスクであってよく、「並列タスク」又は「並列ジョブ」と称されてもよい。
機械学習システムでは、複数のノードのそれぞれにより実行された部分処理の処理結果を統合して利用することで、機械学習処理を実現することができる。
しかしながら、上述した機械学習システムでは、複数のノードのそれぞれに分散して実行させるタスクのうちの少なくとも1つが重複して実行される場合があり、機械学習処理の分散(並列)実行の処理効率が低下することがある。
1つの側面では、本発明は、機械学習システムにおいて複数のノードで分散して実行される機械学習処理の効率向上を図ることを目的とする。
1つの側面では、機械学習システムは、機械学習処理の少なくとも一部分である部分処理をそれぞれが実行する複数の実行ノードと、前記機械学習処理の実行を制御する制御ノードと、前記制御ノード及び前記複数の実行ノードのそれぞれからアクセス可能な記憶領域と、を備えてよい。前記制御ノードは、前記部分処理の入力データと、前記部分処理に含まれる順序付けられた複数の処理の実行状態を前記実行ノードごとに管理するための管理情報と、を前記記憶領域に格納してよい。前記複数の実行ノードのそれぞれは、前記記憶領域に格納された前記入力データ及び前記管理情報に基づく前記部分処理の実行において、前記複数の処理の各々から出力される出力データと、前記複数の処理の各々の実行状態を設定した前記管理情報と、を前記記憶領域に格納してよい。前記制御ノードは、前記複数の実行ノードのうちの第1実行ノードの前記管理情報における前記複数の処理の各々の実行状態と、前記記憶領域に格納された前記第1実行ノードの複数の前記出力データとに基づき、前記第1実行ノードにおいて未完了の処理を、前記第1実行ノードとは異なる第2実行ノードに実行させてよい。
1つの側面では、機械学習システムにおいて複数のノードで分散して実行される機械学習処理の効率を向上させることができる。
以下、図面を参照して本発明の実施の形態を説明する。ただし、以下に説明する実施形態は、あくまでも例示であり、以下に明示しない種々の変形や技術の適用を排除する意図はない。例えば、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。なお、以下の実施形態で用いる図面において、同一符号を付した部分は、特に断らない限り、同一若しくは同様の部分を表す。
〔1〕第1実施形態
〔1-1〕機械学習システムについて
図1は、第1実施形態の比較例に係る機械学習システム100の一例を説明するための図である。図1に示すように、機械学習システム100は、例示的に、マスタノード110、及び、複数(図1の例では4つ)のワーカノード120を備えてよく、これらの複数のノードによりクラスタを形成してよい。
〔1-1〕機械学習システムについて
図1は、第1実施形態の比較例に係る機械学習システム100の一例を説明するための図である。図1に示すように、機械学習システム100は、例示的に、マスタノード110、及び、複数(図1の例では4つ)のワーカノード120を備えてよく、これらの複数のノードによりクラスタを形成してよい。
例えば、マスタノード110は、機械学習モデルを構築(訓練)するための機械学習処理のジョブをスケジュールするジョブスケジューラ111を備え、各ワーカノード120に対してモデル構築の実行を指示する。
ワーカノード120(ワーカノード#0~#3)のそれぞれは、マスタノード110からの指示に従いモデル構築用のパイプライン(パイプライン#0~#3)を実行する。パイプラインは、機械学習処理の少なくとも一部分である部分処理の一例である。例えば、ワーカノード120は、パイプラインの実行において、タスクスケジューラによって1以上のサブタスク121を実行する。
機械学習システム100は、例えば、機械学習モデルの交差検証処理のように、入力データを分割して複数のモデルを構築する場合、複数のワーカノード120でモデル構築用のパイプラインを並列実行することによって、機械学習処理の高速化を実現できる。この場合、各ワーカノード120で実行されるサブタスク121は、例えば、入力データに対する「データ変換」、変換したデータを用いた「モデル訓練」、モデルに対する「モデル評価」等の処理を含んでよい。
図2は、機械学習モデルの交差検証処理の一例を説明するための図である。モデル交差検証処理は、複数のワーカノード120に機械学習の部分処理を並列に実行させる並列実行(並列分散)処理の一例であり、クロスバリデーション(Cross Validation)と称されてもよい。
図2では、K=5の場合のK分割交差検証処理を例示する。K分割交差検証処理は、入力データ210を5(K)分割して得られる5つのデータブロックのうちの、1個を判定用データ(Evaluation Data;或いは評価用データ(Validation Data))とし、残りの4個(K-1個)を訓練用データ(Training Data)として利用する手法である。なお、図2の例では、判定用データを「判定データ」、訓練用データを「訓練データ」と表記する。K分割交差検証処理は、訓練用データで作成されたモデル(一例として、判定モデル)に対して判定用データを適用することで、予測結果(Prediction)を取得する。
ここで、K分割交差検証処理では、各ブロックデータを1回ずつ判定用データとして利用するために、判定用データとなるブロックデータを変化させて、5(K)回に亘って機械学習が実行される。
図2の例では、第1回の処理において、1番目のデータブロック221を判定用データ(図2中、「E」と表記)、2番目~5番目のデータブロック222~225を訓練用データ(図2中、「T」と表記)としたデータセット220によるモデルの訓練によって、予測結果(図2中、「P」と表記)226が得られる。また、第2回の処理において、2番目のデータブロック232を判定用データ、1番目、3番目~5番目のデータブロック231、233~235を訓練用データとしたデータセット230によるモデルの訓練によって、予測結果236が得られる。さらに、第3回の処理において、3番目のデータブロック243を判定用データ、1番目、2番目、4番目、5番目のデータブロック241、242、244、245を訓練用データとしたデータセット240によるモデルの訓練によって、予測結果246が得られる。また、第4回の処理において、4番目のデータブロック254を判定用データ、1番目~3番目、5番目のデータブロック251~253、255を訓練用データとしたデータセット250によるモデルの訓練によって、予測結果256が得られる。そして、第5回の処理において、5番目のデータブロック265を判定用データ、1番目~4番目のデータブロック261~264を訓練用データとしたデータセット260によるモデルの訓練によって、予測結果266が得られる。なお、図2の例では、予測結果を「予測データ」と表記する。
そして、K分割交差検証処理では、各訓練において得られた予測結果226~266を結合して結合予測データ(Concat Prediction Data)270を取得する。
このように、K分割交差検証処理によれば、図2に例示するように、1つの入力データ210を利用した機械学習処理をK個の部分処理として並列に実行でき、機械学習処理を効率化できる。
ここで、図2に例示する第1回~第5回の5(K)個のタスク(繰り返し処理)には、相互に依存関係がないため、それぞれのタスクが独立したワーカノード120によって並列に実行可能である。
図3は、機械学習システム100におけるK分割交差検証処理の一例を説明するための図である。機械学習システム100において、マスタノード110は、機械学習処理のジョブ受理後に、ジョブ定義(例えばプログラムのアノテーション)から並列実行可能なタスク部分及び後処理タスク部分を判断する。
マスタノード110は、ワーカノード120の使用可能リソース状況(例えば、CPU(Central Processing Unit)及びRAM(Random Access Memory)等)に従って、並列実行可能タスク及びタスク実行用コンテナの配置を決定する。コンテナは、例えば、ワーカノード120上でタスクを実行するためのプロセスと捉えられてもよい。マスタノード110は、ワーカノード120にタスク実行のためのコンテナの起動を指示する。図3の例では、マスタノード110は、入力データ210を用いた交差検証処理のジョブを5(K)個の並列タスクに分割し、ワーカノード#0~#4のそれぞれに並列タスク実行のためのコンテナ228、238、248、258、268の起動を指示する。当該指示は、入力データ210の配布を含む。
ワーカノード#0~#4は、対応するコンテナ228、238、248、258、268の起動及び実行において、図2に示す対応する第1回~第5回の処理をパイプラインとして並列に実行する。
マスタノード110は、ワーカノード120のコンテナでのタスク実行完了を待ち合わせ、全ての並列タスクの実行完了後に、実行結果を結合するために、判定結果を結合する後処理タスクを実行する。例えば、マスタノード110は、後処理タスクにおいて、予測結果226、236、246、256、266を集約し、結合予測データ270を生成して、パラメータ等の算出に利用する。また、マスタノード110は、ジョブ実行の完了後に、コンテナの停止及び削除をワーカノード120に指示する。
ここで、図1に示す機械学習システム100において、パイプラインの処理中に、クラスタを形成するノードのうちの少なくとも1つ、例えばワーカノード120に障害が発生した場合を想定する。
ワーカノード120(例えばワーカノード#0)に異常が発生した場合、ワーカノード#0における並列タスクが完了せず、機械学習処理が正常に完了しなくなる。そこで、例えば、マスタノード110は、全てのワーカノード120に指示した並列タスクの実行指示をキャンセルし、実行指示を再発行する。クラスタを形成するノードの数に比例して、ワーカノード120の障害発生によりパイプライン処理が中断する可能性が高くなる。
このように、並列して実行されるパイプライン(部分処理)のうちの少なくとも1つに異常が発生すると、当該パイプラインを他のワーカノード120に実行させることにより機械学習処理の処理時間が増加することになる。或いは、機械学習処理自体が正常に完了せず、機器学習処理機能の正常動作が困難となる。また、複数のワーカノード120で同一の処理が実行されることで、クラスタのCPU、RAM等のリソースが無駄に利用されることになる。換言すれば、機械学習処理の分散(並列)実行の処理効率が低下することになる。
そこで、第1実施形態では、機械学習システムにおいて複数のノードで分散して実行される機械学習処理の効率を向上させる手法を説明する。
〔1-2〕第1実施形態に係る機械学習システムの説明
まず、第1実施形態に係る機械学習システム1について説明する。図4~図7は、第1実施形態に係る機械学習システム1の動作例を説明するための図である。図4~図7に示すように、機械学習システム1は、マスタノード2、複数のノード3、共有ストレージ4、及び、共有DB(Database)5を備えてよい。
まず、第1実施形態に係る機械学習システム1について説明する。図4~図7は、第1実施形態に係る機械学習システム1の動作例を説明するための図である。図4~図7に示すように、機械学習システム1は、マスタノード2、複数のノード3、共有ストレージ4、及び、共有DB(Database)5を備えてよい。
以下、機械学習システム1は、入力データを5(K)個に分割して得られるデータセットごとに、交差検証用の機械学習モデルを構築するための並列実行パイプラインを実行するものとする。交差検証処理は、入力データを分割して得られる複数のデータのうちの訓練用データと評価用データとの組み合わせがノード3間で互いに異なるように複数のデータを利用してモデルの機械学習を行なう処理である。
マスタノード2は、機械学習処理の実行を制御する制御ノードの一例である。マスタノード2は、受信したジョブに応じた制御を行なうジョブスケジューラ20Aと、交差検証を用いる機械学習処理のジョブに応じてジョブスケジューラ20Aにより起動され、交差検証処理を実行するコンテナ20Bとを備えてよい。
コンテナ20Bは、タスク20C及びタスク20Dを備えてよい。タスク20Cは、入力データを所定の並列数に分割し、複数のノード3のそれぞれに並列タスクの実行(各モデル構築)を指示してよい(図4の破線矢印参照)。タスク20Dは、複数のノード3のそれぞれによる並列タスク完了した場合、共有ストレージ4に格納された複数の出力データに基づき、機械学習処理、例えば後処理タスクを実行してよい(図4の実線矢印参照)。
複数のノード3は、機械学習処理の少なくとも一部分である部分処理をそれぞれが実行する複数の実行ノードの一例である。ノード3は、例えばワーカノードであり、タスク20Cからの指示に応じて自ノード3でのタスク(パイプライン)の実行を制御するタスクスケジューラ30Aと、タスクスケジューラ30Aにより起動され、タスクを実行するコンテナ30Bとを備えてよい。
ノード3が実行するパイプラインでは、サブタスク30C~30E(図4では「サブタスク#0」~「サブタスク#2」と表記)が実行されてよい。
サブタスク#0は、データ30Fを入力され、データ30Fを変換して得られるデータ30Gを出力する「データ変換」タスクである。サブタスク#1は、サブタスク#0の出力であるデータ30Gを入力され、データ30Gを利用した訓練により得られる機械学習モデル(例えば判定モデル)をデータ30Hとして出力する「モデル生成」タスクである。サブタスク#2は、サブタスク#1の出力であるデータ30H(機械学習モデル)を入力され、データ30Hの評価を行ない得られる評価結果(予測結果;判定結果)をデータ30Iとして出力する「モデル評価(判定)」タスクである。
共有ストレージ4は、マスタノード2及び複数のノード3のそれぞれに共有される記憶(ストレージ)領域である。共有ストレージ4は、例えば、マスタノード2及び複数のノード3のそれぞれからアクセス可能な種々の装置であってよく、一例として、クラスタを形成するノードの1つであってもよいし、クラスタとは別体のストレージ装置であってもよい。
第1実施形態では、各ノード3は、パイプラインの各ステージ(サブタスク30C~30E)において入力されるデータ及び出力されるデータ(データ30F~30I;以下、「入出力データ」と表記する場合がある)を共有ストレージ4に格納する。図4には、ノード#0及び#1のデータ30F~30Iと同一の入出力データ40が共有ストレージ4に格納される例を示している。例えば、背景(網掛け、斜線等)が同一であるデータ30F~30Iと入出力データ40との組は、同一のデータである。なお、ノード#2~#4のデータ30F~30Iについても、入出力データ40として共有ストレージ4に格納されてよい。
図5の説明に移り、例えば、ノード3は、各サブタスク30C~30Eにデータが入力される都度、及び、各サブタスク30C~30Eからデータが出力される都度、当該データを共有ストレージ4に格納してよい。
なお、図5に示すデータ30G(30H)のように、前後するサブタスク#0及び#1間(#1及び#2間)では、前段のサブタスク#0(#1)の出力と後段のサブタスク#1(#2)の入力とが同一のデータになることがある。このように、サブタスクの入力及び出力のデータが重複する場合は、重複を排除した1つの入出力データ(図5の例ではデータ30G、30H等)が共有ストレージ4に格納されてよい。
共有DB5は、ノード3ごとのパイプラインの各ステージにおけるサブタスクの進捗状況を示す進捗管理情報50を格納するDBである。共有DB5は、例えば、マスタノード2及び複数のノード3のそれぞれからアクセス可能な種々の装置により実現されてよい。例えば、共有DB5は、クラスタを形成するノードの1つにより実現されてもよいし、クラスタとは別体のストレージ装置により実現されてもよい。また、共有DB5は、共有ストレージ4と共通のノード又はストレージ装置により実現されてもよい。
換言すれば、共有ストレージ4及び共有DB5は、マスタノード2及び複数のノード3のそれぞれからアクセス可能な記憶領域の一例である。当該「記憶領域」は、図5に例示するように互いに異なるノード又はストレージ装置であってもよいし、同一のノード又はストレージ装置であってもよい。
進捗管理情報50は、パイプラインに含まれる順序付けられた複数の処理(サブタスク30C~30E)の実行状態を入力データ21aごとに管理するための管理情報の一例である。例えば、進捗管理情報50は、ノード3ごとに、複数のサブタスク30C~30Eの各々の出力データ21bの共有ストレージ4における格納位置に関する情報と、複数のサブタスク30C~30Eの各々の進捗状況を示す情報と、を含んでよい。
図5に示すように、進捗管理情報50は、例示的に、「パイプライン」、「タスク」、「入力」、「出力」、及び、「状態」の項目を含んでよい。「パイプライン」は、ジョブ及びパイプラインの識別情報の一例であり、例えば、第1ジョブの並列タスクを実行する第1ノード(ノード#0)を示す“Job1-1”等であってよい。「タスク」は、サブタスク30C~30Eの識別情報の一例である。
「入力」及び「出力」のそれぞれは、当該「タスク」において入力されるデータ及び出力されるデータの識別情報の一例である。「入力」及び「出力」のそれぞれには、共有ストレージ4に格納された当該データの格納位置に関する情報が設定されてよい。格納位置に関する情報としては、例えば、ファイルポインタ、ファイルパス、ファイル名等が挙げられる。図5の例では、「データ変換」のタスク30Cの入出力データとして、「入力」は“file1-1”であり、「出力」は“file1-2”である。
「状態」は、当該「タスク」の進捗状況を示す情報の一例である。「状態」には、例えば、「タスク」の完了を示す“完了(Complete)”、「タスク」の処理中を示す“処理中(Processing)”、「タスク」が未実行であることを示す“未実行(Pending)”等が設定されてよい。
なお、図5には、進捗管理情報50がテーブル形式である場合を例に挙げるが、これに限定されるものではなく、DB、配列等の種々のデータ形式であってもよい。また、進捗管理情報50に含まれる情報の少なくとも一部は、共有ストレージ4に格納される入出力データ40に付加されてもよい。或いは、進捗管理情報50に含まれる情報の少なくとも一部は、例えば、共有ストレージ4における入出力データ40のファイル名、ファイルパス等に含められてもよい。共有ストレージ4における入出力データ40からサブタスク30C~30Eの進捗情報を取得可能である場合、進捗管理情報50及び共有DB5が機械学習システム1から省略される構成が許容されてもよい。
ノード3は、マスタノード2からモデル構築開始の実行指示(図5の破線矢印参照)に応じて実行するパイプラインにおいて、各ステージの進捗に関する情報を共有DB5に保存する。
なお、進捗管理情報50には、マスタノード2により、各ノード3に実行させる複数のステージ(サブタスク30C~30E)のエントリが設定されてよい。一例として、マスタノード2は、進捗管理情報50に対して、ノード3ごとに、ノード3に実行させるタスクと、入力データ(例えば1番目のステージ)とに応じたエントリを生成してよい。また、マスタノード2は、タスクが実行されていないエントリの「状態」に“未実行”を設定してよい。
例えば、ノード3は、サブタスク30C~30Eを開始する際に、進捗管理情報50における実行対象のタスクのエントリについて、「状態」を“処理中”に設定してよい。
ノード3は、サブタスク30C~30Eが完了する都度、進捗管理情報50の対応する「タスク」のエントリに、出力データに応じた「出力」を設定するとともに、「状態」を“完了”に設定する。また、ノード3は、次に実行する「タスク」の「入力」に、完了した「タスク」の「出力」と同じ情報を設定する。さらに、ノード3は、サブタスクが完了したことをマスタノード2に通知してよい(図5の実線矢印参照)。
以上のように、マスタノード2は、パイプラインの入力データ21aと、進捗管理情報50と、を共有ストレージ4及び共有DB5に格納する。
また、複数のノード3のそれぞれは、共有ストレージ4及び共有DB5に格納された入力データ21a及び進捗管理情報50に基づくパイプラインの実行において、共有ストレージ4及び共有DB5にデータを格納する。例えば、ノード3は、複数のサブタスク30C~30Eの各々から出力される出力データ21bと、複数のサブタスク30C~30Eの各々の実行状態を設定した進捗管理情報50と、を共有ストレージ4及び共有DB5に格納する。
次に、パイプライン実行中のノード3に障害が発生した場合を想定する。例えば、図6に示すように、ノード#0のサブタスク30Eの実行中にノード#0に障害が発生し、サブタスク30Eの処理が中断した場合を例に挙げて説明する。ノード#0は、複数のサブタスク30C~30Eのうちのいずれかの処理の実行中に障害が発生した第1実行ノードの一例である。
なお、障害発生時点では、共有ストレージ4にはノード#0に対応する入出力データ40としてデータ30F、30G、30Hが格納されており、共有DB5の進捗管理情報50には、サブタスク30Eの「状態」が“処理中”に設定されているものとする。
図6に例示するように、マスタノード2は、ノード#0の障害発生を検出すると、フェイルオーバ先のノード#5に、ノード#0で中断された(未完了の)サブタスク30Eの引き継ぎを実行させるためのコンテナ30Bを起動させる。ノード#5は、並列タスクを実行する複数のノード#0~#4とは異なるノード3であり、第2実行ノードの一例である。
ノード#5は、コンテナ30Bを起動し、ノード#0が最後に共有ストレージ4に格納した入出力データ40を利用して、ノード#0において中断されたステージからジョブ処理(サブタスク30E)を実行する。ノード#5は、サブタスク30Eの結果となるデータ30Iを共有ストレージ4に格納する。
次に、図7を参照して、ノード3に障害が発生した場合の詳細な動作の一例を説明する。ノード#0は、サブタスク30Dが完了してからサブタスク30Eの処理の開始後までの期間において、データ30Hを共有ストレージ4に格納する。また、ノード#0は、サブタスク30Eの処理を開始する際に、進捗管理情報50のサブタスク30Eのエントリに対して「状態」を“処理中”に設定し(矢印A参照)、共有DB5に格納する(矢印B参照)。その後、サブタスク30Eの処理中にノード#0に障害が発生したとする。
マスタノード2は、ノード#0の障害発生を検出すると、共有DB5を参照して、ノード#0のサブタスク30Eが処理中であることを検出し、代替となるノード#5に対して、ノード#0の中断されたジョブ処理の実行(切り替え)を指示する(矢印C参照)。例えば、マスタノード2は、ノード#5に対して、ノード#0の進捗管理情報50の情報を含む、並列タスクの実行指示を送信してよい。当該実行指示は、ノード#5において、コンテナ30Bの起動指示として扱われてよい。
ノード#5は、コンテナ30Bを起動すると、切り替え元(フェイルオーバ元)であるノード#0の進捗管理情報50を参照する(矢印D参照)。ノード#5は、例えば、「状態」が“完了”であるステージ(サブタスク30C、30D)をスキップして、「状態」が“処理中”であるステージ(サブタスク30E)を特定し、サブタスク30Eの「入力」のデータ30Hを共有ストレージ4から取得する。すなわち、ノード#5は、マスタノード2から受信した情報が示す進捗管理情報50における未完了の処理から順に、ノード#0が担当する並列タスク(パイプライン)を実行する。
そして、ノード#5は、データ30Hに基づきサブタスク30Eを実行し、サブタスク30Eの完了後に、「出力」のデータ30Iを共有ストレージ4に格納するとともに(矢印E参照)、マスタノード2に処理の完了を通知する(実線矢印参照)。
なお、ノード#5は、他のノード#1~#4と同様に、サブタスク30C~30Eの開始及び完了の都度、進捗管理情報50を更新してよい。例えば、ノード#5は、ノード#0に対応する進捗管理情報50を更新してもよいし、ノード#0に対応する進捗管理情報50を無効化した上でノード#5に対応する進捗管理情報50を生成し更新してもよい。
このように、第1実施形態に係るマスタノード2は、ノード#0の進捗管理情報50における複数のサブタスクの各々の実行状態と、共有ストレージ4に格納されたノード#0の出力データとに基づき、ノード#0において未完了の処理をノード#5に実行させる。
以上のように、第1実施形態に係る機械学習システム1によれば、複数のノード3の各々は、パイプライン処理中に、タスク実行の進捗情報及び入出力データ40を共有DB5及び共有ストレージ4に定期に保存することができる。これにより、パイプライン処理中に障害発生によってノード3が停止した場合であっても、他のノード3が共有DB5及び共有ストレージ4から障害発生したタスクの進捗情報及び入出力データ40(入力データ)を読み出して、未完了タスクから処理を継続できる。換言すれば、障害が発生したノード3が実行する未完了の処理を他のノード3が適切に引き継ぐことができる。
これにより、ノード3の障害発生による機械学習処理の処理時間の増加を抑制することができる。また、フェイルオーバ先のノード3は、障害ノード3で処理が完了したステージ(サブタスク30C、30D)の実行をスキップし、未完了のステージ(サブタスク30E)に限定して処理を実行できる。このように、不要な処理の実行を抑制できるため、クラスタのCPU、RAM等のリソースの無駄な利用を抑制できる。従って、機械学習処理の分散(並列)実行の処理効率を向上させることができる。
〔1-3〕機械学習システムの機能構成例
次に、第1実施形態に係る機械学習システム1の機能構成例を説明する。図8は、第1実施形態に係る機械学習システム1の機能構成例を示すブロック図である。図8に示すように、機械学習システム1は、例示的に、マスタノード2、複数のノード3、共有ストレージ4、及び、共有DB5を備えてよい。共有ストレージ4及び共有DB5は、図4~図7の例と同様に、それぞれ入出力データ40及び進捗管理情報50を格納してよい。
次に、第1実施形態に係る機械学習システム1の機能構成例を説明する。図8は、第1実施形態に係る機械学習システム1の機能構成例を示すブロック図である。図8に示すように、機械学習システム1は、例示的に、マスタノード2、複数のノード3、共有ストレージ4、及び、共有DB5を備えてよい。共有ストレージ4及び共有DB5は、図4~図7の例と同様に、それぞれ入出力データ40及び進捗管理情報50を格納してよい。
(マスタノード2の機能構成例)
マスタノード2は、メモリ部21、ジョブ制御部22、異常検出部23、及び、ノード制御部24を備えてよい。
マスタノード2は、メモリ部21、ジョブ制御部22、異常検出部23、及び、ノード制御部24を備えてよい。
ジョブ制御部22、異常検出部23、及び、ノード制御部24は、制御部25の一例である。図4~図7に例示するジョブスケジューラ20A及びコンテナ20Bの機能は、ジョブ制御部22、異常検出部23、及び、ノード制御部24の少なくとも一部の機能により実現されてよい。
メモリ部21は、記憶領域の一例であり、マスタノード2による処理に用いられる種々の情報を記憶する。図8に示すように、メモリ部21は、例示的に、入力データ21a、複数の出力データ21b、及び、処理済データ21cを記憶可能であってよい。
ジョブ制御部22は、ジョブの実行指示を受け付け、実行指示におけるジョブ定義に基づき、機械学習システム1におけるジョブの実行を制御する。
例えば、ジョブ定義が並列実行可能なジョブを示す場合、ジョブ制御部22は、クラスタのリソースの空き状況等に基づき並列タスクを実行させるノード3を特定する。そして、ジョブ制御部22は、ノード3の数に応じて、実行指示に含まれる入力データ21aを分割し、各ノード3に実行させる並列タスクの最初のステージ(サブタスク30C)の入出力データ40(入力データ)として共有ストレージ4に格納してよい。入力データ21aの分割数Kは、例えば、並列タスクを実行させるノード3の数と同じであってもよいし、異なってもよい。
また、ジョブ制御部22は、分割した入力データ21aを各ノード3が処理するための進捗情報としてノード3ごとの進捗管理情報50を生成して共有DB5に格納し、各ノード3に対して、並列タスクの実行指示(コマンド)を送信する。進捗管理情報50には、例えば、各ノード3に実行させる複数のステージのエントリが設定されてよい。実行指示には、ノード3ごとの進捗管理情報50に関する情報が含まれてよい。進捗管理情報50に関する情報とは、ノード3の進捗管理情報50そのものであってもよいし、共有DB5におけるノード3の進捗管理情報50を特定する情報であってもよい。
上述したジョブ制御部22の処理は、図4に示すタスク20Cの処理の一例である。また、ジョブ制御部22は、図4に示すタスク20Dの処理の一例として、各ノード3から並列タスクの完了(最後のステージの完了)を通知されると、後処理タスクを実行し、ジョブの実行指示に対して完了を応答してよい。
例えば、ジョブ制御部22は、後処理タスクにおいて、共有ストレージ4から最後のステージの入出力データ40を取得し、出力データ21bとしてメモリ部21に格納してよい。そして、ジョブ制御部22は、複数の出力データ21bに基づく所定の処理(後処理)を実行することで処理済データ21cを生成し、メモリ部21に格納してよい。
異常検出部23は、並列タスクを実行させる複数のノード3のそれぞれにおける異常の発生を検出する。ノード3の異常の発生の検出手法としては、既知の種々の手法が利用されてよい。一例として、マスタノード2は、各ノード3との間のハートビート(Heartbeat)通信の停止を検出した場合に、ハートビート通信が停止したノード3の異常発生を検出してよい。或いは、マスタノード2は、ノード3のハードウェア(HW)若しくはソフトウェア(SW)、又は、ノード3以外の監視装置又は監視プログラムからの、ノード3の異常発生を通知する信号を受信した場合に、ノード3の異常発生を検出してもよい。
ノード制御部24は、異常検出部23により異常発生が検出されたノード3(以下、「障害ノード3」と表記する)による未完了の並列タスクを処理の引き継ぎ先のノード3(以下、「代替ノード3」と表記する)に引き継ぐ制御を行なう。
例えば、ノード制御部24は、共有DB5から障害ノード3の進捗管理情報50を取得し、全ステージの実行が完了していない場合に、代替ノード3に対して、並列タスクの実行指示(コマンド)を送信する。実行指示には、ジョブ制御部22がノード3に送信する実行指示と同様に、進捗管理情報50に関する情報が含まれてよい。
(ノード3の機能構成例)
ノード3は、メモリ部31、タスク制御部32、進捗管理部33、及び、応答部34を備えてよい。
ノード3は、メモリ部31、タスク制御部32、進捗管理部33、及び、応答部34を備えてよい。
タスク制御部32、進捗管理部33、及び、応答部34は、制御部35の一例である。図4~図7に例示するタスクスケジューラ30A及びコンテナ30Bの機能は、タスク制御部32、進捗管理部33、及び、応答部34の少なくとも一部の機能により実現されてよい。
メモリ部31は、記憶領域の一例であり、ノード3による処理に用いられる種々の情報を記憶する。図8に示すように、メモリ部31は、例示的に、複数の入出力データ31aを記憶可能であってよい。
タスク制御部32は、マスタノード2からタスク(並列タスク)の実行指示を受け付け、実行指示に応じて、ノード3におけるタスクの実行を制御する。例えば、タスク制御部32は、実行指示で指定される複数のステージを、進捗管理情報50のエントリ順に実行する。
ステージの実行において、タスク制御部32は、例えば、共有DB5から進捗管理情報50を取得し、未実行のステージ(サブタスク)に対応する入出力データ31a(入力データ)を共有ストレージ4から取得する。そして、タスク制御部32は、取得した入出力データ31aに基づき未実行のサブタスクを実行し、サブタスクの実行結果である入出力データ31a(出力データ)を共有ストレージ4に格納する。
進捗管理部33は、タスク制御部32によるステージの処理の実行状態に応じて、進捗管理情報50を更新する。例えば、進捗管理部33は、ステージの処理が実行される際に、進捗管理情報50の実行対象のステージのエントリの「状態」を“処理中”に設定し、当該ステージの処理が完了すると、エントリの「状態」を“完了”に設定する。
応答部34は、タスク制御部32によるステージの処理が完了する都度、マスタノード2に対して、ステージの処理の実行完了を通知する。
〔1-4〕機械学習システムの動作例
次に、図9~図11を参照して、上述した第1実施形態に係る機械学習システム1の動作例を説明する。
次に、図9~図11を参照して、上述した第1実施形態に係る機械学習システム1の動作例を説明する。
〔1-4-1〕ジョブ実行処理
図9は、第1実施形態に係るマスタノード2によるジョブ実行処理の動作例を説明するためのフローチャートである。
図9は、第1実施形態に係るマスタノード2によるジョブ実行処理の動作例を説明するためのフローチャートである。
図9に例示するように、ジョブ制御部22は、ユーザが使用するコンピュータ等からジョブの実行指示を取得し(ステップS1)、実行指示のジョブ定義に基づき、並列実行可能なタスクがあるか否かを判定する(ステップS2)。
並列実行可能タスクがある場合(ステップS2でYES)、ジョブ制御部22は、実行指示に含まれる入力データ21aを分割し、分割した入力データ21aを入出力データ40として共有ストレージ4に格納する(ステップS3)。入力データ21aの分割数Kは、例えばノード3(ワーカノード)の数等に基づいて決定されてもよい。
ジョブ制御部22は、分割した入力データ21aを処理するための進捗管理情報50を生成し、共有DB5に格納する(ステップS4)。また、ジョブ制御部22は、共有DB5の進捗管理情報50に関する情報を含むタスクの実行指示(コマンド)を各ノード3に送信する(ステップS5)。
ジョブ制御部22は、全てのノード3から全ステージの実行完了の応答(通知)を受信すると、共有ストレージ4から全てのノード3の入出力データ40(出力データ21b)を取得する(ステップS6)。そして、ジョブ制御部22は、出力データ21bに基づき後処理を実行し、処理結果を出力して(ステップS7)、ジョブ実行処理が終了する。例えば、ジョブ制御部22は、処理結果の出力として、処理済データ21cをメモリ部21に格納してよい。
一方、ステップS2において、並列実行可能タスクがない場合(ステップS2でNO)、ジョブ制御部22は、実行指示に含まれる入力データ21aを分割し、分割した入力データ21aを入出力データ40として共有ストレージ4に格納する。また、ジョブ制御部22は、分割したデータを処理するための進捗管理情報50を共有DB5に格納する(ステップS8)。そして、ジョブ制御部22は、進捗管理情報50に基づき、各ステージを順番に実行し(ステップS9)、ジョブ実行処理が終了する。
〔1-4-2〕タスク実行処理
図10は、第1実施形態に係るノード3(ワーカノード)によるタスク実行処理の動作例を説明するためのフローチャートである。
図10は、第1実施形態に係るノード3(ワーカノード)によるタスク実行処理の動作例を説明するためのフローチャートである。
図10に例示するように、タスク制御部32は、マスタノード2からタスクの実行指示を取得する(ステップS11)。
タスク制御部32は、例えば、実行指示に含まれる進捗管理情報50に関する情報に基づき、未実行の最小ステージ番号を変数iに設定し、最終ステージ番号を定数Imaxに設定する(ステップS12)。未実行の最小ステージ番号は、例えば、進捗管理情報50のエントリのうちの、状態が未設定であるエントリの番号、又は、状態に“処理中”が設定されたエントリの番号であってよい。また、最終ステージ番号は、進捗管理情報50のエントリのうちの最終エントリの番号であってよい。
タスク制御部32は、共有DB5の進捗管理情報50からi番目のステージの状態を取得し(ステップS13)、i番目のステージの状態が“完了”か否かを判定する(ステップS14)。i番目のステージの状態が“完了”である場合(ステップS14でYES)、処理がステップS20に移行する。
一方、i番目のステージの状態が“完了”ではない場合(ステップS14でNO)、タスク制御部32は、共有ストレージ4からi番目のステージの入出力データ40(入力データ)を取得する(ステップS15)。
進捗管理部33は、共有DB5の進捗管理情報50における、i番目のステージの状態を“処理中”に設定する(ステップS16)。
タスク制御部32は、i番目のステージの処理を実行し、実行結果である出力データを入出力データ40として共有ストレージ4に格納する(ステップS17)。
進捗管理部33は、共有DB5の進捗管理情報50における、i番目のステージの状態を“完了”に設定する(ステップS18)。
応答部34は、マスタノード2にi番目のステージの実行完了を通知(応答)する(ステップS19)。
タスク制御部32は、i=Imaxかを判定し(ステップS20)、i=Imaxの場合(ステップS20でYES)、換言すれば、最終ステージの実行が完了した場合、タスク実行処理が終了する。
i=Imaxではない場合(ステップS20でNO)、タスク制御部32は、iに1を加算(インクリメント)し(ステップS21)、処理がステップS13に移行する。
〔1-4-3〕障害検出処理
図11は、第1実施形態に係るマスタノード2による障害検出処理の動作例を説明するためのフローチャートである。
図11は、第1実施形態に係るマスタノード2による障害検出処理の動作例を説明するためのフローチャートである。
図11に例示するように、異常検出部23は、ノード3(ワーカノード)の障害の発生を検出する(ステップS31)。
ノード制御部24は、共有DB5から障害ノード3の進捗管理情報50を取得し(ステップS32)、全ステージの実行が完了しているか否かを判定する(ステップS33)。例えば、ノード制御部24は、障害ノード3の進捗管理情報50における最終ステージのエントリの状態が“完了”か否かを判定してよい。
少なくとも1つのステージの実行が完了していない場合(ステップS33でNO)、ノード制御部24は、共有DB5における障害ノード3の進捗管理情報50に関する情報を含む実行指示を代替ノード3に送信し(ステップS34)、障害検出処理が終了する。実行指示を受信した代替ノード3は、図10に例示するタスク実行処理を実行する。このとき、代替ノード3は、障害ノード3の進捗管理情報50において未実行の最小ステージ番号から順に、図10に例示する処理に従ってタスクを実行する。
一方、全ステージの実行が完了している場合(ステップS33でYES)、ノード制御部24は、例えば、ノード3の状態を管理する情報において、障害ノード3の状態を異常として管理し(ステップS35)、障害検出処理が終了する。
〔2〕第2実施形態
〔2-1〕機械学習システムについて
図12は、第2実施形態の比較例に係る機械学習システム300の一例を説明するための図である。図12では、機械学習システム300が機械学習モデルのパラメータの最適化を行なう場合を例に挙げる。
〔2-1〕機械学習システムについて
図12は、第2実施形態の比較例に係る機械学習システム300の一例を説明するための図である。図12では、機械学習システム300が機械学習モデルのパラメータの最適化を行なう場合を例に挙げる。
マスタノード310は、同一の入力データ311を複数のワーカノード320のそれぞれに入力する。
複数のワーカノード320(ワーカノード#0~#3)のそれぞれは、複数のサブタスク321の実行において、同一の入力データ311に対して、互いに異なる機械学習用パラメータ(パラメータ#0~#3)を利用して機械学習モデルを作成する。
マスタノード310は、各ワーカノード320が生成した機械学習モデルの精度評価を実施し、最適な(最良な)モデルの選択312を実施する。このように、第2実施形態では、並列実行パイプラインは、入力データ21aと、複数のノード3間で互いに異なるパラメータと、を利用して機械学習モデルの最適化を行なうパラメータ最適化処理である。
ここで、複数のワーカノード320により並列実行されるパイプラインでは、同一のタスク処理が繰り返し実行され、クラスタのCPU、RAM等のリソースが無駄に利用されることがある。換言すれば、機械学習処理の分散(並列)実行の処理効率が低下する場合がある。
そこで、第2実施形態では、機械学習システムにおいて複数のノードで分散して実行される機械学習処理の効率を向上させる手法を説明する。
〔2-2〕第2実施形態に係る機械学習システムの説明
まず、第2実施形態に係る機械学習システム1’について説明する。図13及び図14は、第2実施形態に係る機械学習システム1’の動作例を説明するための図である。
まず、第2実施形態に係る機械学習システム1’について説明する。図13及び図14は、第2実施形態に係る機械学習システム1’の動作例を説明するための図である。
図13及び図14に示すように、機械学習システム1’は、第1ノードの一例であるマスタノード2’、複数の第2ノードの一例である複数のノード3、記憶装置の一例である共有ストレージ4、及び、共有DB5を備えてよい。なお、以下の説明において、特に言及しない構成、機能及び処理については、第1実施形態と同様である。
以下、機械学習システム1’は、機械学習モデルの最適化を実行するための並列実行パイプラインを、同一の入力データを利用して実行するものとする。
また、図13に示すように、「データ変換」のステージ(サブタスク30C)では、入力データ30F、及び、「データ変換」の処理内容の双方がパイプライン(ノード3)間で同一である。換言すれば、パラメータ最適化処理では、複数のステージのうちの先頭から1以上のステージが複数のノード3間で互いに同一である。
このため、第2実施形態では、複数のノード3のうちのいずれか1つのノード#0のパイプラインにおけるサブタスク30Cの変換結果(出力データ30G)を、複数のノード3のうちの残りのノード#1~#3のパイプラインで共有可能である。ここで、ノード#0は、複数のノード3のうちの複数のステージを実行する第1実行ノードの一例である。一方、ノード#1~#3は、複数のノード3のうちのノード#0とは異なる1以上の第2実行ノードの一例である。
そこで、第2実施形態では、マスタノード2’は、ジョブスケジューラ20A’及びコンテナ20B’のタスク20C’により、ノード#0のサブタスク30Cの出力データ30Gを、ノード#0~#3で利用できるように制御する。例えば、マスタノード2’は、出力データ30Gを共有ストレージ4を介してノード#0~#3で共有する。
このように、第2実施形態では、複数のノード3が実行するパイプラインに同一の処理が含まれる場合に、パイプライン処理の過程で生成される中間データを他のノード3で流用できるようにする。
これにより、ノード#0~#3でのサブタスク30Cの実行、換言すれば、不要な処理の実行を抑制できるため、クラスタのCPU、RAM等のリソースの無駄な利用を抑制できる。従って、機械学習処理の分散(並列)実行の処理効率を向上させることができる。
例えば、図14に示すように、マスタノード2’のジョブスケジューラ20A’は、ノード#0に対してモデル構築開始の実行指示を送信する(矢印A参照)。実行指示は、第1実施形態に係る実行指示と同様であってよく、例えば、進捗管理情報50に関する情報を含んでよい。
ノード#0は、第1実施形態と同様に、共有DB5の進捗管理情報50に対して、パイプラインの各実行ステージのエントリの情報を更新する(矢印B参照)。
マスタノード2’は、ノード#0によるパイプライン間で共通のサブタスク30Cの実行が完了すると、ノード#0以外のノード3のそれぞれの進捗管理情報50におけるサブタスク30Cのエントリを、ノード#0の処理結果と同様に更新する(矢印C参照)。以下の説明では、便宜上、ノード#0以外のノード3として、ノード#1を例に挙げるが、ノード#2及び#3についても同様である。例えば、マスタノード2’は、ノード#1の進捗管理情報50に対して、サブタスク30Cの「出力」をノード#0の変換結果“file1-2”に更新し、「状態」を“完了”に設定してよい。
マスタノード2’は、ノード#1(ノード#0以外のノード3のそれぞれ)に対してモデル構築開始の実行指示を送信する(矢印D参照)。
このように、マスタノード2’は、ノード#0による先頭から1以上のステージの完了を検出した場合、ノード#1~#3に対して、ノード#0の進捗管理情報50に基づき更新したノード#1~#3の進捗管理情報50の情報を送信する。
ノード#1は、実行指示に応じて、共有DB5からノード#1のパイプラインの進捗管理情報50を取得する(符号E参照)。進捗管理情報50では、「データ変換」のステージであるサブタスク30Cが完了しているため、ノード#1は、未完了である「モデル訓練」のステージ(サブタスク30D)から処理を実行する(矢印F参照)。換言すれば、ノード#1(#1~#3)は、マスタノード2’から受信した情報が示す進捗管理情報50における先頭から1以上のステージに続くステージから順に、並列タスクを実行する。
以上のように、ノード#0~#3のそれぞれの処理は、第1実施形態と同様に、進捗管理情報50に従って実行されてよい。
〔2-3〕機械学習システムの機能構成例
次に、第2実施形態に係る機械学習システム1’の機能構成例を説明する。図15は、第2実施形態に係る機械学習システム1’の機能構成例を示すブロック図である。図15に示すように、機械学習システム1’は、例示的に、マスタノード2’、複数のノード3、共有ストレージ4、及び、共有DB5を備えてよい。なお、複数のノード3、共有ストレージ4、及び、共有DB5は、第1実施形態と同様であってよい。
次に、第2実施形態に係る機械学習システム1’の機能構成例を説明する。図15は、第2実施形態に係る機械学習システム1’の機能構成例を示すブロック図である。図15に示すように、機械学習システム1’は、例示的に、マスタノード2’、複数のノード3、共有ストレージ4、及び、共有DB5を備えてよい。なお、複数のノード3、共有ストレージ4、及び、共有DB5は、第1実施形態と同様であってよい。
マスタノード2’は、メモリ部21、ジョブ制御部22’、異常検出部23、及び、ノード制御部24’を備えてよい。なお、マスタノード2’は、異常検出部23を備えない構成が許容されてもよい。
ジョブ制御部22’、異常検出部23、及び、ノード制御部24’は、制御部25’の一例である。図13及び図14に例示するジョブスケジューラ20A’及びコンテナ20B’の機能は、ジョブ制御部22’、異常検出部23、及び、ノード制御部24’の少なくとも一部の機能により実現されてよい。
ジョブ制御部22’は、ジョブの実行指示を受け付け、実行指示におけるジョブ定義に基づき、機械学習システム1におけるジョブの実行を制御する。
例えば、ジョブ定義が並列実行可能なジョブを示す場合、ジョブ制御部22’は、クラスタのリソースの空き状況等に基づき並列タスクを実行させるノード3を特定する。そして、ジョブ制御部22’は、最適化パラメータのセットを決定し、入力データ21aを入出力データ40(入力データ)として共有ストレージ4に格納してよい。
また、ジョブ制御部22’は、同一の入力データ21aを各ノード3が処理するための進捗情報としてノード3ごとの進捗管理情報50を生成して共有DB5に格納する。そして、ジョブ制御部22’は、複数のノード3のうちのいずれか1つの代表ノード3を選択し、選択した代表ノード3に対して、並列タスクの実行指示(コマンド)を送信する。実行指示は、第1実施形態に係る実行指示と同様であってよい。なお、ジョブ制御部22’は、例えば、ノード3の識別番号が小さいノード3、処理性能が高い(割り当てられたリソース量が多い)ノード3等を代表ノード3として選択してよい。上述したジョブ制御部22’の処理は、図13に示すタスク20C’の処理の一例である。
ノード制御部24’は、代表ノード3による、所定のステージの実行完了応答の受信に応じて、当該所定のステージから先のステージの実行を代表ノード3以外のノード3に開始させる制御を行なう。所定のステージとしては、第2実施形態では、「データ変換」ステージ(サブタスク30C)が挙げられるが、これに限定されるものではなく、ジョブ定義に応じた種々のステージが挙げられる。所定のステージは、複数のステージであってもよい。
例えば、ノード制御部24’は、所定のステージの実行完了応答を受信すると、代表ノード3以外の1以上のノード3のそれぞれについて、共有DB5の進捗管理情報50を代表ノード3の進捗管理情報50に応じて更新する。例えば、ノード制御部24’は、代表ノード3以外の1以上のノード3のそれぞれの進捗管理情報50における所定のステージ以前の「状態」を“完了”に設定し、所定のステージの「出力」に代表ノード3の所定のステージの出力データの情報を設定する。
そして、ノード制御部24’は、代表ノード3以外の1以上のノード3のそれぞれに対して、並列タスクの実行指示(コマンド)を送信する。実行指示は、第1実施形態に係る実行指示と同様であってよい。
〔2-4〕機械学習システムの動作例
次に、図16及び図17を参照して、上述した第2実施形態に係る機械学習システム1’の動作例を説明する。以下の説明において、既述の処理と同一の符号(ステップ)を付した処理は、既述の処理と同様であるため、説明を省略する。
次に、図16及び図17を参照して、上述した第2実施形態に係る機械学習システム1’の動作例を説明する。以下の説明において、既述の処理と同一の符号(ステップ)を付した処理は、既述の処理と同様であるため、説明を省略する。
〔2-4-1〕ジョブ実行処理
図16は、第2実施形態に係るマスタノード2’によるジョブ実行処理の動作例を説明するためのフローチャートである。図16は、図9のステップS3~S5をステップS41~S45に置き換え、ステップS8をステップS46に置き換えたものである。
図16は、第2実施形態に係るマスタノード2’によるジョブ実行処理の動作例を説明するためのフローチャートである。図16は、図9のステップS3~S5をステップS41~S45に置き換え、ステップS8をステップS46に置き換えたものである。
図16に例示するように、ジョブ制御部22’は、並列実行可能タスクがある場合(ステップS2でYES)、最適化パラメータのセットを決定する(ステップS41)。
ジョブ制御部22’は、実行指示に含まれる入力データ21aを入出力データ40として共有ストレージ4に格納する(ステップS42)。
ジョブ制御部22’は、同一の入力データ21aを処理するための進捗管理情報50を生成し、共有DB5に格納する(ステップS43)。また、ジョブ制御部22’は、共有DB5の進捗管理情報50に関する情報を含むタスクの実行指示(コマンド)を代表ノードに送信する(ステップS44)。実行指示を受信した代表ノード3は、図10に例示するタスク実行処理を実行する。
そして、ノード制御部24’は、ステージ完了処理を実行し(ステップS45)、処理がステップS6に移行する。
一方、並列実行可能タスクがない場合(ステップS2でNO)、ジョブ制御部22’は、実行指示に含まれる入力データ21aを入出力データ40として共有ストレージ4に格納する。また、ジョブ制御部22’は、入力データ21aを処理するための進捗管理情報50を共有DB5に格納する(ステップS46)。
〔2-4-2〕ステージ完了処理
図17は、図16のステップS45に示すステージ完了処理の動作例を説明するためのフローチャートである。
図17は、図16のステップS45に示すステージ完了処理の動作例を説明するためのフローチャートである。
図17に例示するように、ノード制御部24’は、代表ノード3から、代表ノード3の所定ステージの実行完了の応答を受信すると(ステップS51)、共有DB5から、代表ノード3の進捗管理情報50を取得する(ステップS52)。
ノード制御部24’は、共有DB5から、代表ノード3以外の他の各ノード3の進捗管理情報50を取得し、他の各ノード3に未実行のタスクがあるか否かを判定する(ステップS53)。
他のノード3に未実行のタスクがない場合(ステップS53でNO)、処理が終了する。一方、他の各ノード3に未実行のタスクがある場合(ステップS53でYES)、ノード制御部24’は、未実行タスクの進捗管理情報50を代表ノード3の進捗管理情報50に応じて更新する(ステップS54)。
そして、ノード制御部24’は、共有DB5における進捗管理情報50に関する情報を含む実行指示を他の各ノード3のそれぞれに送信し(ステップS55)、ステージ完了処理が終了する。実行指示を受信した他の各ノード3は、図10に例示するタスク実行処理を実行する。このとき、各ノード3は、代表ノード3の進捗管理情報50に応じて更新された進捗管理情報50において未実行の最小ステージ番号から順に、図10に例示する処理に従ってタスクを実行する。なお、代表ノード3は、図16のステップS44で受信した実行指示に従い、図10に例示するタスク実行処理を実行している。このため、ステップS55では、代表ノード3と他の各ノード3とが並行して互いに異なるタスクを実行することになる。
〔3〕ハードウェア構成例
第1実施形態に係るマスタノード2、第2実施形態に係るマスタノード2’、並びに、第1及び第2実施形態に係るノード3のそれぞれを実現する装置は、仮想サーバ(VM;Virtual Machine)であってもよいし、物理サーバであってもよい。また、マスタノード2及び2’、並びに、ノード3のそれぞれの機能は、1台のコンピュータにより実現されてもよいし、2台以上のコンピュータにより実現されてもよい。さらに、マスタノード2及び2’、並びに、ノード3の機能のうちの少なくとも一部は、クラウド環境により提供されるHWリソース及びネットワーク(NW)リソースを用いて実現されてもよい。
第1実施形態に係るマスタノード2、第2実施形態に係るマスタノード2’、並びに、第1及び第2実施形態に係るノード3のそれぞれを実現する装置は、仮想サーバ(VM;Virtual Machine)であってもよいし、物理サーバであってもよい。また、マスタノード2及び2’、並びに、ノード3のそれぞれの機能は、1台のコンピュータにより実現されてもよいし、2台以上のコンピュータにより実現されてもよい。さらに、マスタノード2及び2’、並びに、ノード3の機能のうちの少なくとも一部は、クラウド環境により提供されるHWリソース及びネットワーク(NW)リソースを用いて実現されてもよい。
図18は、コンピュータ10のHW構成例を示すブロック図である。マスタノード2及び2’、並びに、ノード3は、互いに同様のHW構成を備えてよい。以下、マスタノード2及び2’、並びに、ノード3のそれぞれの機能を実現するHWリソースとして、コンピュータ10を例に挙げて説明する。マスタノード2及び2’、並びに、ノード3のそれぞれの機能を実現するHWリソースとして、複数のコンピュータが用いられる場合は、各コンピュータが図18に例示するHW構成を備えてよい。
図18に示すように、コンピュータ10は、HW構成として、例示的に、プロセッサ10a、メモリ10b、記憶部10c、IF(Interface)部10d、I/O(Input / Output)部10e、及び読取部10fを備えてよい。
プロセッサ10aは、種々の制御や演算を行なう演算処理装置の一例である。プロセッサ10aは、コンピュータ10内の各ブロックとバス10iで相互に通信可能に接続されてよい。なお、プロセッサ10aは、複数のプロセッサを含むマルチプロセッサであってもよいし、複数のプロセッサコアを有するマルチコアプロセッサであってもよく、或いは、マルチコアプロセッサを複数有する構成であってもよい。
プロセッサ10aとしては、例えば、CPU、MPU、GPU、APU、DSP、ASIC、FPGA等の集積回路(IC;Integrated Circuit)が挙げられる。なお、プロセッサ10aとして、これらの集積回路の2以上の組み合わせが用いられてもよい。MPUはMicro Processing Unitの略称である。GPUはGraphics Processing Unitの略称であり、APUはAccelerated Processing Unitの略称である。DSPはDigital Signal Processorの略称であり、ASICはApplication Specific ICの略称であり、FPGAはField-Programmable Gate Arrayの略称である。
メモリ10bは、種々のデータやプログラム等の情報を格納するHWの一例である。メモリ10bとしては、例えばDRAM(Dynamic RAM)等の揮発性メモリ、及び、PM(Persistent Memory)等の不揮発性メモリ、の一方又は双方が挙げられる。
記憶部10cは、種々のデータやプログラム等の情報を格納するHWの一例である。記憶部10cとしては、HDD(Hard Disk Drive)等の磁気ディスク装置、SSD(Solid State Drive)等の半導体ドライブ装置、不揮発性メモリ等の各種記憶装置が挙げられる。不揮発性メモリとしては、例えば、フラッシュメモリ、SCM(Storage Class Memory)、ROM(Read Only Memory)等が挙げられる。
なお、図8及び図15に示すメモリ部21及び31、共有ストレージ4、並びに、共有DB5のうちの少なくとも1つは、メモリ10b及び記憶部10cの一方又は双方が有する記憶領域により実現されてよい。
また、記憶部10cは、コンピュータ10の各種機能の全部若しくは一部を実現するプログラム10g(機械学習プログラム)を格納してよい。例えば、マスタノード2又は2’のプロセッサ10aは、記憶部10cに格納されたプログラム10gをメモリ10bに展開して実行することにより、図8又は図15に例示するマスタノード2又は2’(例えば制御部25又は25’)としての機能を実現できる。また、例えば、ノード3(ワーカノード)のプロセッサ10aは、記憶部10cに格納されたプログラム10gをメモリ10bに展開して実行することにより、図8又は図15に例示するノード3(例えば制御部35)としての機能を実現できる。
IF部10dは、ネットワークの一方又は双方との間の接続及び通信の制御等を行なう通信IFの一例である。例えば、IF部10dは、イーサネット(登録商標)等のLAN(Local Area Network)、或いは、FC(Fibre Channel)等の光通信等に準拠したアダプタを含んでよい。当該アダプタは、無線及び有線の一方又は双方の通信方式に対応してよい。例えば、マスタノード2又は2’、ノード3、共有ストレージ4及び共有DB5のそれぞれは、IF部10d及び図示しないネットワークを介して、相互に通信可能に接続されてよい。また、例えば、プログラム10gは、当該通信IFを介して、ネットワークからコンピュータ10にダウンロードされ、記憶部10cに格納されてもよい。
I/O部10eは、入力装置、及び、出力装置、の一方又は双方を含んでよい。入力装置としては、例えば、キーボード、マウス、タッチパネル等が挙げられる。出力装置としては、例えば、モニタ、プロジェクタ、プリンタ等が挙げられる。
読取部10fは、記録媒体10hに記録されたデータやプログラムの情報を読み出すリーダの一例である。読取部10fは、記録媒体10hを接続可能又は挿入可能な接続端子又は装置を含んでよい。読取部10fとしては、例えば、USB(Universal Serial Bus)等に準拠したアダプタ、記録ディスクへのアクセスを行なうドライブ装置、SDカード等のフラッシュメモリへのアクセスを行なうカードリーダ等が挙げられる。なお、記録媒体10hにはプログラム10gが格納されてもよく、読取部10fが記録媒体10hからプログラム10gを読み出して記憶部10cに格納してもよい。
記録媒体10hとしては、例示的に、磁気/光ディスクやフラッシュメモリ等の非一時的なコンピュータ読取可能な記録媒体が挙げられる。磁気/光ディスクとしては、例示的に、フレキシブルディスク、CD(Compact Disc)、DVD(Digital Versatile Disc)、ブルーレイディスク、HVD(Holographic Versatile Disc)等が挙げられる。フラッシュメモリとしては、例示的に、USBメモリやSDカード等の半導体メモリが挙げられる。
上述したコンピュータ10のHW構成は例示である。従って、コンピュータ10内でのHWの増減(例えば任意のブロックの追加や削除)、分割、任意の組み合わせでの統合、又は、バスの追加若しくは削除等は適宜行なわれてもよい。例えば、I/O部10e及び読取部10fの少なくとも一方は、省略されてもよい。
〔4〕その他
上述した第1及び第2実施形態に係る技術は、以下のように変形、変更して実施することができる。
上述した第1及び第2実施形態に係る技術は、以下のように変形、変更して実施することができる。
例えば、図8に示すマスタノード2が備える各処理機能22~25、図15に示すマスタノード2’が備える各処理機能22’~25’、図8又は図15に示すノード3が備える各処理機能32~35は、それぞれ任意の組み合わせで併合してもよく、分割してもよい。
また、第1実施形態及び第2実施形態は、組み合わせて適用されてもよい。例えば、第2実施形態に係る機械学習システム1’において、少なくとも1つのノード3に障害が発生した場合、マスタノード2’の異常検出部23及びノード制御部24’は、第1実施形態係るマスタノード2の異常検出部23及びノード制御部24として動作してよい。一例として、マスタノード2’のノード制御部24’は、障害ノード3における中断ステージ以降の処理を代替ノード3に実行させてよい。
第1及び第2実施形態では、機械学習の分散処理におけるノード3の数が、それぞれ5及び4である場合を例に挙げたが、これに限定されるものではなく、例えば、入力データ21aのデータ規模等の種々の条件に応じて増減してもよい。
また、機械学習システム1又は1’では、例えば、ノード3を実現する構成の種類、例えば汎用サーバ、基幹サーバ等に応じて、ノード3の障害発生率は変化する。このため、異常検出部23によるノード3の異常の検出手法、及び、ノード制御部24’によるフェイルオーバ手法は、ノード3の障害発生率に応じて決定されてもよい。
〔5〕付記
以上の第1及び第2実施形態に関し、さらに以下の付記を開示する。
以上の第1及び第2実施形態に関し、さらに以下の付記を開示する。
(付記1)
機械学習処理の少なくとも一部分である部分処理をそれぞれが実行する複数の実行ノードと、
前記機械学習処理の実行を制御する制御ノードと、
前記制御ノード及び前記複数の実行ノードのそれぞれからアクセス可能な記憶領域と、を備え、
前記制御ノードは、
前記部分処理の入力データと、前記部分処理に含まれる順序付けられた複数の処理の実行状態を前記実行ノードごとに管理するための管理情報と、を前記記憶領域に格納し、
前記複数の実行ノードのそれぞれは、
前記記憶領域に格納された前記入力データ及び前記管理情報に基づく前記部分処理の実行において、前記複数の処理の各々から出力される出力データと、前記複数の処理の各々の実行状態を設定した前記管理情報と、を前記記憶領域に格納し、
前記制御ノードは、
前記複数の実行ノードのうちの第1実行ノードの前記管理情報における前記複数の処理の各々の実行状態と、前記記憶領域に格納された前記第1実行ノードの複数の前記出力データとに基づき、前記第1実行ノードにおいて未完了の処理を、前記第1実行ノードとは異なる第2実行ノードに実行させる、
機械学習システム。
機械学習処理の少なくとも一部分である部分処理をそれぞれが実行する複数の実行ノードと、
前記機械学習処理の実行を制御する制御ノードと、
前記制御ノード及び前記複数の実行ノードのそれぞれからアクセス可能な記憶領域と、を備え、
前記制御ノードは、
前記部分処理の入力データと、前記部分処理に含まれる順序付けられた複数の処理の実行状態を前記実行ノードごとに管理するための管理情報と、を前記記憶領域に格納し、
前記複数の実行ノードのそれぞれは、
前記記憶領域に格納された前記入力データ及び前記管理情報に基づく前記部分処理の実行において、前記複数の処理の各々から出力される出力データと、前記複数の処理の各々の実行状態を設定した前記管理情報と、を前記記憶領域に格納し、
前記制御ノードは、
前記複数の実行ノードのうちの第1実行ノードの前記管理情報における前記複数の処理の各々の実行状態と、前記記憶領域に格納された前記第1実行ノードの複数の前記出力データとに基づき、前記第1実行ノードにおいて未完了の処理を、前記第1実行ノードとは異なる第2実行ノードに実行させる、
機械学習システム。
(付記2)
前記管理情報は、前記実行ノードごとに、前記複数の処理の各々の前記出力データの前記記憶領域における格納位置に関する情報と、前記複数の処理の各々の進捗状況を示す情報と、を含む、
付記1に記載の機械学習システム。
前記管理情報は、前記実行ノードごとに、前記複数の処理の各々の前記出力データの前記記憶領域における格納位置に関する情報と、前記複数の処理の各々の進捗状況を示す情報と、を含む、
付記1に記載の機械学習システム。
(付記3)
前記第1実行ノードは、前記複数の処理のうちのいずれかの処理の実行中に障害が発生した実行ノードであり、
前記第2実行ノードは、前記複数の実行ノードとは異なる実行ノードであり、
前記制御ノードは、前記第1実行ノードの障害の発生を検出した場合、前記第2実行ノードに対して、前記第1実行ノードの前記管理情報の情報を送信し、
前記第2実行ノードは、受信した情報が示す前記管理情報における前記未完了の処理から順に、前記第1実行ノードが担当する前記部分処理を実行する、
付記1又は付記2に記載の機械学習システム。
前記第1実行ノードは、前記複数の処理のうちのいずれかの処理の実行中に障害が発生した実行ノードであり、
前記第2実行ノードは、前記複数の実行ノードとは異なる実行ノードであり、
前記制御ノードは、前記第1実行ノードの障害の発生を検出した場合、前記第2実行ノードに対して、前記第1実行ノードの前記管理情報の情報を送信し、
前記第2実行ノードは、受信した情報が示す前記管理情報における前記未完了の処理から順に、前記第1実行ノードが担当する前記部分処理を実行する、
付記1又は付記2に記載の機械学習システム。
(付記4)
前記複数の実行ノードのそれぞれが実行する前記部分処理は、前記入力データを分割して得られる複数のデータのうちの訓練用データと評価用データとの組み合わせが前記実行ノード間で互いに異なるように前記複数のデータを利用してモデルの機械学習を行なう交差検証処理である、
付記3に記載の機械学習システム。
前記複数の実行ノードのそれぞれが実行する前記部分処理は、前記入力データを分割して得られる複数のデータのうちの訓練用データと評価用データとの組み合わせが前記実行ノード間で互いに異なるように前記複数のデータを利用してモデルの機械学習を行なう交差検証処理である、
付記3に記載の機械学習システム。
(付記5)
前記複数の実行ノードのそれぞれが実行する前記部分処理は、前記複数の処理のうちの先頭から1以上の処理が前記複数の実行ノード間で互いに同一であり、
前記第1実行ノードは、前記複数の実行ノードのうちの前記複数の処理を実行する実行ノードであり、
前記第2実行ノードは、前記複数の実行ノードのうちの前記第1実行ノードとは異なる1以上の実行ノードであり、
前記制御ノードは、前記第1実行ノードによる前記先頭から1以上の処理の完了を検出した場合、前記第2実行ノードに対して、前記第1実行ノードの前記管理情報に基づき更新した前記第2実行ノードの前記管理情報の情報を送信し、
前記第2実行ノードは、受信した情報が示す前記管理情報における前記先頭から1以上の処理に続く処理から順に、前記部分処理を実行する、
付記1又は付記2に記載の機械学習システム。
前記複数の実行ノードのそれぞれが実行する前記部分処理は、前記複数の処理のうちの先頭から1以上の処理が前記複数の実行ノード間で互いに同一であり、
前記第1実行ノードは、前記複数の実行ノードのうちの前記複数の処理を実行する実行ノードであり、
前記第2実行ノードは、前記複数の実行ノードのうちの前記第1実行ノードとは異なる1以上の実行ノードであり、
前記制御ノードは、前記第1実行ノードによる前記先頭から1以上の処理の完了を検出した場合、前記第2実行ノードに対して、前記第1実行ノードの前記管理情報に基づき更新した前記第2実行ノードの前記管理情報の情報を送信し、
前記第2実行ノードは、受信した情報が示す前記管理情報における前記先頭から1以上の処理に続く処理から順に、前記部分処理を実行する、
付記1又は付記2に記載の機械学習システム。
(付記6)
前記複数の実行ノードのそれぞれが実行する前記部分処理は、前記入力データと、前記複数の実行ノード間で互いに異なるパラメータと、を利用して機械学習モデルの最適化を行なうパラメータ最適化処理である、
付記5に記載の機械学習システム。
前記複数の実行ノードのそれぞれが実行する前記部分処理は、前記入力データと、前記複数の実行ノード間で互いに異なるパラメータと、を利用して機械学習モデルの最適化を行なうパラメータ最適化処理である、
付記5に記載の機械学習システム。
(付記7)
前記制御ノードは、前記複数の実行ノードのそれぞれによる前記部分処理が完了した場合、前記記憶領域に格納された複数の前記出力データに基づき、前記機械学習処理を実行する、
付記1~付記6のいずれか1項に記載の機械学習システム。
前記制御ノードは、前記複数の実行ノードのそれぞれによる前記部分処理が完了した場合、前記記憶領域に格納された複数の前記出力データに基づき、前記機械学習処理を実行する、
付記1~付記6のいずれか1項に記載の機械学習システム。
(付記8)
機械学習処理の少なくとも一部分である部分処理をそれぞれが実行する複数の実行ノードと、前記機械学習処理の実行を制御するコンピュータと、前記コンピュータ及び前記複数の実行ノードのそれぞれからアクセス可能な記憶領域と、を備える機械学習システムにおける前記コンピュータに、
前記部分処理の入力データと、前記部分処理に含まれる順序付けられた複数の処理の実行状態を前記実行ノードごとに管理するための管理情報と、を前記記憶領域に格納し、
前記記憶領域に格納された前記入力データ及び前記管理情報に基づく前記部分処理の実行において、前記複数の処理の各々から出力される出力データと、前記複数の処理の各々の実行状態を設定した前記管理情報と、が前記複数の実行ノードのそれぞれにより格納された前記記憶領域を参照し、
前記複数の実行ノードのうちの第1実行ノードの前記管理情報における前記複数の処理の各々の実行状態と、前記記憶領域に格納された前記第1実行ノードの複数の前記出力データとに基づき、前記第1実行ノードにおいて未完了の処理を、前記第1実行ノードとは異なる第2実行ノードに実行させる、
処理を実行させる、機械学習プログラム。
機械学習処理の少なくとも一部分である部分処理をそれぞれが実行する複数の実行ノードと、前記機械学習処理の実行を制御するコンピュータと、前記コンピュータ及び前記複数の実行ノードのそれぞれからアクセス可能な記憶領域と、を備える機械学習システムにおける前記コンピュータに、
前記部分処理の入力データと、前記部分処理に含まれる順序付けられた複数の処理の実行状態を前記実行ノードごとに管理するための管理情報と、を前記記憶領域に格納し、
前記記憶領域に格納された前記入力データ及び前記管理情報に基づく前記部分処理の実行において、前記複数の処理の各々から出力される出力データと、前記複数の処理の各々の実行状態を設定した前記管理情報と、が前記複数の実行ノードのそれぞれにより格納された前記記憶領域を参照し、
前記複数の実行ノードのうちの第1実行ノードの前記管理情報における前記複数の処理の各々の実行状態と、前記記憶領域に格納された前記第1実行ノードの複数の前記出力データとに基づき、前記第1実行ノードにおいて未完了の処理を、前記第1実行ノードとは異なる第2実行ノードに実行させる、
処理を実行させる、機械学習プログラム。
(付記9)
前記管理情報は、前記実行ノードごとに、前記複数の処理の各々の前記出力データの前記記憶領域における格納位置に関する情報と、前記複数の処理の各々の進捗状況を示す情報と、を含む、
付記8に記載の機械学習プログラム。
前記管理情報は、前記実行ノードごとに、前記複数の処理の各々の前記出力データの前記記憶領域における格納位置に関する情報と、前記複数の処理の各々の進捗状況を示す情報と、を含む、
付記8に記載の機械学習プログラム。
(付記10)
前記第1実行ノードは、前記複数の処理のうちのいずれかの処理の実行中に障害が発生した実行ノードであり、
前記第2実行ノードは、前記複数の実行ノードとは異なる実行ノードであり、
前記コンピュータに、
前記第1実行ノードの障害の発生を検出した場合、前記第2実行ノードに対して、前記第1実行ノードの前記管理情報の情報を送信する、
処理を実行させ、
前記第2実行ノードは、受信した情報が示す前記管理情報における前記未完了の処理から順に、前記第1実行ノードが担当する前記部分処理を実行する、
付記8又は付記9に記載の機械学習プログラム。
前記第1実行ノードは、前記複数の処理のうちのいずれかの処理の実行中に障害が発生した実行ノードであり、
前記第2実行ノードは、前記複数の実行ノードとは異なる実行ノードであり、
前記コンピュータに、
前記第1実行ノードの障害の発生を検出した場合、前記第2実行ノードに対して、前記第1実行ノードの前記管理情報の情報を送信する、
処理を実行させ、
前記第2実行ノードは、受信した情報が示す前記管理情報における前記未完了の処理から順に、前記第1実行ノードが担当する前記部分処理を実行する、
付記8又は付記9に記載の機械学習プログラム。
(付記11)
前記複数の実行ノードのそれぞれが実行する前記部分処理は、前記入力データを分割して得られる複数のデータのうちの訓練用データと評価用データとの組み合わせが前記実行ノード間で互いに異なるように前記複数のデータを利用してモデルの機械学習を行なう交差検証処理である、
付記10に記載の機械学習プログラム。
前記複数の実行ノードのそれぞれが実行する前記部分処理は、前記入力データを分割して得られる複数のデータのうちの訓練用データと評価用データとの組み合わせが前記実行ノード間で互いに異なるように前記複数のデータを利用してモデルの機械学習を行なう交差検証処理である、
付記10に記載の機械学習プログラム。
(付記12)
前記複数の実行ノードのそれぞれが実行する前記部分処理は、前記複数の処理のうちの先頭から1以上の処理が前記複数の実行ノード間で互いに同一であり、
前記第1実行ノードは、前記複数の実行ノードのうちの前記複数の処理を実行する実行ノードであり、
前記第2実行ノードは、前記複数の実行ノードのうちの前記第1実行ノードとは異なる1以上の実行ノードであり、
前記コンピュータに、
前記第1実行ノードによる前記先頭から1以上の処理の完了を検出した場合、前記第2実行ノードに対して、前記第1実行ノードの前記管理情報に基づき更新した前記第2実行ノードの前記管理情報の情報を送信する、
処理を実行させ、
前記第2実行ノードは、受信した情報が示す前記管理情報における前記先頭から1以上の処理に続く処理から順に、前記部分処理を実行する、
付記8又は付記9に記載の機械学習プログラム。
前記複数の実行ノードのそれぞれが実行する前記部分処理は、前記複数の処理のうちの先頭から1以上の処理が前記複数の実行ノード間で互いに同一であり、
前記第1実行ノードは、前記複数の実行ノードのうちの前記複数の処理を実行する実行ノードであり、
前記第2実行ノードは、前記複数の実行ノードのうちの前記第1実行ノードとは異なる1以上の実行ノードであり、
前記コンピュータに、
前記第1実行ノードによる前記先頭から1以上の処理の完了を検出した場合、前記第2実行ノードに対して、前記第1実行ノードの前記管理情報に基づき更新した前記第2実行ノードの前記管理情報の情報を送信する、
処理を実行させ、
前記第2実行ノードは、受信した情報が示す前記管理情報における前記先頭から1以上の処理に続く処理から順に、前記部分処理を実行する、
付記8又は付記9に記載の機械学習プログラム。
(付記13)
前記複数の実行ノードのそれぞれが実行する前記部分処理は、前記入力データと、前記複数の実行ノード間で互いに異なるパラメータと、を利用して機械学習モデルの最適化を行なうパラメータ最適化処理である、
付記12に記載の機械学習プログラム。
前記複数の実行ノードのそれぞれが実行する前記部分処理は、前記入力データと、前記複数の実行ノード間で互いに異なるパラメータと、を利用して機械学習モデルの最適化を行なうパラメータ最適化処理である、
付記12に記載の機械学習プログラム。
(付記14)
前記コンピュータに、
前記複数の実行ノードのそれぞれによる前記部分処理が完了した場合、前記記憶領域に格納された複数の前記出力データに基づき、前記機械学習処理を実行する、
処理を実行させる、付記8~付記13のいずれか1項に記載の機械学習プログラム。
前記コンピュータに、
前記複数の実行ノードのそれぞれによる前記部分処理が完了した場合、前記記憶領域に格納された複数の前記出力データに基づき、前記機械学習処理を実行する、
処理を実行させる、付記8~付記13のいずれか1項に記載の機械学習プログラム。
(付記15)
機械学習処理の少なくとも一部分である部分処理をそれぞれが実行する複数の実行ノードと、
前記機械学習処理の実行を制御する制御ノードと、
前記制御ノード及び前記複数の実行ノードのそれぞれからアクセス可能な記憶領域と、を備え、
前記制御ノードは、
前記部分処理の入力データと、前記部分処理に含まれる順序付けられた複数の処理の実行状態を前記実行ノードごとに管理するための管理情報と、を前記記憶領域に格納し、
前記複数の実行ノードのそれぞれは、
前記記憶領域に格納された前記入力データ及び前記管理情報に基づく前記部分処理の実行において、前記複数の処理の各々から出力される出力データと、前記複数の処理の各々の実行状態を設定した前記管理情報と、を前記記憶領域に格納し、
前記制御ノードは、
前記複数の実行ノードのうちの第1実行ノードの前記管理情報における前記複数の処理の各々の実行状態と、前記記憶領域に格納された前記第1実行ノードの複数の前記出力データとに基づき、前記第1実行ノードにおいて未完了の処理を、前記第1実行ノードとは異なる第2実行ノードに実行させる、
機械学習方法。
機械学習処理の少なくとも一部分である部分処理をそれぞれが実行する複数の実行ノードと、
前記機械学習処理の実行を制御する制御ノードと、
前記制御ノード及び前記複数の実行ノードのそれぞれからアクセス可能な記憶領域と、を備え、
前記制御ノードは、
前記部分処理の入力データと、前記部分処理に含まれる順序付けられた複数の処理の実行状態を前記実行ノードごとに管理するための管理情報と、を前記記憶領域に格納し、
前記複数の実行ノードのそれぞれは、
前記記憶領域に格納された前記入力データ及び前記管理情報に基づく前記部分処理の実行において、前記複数の処理の各々から出力される出力データと、前記複数の処理の各々の実行状態を設定した前記管理情報と、を前記記憶領域に格納し、
前記制御ノードは、
前記複数の実行ノードのうちの第1実行ノードの前記管理情報における前記複数の処理の各々の実行状態と、前記記憶領域に格納された前記第1実行ノードの複数の前記出力データとに基づき、前記第1実行ノードにおいて未完了の処理を、前記第1実行ノードとは異なる第2実行ノードに実行させる、
機械学習方法。
(付記16)
前記管理情報は、前記実行ノードごとに、前記複数の処理の各々の前記出力データの前記記憶領域における格納位置に関する情報と、前記複数の処理の各々の進捗状況を示す情報と、を含む、
付記15に記載の機械学習方法。
前記管理情報は、前記実行ノードごとに、前記複数の処理の各々の前記出力データの前記記憶領域における格納位置に関する情報と、前記複数の処理の各々の進捗状況を示す情報と、を含む、
付記15に記載の機械学習方法。
(付記17)
前記第1実行ノードは、前記複数の処理のうちのいずれかの処理の実行中に障害が発生した実行ノードであり、
前記第2実行ノードは、前記複数の実行ノードとは異なる実行ノードであり、
前記制御ノードは、前記第1実行ノードの障害の発生を検出した場合、前記第2実行ノードに対して、前記第1実行ノードの前記管理情報の情報を送信し、
前記第2実行ノードは、受信した情報が示す前記管理情報における前記未完了の処理から順に、前記第1実行ノードが担当する前記部分処理を実行する、
付記15又は付記16に記載の機械学習方法。
前記第1実行ノードは、前記複数の処理のうちのいずれかの処理の実行中に障害が発生した実行ノードであり、
前記第2実行ノードは、前記複数の実行ノードとは異なる実行ノードであり、
前記制御ノードは、前記第1実行ノードの障害の発生を検出した場合、前記第2実行ノードに対して、前記第1実行ノードの前記管理情報の情報を送信し、
前記第2実行ノードは、受信した情報が示す前記管理情報における前記未完了の処理から順に、前記第1実行ノードが担当する前記部分処理を実行する、
付記15又は付記16に記載の機械学習方法。
(付記18)
前記複数の実行ノードのそれぞれが実行する前記部分処理は、前記入力データを分割して得られる複数のデータのうちの訓練用データと評価用データとの組み合わせが前記実行ノード間で互いに異なるように前記複数のデータを利用してモデルの機械学習を行なう交差検証処理である、
付記17に記載の機械学習方法。
前記複数の実行ノードのそれぞれが実行する前記部分処理は、前記入力データを分割して得られる複数のデータのうちの訓練用データと評価用データとの組み合わせが前記実行ノード間で互いに異なるように前記複数のデータを利用してモデルの機械学習を行なう交差検証処理である、
付記17に記載の機械学習方法。
(付記19)
前記複数の実行ノードのそれぞれが実行する前記部分処理は、前記複数の処理のうちの先頭から1以上の処理が前記複数の実行ノード間で互いに同一であり、
前記第1実行ノードは、前記複数の実行ノードのうちの前記複数の処理を実行する実行ノードであり、
前記第2実行ノードは、前記複数の実行ノードのうちの前記第1実行ノードとは異なる1以上の実行ノードであり、
前記制御ノードは、前記第1実行ノードによる前記先頭から1以上の処理の完了を検出した場合、前記第2実行ノードに対して、前記第1実行ノードの前記管理情報に基づき更新した前記第2実行ノードの前記管理情報の情報を送信し、
前記第2実行ノードは、受信した情報が示す前記管理情報における前記先頭から1以上の処理に続く処理から順に、前記部分処理を実行する、
付記15又は付記16に記載の機械学習方法。
前記複数の実行ノードのそれぞれが実行する前記部分処理は、前記複数の処理のうちの先頭から1以上の処理が前記複数の実行ノード間で互いに同一であり、
前記第1実行ノードは、前記複数の実行ノードのうちの前記複数の処理を実行する実行ノードであり、
前記第2実行ノードは、前記複数の実行ノードのうちの前記第1実行ノードとは異なる1以上の実行ノードであり、
前記制御ノードは、前記第1実行ノードによる前記先頭から1以上の処理の完了を検出した場合、前記第2実行ノードに対して、前記第1実行ノードの前記管理情報に基づき更新した前記第2実行ノードの前記管理情報の情報を送信し、
前記第2実行ノードは、受信した情報が示す前記管理情報における前記先頭から1以上の処理に続く処理から順に、前記部分処理を実行する、
付記15又は付記16に記載の機械学習方法。
(付記20)
前記制御ノードは、前記複数の実行ノードのそれぞれによる前記部分処理が完了した場合、前記記憶領域に格納された複数の前記出力データに基づき、前記機械学習処理を実行する、
付記15~付記19のいずれか1項に記載の機械学習方法。
前記制御ノードは、前記複数の実行ノードのそれぞれによる前記部分処理が完了した場合、前記記憶領域に格納された複数の前記出力データに基づき、前記機械学習処理を実行する、
付記15~付記19のいずれか1項に記載の機械学習方法。
1、1’ 機械学習システム
10 コンピュータ
2、2’ マスタノード
20A、20A’ ジョブスケジューラ
20B、20B’、30B コンテナ
20C、20D タスク
21、31 メモリ部
21a 入力データ
21b 出力データ
21c 処理済データ
22、22’ ジョブ制御部
23 異常検出部
24、24’ ノード制御部
25、25’、35 制御部
3 ノード
30A タスクスケジューラ
30C~30E サブタスク
30F~30I データ
31a、40 入出力データ
32 タスク制御部
33 進捗管理部
34 応答部
4 共有ストレージ
5 共有DB
50 進捗管理情報
10 コンピュータ
2、2’ マスタノード
20A、20A’ ジョブスケジューラ
20B、20B’、30B コンテナ
20C、20D タスク
21、31 メモリ部
21a 入力データ
21b 出力データ
21c 処理済データ
22、22’ ジョブ制御部
23 異常検出部
24、24’ ノード制御部
25、25’、35 制御部
3 ノード
30A タスクスケジューラ
30C~30E サブタスク
30F~30I データ
31a、40 入出力データ
32 タスク制御部
33 進捗管理部
34 応答部
4 共有ストレージ
5 共有DB
50 進捗管理情報
Claims (7)
- 機械学習処理の少なくとも一部分である部分処理をそれぞれが実行する複数の実行ノードと、
前記機械学習処理の実行を制御する制御ノードと、
前記制御ノード及び前記複数の実行ノードのそれぞれからアクセス可能な記憶領域と、を備え、
前記制御ノードは、
前記部分処理の入力データと、前記部分処理に含まれる順序付けられた複数の処理の実行状態を前記実行ノードごとに管理するための管理情報と、を前記記憶領域に格納し、
前記複数の実行ノードのそれぞれは、
前記記憶領域に格納された前記入力データ及び前記管理情報に基づく前記部分処理の実行において、前記複数の処理の各々から出力される出力データと、前記複数の処理の各々の実行状態を設定した前記管理情報と、を前記記憶領域に格納し、
前記制御ノードは、
前記複数の実行ノードのうちの第1実行ノードの前記管理情報における前記複数の処理の各々の実行状態と、前記記憶領域に格納された前記第1実行ノードの複数の前記出力データとに基づき、前記第1実行ノードにおいて未完了の処理を、前記第1実行ノードとは異なる第2実行ノードに実行させる、
機械学習システム。 - 前記管理情報は、前記実行ノードごとに、前記複数の処理の各々の前記出力データの前記記憶領域における格納位置に関する情報と、前記複数の処理の各々の進捗状況を示す情報と、を含む、
請求項1に記載の機械学習システム。 - 前記第1実行ノードは、前記複数の処理のうちのいずれかの処理の実行中に障害が発生した実行ノードであり、
前記第2実行ノードは、前記複数の実行ノードとは異なる実行ノードであり、
前記制御ノードは、前記第1実行ノードの障害の発生を検出した場合、前記第2実行ノードに対して、前記第1実行ノードの前記管理情報の情報を送信し、
前記第2実行ノードは、受信した情報が示す前記管理情報における前記未完了の処理から順に、前記第1実行ノードが担当する前記部分処理を実行する、
請求項1又は請求項2に記載の機械学習システム。 - 前記複数の実行ノードのそれぞれが実行する前記部分処理は、前記複数の処理のうちの先頭から1以上の処理が前記複数の実行ノード間で互いに同一であり、
前記第1実行ノードは、前記複数の実行ノードのうちの前記複数の処理を実行する実行ノードであり、
前記第2実行ノードは、前記複数の実行ノードのうちの前記第1実行ノードとは異なる1以上の実行ノードであり、
前記制御ノードは、前記第1実行ノードによる前記先頭から1以上の処理の完了を検出した場合、前記第2実行ノードに対して、前記第1実行ノードの前記管理情報に基づき更新した前記第2実行ノードの前記管理情報の情報を送信し、
前記第2実行ノードは、受信した情報が示す前記管理情報における前記先頭から1以上の処理に続く処理から順に、前記部分処理を実行する、
請求項1又は請求項2に記載の機械学習システム。 - 前記制御ノードは、前記複数の実行ノードのそれぞれによる前記部分処理が完了した場合、前記記憶領域に格納された複数の前記出力データに基づき、前記機械学習処理を実行する、
請求項1~請求項4のいずれか1項に記載の機械学習システム。 - 機械学習処理の少なくとも一部分である部分処理をそれぞれが実行する複数の実行ノードと、前記機械学習処理の実行を制御するコンピュータと、前記コンピュータ及び前記複数の実行ノードのそれぞれからアクセス可能な記憶領域と、を備える機械学習システムにおける前記コンピュータに、
前記部分処理の入力データと、前記部分処理に含まれる順序付けられた複数の処理の実行状態を前記実行ノードごとに管理するための管理情報と、を前記記憶領域に格納し、
前記記憶領域に格納された前記入力データ及び前記管理情報に基づく前記部分処理の実行において、前記複数の処理の各々から出力される出力データと、前記複数の処理の各々の実行状態を設定した前記管理情報と、が前記複数の実行ノードのそれぞれにより格納された前記記憶領域を参照し、
前記複数の実行ノードのうちの第1実行ノードの前記管理情報における前記複数の処理の各々の実行状態と、前記記憶領域に格納された前記第1実行ノードの複数の前記出力データとに基づき、前記第1実行ノードにおいて未完了の処理を、前記第1実行ノードとは異なる第2実行ノードに実行させる、
処理を実行させる、機械学習プログラム。 - 機械学習処理の少なくとも一部分である部分処理をそれぞれが実行する複数の実行ノードと、
前記機械学習処理の実行を制御する制御ノードと、
前記制御ノード及び前記複数の実行ノードのそれぞれからアクセス可能な記憶領域と、を備え、
前記制御ノードは、
前記部分処理の入力データと、前記部分処理に含まれる順序付けられた複数の処理の実行状態を前記実行ノードごとに管理するための管理情報と、を前記記憶領域に格納し、
前記複数の実行ノードのそれぞれは、
前記記憶領域に格納された前記入力データ及び前記管理情報に基づく前記部分処理の実行において、前記複数の処理の各々から出力される出力データと、前記複数の処理の各々の実行状態を設定した前記管理情報と、を前記記憶領域に格納し、
前記制御ノードは、
前記複数の実行ノードのうちの第1実行ノードの前記管理情報における前記複数の処理の各々の実行状態と、前記記憶領域に格納された前記第1実行ノードの複数の前記出力データとに基づき、前記第1実行ノードにおいて未完了の処理を、前記第1実行ノードとは異なる第2実行ノードに実行させる、
機械学習方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2021086047A JP2022178916A (ja) | 2021-05-21 | 2021-05-21 | 機械学習システム、機械学習プログラム、及び、機械学習方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2021086047A JP2022178916A (ja) | 2021-05-21 | 2021-05-21 | 機械学習システム、機械学習プログラム、及び、機械学習方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2022178916A true JP2022178916A (ja) | 2022-12-02 |
Family
ID=84238872
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2021086047A Pending JP2022178916A (ja) | 2021-05-21 | 2021-05-21 | 機械学習システム、機械学習プログラム、及び、機械学習方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2022178916A (ja) |
-
2021
- 2021-05-21 JP JP2021086047A patent/JP2022178916A/ja active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
AU2011299337B2 (en) | Controlled automatic healing of data-center services | |
US9575785B2 (en) | Cluster system and method for providing service availability in cluster system | |
US20120159471A1 (en) | Multi-machine deployment and configuration of multi-tiered applications | |
JP5659780B2 (ja) | コンピュータ、コア割り当て方法およびプログラム | |
JP7197776B2 (ja) | スケジューリングプログラム、スケジューリング方法、およびスケジューリング装置 | |
US20220269547A1 (en) | Managing virtual machine memory balloon using time series predictive data | |
WO2016092856A1 (ja) | 情報処理装置、情報処理システム、タスク処理方法、及び、プログラムを記憶する記憶媒体 | |
JP7035858B2 (ja) | マイグレーション管理プログラム、マイグレーション方法およびマイグレーションシステム | |
WO2018123456A1 (ja) | プログラマブルコントローラ、管理装置および制御システム | |
JP2014132419A (ja) | 仮想化システムの性能予測装置、性能予測方法およびコンピュータ・プログラム | |
CN107528871B (zh) | 存储系统中的数据分析 | |
JP6620609B2 (ja) | 分散処理実行管理プログラム、分散処理実行管理方法および分散処理実行管理装置 | |
US9467336B2 (en) | Information processing system and management method thereof | |
WO2015075803A1 (ja) | 情報処理装置、方法、プログラム及び記録媒体 | |
CN102576294A (zh) | 含有多个存储装置的存储系统、方法及程序 | |
JP2022178916A (ja) | 機械学習システム、機械学習プログラム、及び、機械学習方法 | |
CN108268316A (zh) | 作业调度的方法及装置 | |
US9811283B2 (en) | System, control device, and method | |
JP5420358B2 (ja) | バッチ処理実行方法及びバッチ処理実行システム | |
CN114489517A (zh) | 一种离线加速迁移方法、系统、设备及存储介质 | |
JP6897866B2 (ja) | システム更新装置およびシステム更新方法 | |
JP2010231295A (ja) | 解析システム | |
JP2016130962A (ja) | データ退避制御方法、データ退避制御プログラム、及びデータ退避制御装置 | |
JP6138701B2 (ja) | 分散計算方法及び分散計算システム | |
US9003274B2 (en) | Scheduling start-up and shut-down of mainframe applications using topographical relationships |