(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024082662
(43)【公開日】2024-06-20
(54)【発明の名称】機械学習プログラム、機械学習方法及び機械学習装置
(51)【国際特許分類】
G06N 3/063 20230101AFI20240613BHJP
G06N 3/08 20230101ALI20240613BHJP
【FI】
G06N3/063
G06N3/08
【審査請求】未請求
【請求項の数】7
【出願形態】OL
(21)【出願番号】P 2022196652
(22)【出願日】2022-12-08
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】麻岡 正洋
(72)【発明者】
【氏名】田原 司睦
(57)【要約】
【課題】機械学習の学習効率を向上させる機械学習プログラム、機械学習方法及び機械学習装置を提供する。
【解決手段】同じ機械学習モデルによる個別の機械学習を、複数の機械学習プロセスそれぞれに実行させ、機械学習プロセスのそれぞれにおける第1処理の実行後のデータを機械学習プロセスのそれぞれがアクセス可能な共有メモリに記憶させ、機械学習プロセスのうちの第1の機械学習プロセスにおいて第1処理より後に実行される第2処理の実行時に異常が生じた場合、共有メモリに記憶された、第1の機械学習プロセスに関する第1処理の実行後の第1のデータを基に、複数の機械学習プロセスのうちの第1の機械学習プロセス以外の第2の機械学習プロセスに、第1の機械学習プロセスに関する第2処理を実行させる処理をコンピュータに実行させる。
【選択図】
図4
【特許請求の範囲】
【請求項1】
同じ機械学習モデルによる個別の機械学習を、複数の機械学習プロセスそれぞれに実行させ、
前記機械学習プロセスのそれぞれにおける第1処理の実行後のデータを前記機械学習プロセスのそれぞれがアクセス可能な共有メモリに記憶させ、
前記機械学習プロセスのうちの第1の機械学習プロセスにおいて前記第1処理より後に実行される第2処理の実行時に異常が生じた場合、前記共有メモリに記憶された、前記第1の機械学習プロセスに関する前記第1処理の実行後の第1のデータを基に、前記複数の機械学習プロセスのうちの前記第1の機械学習プロセス以外の第2の機械学習プロセスに、前記第1の機械学習プロセスに関する前記第2処理を実行させる
処理をコンピュータに実行させることを特徴とする機械学習プログラム。
【請求項2】
前記共有メモリに記憶させる処理において、複数の前記機械学習プロセスそれぞれに対応付けられた1以上の共有メモリのうちの前記第1の機械学習プロセスに対応付けられた第1の共有メモリに、前記第1のデータを記憶させることを特徴とする請求項1に記載の機械学習プログラム。
【請求項3】
前記異常が生じた場合の前記第1処理の実行後の前記データに基づく前記第2処理の実行において、
前記異常が生じた前記第1の機械学習プロセスに対応する前記第1の共有メモリに記憶された前記第1処理の実行後の前記データを取得し、
前記取得した前記第1処理の実行後の前記データを基に、前記機械学習モデルのスナップショットを生成して記憶装置に記憶させ、
前記記憶装置に記憶させた前記スナップショットを用いて前記第2の機械学習プロセスに前記第2処理を実行させる
処理を前記コンピュータに実行させることを特徴とする請求項2に記載の機械学習プログラム。
【請求項4】
前記第1処理として、順伝播学習、逆伝播学習又は前記機械学習モデルのパラメータ更新処理のいずれかを前記コンピュータに実行させることを特徴とする請求項1~3のいずれか一つに記載の機械学習プログラム。
【請求項5】
前記第1処理として前記順伝播学習を行う場合、前記第1処理の実行後の前記データとして順伝播の損失を前記共有メモリに記憶させ、
前記第1処理として前記逆伝播学習を行う場合、前記第1処理の実行後の前記データとして逆伝播の勾配を前記共有メモリに記憶させ、
前記第1処理として前記パラメータ更新処理を行う場合、前記第1処理の実行後の前記データとしてオプティマイザー状態及びモデルパラメータを前記共有メモリに記憶させる
処理を前記コンピュータに実行させることを特徴とする請求項4に記載の機械学習プログラム。
【請求項6】
コンピュータが、
同じ機械学習モデルによる個別の機械学習をそれぞれが行う複数の機械学習プロセスを実行し、
前記機械学習プロセスのそれぞれにおける第1処理の実行後のデータを前記機械学習プロセスのそれぞれがアクセス可能な共有メモリに記憶させ、
前記機械学習プロセスのうちの第1の機械学習プロセスにおいて前記第1処理より後に実行される第2処理の実行時に異常が生じた場合、前記共有メモリに記憶された、前記第1の機械学習プロセスに関する前記第1処理の実行後の第1のデータを基に、前記複数の機械学習プロセスのうちの前記第1の機械学習プロセス以外の第2の機械学習プロセスに、前記第1の機械学習プロセスに関する前記第2処理を実行させる
ことを特徴とする機械学習方法。
【請求項7】
同じ機械学習モデルによる個別の機械学習をそれぞれが行う複数の機械学習プロセスをそれぞれが動作させる複数のプロセッサと、
前記プロセッサのそれぞれに対応する複数の個別メモリと、
複数の前記プロセッサのそれぞれがアクセス可能な共有メモリとを有する機械学習装置であって、
前記プロセッサは、
前記機械学習プロセスのうち前記共有メモリを共有する他のプロセッサが動作させる前記機械学習プロセスにおける異常を検知する異常検知部と、
前記個別メモリを用いて前記機械学習プロセスを実行し、前記機械学習プロセスにおける第1処理の実行後のデータを前記共有メモリに記憶させ、前記共有メモリを共有する他のプロセッサが動作させる前記機械学習プロセスのうちの第1機械学習プロセスにおいて前記第1処理より後に実行される第2処理の実行時に前記異常検知部により異常が検知された場合、前記共有メモリに記憶された、前記第1の機械学習プロセスに関する前記第1処理の実行後の第1のデータを基に、前記複数の機械学習プロセスのうちの前記第1の機械学習プロセス以外の第2の機械学習プロセスに、前記第1の機械学習プロセスに関する前記第2処理を実行させる学習実行部とを備えた
ことを特徴とする機械学習装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、機械学習プログラム、機械学習方法及び機械学習装置に関する。
【背景技術】
【0002】
近年、ディープラーニング(深層学習)の研究や開発が急速に進められており、画像認識、文字認識、音声認識、スマートフォン、自律ロボット、ドローン等の様々な分野への応用が期待されている。ディープラーニングでは、畳み込みニューラルネットワーク(CNN:Convolutional Neural Network)等のディーブニューラルネットワーク(DNN:Deep Neural Network)を用いて学習が行われる。
【0003】
ここで機械学習モデルを用いた学習においては取り扱う重み係数の数が膨大であるため、学習に多大な時間を要する。そこで、大規模なディープニューラルネットワークを用いた学習では、学習データや重み係数の更新を複数の計算ノードに分散させて行う並列分散処理の導入が望ましい。
【0004】
並列分散処理では、計算ノードそれぞれが同じ学習データをメモリに持つことで、機械学習システムを高効率で動作させることが可能である。ただし、大規模学習では全体の取り扱うデータ量が多いため、各計算ノードのメモリが不足するおそれがある。そこで、各計算ノードのメモリに乗せる学習データを分散させるデータ分散と呼ばれる手法が提案されている。
【0005】
なお、従来の機械学習では、学習サイクル毎など予め決められたチェックポイントで頻繁にスナップショットを残しておき、機械学習プロセスが途中で止まっても直近のチェックポイントから学習が再開できるように処理が進められる。また、並列分散処理の技術として、ジョブの演算の完了後、各計算ノードが保持する複数のジョブで共有される共有メモリ領域に対して、ダイレクトメモリアクセスによりジョブのデータ転送を行う技術が提案されている。
【先行技術文献】
【特許文献】
【0006】
【発明の概要】
【発明が解決しようとする課題】
【0007】
しかしながら、従来の並列分散処理では、チェックポイントからの学習の再開は可能であるが、チェックポイントから障害発生までの途中経過は保持されないため、データの欠損が発生して学習処理全体が中止され、学習時間が増加するおそれがある。また、データの欠損を抑えるためにチェックポイントを増やす方法も考えられるが、スナップショットの保存時間や記憶容量も大きくなるため現実的ではない。
【0008】
開示の技術は、上記に鑑みてなされたものであって、機械学習の学習効率を向上させる機械学習プログラム、機械学習方法及び機械学習装置を提供することを目的とする。
【課題を解決するための手段】
【0009】
本願の開示する機械学習プログラム、機械学習方法及び機械学習装置の一つの態様において、同じ機械学習モデルによる個別の機械学習を、複数の機械学習プロセスそれぞれに実行させ、前記機械学習プロセスのそれぞれにおける第1処理の実行後のデータを前記機械学習プロセスのそれぞれがアクセス可能な共有メモリに記憶させ、前記機械学習プロセスのうちの第1の機械学習プロセスにおいて前記第1処理より後に実行される第2処理の実行時に異常が生じた場合、前記共有メモリに記憶された、前記第1の機械学習プロセスに関する前記第1処理の実行後の第1のデータを基に、前記複数の機械学習プロセスのうちの前記第1の機械学習プロセス以外の第2の機械学習プロセスに、前記第1の機械学習プロセスに関する前記第2処理を実行させる処理をコンピュータに実行させる。
【発明の効果】
【0010】
1つの側面では、本発明は、機械学習の学習効率を向上させることができる。
【図面の簡単な説明】
【0011】
【
図1】
図1は、実施例に係る並列分散機械学習システムのブロック図である。
【
図2】
図2は、順伝播学習、逆伝播学習及びパラメータ更新処理における処理結果の共有メモリへの登録の概要を示す図である。
【
図3】
図3は、プロセス異常発生時の動作を示す図である。
【
図4】
図4は、実施例に係る並列分散機械学習システムによる機械学習のフローチャートである。
【
図5】
図5は、コンピュータのハードウェア構成図である。
【発明を実施するための形態】
【0012】
以下に、本願の開示する機械学習プログラム、機械学習方法及び機械学習装置の実施例を図面に基づいて詳細に説明する。なお、以下の実施例により本願の開示する機械学習プログラム、機械学習方法及び機械学習装置が限定されるものではない。
【実施例0013】
図1は、実施例に係る並列分散機械学習システムのブロック図である。本実施例に係る並列分散機械学習システム1は、複数の計算ノード10、管理ノード20及びストレージ装置30を有する。管理ノード20と各計算ノード10とは、ネットワークで接続される。また、各計算ノード10同士も相互にネットワークで接続される。また、計算ノード10のそれぞれは、ストレージ装置30に接続される。なお、並列分散機械学習システム1は、コンピュータの一例である。
【0014】
管理ノード20は、並列分散処理による機械学習の統括管理を行う。管理ノード20は、計算ノード10のいずれかがその機能を有してもよい。管理ノード20は、図示しない外部端末装置などを介して利用者から学習データの入力を受ける。また、管理ノード20は、機械学習モデルの学習に用いる学習データの入力を予め受ける。
【0015】
そして、管理ノード20は、学習を行う対象となる機械学習モデルを各計算ノード10へ送信してそれぞれに同じ機械学習モデルを配布する。また、管理ノード20は、学習データを各計算ノード10へ送信して配布する。この際、管理ノード20は、学習データを分散させて各計算ノード10へ配布する。例えば、管理ノード20は、計算ノード10のそれぞれに異なる学習データを配布してもよい。また、管理ノード20は、1台又は2台以上の計算ノード10のグループに対して、グループ毎に異なる学習ノードを配布してもよい。
【0016】
機械学習が最終サイクルまで完了すると、管理ノード20は、学習済みの機械学習モデルを計算ノード10から受信する。そして、管理ノード20は、取得した学習済みの機械学習モデルを推論を行う装置等へ出力する。
【0017】
ストレージ装置30は、チェックポイント毎の機械学習モデルのスナップショットが各計算ノード10により格納される。また、ストレージ装置30は、機械学習プロセスのプロセス異常の発生時に、順伝播学習、逆伝播学習又はパラメータ更新処理のうち機械学習プロセスが最後に完了した処理の完了時点における機械学習モデルのスナップショットが各計算ノード10により格納される。ストレージ装置30が保持するスナップショットは、そのスナップショットが作成された時点からの機械学習の再開に用いられる。
【0018】
各計算ノード10は、機械学習モデルを用いて機械学習における計算を行う。そして、それぞれの計算ノード10で得られた学習結果を基に、各計算ノード10は、機械学習モデルのモデルパラメータを更新する。以下に、計算ノード10の詳細について説明する。
【0019】
計算ノード10は、
図1に示すように、個別メモリ101及び111、プロセッサ102及び112、並びに、共有メモリ120を有する。
【0020】
個別メモリ101は、プロセッサ102に割り当てられた主記憶装置であり、プロセッサ102による計算処理に用いられる。個別メモリ111は、プロセッサ112に割り当てられた主記憶装置であり、プロセッサ112による計算処理に用いられる。
【0021】
プロセッサ102及び個別メモリ101とプロセッサ112及び個別メモリ111とは、異なる学習データを用いてそれぞれ別個の機械学習プロセスを実行する。
図1では、1つの計算ノード10に2つのプロセッサ102及び112を記載したが、プロセッサは3つ以上でもよい。
【0022】
共有メモリ120は、プロセッサ102及び112の双方により共有されるメモリである。共有メモリ120は、プロセッサ102及び112のいずれからもデータの読み書きが可能である。個別メモリ101、個別メモリ111及び共有メモリ120は、異なる物理的なメモリでなくても良く、同じメモリ上の異なる部分領域であってもよい。
【0023】
プロセッサ102は、学習実行部103及び異常検知部104を有する。また、プロセッサ112は、学習実行部113及び異常検知部114を有する。プロセッサ102とプロセッサ112とは同じ機能を有するので、以下では、プロセッサ102及び個別メモリ101を例に説明する。
【0024】
学習実行部103は、管理ノード20から送信された機械学習モデルを保持する。また、学習実行部103は、管理ノード20から送信された学習データを保持する。学習実行部103は、機械学習モデルや学習データを個別メモリ101に保持させてもよい。
【0025】
学習実行部103は、機械学習モデル及び学習データを用いて順伝播計算を行って順伝播学習を実施する。順伝播学習が完了すると、学習実行部103は、順伝播学習で得られた結果である順伝播の損失の情報を共有メモリ120に記録する。ここで、順伝播学習の実行中に個別メモリ101の障害などによる機械学習プロセスのプロセス異常が発生した場合、学習実行部103は、機械学習を停止する。
【0026】
次に、学習実行部103は、機械学習モデル及び順伝播学習の結果を用いて逆伝播計算を行って逆伝播学習を実施する。逆伝播学習が完了すると、学習実行部103は、逆伝播学習で得られた結果である逆伝播の勾配の情報を共有メモリ120に記録する。ここで、逆伝播学習の実行中に機械学習プロセスのプロセス異常が発生した場合、学習実行部103は、学習を停止する。
【0027】
次に、学習実行部103は、自ノードにおける学習実行部113及び他の計算ノード10における学習実行部103及び113との間で通信を行い、順伝播学習及び逆伝播学習の結果を共有する。その後、学習実行部103は、共有した順伝播学習及び逆伝播学習の結果を用いて、機械学習モデルのモデルパラメータの更新などのパラメータ更新処理を実施する。パラメータ更新処理が完了すると、学習実行部103は、パラメータ更新処理の結果であるオプティマイザー状態及びモデルパラメータを共有メモリ120に記録する。ここで、パラメータ更新処理の実行中に機械学習プロセスのプロセス異常が発生した場合、学習実行部103は、学習を停止する。
【0028】
学習実行部103は、順伝播学習、逆伝播学習及びパラメータ更新処理が完了すると、チェックポイント保存サイクルが到来したか否かを判定する。チェックポイント保存サイクルは、スナップショットを保持して機械学習再開の起点となるチェックポイントを生成する定期的な期間である。チェックポイント保存サイクルは、例えば、機械学習における1イテレーションや1エポックといった学習サイクルを基準として設定される。
【0029】
チェックポイント保存サイクルが到来していなければ、学習実行部103は、そのまま順伝播学習、逆伝播学習及びパラメータ更新処理を繰り返す。これに対して、チェックポイント保存サイクルが到来した場合、学習実行部103は、生成した機械学習モデルのスナップショットを生成してストレージ装置30に格納する。
【0030】
スナップショットは、機械学習モデルを表す情報であり、例えば、機械学習モデルを構成する中間層に関する情報や、学習によって得られた重み、活性及び勾配等の情報を含んでもよい。スナップショットは当該スナップショットが作成された時点での機械学習モデルを表し、計算ノード10は、スナップショットを用いることでスナップショットの作成時点での機械学習モデルを再現することができる。
【0031】
学習実行部103は、チェックポイントの生成後、次のチェックポイント保存サイクルまで、順伝播学習、逆伝播学習及びパラメータ更新処理を実行することを繰り返す。そして、学習実行部103は、機械学習の最終サイクルが到来すると機械学習を終了する。その後、学習実行部103は、学習済みの機械学習モデルを管理ノード20へ送信する。ただし、管理ノード20への学習済みの機械学習モデルの送信は、計算ノード10のいずれかの学習実行部103が行えばよい。
【0032】
異常検知部104は、学習実行部103による機械学習の開始時に、学習実行部103及び113の動作の監視を開始する。これにより、異常検知部104は、プロセッサ102及び112の双方が実行する機械学習プロセスの状態監視を開始する。ここで、異常検知部104は、少なくとも共有メモリ120をプロセッサ102と共有するプロセッサ112における機械学習プロセスの状態監視を行えばよく、プロセッサ102における機械学習プロセスの状態監視は行わなくてもよい。そして、異常検知部104は、順伝播学習、逆伝播学習及びパラメータ更新処理を含む一連の機械学習において、個別メモリ101や個別メモリ111の障害などによる機械学習プロセスのプロセス異常の発生の検知を行う。
【0033】
学習実行部113による順伝播学習の実施中にプロセッサ112が実行する機械学習プロセスのプロセス異常を検知した場合、異常検知部104は、プロセッサ112が実行する機械学習プロセスのデータを共有メモリ120から取得する。機械学習プロセスのデータには、順伝播の損失の情報、逆伝播の勾配の情報、並びに、オプティマイザー状態及びモデルパラメータが含まれる。次に、異常検知部104は、プロセッサ112が実行する機械学習プロセスのデータ及び機械学習モデルを用いて、異常発生時点に最も近い順伝播学習、逆伝播学習又はパラメータ更新処理の完了時点での機械学習モデルのスナップショットを生成する。以下では、異常発生時点に最も近い順伝播学習、逆伝播学習又はパラメータ更新処理の完了時点、すなわち共有メモリ120に最後にデータが格納された時点を、「異常発生の直近の時点」と呼ぶ。
【0034】
また、異常検知部104は、プロセッサ102が実行する機械学習プロセスのデータを共有メモリ120から取得して、スナップショットを取得する。その後、異常検知部104は、プロセッサ102及112のそれぞれにおける異常発生の直近の時点での機械学習モデルのスナップショットをストレージ装置30に格納する。この場合、他の計算ノード10における異常検知部104及び114も、それぞれに対応するプロセッサ102及び112における異常発生の直近の時点の機械学習モデルのスナップショットを取得してストレージ装置30に格納する。
【0035】
その後、例えば、異常検知部104は、プロセッサ112の学習実行部113が実行する機械学習プロセスでのプロセス異常の発生を管理ノード20に通知する。管理ノード20は、通知を受けて、異常発生の直近の時点での各機械学習プロセスにおける機械学習モデルのスナップショットをストレージ装置30から取得する。そして、管理ノード20は、取得したそれぞれのスナップショットを各計算ノード10に送信して、各計算ノード10に機械学習を異常発生の直近の時点から再開させる。
【0036】
ここで、順伝播学習、逆伝播学習及びパラメータ更新処理が「第1処理」の一例にあたる。そして、順伝播学習を「第1処理」とした場合、逆伝播学習が「第2処理」の一例にあたる。また、逆伝播学習を「第1処理」とした場合、パラメータ更新処理が「第2処理」の一例にあたる。また、パラメータ更新処理を「第1処理」とした場合、順伝播学習が「第2処理」の一例にあたる。
【0037】
図2は、順伝播学習、逆伝播学習及びパラメータ更新処理における処理結果の共有メモリへの登録の概要を示す図である。次に、
図2を参照して、順伝播学習、逆伝播学習及びパラメータ更新処理における学習実行部103の動作をまとめて説明する。
【0038】
ここでは、計算ノード10A及び10Bについて説明する。計算ノード10Aは、共有メモリ120A、個別メモリ101A及び111A、並びに、プロセッサ102A及び112Aを有する。また、計算ノード10Bは、共有メモリ120B、個別メモリ101B及び111B、並びに、プロセッサ102B及び112Bを有する。
【0039】
状態201は、機械学習開始時の計算ノード10A及び10Bの状態を示す。計算ノード10A及び10Bは、機械学習モデル及び分散された学習データをそれぞれが管理ノード20から取得する。この場合、個別メモリ101AにはデータD1が格納され、個別メモリ111AにはデータD2が格納され、個別メモリ101BにはデータD3が格納され、個別メモリ111BにはデータD4が格納される。そして、プロセッサ102A、112A、102B及び112Bは、それぞれ取得した学習データを用いて機械学習を開始する。
【0040】
状態202は、順伝播学習時の計算ノード10A及び10Bの状態を示す。プロセッサ102Aは、個別メモリ101Aに格納されたデータD1を用いて順伝播計算を実行する。そして、プロセッサ102Aは、順伝播学習の結果を含むデータD1’を個別メモリ101Aに格納する。プロセッサ112Aは、個別メモリ111Aに格納されたデータD2を用いて順伝播計算を実行する。そして、プロセッサ112Aは、順伝播学習の結果を含むデータD2’を個別メモリ111Aに格納する。プロセッサ102Bは、個別メモリ101Bに格納されたデータD3を用いて順伝播計算を実行する。そして、プロセッサ102Bは、順伝播学習の結果を含むデータD3’を個別メモリ101Bに格納する。プロセッサ112Bは、個別メモリ111Bに格納されたデータD4を用いて順伝播計算を実行する。そして、プロセッサ112Bは、順伝播学習の結果を含むデータD4’を個別メモリ111Bに格納する。
【0041】
状態203は、順伝番学習終了後の計算ノード10A及び10Bの状態を示す。順伝播学習が終了すると、プロセッサ102Aは、順伝播学習で得られた順伝播の損失の情報を共有メモリ120Aに記録してデータM1を保持させる。また、プロセッサ112Aは、順伝播学習で得られた順伝播の損失の情報を共有メモリ120Aに記録してデータM2を保持させる。また、プロセッサ102Bは、順伝播学習で得られた順伝播の損失の情報を共有メモリ120Bに記録してデータM3を保持させる。また、プロセッサ112Bは、順伝播学習で得られた順伝播の損失の情報を共有メモリ120Bに記録してデータM4を保持させる。
【0042】
状態204は、逆伝播学習時の計算ノード10A及び10Bの状態を示す。プロセッサ102Aは、個別メモリ101Aに格納されたデータD1’を用いて逆伝播計算を実行する。そして、プロセッサ102Aは、逆伝播学習の結果を含むデータD1’’を個別メモリ101Aに格納する。プロセッサ112Aは、個別メモリ111Aに格納されたデータD2’を用いて逆伝播計算を実行する。そして、プロセッサ112Aは、逆伝播学習の結果を含むデータD2’’を個別メモリ111Aに格納する。プロセッサ102Bは、個別メモリ101Bに格納されたデータD3’を用いて逆伝播計算を実行する。そして、プロセッサ102Bは、逆伝播学習の結果を含むデータD3’’を個別メモリ101Bに格納する。プロセッサ112Bは、個別メモリ111Bに格納されたデータD4’を用いて逆伝播計算を実行する。そして、プロセッサ112Bは、逆伝播学習の結果を含むデータD4’’を個別メモリ111Bに格納する。
【0043】
状態205は、逆伝番学習終了後の計算ノード10A及び10Bの状態を示す。逆伝播学習が終了すると、プロセッサ102Aは、逆伝播学習で得られた逆伝播の勾配の情報を共有メモリ120Aに記録してデータM1’を保持させる。また、プロセッサ112Aは、逆伝播学習で得られた逆伝播の勾配の情報を共有メモリ120Aに記録してデータM2’を保持させる。また、プロセッサ102Bは、逆伝播学習で得られた逆伝播の勾配の情報’を共有メモリ120Bに記録してデータM3’を保持させる。また、プロセッサ112Bは、逆伝播学習で得られた逆伝播の勾配の情報を共有メモリ120Bに記録してデータM4’を保持させる。
【0044】
状態206は、パラメータ更新処理時の計算ノード10A及び10Bの状態を示す。プロセッサ102A、プロセッサ112A、102B及び112Bは、それぞれによる順伝播学習の結果及び逆伝播学習の結果を共有する。次に、プロセッサ102Aは、共有したデータを用いて保持する機械学習モデルのパラメータを更新する。そして、プロセッサ102Aは、パラメータの更新の結果を含むデータD1’’’を個別メモリ101Aに格納する。プロセッサ112Aは、共有したデータを用いて保持する機械学習モデルのパラメータを更新する。そして、プロセッサ112Aは、パラメータの更新の結果を含むデータD2’’’を個別メモリ111Aに格納する。プロセッサ102Bは、共有したデータを用いて保持する機械学習モデルのパラメータを更新する。そして、プロセッサ102Bは、パラメータの更新の結果を含むデータD3’’’を個別メモリ101Bに格納する。プロセッサ112Bは、共有したデータを用いて保持する機械学習モデルのパラメータを更新する。そして、プロセッサ112Bは、パラメータの更新の結果を含むデータD4’’’を個別メモリ111Bに格納する。
【0045】
状態207は、パラメータ更新処理終了後の計算ノード10A及び10Bの状態を示す。パラメータ更新処理が終了すると、プロセッサ102Aは、パラメータ更新処理で得られたオプティマイザー状態及びモデルパラメータを共有メモリ120Aに記録して含むデータM1’’を保持させる。また、プロセッサ112Aは、パラメータ更新処理で得られたオプティマイザー状態及びモデルパラメータを共有メモリ120Aに記録してデータM2’’を保持させる。また、プロセッサ102Bは、パラメータ更新処理で得られたオプティマイザー状態及びモデルパラメータを共有メモリ120Bに記録してデータM3’’を保持させる。また、プロセッサ112Bは、パラメータ更新処理で得られたオプティマイザー状態及びモデルパラメータを共有メモリ120Bに記録してデータM4’’を保持させる。
【0046】
図3は、プロセス異常発生時の動作を示す図である。状態211は、プロセス異常が発生した計算ノード10A及び10Bの状態を示す。また、状態212は、プロセス異常発生後の計算ノード10A及び10Bの状態を示す。また、ここでは、共有メモリ120AがデータM1及びM2を保持しており、共有メモリ120BがデータM3及びM4を保持する場合で説明する。
【0047】
状態211に示すように、プロセッサ112B及び個別メモリ111Bにより実行される機械学習プロセスにプロセス異常が発生した場合で説明する。この場合、プロセッサ112B及び個別メモリ111Bにより実行される機械学習プロセスは停止する。
【0048】
そして、状態212に示すように、プロセッサ112Bとともに共有メモリ120Bを共有するプロセッサ102Bが、共有メモリ120Bに格納されたデータM4を取得する。そして、プロセッサ102Bは、取得したデータM4及び機械学習モデルを用いて機械学習モデルのスナップショットSS4を生成してストレージ装置30に格納する。また、プロセッサ102Bは、共有メモリ120Bに格納されたデータM3を取得する。そして、プロセッサ102Bは、取得したデータM3及び機械学習モデルを用いて機械学習モデルのスナップショットSS3を生成してストレージ装置30に格納する。同様に、プロセッサ102Aは、共有メモリ120Aに格納されたデータM1を取得する。そして、プロセッサ102Aは、取得したデータM1及び機械学習モデルを用いて機械学習モデルのスナップショットSS1を生成してストレージ装置30に格納する。また、プロセッサ112Aは、共有メモリ120Aに格納されたデータM2を取得する。そして、プロセッサ112Aは、取得したデータM2及び機械学習モデルを用いて機械学習モデルのスナップショットSS2を生成してストレージ装置30に格納する。
【0049】
このように、ある機械学習プロセスにプロセス異常が発生した場合に、他の機械学習プロセスが、完了した直近の順伝播学習、逆伝播学習又はパラメータ更新処理までのデータを用いて異常発生の直近の時点における機械学習モデルのスナップショットを生成する。これにより、並列分散機械学習システム1は、チェックポイントよりもプロセス異常の発生した時点に近い状態から機械学習を再開することができる。
【0050】
図4は、実施例に係る並列分散機械学習システムによる機械学習のフローチャートである。次に、
図4を参照して、本実施例に係る並列分散機械学習システム1による機械学習の処理の流れを説明する。
【0051】
管理ノード20は、学習を行う対象となる機械学習モデルを各計算ノード10へ送信して分配する(ステップS101)。
【0052】
次に、管理ノード20は、利用者から学習データの入力を受ける(ステップS102)。
【0053】
そして、管理ノード20は、学習データを分けて各計算ノード10に分散配布する(ステップS103)。
【0054】
異常検知部104は、共有メモリ120を共有する学習実行部113により実行される機械学習プロセスの状態監視を開始する(ステップS104)。
【0055】
学習実行部103は、機械学習モデル及び学習データを用いて順伝播計算を行って順伝播学習を実施する(ステップS105)。
【0056】
異常検知部104は、学習実行部113による順伝播学習の実施中に、プロセッサ112により実行される機械学習プロセスのプロセス異常を検知したか否かを判定する(ステップS106)。プロセス異常が検知された場合(ステップS106:肯定)、機械学習の処理は、ステップS113へ進む。
【0057】
これに対して、プロセス異常が検知されない場合(ステップS106:否定)、順伝播学習の完了後、学習実行部103は、順伝播学習で得られた結果である順伝播の損失の情報を共有メモリ120に記録する(ステップS107)。
【0058】
次に、学習実行部103は、機械学習モデル及び順伝播学習の結果を用いて逆伝播計算を行って逆伝播学習を実施する(ステップS108)。
【0059】
異常検知部104は、学習実行部113による逆伝播学習の実施中に、プロセッサ112により実行される機械学習プロセスのプロセス異常を検知したか否かを判定する(ステップS109)。プロセス異常が検知された場合(ステップS109:肯定)、機械学習の処理は、ステップS113へ進む。
【0060】
これに対して、プロセス異常が検知されない場合(ステップS109:否定)、逆伝播学習の完了後、学習実行部103は、逆伝播学習で得られた結果である逆伝播の勾配の情報を共有メモリ120に記録する(ステップS110)。
【0061】
次に、学習実行部103は、自ノードにおける学習実行部113及び他の計算ノード10における学習実行部103及び113との間で通信を行い、順伝播学習及び逆伝播学習の結果を共有する。その後、学習実行部103は、共有した順伝播学習及び逆伝播学習の結果を用いて、機械学習モデルのモデルパラメータの更新などのパラメータ更新処理を実施する(ステップS111)。
【0062】
異常検知部104は、学習実行部113によるパラメータ更新処理の実施中に、プロセッサ112により実行される機械学習プロセスのプロセス異常を検知したか否かを判定する(ステップS112)。プロセス異常が検知された場合(ステップS112:肯定)、機械学習の処理は、ステップS113へ進む。
【0063】
ここで、プロセス異常が検知された場合(ステップS106、S109又はS112:肯定)、異常検知部104は、異常が発生したプロセッサ112が実行する機械学習プロセスのデータを共有メモリ120から取得する(ステップS113)。例えば、順伝搬学習実施中にプロセス異常を検知した場合には、異常検知部104は、現在のサイクルよりもひとつ前のサイクルのオプティマイザー状態及びモデルパラメータに関するデータを取得する。また、異常検知部104は、逆伝搬学習実施中にプロセス異常を検知した場合には順伝播の損失に関するデータを、パラメータ更新処理実施中にプロセス異常を検知した際には逆伝播の勾配に関するデータを共有メモリ120から取得する。なお、1回目のサイクルにおける順伝搬学習の実施中にプロセス異常を検知した場合には、当該機械学習プロセスのデータが共有メモリ120に登録されていないため、機械学習の処理は、ステップS103に戻る。
【0064】
次に、異常検知部104は、プロセッサ112が実行していた機械学習プロセスのデータ及び機械学習モデルを用いて、異常発生の直近の時点でのプロセッサ112における機械学習モデルのスナップショットを生成する。また、異常検知部104は、プロセッサ102が実行する機械学習プロセスのデータを共有メモリ120から取得して、プロセッサ102における機械学習プロセスのスナップショットを生成する。その後、異常検知部104は、プロセッサ102及112のそれぞれが保持していた機械学習モデルのスナップショットをストレージ装置30に保存する。また、他の計算ノード10における異常検知部104及び114も、それぞれに対応するプロセッサ102及び112のそれぞれにおける機械学習モデルのスナップショットを生成してストレージ装置30に保存する。すなわち、並列分散機械学習システム1は、異常が発生した機械学習プロセスのデータと他の機械学習プロセスのデータとを合わせて、それぞれのスナップショットを生成してストレージ装置30に保存する(ステップS114)。その後、機械学習の処理は、ステップS120へ進む。
【0065】
これに対して、プロセス異常が検知されない場合(ステップS112:否定)、パラメータ更新処理の完了後、学習実行部103は、パラメータ更新処理の結果であるオプティマイザー状態及びモデルパラメータを共有メモリ120に記録する(ステップS115)。
【0066】
学習実行部103は、順伝播学習、逆伝播学習及びパラメータ更新処理が完了すると、チェックポイント保存サイクルが到来したか否かを判定する(ステップS116)。
【0067】
チェックポイント保存サイクルが到来していない場合(ステップS116:否定)、機械学習の処理は、ステップS118へ進む。
【0068】
これに対して、チェックポイント保存サイクルが到来した場合(ステップS116:肯定)、学習実行部103は、生成した機械学習モデルのスナップショットをストレージ装置30へ保存する(ステップS117)。なお、n回目以降(n≧2)のサイクルにおいて、順伝搬学習の実施中にプロセス異常を検知した場合に、n-1回目のサイクルの学習実施後のスナップショットがストレージ装置30に保存されている場合には、異常検知部104は、当該スナップショットを取得してもよい。
【0069】
その後、学習実行部103は、機械学習の最終サイクルが到来したか否かを判定する(ステップS118)。機械学習の最終サイクルが到来していない場合(ステップS118:否定)、機械学習の処理は、ステップS103へ戻る。
【0070】
これに対して、機械学習の最終サイクルが到来した場合(ステップS118:肯定)、学習実行部103は、機械学習を終了する。その後、学習実行部103は、学習済みの機械学習モデルのデータを管理ノード20へ送信する(ステップS119)。
【0071】
その後、学習実行部103は、共有メモリ120を解放する(ステップS120)。
【0072】
ここで、本実施形態では、並列分散機械学習システム1は、1つの機械学習プロセスにプロセス異常が発生した場合に、全ての機械学習プロセスを停止して、スナップショット生成された時点から学習を再開するとした。ただし、これに限らず、並列分散機械学習システム1は、プロセス異常が発生していない機械学習プロセスは停止せずに、プロセス異常が発生した機械学習プロセスを立ち上げ直してもよい。その場合、学習実行部103は、直近の時点で生成されたスナップショットを用いて、そのスナップショットが生成された時点から学習を再開させてもよい。また、その場合、学習実行部103は、共有メモリ120に格納されたデータを用いて学習を再開することも可能である。
【0073】
さらに、本実施例では、プロセス異常の場合を例に説明したが、プロセッサ102や112に異常が発生した場合にも、学習実行部103は、直近の時点で生成されたスナップショットを用いて機械学習を再開することが可能である。
【0074】
以上に説明したように、本実施例に係る並列分散機械学習システムにおける各機械学習プロセスは、順伝播学習、逆伝播学習及びパラメータ更新処理のそれぞれの終了後にそれまでの機械学習で得られたデータを共有メモリに格納する。そして、特定の機械学習プロセスでプロセス異常が発生した場合、特定の機械学習プロセスと共有メモリを共有する機械学習プロセスが、共有メモリからプロセス異常が発生した特定の機械学習プロセスのデータを取得する。そして、特定の機械学習プロセスと共有メモリを共有する機械学習プロセスは、取得したデータから異常発生の直近の時点でのスナップショットを生成して外部ストレージに格納する。この際、プロセス異常が発生していない他の機械学習プロセスについても、同じ異常発生の直近の時点でのスナップショットが生成されて外部ストレージに格納される。
【0075】
これにより、並列分散機械学習システムは、プロセス異常が発生した時点から最も近い順伝播学習、逆伝播学習又はパラメータ更新処理の終了時点から機械学習を再開することができる。したがって、チェックポイントを多数設けてスナップショットを大量に保存せずに、プロセス異常が発生した時点にチェックポイントよりも近い時点から機械学習を再開することができ、全体的な学習時間の短縮及びコスト削減が可能となる。すなわち、機械学習の学習効率を向上させることができる。
【0076】
(ハードウェア構成)
図5は、コンピュータのハードウェア構成図である。
図1に示した計算ノード10は、例えば、
図5に示すコンピュータ90により実現される。コンピュータ90は、
図5に示すように、CPU(Central Processing Unit)91及び92、メモリ93~95、ハードディスク96及びネットワークインタフェース97を有する。CPU91及び92は、バスを介して、メモリ93~95、ハードディスク96及びネットワークインタフェース97に接続される。
【0077】
ネットワークインタフェース97は、コンピュータ90と外部装置との通信のためのインタフェースである。ネットワークインタフェース97は、例えば、CPU91及び92と他の計算ノード10や、管理ノード20や、ストレージ装置30との間の通信を中継する。
【0078】
ハードディスク96は、補助記憶装置である。ハードディスク96は、
図1に例示した、学習実行部103及び113、並びに、異常検知部104及び114の機能を実現するプログラムを含む各種プログラムを格納する。
【0079】
メモリ93~95は、主記憶装置である。メモリ92~95は、例えば、DRAM(Dynamic Random Access Memory)を用いることができる。メモリ93は、
図1に例示した個別メモリ101の機能を実現する。また、メモリ94は、
図1に例示した個別メモリ111の機能を実現する。また、メモリ95は、
図1に例示した共有メモリ120の機能を実現する。また、メモリ93~95は、1つのメモリにおける異なる領域であってもよい。
【0080】
CPU91は、
図1に例示したプロセッサ102の一例にあたる。CPU91は、ハードディスク96から各種プログラムを読み出してメモリ93に展開して実行する。これにより、CPU91は、
図1に例示した、学習実行部103及び異常検知部104の機能を実現することができる。
【0081】
CPU92は、
図1に例示したプロセッサ112の一例にあたる。CPU92は、ハードディスク96から各種プログラムを読み出してメモリ94に展開して実行する。これにより、CPU92は、
図1に例示した、学習実行部113及び異常検知部114の機能を実現することができる。