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

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

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

<>
  • 特開-分散学習プログラム、方法、及び装置 図1
  • 特開-分散学習プログラム、方法、及び装置 図2
  • 特開-分散学習プログラム、方法、及び装置 図3
  • 特開-分散学習プログラム、方法、及び装置 図4
  • 特開-分散学習プログラム、方法、及び装置 図5
  • 特開-分散学習プログラム、方法、及び装置 図6
  • 特開-分散学習プログラム、方法、及び装置 図7
  • 特開-分散学習プログラム、方法、及び装置 図8
  • 特開-分散学習プログラム、方法、及び装置 図9
  • 特開-分散学習プログラム、方法、及び装置 図10
  • 特開-分散学習プログラム、方法、及び装置 図11
  • 特開-分散学習プログラム、方法、及び装置 図12
  • 特開-分散学習プログラム、方法、及び装置 図13
  • 特開-分散学習プログラム、方法、及び装置 図14
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024084503
(43)【公開日】2024-06-25
(54)【発明の名称】分散学習プログラム、方法、及び装置
(51)【国際特許分類】
   G06N 3/098 20230101AFI20240618BHJP
   G06F 9/38 20180101ALI20240618BHJP
   G06F 9/50 20060101ALI20240618BHJP
   G06N 3/063 20230101ALI20240618BHJP
【FI】
G06N3/098
G06F9/38 370A
G06F9/50 150D
G06N3/063
【審査請求】未請求
【請求項の数】11
【出願形態】OL
(21)【出願番号】P 2022198811
(22)【出願日】2022-12-13
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110001519
【氏名又は名称】弁理士法人太陽国際特許事務所
(72)【発明者】
【氏名】田渕 晶大
【テーマコード(参考)】
5B013
【Fターム(参考)】
5B013DD01
(57)【要約】
【課題】メモリ容量が不足する場合でも、逆伝播処理を実行可能にする。
【解決手段】複数のレイヤを含む機械学習モデルの機械学習を、各々がメモリを有する複数のノードで並列に実行する場合に、メモリ容量の不足が発生する1以上のレイヤを含むレイヤ群を特定し、特定したレイヤ群での処理を、複数のノードで分担して実行させる。
【選択図】図6
【特許請求の範囲】
【請求項1】
複数のレイヤを含む機械学習モデルの機械学習を、各々がメモリを有する複数のノードで並列に実行する場合に、メモリ容量の不足が発生する1以上のレイヤを含むレイヤ群を特定し、
特定した前記レイヤ群での処理を、前記複数のノードで分担して実行させる
ことを含む処理をコンピュータに実行させるための分散学習プログラム。
【請求項2】
前記レイヤ群を特定する処理は、前記機械学習における逆伝播処理時に行うことを特徴とする請求項1に記載の分散学習プログラム。
【請求項3】
前記レイヤ群を特定する処理は、前記逆伝播処理時に、メモリ容量不足で機械学習の実行がエラーとなる箇所を特定することを含む請求項2に記載の分散学習プログラム。
【請求項4】
前記レイヤ群を特定する処理は、前記複数のノードよりもメモリ容量が大きい環境で前記機械学習を実行した場合のメモリ使用量のプロファイルを取得し、前記プロファイルに基づいて、メモリ使用量が実機である前記複数のノードのメモリ容量を超える箇所を特定することを含む請求項2に記載の分散学習プログラム。
【請求項5】
前記レイヤ群がアクティベーションチェックポイントを行うレイヤのグループの場合、前記複数のノードで前記レイヤ群の処理を分担させることは、第1のノードで再計算したアクティベーションを、第2のノードのメモリに保持させることを含む請求項1~請求項4のいずれか1項に記載の分散学習プログラム。
【請求項6】
前記複数のノードで前記レイヤ群の処理を分担させることは、前記レイヤ群での処理を前記複数のノードのうちの2以上のノードによりテンソル並列で実行させることを含む請求項1~請求項4のいずれか1項に記載の分散学習プログラム。
【請求項7】
前記複数のノードで前記レイヤ群の処理を分担させる方法として、前記複数のノードのノード数と、選択可能な方法との組み合わせ毎の候補の各々について前記逆伝播処理を実行した場合に、メモリ容量が不足せず、かつ処理時間が最短の候補を選択する請求項2~請求項4のいずれか1項に記載の分散学習プログラム。
【請求項8】
メモリ容量不足が発生した原因、及び前記レイヤ群に含まれるレイヤの数の少なくとも一方に基づいて、前記候補を絞り込む請求項7に記載の分散学習プログラム。
【請求項9】
前記メモリ容量の不足が発生しない部分は、前記複数のノードで、データ並列により機械学習を実行する請求項1~請求項4のいずれか1項に記載の分散学習プログラム。
【請求項10】
複数のレイヤを含む機械学習モデルの機械学習を、各々がメモリを有する複数のノードで並列に実行する場合における逆伝播処理時に、メモリ容量の不足が発生する1以上のレイヤを含むレイヤ群を特定し、
特定した前記レイヤ群での処理を、前記複数のノードで分担して実行させる
ことを含む処理をコンピュータが実行する分散学習方法。
【請求項11】
複数のレイヤを含む機械学習モデルの機械学習を、各々がメモリを有する複数のノードで並列に実行する場合における逆伝播処理時に、メモリ容量の不足が発生する1以上のレイヤを含むレイヤ群を特定する特定部と、
特定した前記レイヤ群での処理を、前記複数のノードで分担して実行させる設定部と、
を含む分散学習装置。
【発明の詳細な説明】
【技術分野】
【0001】
開示の技術は、分散学習プログラム、分散学習方法、及び分散学習装置に関する。
【背景技術】
【0002】
従来、深層学習によるニューラルネットワークモデルの規模は増加し続けており、その計算時には多くのメモリ容量を必要とする。特に、ニューラルネットワークモデルの機械学習時には、重みの勾配計算のための各レイヤのアクティベーションの保持、重み状態の保持、計算のためのワーキングメモリ等、推論時よりも多くのメモリ容量が必要となる。
【0003】
機械学習の実行時にメモリ容量が不足すると、機械学習の処理を完了することができなくなる。そこで、複数のノードでモデルを並列化して機械学習を実行すること(以下、「モデル並列」という)が行われている。例えば、それぞれにニューラルネットワークの一部分が割り付けられ、入力データに基づいて学習結果を導出すると共に、学習結果を用いてニューラルネットワークの一部分に含まれるパラメタの値をそれぞれ更新するように構成されたシステムが提案されている。
【0004】
また、機械学習時に必要となるアクティベーションの保持やワーキングメモリによってメモリ容量が不足する場合、保持するアクティベーションを間引くアクティベーションチェックポインティングという手法により、メモリ使用量を削減することが行われている。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】国際公開第2021/111490号
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、アクティベーションチェックポインティングで削減できるメモリ使用量には限りがあり、逆伝播処理時のアクティベーションの再計算及びワーキングメモリによって、一時的にメモリ容量不足が発生し、機械学習を完了できない場合がある。また、モデル並列では並列化効率が悪く、分散学習を実行するノード数を増やした分に見合う機械学習の効率化が得られ難いという問題がある。
【0007】
一つの側面として、開示の技術は、メモリ容量が不足する場合でも、逆伝播処理を実行可能にすることを目的とする。
【課題を解決するための手段】
【0008】
一つの態様として、開示の技術は、複数のレイヤを含む機械学習モデルの機械学習を、各々がメモリを有する複数のノードで並列に実行する場合における逆伝播処理時に、メモリ容量の不足が発生する1以上のレイヤを含むレイヤ群を特定する。そして、開示の技術は、特定した前記レイヤ群での処理を、前記複数のノードで分担して実行させる。
【発明の効果】
【0009】
一つの側面として、メモリが不足している場合でも、逆伝播処理を実行可能にする、という効果を有する。
【図面の簡単な説明】
【0010】
図1】分散学習装置の機能ブロック図である。
図2】推論時のメモリの使用を説明するための図である。
図3】学習時のメモリの使用を説明するための図である。
図4】データ並列及びモデル並列を説明するための図である。
図5】アクティベーションチェックポインティングを説明するための図である。
図6】本実施形態の概要説明図である。
図7】WSPの特定を説明するための図である。
図8】アクティベーション分散を説明するための図である。
図9】ワークシェアリングの一例を説明するための図である。
図10】分散学習装置として機能するコンピュータの概略構成を示すブロック図である。
図11】分散学習処理の一例を示すフローチャートである。
図12】選択処理の一例を示すフローチャートである。
図13】本実施形態の適用の効果を説明するための図である。
図14】本実施形態の適用の効果を説明するための図である。
【発明を実施するための形態】
【0011】
以下、図面を参照して、開示の技術に係る実施形態の一例を説明する。
【0012】
図1に示すように、本実施形態に係る分散学習装置10は、機能的には、特定部12と、設定部14と、学習部16とを含む。
【0013】
学習部16は、複数のレイヤを含むディープニューラルネットワークモデル(以下、単に「モデル」ともいう)の機械学習を実行する機能部である。学習部16は、複数の実行部16n(n=1,2,・・・,N、Nは実行部の数)を含む。各実行部16nは、モデルの分散学習を実行する複数のノードの各々により実現される機能部である。ノードは、1つのプロセスを担当するコンピュータ、プロセッサ等であり、各ノードはそれぞれメモリを有する。学習部16は、複数の実行部16nに並列でモデルの機械学習を実行させる。すなわち、複数のノードで並列にモデルの機械学習が実行される。本実施形態では、後述するメモリ容量不足が発生しない部分では、複数のノードでデータ並列によりモデルの分散学習を実行する。
【0014】
ここで、機械学習済みのモデルを用いた推論処理時には、図2に示すように、入力、パラメタ、及び出力の各データがメモリに保持される。パラメタは、モデルを構成する各レイヤの重み等である。一方、モデルの機械学習時には、図3に示すように、入力、パラメタ、及び出力の各データに加え、逆伝播処理時に必要なアクティベーション、モーメンタム等の最適化処理に必要なオプティマイザの情報等、推論時に比べ多くのデータがメモリに保持される。そのため、特に逆伝播処理時に、メモリ容量不足が発生し易い。
【0015】
メモリ容量不足の対処方法には、以下のようなものがある。例えば、パラメタ、オプティマイザの情報等でメモリ容量が不足する場合、データ並列又はパイプライン並列等の、パラメタ、オプティマイザの情報等を複数のノードに分散する方法がある。また、アクティベーションでメモリ容量が不足する場合、保持するアクティベーションを間引くアクティベーションチェックポインティングや、テンソル並列又はパイプライン並列等の、保持するアクティベーションを複数のノードに分散する方法がある。
【0016】
図4に示すように、データ並列は、入力データを複数のノード(図4の例では、ノード0及びノード1)で分割し、並列にモデルの機械学習を実行する方法である。テンソル並列及びパイプライン並列は、モデルを複数のノードに分散させて機械学習を並列に実行するモデル並列の一例である。テンソル並列は、各レイヤ内を分割して複数のノードに分散させる方法、パイプライン並列は、モデルをレイヤ間で分割して複数のノードに分散させる方法である。
【0017】
また、図5に示すように、アクティベーションチェックポインティングは、アクティベーションチェックポインティングを行うレイヤのグループ(図5中の破線部分、以下、「ACグループ」という)を設定する。そして、ACグループの先頭のレイヤへの入力のみをチェックポイントとして保持することで、メモリ使用量を削減する。保持しないアクティベーション(図5中の点線で示すアクティベーション)は、逆伝播時にチェックポイントとして保持されているアクティベーションから再計算して求める。
【0018】
しかし、アクティベーションチェックポインティングで減らせるメモリ使用量には限界がある。具体的には、モデルに含まれるレイヤ数をn、各レイヤのアクティベーションのデータ量をs、ACグループ内のレイヤ数をcとすると、アクティベーションの最大量は(ns/c+cs)となる。ns/cは順伝播終了時にメモリに保持されるデータ量であり、csは再計算で増加するデータ量である。アクティベーションの最小量は、c=√nの場合で、2s√nであり、メモリ使用量の大きな削減効果は見込めない。
【0019】
また、モデル並列を適用すると、メモリ使用量は大幅に減るが、機械学習の計算効率が低下するという問題がある。ミニバッチ当たりのマイクロバッチ数をn_μb、ノード数をn_pとすると、パイプライン並列による並列化効率は、(n_μb)/(n_μb+n_p-1)である。したがって、分散するノード数が多いほど、また、マイクロバッチ数が少ないほど効率は悪化する。バッチ数を増やすと全体のバッチサイズ増加につながることから、分散学習ではなるべく避けたいため、パイプライン並列により効率を向上させるのは困難である。また、テンソル並列では、各レイヤの順伝播処理及び逆伝播処理でレイヤ間の通信が必要となり、オーバヘッドが大きく、計算効率が悪い。
【0020】
そこで、本実施形態では、図6に示すように、特定部12が、メモリ容量不足により逆伝播処理が実行不可となる箇所を特定し、設定部14が、特定された箇所の処理を複数のノードに分担させる。これにより、メモリ容量不足を回避し、逆伝播処理の実行を可能にする。なお、図6のAは、学習対象のモデルであり、図6のBは、メモリ容量不足が生じる様子、図6のCは、処理を分担させてメモリ容量不足を解消した様子を示す図である。図6のB及びCでは、モデル内の各レイヤについて、入力側に近いレイヤほど網点の濃淡を薄くし、出力側に近いレイヤほど網点の濃淡を濃くして、各レイヤを識別している。また、図6のB及びCの各々において、上段の図は、各ノード(図6の例では、ノード0及びノード1)におけるレイヤの処理順を示す。下段のグラフは、上段で示すレイヤの処理順に対応させたメモリ使用量を表しており、一点鎖線は、メモリ容量を表す。以下の図においても同様である。
【0021】
以下、特定部12及び設定部14の各々について詳述する。
【0022】
特定部12は、複数のレイヤを含む機械学習モデルの機械学習を、各々がメモリを有する複数のノードで並列に実行する場合における逆伝播処理時に、メモリ容量の不足が発生する1以上のレイヤを含むレイヤ群を特定する。具体的には、特定部12は、メモリ容量不足により逆伝播処理が実行不可となるレイヤ又はそのレイヤが属するACグループを特定する。以下では、特定部12により特定されるレイヤ又はACグループを、複数のノードでワークシェアリングを行う部分、略して「WSP」という。
【0023】
より具体的には、図7に示すように、特定部12は、学習部16にモデルの機械学習を1ステップ実行させ、逆伝播処理時に、メモリ容量不足で機械学習の実行がエラーとなった箇所に対応するWSPを特定する。図7の下図において、メモリ使用量がメモリ容量を超える箇所が、メモリ容量不足で機械学習の実行がエラーとなった箇所を表しており、図7の上図において破線の楕円で示す部分が、その箇所に対応するWSPである。例えば、特定部12は、エラーで機械学習が停止した段階で、どのレイヤのアクティベーションがメモリに保持されているか等に基づいてWSPを特定する。特定部12は、特定したWSPについて、設定部14でワークシェアリング方法(詳細は後述)が設定されると、学習部16にモデルの1ステップ分の機械学習を再度実行させることを繰り返すことで、残りのWSPを特定する。
【0024】
また、特定部12は、機械学習を実際に行う実機のノードのメモリよりもメモリ容量が大きい環境、すなわちメモリ容量が潤沢な環境で、学習部16に1ステップ分の機械学習を事前に実行させ、その際のメモリ使用量のプロファイルを取得してもよい。この場合、特定部12は、取得したプロファイルに基づいて、メモリ使用量が実機のノードのメモリ容量を超える箇所を特定すればよい。また、特定部12は、ユーザにより指定されたWSPの情報を取得することにより、WSPを特定してもよい。
【0025】
設定部14は、特定部12で特定されたWSP毎に、複数のノードに処理を分担させるためのワークシェアリング方法を選択する。具体的には、設定部14は、ワークシェアリングの種類として、テンソル並列又はアクティベーション分散を選択すると共に、ワークシェアリングを行うノード数を選択する。テンソル並列は、図4で説明したように、モデルのテンソルを分割し、各ノードに分散させる方法である。アクティベーション分散は、図8に示すように、あるノードにおけるアクティベーションの再計算においてメモリ容量不足が発生する場合、そのノードで再計算したアクティベーションを他のノードのメモリに保持させる方法である。図8では、ノード0で再計算されたアクティベーションをノード1のメモリに保持させる例を示している。
【0026】
また、設定部14は、ワークシェアリングを行うノード数を、無駄なノードが発生しないように、ワークシェアリングするノード群に含まれるノード数が、全ノード数の約数となるように選択する。図9に、ワークシェアリングの設定の一例を示す。図9の例では、全ノード数は4であり、WSP1については、2つのノードを1組とし、2組でワークシェアリングし、WSP2については、4つのノードでワークシェアリングする例である。このように、ワークシェアリングを行うノード数は、WSP毎に異なっていてもよい。
【0027】
設定部14は、ワークシェアリングの方法の選択肢と、ワークシェアリングを行うノード数の選択肢との組み合わせをワークシェアリング方法の候補として列挙する。なお、設定部14は、メモリ容量不足となった原因、WSPが1レイヤかACグループか等に基づいて、候補の絞り込みを行ってもよい。例えば、WSPが1レイヤであり、そのレイヤでの処理に必要なメモリ容量が膨大なためにメモリ容量不足となった場合には、ワークシェアリング方法がテンソル並列である候補に絞り込んでもよい。また、アクティベーションチェックポイントで再計算するアクティベーションが膨大なためにメモリ容量不足となった場合には、ワークシェアリング方法がアクティベーション分散である候補に絞り込んでもよい。
【0028】
そして、設定部14は、各候補をWSPに適用して逆伝播処理を実行した場合に、メモリ容量が不足せず、かつ処理時間が最短となる候補を、ワークシェアリング方法として選択する。設定部14は、選択したWSP毎のワークシェアリング方法を各ノード(各実行部16n)に設定する。これにより、学習部16が実行部16nにモデルの機械学習を実行させる際に、WSPでは、設定された各ノードが、WSP内のレイヤの処理を分担して順次実行することで、ワークシェアリングが実現される。
【0029】
なお、設定部14は、ユーザによりWSP及びWSP毎のワークシェアリング方法が指定されている場合には、その指定に従って、WSP毎のワークシェアリング方法を各ノード(各実行部16n)に設定すればよい。
【0030】
分散学習装置10は、例えば図10に示すコンピュータ40で実現されてよい。コンピュータ40は、CPU(Central Processing Unit)41と、一時記憶領域としてのメモリ42と、不揮発性の記憶装置43とを備える。また、コンピュータ40は、入力装置、表示装置等の入出力装置44と、記憶媒体49に対するデータの読み込み及び書き込みを制御するR/W(Read/Write)装置45とを備える。また、コンピュータ40は、インターネット等のネットワークに接続される通信I/F(Interface)46を備える。CPU41、メモリ42、記憶装置43、入出力装置44、R/W装置45、及び通信I/F46は、バス47を介して互いに接続される。
【0031】
記憶装置43は、例えば、HDD(Hard Disk Drive)、SSD(Solid State Drive)、フラッシュメモリ等である。記憶媒体としての記憶装置43には、コンピュータ40を、分散学習装置10として機能させるための分散学習プログラム50が記憶される。分散学習プログラム50は、特定プロセス制御命令52と、設定プロセス制御命令54と、学習プロセス制御命令56とを有する。
【0032】
CPU41は、分散学習プログラム50を記憶装置43から読み出してメモリ42に展開し、分散学習プログラム50が有する制御命令を順次実行する。CPU41は、特定プロセス制御命令52を実行することで、図1に示す特定部12として動作する。また、CPU41は、設定プロセス制御命令54を実行することで、図1に示す設定部14として動作する。また、CPU41は、学習プロセス制御命令56を実行することで、図1に示す学習部16として動作する。これにより、分散学習プログラム50を実行したコンピュータ40が、分散学習装置10として機能することになる。なお、プログラムを実行するCPU41はハードウェアである。
【0033】
なお、分散学習プログラム50により実現される機能は、例えば半導体集積回路、より詳しくはASIC(Application Specific Integrated Circuit)、FPGA(Field-Programmable Gate Array)等で実現されてもよい。
【0034】
次に、本実施形態に係る分散学習装置10の動作について説明する。分散学習装置10において、モデルの機械学習が指示されると、分散学習装置10において、図11に示す分散学習処理が実行される。なお、分散学習処理は、開示の技術の分散学習方法の一例である。
【0035】
ステップS10で、設定部14が、ユーザにより、WSP及びWSP毎のワークシェアリング方法が指定されているか否かを判定する。指定されている場合には、ステップS12へ移行し、指定されていない場合には、ステップS14へ移行する。
【0036】
ステップS12では、設定部14が、例えば、テキストファイル等に記述された、ユーザ指定のWSP及びWSP毎のワークシェアリング方法の情報を取得し、取得した情報に基づいて、WSP毎のワークシェアリング方法を各ノードに設定する。そして、ステップS44へ移行する。
【0037】
ステップS14では、学習部16が、モデルの機械学習を1ステップ実行する。次に、ステップS16で、特定部12が、機械学習が正常に実行できたか否かを判定する。正常に実行できた場合には、ステップS44へ移行し、エラーとなった場合には、ステップS18へ移行する。ステップS18では、特定部12が、エラーの原因が、逆伝播処理時にメモリ容量不足が発生したことか否かを判定する。エラーの原因がメモリ容量不足の場合には、ステップS20へ移行し、メモリ容量不足以外の原因の場合には、ステップS42へ移行する。ステップS42では、特定部12が、エラーの原因を出力し、分散学習処理は終了する。
【0038】
ステップS20では、選択処理が実行される。ここで、図12を参照して、選択処理について説明する。
【0039】
ステップS22で、特定部12が、メモリ容量不足となったレイヤは、アクティベーションチェックポインティングを行うレイヤのグループ、すなわちACグループに属するレイヤか否かを判定する。ACグループに属する場合には、ステップS24へ移行し、属さない場合には、ステップS26へ移行する。ステップS24では、特定部12が、メモリ容量不足となったレイヤが属するACグループをWSPとして特定する。一方、ステップS26では、特定部12が、メモリ容量不足となったレイヤをWSPとして特定する。
【0040】
次に、ステップS28で、設定部14が、ワークシェアリングの方法の選択肢と、ワークシェアリングを行うノード数の選択肢との組み合わせをワークシェアリング方法の候補として列挙する。次に、ステップS30で、設定部14が、列挙した候補から1つを選択する。次に、ステップS32で、設定部14が、選択した候補が示すワークシェアリング方法を、上記ステップS24又はS26で特定したWSPに適用して逆伝播処理を実行し、メモリ使用量及び処理時間を記録する。
【0041】
次に、ステップS34で、設定部14が、全ての候補について上記ステップS32の処理が終了したか否かを判定する。未処理の候補が存在する場合には、ステップS30に戻り、全ての候補について処理を終了している場合には、ステップS36へ移行する。ステップS36では、設定部14が、メモリ容量が不足せず、かつ処理時間が最短となる候補を、ワークシェアリング方法として選択し、分散学習処理(図11)にリターンする。
【0042】
次に、ステップS40で、設定部14が、特定部12により特定されたWSP、及びそのWSPについて選択したワークシェアリング方法を各ノード(各実行部16n)に設定し、ステップS14に戻る。モデル内でメモリ容量不足が発生する箇所が全てWSPとして特定され、ワークシェアリング方法が設定されると、ステップS16で肯定判定され、ステップS44へ移行する。ステップS44では、学習部16が、実行部16nにモデルの機械学習を実行させ、分散学習処理は終了する。
【0043】
なお、メモリ容量が潤沢な環境でモデルの機械学習を実行して取得したメモリ使用量のプロファイルからWSPを特定する場合、メモリ使用量が実機のメモリ容量を超えている箇所の各々について、ステップS20(図12)の選択処理を実行すればよい。
【0044】
以上説明したように、本実施形態に係る分散学習装置は、複数のレイヤを含む機械学習モデルの機械学習を、各々がメモリを有する複数のノードで並列に実行する。分散学習装置は、その機械学習における逆伝播処理時に、メモリ容量の不足が発生する1以上のレイヤを含むレイヤ群を特定し、特定したレイヤ群での処理を、複数のノードで分担して実行させる。これにより、メモリ容量が不足する場合でも、逆伝播処理を実行可能にすることができる。
【0045】
また、本実施形態に係る分散学習装置は、ノードのメモリ容量不足が発生しない部分は、データ並列により各ノードで独立にモデルの機械学習を実行し、逆伝播時に一時的にメモリ容量が不足する部分において複数のノードでのワークシェアリングを実行する。これにより、メモリ容量不足を回避しつつ、高効率で機械学習を実行することができる。
【0046】
具体例を用いて、本実施形態の適用の効果について説明する。例えば、各ノードのメモリ容量が8GB、各アクティベーションのサイズが1GBであるとする。図13に示すように、ノード0において、順伝播終了時点でメモリ容量を6GB消費しており、アクティベーションの再計算後に9GBが必要となり、メモリ容量不足が発生するとする。
【0047】
図14に示すように、本実施形態を適用して、メモリ容量不足が発生する逆伝播の前半のACグループをWSPとして特定し、ワークシェアリング方法としてアクティベーション分散を適用する。この場合、ノード0で再計算される3GB分のアクティベーションのうち、2GB分をノード1のメモリに保持させる。これにより、ノード0における再計算後にメモリ容量を7GB消費することになり、メモリ容量不足を回避することができる。一方、ノード1でWSP部分の再計算を実行する際には、ノード1のメモリ容量は8GB消費されている。ノード1で再計算され3GB分のアクティベーションのうち、2GB分をノード0のメモリに保持させることで、ノード1のメモリ容量不足を回避する。また、この時点では、ノード0に保持されている再計算されたアクティベーションは、処理の終了に伴い削除されており、6GBのメモリ容量を消費している状態であるため、ノード1で再計算された2GB分のアクティベーションを保持可能となっている。このように、一方のノードで再計算されるアクティベーションを他方のノードのメモリで保持させることで、メモリ容量不足を回避することができる。
【0048】
また、上記実施形態では、分散学習プログラムが記憶装置に予め記憶(インストール)されているが、これに限定されない。開示の技術に係るプログラムは、CD-ROM、DVD-ROM、USBメモリ等の記憶媒体に記憶された形態で提供されてもよい。
【0049】
以上の実施形態に関し、さらに以下の付記を開示する。
【0050】
(付記1)
複数のレイヤを含む機械学習モデルの機械学習を、各々がメモリを有する複数のノードで並列に実行する場合に、メモリ容量の不足が発生する1以上のレイヤを含むレイヤ群を特定し、
特定した前記レイヤ群での処理を、前記複数のノードで分担して実行させる
ことを含む処理をコンピュータに実行させるための分散学習プログラム。
【0051】
(付記2)
前記レイヤ群を特定する処理は、前記機械学習における逆伝播処理時に行うことを特徴とする付記1に記載の分散学習プログラム。
【0052】
(付記3)
前記レイヤ群を特定する処理は、前記逆伝播処理時に、メモリ容量不足で機械学習の実行がエラーとなる箇所を特定することを含む付記2に記載の分散学習プログラム。
【0053】
(付記4)
前記レイヤ群を特定する処理は、前記複数のノードよりもメモリ容量が大きい環境で前記機械学習を実行した場合のメモリ使用量のプロファイルを取得し、前記プロファイルに基づいて、メモリ使用量が実機である前記複数のノードのメモリ容量を超える箇所を特定することを含む付記2に記載の分散学習プログラム。
【0054】
(付記5)
前記レイヤ群がアクティベーションチェックポイントを行うレイヤのグループの場合、前記複数のノードで前記レイヤ群の処理を分担させることは、第1のノードで再計算したアクティベーションを、第2のノードのメモリに保持させることを含む付記1~付記4のいずれか1項に記載の分散学習プログラム。
【0055】
(付記6)
前記複数のノードで前記レイヤ群の処理を分担させることは、前記レイヤ群での処理を前記複数のノードのうちの2以上のノードによりテンソル並列で実行させることを含む付記1~付記5のいずれか1項に記載の分散学習プログラム。
【0056】
(付記7)
前記複数のノードで前記レイヤ群の処理を分担させる方法として、前記複数のノードのノード数と、選択可能な方法との組み合わせ毎の候補の各々について前記逆伝播処理を実行した場合に、メモリ容量が不足せず、かつ処理時間が最短の候補を選択する付記2~付記4のいずれか1項に記載の分散学習プログラム。
【0057】
(付記8)
メモリ容量不足が発生した原因、及び前記レイヤ群に含まれるレイヤの数の少なくとも一方に基づいて、前記候補を絞り込む付記7に記載の分散学習プログラム。
【0058】
(付記9)
前記メモリ容量の不足が発生しない部分は、前記複数のノードで、データ並列により機械学習を実行する付記1~付記8のいずれか1項に記載の分散学習プログラム。
【0059】
(付記10)
複数のレイヤを含む機械学習モデルの機械学習を、各々がメモリを有する複数のノードで並列に実行する場合に、メモリ容量の不足が発生する1以上のレイヤを含むレイヤ群を特定し、
特定した前記レイヤ群での処理を、前記複数のノードで分担して実行させる
ことを含む処理をコンピュータが実行する分散学習方法。
【0060】
(付記11)
前記レイヤ群を特定する処理は、前記機械学習における逆伝播処理時に行うことを特徴とする付記10に記載の分散学習プログラム。
【0061】
(付記12)
前記レイヤ群を特定する処理は、前記逆伝播処理時に、メモリ容量不足で機械学習の実行がエラーとなる箇所を特定することを含む付記11に記載の分散学習方法。
【0062】
(付記13)
前記レイヤ群を特定する処理は、前記複数のノードよりもメモリ容量が大きい環境で前記機械学習を実行した場合のメモリ使用量のプロファイルを取得し、前記プロファイルに基づいて、メモリ使用量が実機である前記複数のノードのメモリ容量を超える箇所を特定することを含む付記11に記載の分散学習方法。
【0063】
(付記14)
前記レイヤ群がアクティベーションチェックポイントを行うレイヤのグループの場合、前記複数のノードで前記レイヤ群の処理を分担させることは、第1のノードで再計算したアクティベーションを、第2のノードのメモリに保持させることを含む付記11~付記13のいずれか1項に記載の分散学習方法。
【0064】
(付記15)
前記複数のノードで前記レイヤ群の処理を分担させることは、前記レイヤ群での処理を前記複数のノードのうちの2以上のノードによりテンソル並列で実行させることを含む付記11~付記14のいずれか1項に記載の分散学習方法。
【0065】
(付記16)
前記複数のノードで前記レイヤ群の処理を分担させる方法として、前記複数のノードのノード数と、選択可能な方法との組み合わせ毎の候補の各々について逆伝播処理を実行した場合に、メモリ容量が不足せず、かつ処理時間が最短の候補を選択する付記11~付記15のいずれか1項に記載の分散学習方法。
【0066】
(付記17)
メモリ容量不足が発生した原因、及び前記レイヤ群に含まれるレイヤの数の少なくとも一方に基づいて、前記候補を絞り込む付記16に記載の分散学習方法。
【0067】
(付記18)
前記メモリ容量の不足が発生しない部分は、前記複数のノードで、データ並列により機械学習を実行する付記11~付記17のいずれか1項に記載の分散学習方法。
【0068】
(付記19)
複数のレイヤを含む機械学習モデルの機械学習を、各々がメモリを有する複数のノードで並列に実行する場合に、メモリ容量の不足が発生する1以上のレイヤを含むレイヤ群を特定する特定部と、
特定した前記レイヤ群での処理を、前記複数のノードで分担して実行させる設定部と、
を含む分散学習装置。
【0069】
(付記20)
前記レイヤ群を特定する処理は、前記機械学習における逆伝播処理時に行うことを特徴とする付記19に記載の分散学習プログラム。
【符号の説明】
【0070】
10 分散学習装置
12 特定部
14 設定部
16 学習部
16n 実行部
40 コンピュータ
41 CPU
42 メモリ
43 記憶装置
44 入出力装置
45 R/W装置
46 通信I/F
47 バス
49 記憶媒体
50 分散学習プログラム
52 特定プロセス制御命令
54 設定プロセス制御命令
56 学習プロセス制御命令
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14