(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022175265
(43)【公開日】2022-11-25
(54)【発明の名称】機械学習プログラム,機械学習方法および情報処理装置
(51)【国際特許分類】
G06N 20/00 20190101AFI20221117BHJP
G06F 9/50 20060101ALI20221117BHJP
【FI】
G06N20/00
G06F9/50 150D
【審査請求】未請求
【請求項の数】4
【出願形態】OL
(21)【出願番号】P 2021081513
(22)【出願日】2021-05-13
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】100092978
【弁理士】
【氏名又は名称】真田 有
(74)【代理人】
【識別番号】100189201
【弁理士】
【氏名又は名称】横田 功
(72)【発明者】
【氏名】三輪 真弘
(57)【要約】
【課題】機械学習における分散学習の学習精度を向上させる。
【解決手段】複数の計算ノードのうちの一つ以上の第1の計算ノードに性能低下が生じた場合に、第1の計算ノードのプロセスの割合が閾値以下の場合は、前記第1の計算ノードのプロセスの学習結果を機械学習に反映させない第1のモードで、前記複数の計算ノードのうち第1の計算ノード以外の第2の計算ノードに機械学習をそれぞれ行なわせ、割合が閾値より大きい場合は、第1の計算ノードのプロセスにおいて処理予定の訓練データを前記第2の計算ノードに配分して処理させる第2のモードで、第2の計算ノードに機械学習をそれぞれ行なわせる。
【選択図】
図3
【特許請求の範囲】
【請求項1】
複数の計算ノードを用いた機械学習における分散学習において、
前記複数の計算ノードのうちの一つ以上の第1の計算ノードに性能低下が生じた場合に、
前記第1の計算ノードのプロセスの割合が閾値以下の場合は、前記第1の計算ノードのプロセスの学習結果を前記機械学習に反映させない第1のモードで、前記複数の計算ノードのうち前記第1の計算ノード以外の第2の計算ノードに機械学習をそれぞれ行なわせ、
前記割合が閾値より大きい場合は、前記第1の計算ノードのプロセスにおいて処理予定の訓練データを前記第2の計算ノードに配分して処理させる第2のモードで、前記第2の計算ノードに機械学習をそれぞれ行なわせる
処理をプロセッサに実行させることを特徴とする機械学習プログラム。
【請求項2】
前記複数の計算ノードの各性能情報に基づき、構成する計算ノードの数が異なる複数種類の計算ノード群の、前記第1のモードまたは前記第2のモードでのデータ処理時間をそれぞれ算出し、
前記処理時間に基づいて前記複数の計算ノード群から選択した計算ノード群を構成する複数の計算ノードを前記第2の計算ノードとする
処理を前記プロセッサに実行させることを特徴とする付記1に記載の機械学習プログラム。
【請求項3】
複数の計算ノードを用いた機械学習における分散学習において、
前記複数の計算ノードのうちの一つ以上の第1の計算ノードに性能低下が生じた場合に、
前記第1の計算ノードのプロセスの割合が閾値以下の場合は、前記第1の計算ノードのプロセスの学習結果を前記機械学習に反映させない第1のモードで、前記複数の計算ノードのうち前記第1の計算ノード以外の第2の計算ノードに機械学習をそれぞれ行なわせ、
前記割合が閾値より大きい場合は、前記第1の計算ノードのプロセスにおいて処理予定の訓練データを前記第2の計算ノードに配分して処理させる第2のモードで、前記第2の計算ノードに機械学習をそれぞれ行なわせる
処理をプロセッサが実行することを特徴とする機械学習方法。
【請求項4】
複数の計算ノードを用いた機械学習における分散学習において、
前記複数の計算ノードのうちの一つ以上の第1の計算ノードに性能低下が生じた場合に、
前記第1の計算ノードのプロセスの割合が閾値以下の場合は、前記第1の計算ノードのプロセスの学習結果を前記機械学習に反映させない第1のモードで、前記複数の計算ノードのうち前記第1の計算ノード以外の第2の計算ノードに機械学習をそれぞれ行なわせ、
前記割合が閾値より大きい場合は、前記第1の計算ノードのプロセスにおいて処理予定の訓練データを前記第2の計算ノードに配分して処理させる第2のモードで、前記第2の計算ノードに機械学習をそれぞれ行なわせる
処理部を備えることを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、機械学習プログラム,機械学習方法および情報処理装置に関する。
【背景技術】
【0002】
深層学習における機械学習手法として、データ並列による分散学習が知られている。分散学習においては、同じニューラルネットワーク(モデル)を持つ複数のプロセス(ワーカー)を設け、これらの複数のプロセスに異なる訓練データ部分を入力し、機械学習を実施する。以下、機械学習を訓練もしくは単に学習という場合がある。
【0003】
ここで、機械学習の一つのプロセスにおいては、フォワードプロパゲーション(Fwd),バックワードプロパゲーション(Bwd)およびアップデート(Up.)の各処理を繰り返し行なう。複数プロセスによる分散学習では、アップデート処理の前に全プロセスでのバックワードプロパゲーションの結果を集約して平均を取得し、この平均値を用いて各プロセスにてアップデート処理を行なう。
【0004】
バックワードプロパゲーションにおいては、ニューラルネットワークの重みを次にどれだけ変更すれば誤差(Loss)が小さくなるように重みを更新できるかという重み勾配情報を得ることができる。また、アップデート処理においては、各プロセスにおいて求めた重み勾配の平均に基づいて各種パラメータの値を更新する。
複数プロセス間における訓練結果(重み勾配情報)の集約はプロセス間の通信によって行なわれ、例えば、Allreduce通信によって実現される。
【0005】
図9はデータ並列による分散学習を説明するための図である。
この
図9においては、正常時における各プロセスの処理時間と、遅延したプロセスがある(遅いプロセスあり)の状態での各プロセスの処理時間とを比較して示す。
図9においては、4つのプロセスP0~P3によるデータ並列処理が行なわれ、遅いプロセスありの状態においては、プロセスP1においてフォワードプロパゲーションとバックワードプロパゲーションとに遅延が生じている。
【0006】
データ並列による分散学習においては、各プロセスの訓練結果を集約する際にプロセス間で通信を行なうが、1つでも遅いプロセスがあると、他のプロセスが同期待ちのために、全体の処理時間が延長する。
図9においては、プロセスP0,P2,P3においてプロセスP1のバックワードプロパゲーションの完了を待つ同期待ちが発生する。
【0007】
そこで、このような遅いプロセスによって全体性能が律速されることを防ぐための手法が知られている。1つの方法には、遅延が発生しているプロセス(
図9においてはプロセスP1)を訓練結果の集約対象から取り除き、残りのプロセス(
図9においては、プロセスP0,P2,P3)のみの学習結果を用いて訓練を継続することで速度低下を防ぐ方法がある。この方法を切り離しと呼ぶ。
【先行技術文献】
【特許文献】
【0008】
【特許文献1】米国特許出願公開第2016/0092765号明細書
【特許文献2】特開2020-177343号公報
【非特許文献】
【0009】
【非特許文献1】Koichi SHIRAHATA,他3名,“Preliminary Performance Analysis of Distributed DNN Training with Relaxed Synchronization” [online],インターネット<URL:https://www.jstage.jst.go.jp/article/transele/advpub/0/advpub_2020LHS0001/_article/-char/ja/>
【発明の概要】
【発明が解決しようとする課題】
【0010】
しかしながら、切り離しにおいては、遅延が発生しているプロセスを訓練結果の集約対象から除外することで、機械学習が不十分となり学習精度が低下するという課題がある。例えば、複数のプロセスにおいて処理速度の低下が発生した場合に、切り離しにより、これらの複数のプロセスを集約対象から除外することで、学習精度が所望の一定精度(例えば、73.3%)に到達しない場合が生じる。
1つの側面では、本発明は、機械学習における分散学習の学習精度を向上させることを目的とする。
【課題を解決するための手段】
【0011】
このため、この機械学習プログラムは、複数の計算ノードを用いた機械学習における分散学習において、前記複数の計算ノードのうちの一つ以上の第1の計算ノードに性能低下が生じた場合に、前記第1の計算ノードのプロセスの割合が閾値以下の場合は、前記第1の計算ノードのプロセスの学習結果を前記機械学習に反映させない第1のモードで、前記複数の計算ノードのうち前記第1の計算ノード以外の第2の計算ノードに機械学習をそれぞれ行なわせ、前記割合が閾値より大きい場合は、前記第1の計算ノードのプロセスにおいて処理予定の訓練データを前記第2の計算ノードに配分して処理させる第2のモードで、前記第2の計算ノードに機械学習をそれぞれ行なわせる処理をプロセッサに実行させる。
【発明の効果】
【0012】
一実施形態によれば、機械学習における分散学習の学習精度を向上させることができる。
【図面の簡単な説明】
【0013】
【
図1】実施形態の一例としてのコンピュータシステムの構成を模式的に示す図である。
【
図2】実施形態の一例としてのコンピュータシステムにおける計算ノードのハードウェア構成を例示する図である。
【
図3】実施形態の一例としてのコンピュータシステムにおけるマスタの計算ノードの機能構成を例示する図である。
【
図4】実施形態の一例としてのコンピュータシステムにおける最適化動作モードを説明するための図である。
【
図5】実施形態の一例としてのコンピュータシステムにおける切り離しモードと縮退モードでのプロセス当たりのデータ処理量を示す図である。
【
図6】実施形態の一例としてのコンピュータシステムにおける処理時間算出部による処理を説明するための図である。
【
図7】実施形態の一例としてのコンピュータシステムにおける分散学習時の計算ノード数の決定方法を説明するためのフローチャートである。
【
図8】実施形態の一例としてのコンピュータシステムにおける分散学習時の計算ノード数の決定方法を説明するためのフローチャートである。
【
図9】データ並列による分散学習を説明するための図である。
【発明を実施するための形態】
【0014】
以下、図面を参照して本機械学習プログラム,機械学習方法および情報処理装置にかかる実施の形態を説明する。ただし、以下に示す実施形態はあくまでも例示に過ぎず、実施形態で明示しない種々の変形例や技術の適用を排除する意図はない。すなわち、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。また、各図は、図中に示す構成要素のみを備えるという趣旨ではなく、他の機能等を含むことができる。
【0015】
(A)構成
図1は実施形態の一例としてのコンピュータシステム1の構成を模式的に示す図である。実施形態の一例としてのコンピュータシステム1は、
図1に示すように、複数(
図1に示す例においてはn個)の計算ノード10―1~10―nを備える。
【0016】
これらの計算ノード10―1~10-nは、ネットワーク2を介して相互に通信可能に接続されている。計算ノード10―1~10-nは互いに同様の構成を有する。以下、計算ノード10―1~10-nを特に区別しない場合には、計算ノード10と表記する。
【0017】
本コンピュータシステム1は、深層学習における機械学習を行なうものであり、これらの複数の計算ノード10を用いてデータ並列による分散学習を実現する。各計算ノード10には同じニューラルネットワーク(モデル)を持つ1つ以上のプロセス(ワーカー)が設けられ、これらの計算ノード10が並列して機械学習のプロセスをそれぞれ実行する。本コンピュータシステム1においては、これらの複数のプロセスに異なる訓練データ部分を並列に入力して、分散機械学習(訓練)を実施する。
本実施形態においては、各計算ノード10にそれぞれ1つのプロセスが設けられる例を示す。
【0018】
また、本コンピュータシステム1においては、複数の計算ノード10のうちの計算ノード10―1がマスタ(プライマリ)として機能し、
図3を用いて後述する分散学習管理部100としての機能を実現する。また、このマスタの計算ノード10-1の故障時には、計算ノード10―2~10―nのうちのいずれか一つの計算ノード10(例えば、計算ノード10―2)がマスタとして計算ノード10―1の動作を引き継ぐ。
図2は実施形態の一例としてのコンピュータシステム1における計算ノード10のハードウェア構成を例示する図である。
【0019】
計算ノード10は、
図2に示すように、CPU(Central Processing Unit)11,メモリ12,HDD(Hard Disk Drive)13,アクセラレータ14およびNIC(Network Interface Card)15を備える。
【0020】
メモリ12は、計算ノード10の主記憶装置として使用される。メモリ12には、CPU11に実行させるOS(Operating System)プログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、メモリ12には、CPU11による処理に必要な各種データも格納される。アプリケーションプログラムには、計算ノード10が本実施形態の分散学習管理部100としての機能を実現するためにCPU11によって実行される機械学習プログラム(図示省略)が含まれてもよい。
【0021】
HDD13は、内蔵したディスクに対して、磁気的にデータの書き込みおよび読み出しを行なう。HDD13は、計算ノード10の補助記憶装置として使用される。HDD13には、OSプログラム,アプリケーションプログラム、および各種データが格納される。なお、補助記憶装置としては、ストレージクラスメモリ(SCM:Storage Class Memory)や、フラッシュメモリ等の半導体記憶装置(SSD:Solid State Drive)を使用することもできる。
【0022】
アクセラレータ14には、特定の演算処理を行なう処理装置であり、例えば、GPU(Graphics Processing Unit)である。本実施形態においては、CPU11が上述したアプリケーションプログラム(機械学習プログラム)を実行することで分散学習管理部100としての機能を実現する例を示すが、これに限定されるものではない。すなわち、アクセラレータ14が機械学習プログラムを実行することで分散学習管理部100としての機能を実現してもよい。
【0023】
NIC15はネットワークインタフェースである。NIC15は、ネットワーク2に接続される。NIC15はネットワーク2を介して、他の計算ノード10や図示しない他の通信機器との間でデータの送受信を行なう。NIC15をネットワークカード15といってもよい。
以上のようなハードウェア構成を有する計算ノード10によって、後述する本実施形態の分散学習管理装置3部100としての機能(分散学習機能)を実現することができる。
【0024】
マスタとして機能する計算ノード10(例えば、計算ノード10―1)は、例えばコンピュータ読み取り可能な非一時的な記録媒体に記録されたプログラム(機械学習プログラム等)を実行することにより、本実施形態の分散学習管理機能を実現する。コンピュータ10に実行させる処理内容を記述したプログラムは、様々な記録媒体に記録しておくことができる。例えば、コンピュータ10に実行させるプログラムをHDD13に格納しておくことができる。CPU11は、HDD13内のプログラムの少なくとも一部をメモリ12にロードし、ロードしたプログラムを実行する。
【0025】
また、コンピュータ10(CPU11)に実行させるプログラムを、光ディスク,メモリ装置,メモリカード等の非一時的な可搬型記録媒体に記録しておくこともできる。可搬型記録媒体に格納されたプログラムは、例えばCPU11からの制御により、HDD13にインストールされた後、実行可能になる。また、CPU11が、可搬型記録媒体から直接プログラムを読み出して実行することもできる。
【0026】
CPU(処理部)11は、計算ノード10全体を制御する。CPU11は、マルチプロセッサであってもよい。CPU11に代えて、MPU(Micro Processing Unit),DSP(Digital Signal Processor),ASIC(Application Specific Integrated Circuit),PLD(Programmable Logic Device),FPGA(Field Programmable Gate Array)のいずれか一つが用いられてもよい。また、CPU11に代えて、CPU,MPU,DSP,ASIC,PLD,FPGAのうちの2種類以上の要素の組み合わせであってもよい。
図3は実施形態の一例としてのコンピュータシステム1におけるマスタの計算ノード10―1の機能構成を例示する図である。
マスタの計算ノード10―1のCPU11は、
図3に示すように、分散学習管理部100としての機能を実現する。
【0027】
分散学習管理部100は、性能情報収集部101,削減プロセス数判定部102,モード決定部103,処理時間算出部104および実行プロセス数決定部105としての機能を備える。
【0028】
性能情報収集部101は、各計算ノード10(CPU11)の性能情報を収集する。性能情報収集部101は、性能情報として、例えば各計算ノード10のスループット性能を収集してもよい。スループットは、単位時間当たりのデータ処理量を示し、例えば、単位時間当たりの処理画像枚数であってもよい。また、性能情報の収集は既知の種々の手法を用いて実現してよく、その説明は省略する。
性能情報収集部101は、本コンピュータシステム1における訓練開始後の所定のタイミングで各計算ノード10の性能情報を収集することが望ましい。
【0029】
削減プロセス数判定部102は、例えば、1つ以上の計算ノード10(プロセス)において処理の遅延が発生し、他の計算ノード10において同期待ちが発生した場合に、遅延が発生したプロセスの数を計数する。以下、遅延が発生した計算ノード10を遅延計算ノード10という場合がある。
【0030】
削減プロセス数判定部102は、例えば、計算ノード10の処理性能が所定の閾値以下となった場合や、応答が所定の閾値以上遅延した場合に、当該計算ノード10において性能低下が生じたと判断し、当該計算ノード10を遅延計算ノード10と認定してもよい。
【0031】
削減プロセス数判定部102は、1つ以上の遅延計算ノード10のプロセスの数を計数する。遅延計算ノード10に対応するプロセスの学習結果は、切り離しにおいては機械学習に反映されないものとなる。以下、各遅延計算ノード10に対応するプロセスの数の合計を削減プロセス数という場合がある。
【0032】
モード決定部103は、削減プロセス数判定部102によって算出された削減プロセス数に基づいて、遅延計算ノード10の発生時における機械学習の最適化動作モードを決定する。
【0033】
本コンピュータシステム1においては、遅延計算ノード10の発生時における機械学習の最適化手法として、切り離し(第1のモード)と縮退(第2のモード)とを備え、これらの2種類の動作モードのうちの一方を選択的に用いる。切り離し(第1のモード)と縮退(第2のモード)とは、複数の計算ノード10間において処理性能にばらつきが生じた場合に、当該コンピュータシステム1おける演算速度を安定化させる対処方法(性能安定化手法)である。
【0034】
切り離しにおいては、機械学習グループから遅延計算ノード(第1の計算ノード)10のプロセスを切り離し、遅延計算ノード10のプロセスの学習結果を訓練結果の集約対象から除外する。
縮退においては、遅延計算ノード10におけるプロセスの実行を抑止し、当該プロセスを除く他のプロセスで機械学習を行なう。遅延計算ノード10(第1の計算ノード)のプロセスにおいて処理される予定の訓練データを、複数の計算ノード10のうちの遅延計算ノード10以外の計算ノード10(プロセス,第2の計算ノード)に分配して実行させる。
【0035】
例えば、開始時に32プロセス実行で分散学習を行なう場合に、32プロセス向けの学習用のハイパーパラメータ設定がされるが、2プロセスを削除する場合、切り離しでは30プロセス実行を32プロセス時の設定のまま行なう。一方、縮退では30プロセス実行を30プロセス向けの設定に変更して実施する。
【0036】
図4は実施形態の一例としてのコンピュータシステム1における最適化動作モードを説明するための図であり、切り離しと縮退との違いを表す。
図4において、符号Aは遅延計算ノード10が発生していない通常実行の状態を示している。また、符号Bは切り離し時の処理を、符号Cは縮退時の処理を、それぞれ示す。
図4に示す例においては、4000の訓練データ(例えば、4000枚の画像)を用いて、5つのプロセスP0~P4で分散学習を行なう例を示している。
【0037】
ここで、符号Aに示すように、1つのプロセス当たりのミニバッチサイズを100とする。このとき、全体では5プロセスあるため、1回のアップデートで500のデータが機械学習に用いられる。従って、1つのエポック(epoch)の処理には8(= 4000 / 500)イタレーションがかかる。
【0038】
図4の符号Bに示す例においては、プロセスP4が遅延計算ノード10のプロセスに相当する。切り離しモードにおいては、この遅延しているプロセスP4が学習グループから除外される。これにより、プロセス全体では800(=100×4)のデータが用いられ、1 epochでは8イタレーションあるので、3200(=400×8)のデータが処理される。
【0039】
図4の符号Cに示す例においても、プロセスP4が遅延計算ノード10のプロセスに相当する。縮退モードにおいては、遅延しているプロセスP4を除く4つのプロセスP0~P3で機械学習を行なう。
【0040】
このような縮退モードにおいては、1回のアップデートで400(=100×4)のデータが処理される。全体のデータ数が4000であるため、4つのプロセスP0~P3で機械学習を行なうためには、10(=4000 / 400)回の処理(アップデート)が必要になる。
【0041】
縮退モードでは、プロセスP4で処理されるべきデータを、残りのプロセスP0~P3に分配して処理させる。そのため、1エポックを処理するのに必要なイタレーション数(時間)が増加する。
図4の符号Cで示す例においては、プロセスP0~P3が10イタレーションの処理を行なうことを示しており、通常実行の状態(符号A参照)に比べ、イタレーション数が増加している。
【0042】
なお、縮退モードにおいては、全ての訓練データを遅延計算ノード10以外の計算ノードに配分してもよいし、縮退モードにおいて、一定割合の訓練データを削除した上で、残りの訓練データを遅延計算ノード10以外の計算ノードに配分して学習させてもよい。
例えば、100の訓練データがある場合に、100の訓練データの全てを遅延計算ノード10以外の計算ノードに配分してもよく、また、一定割合分(例えば、6%)を除いて、残りの94のデータを遅延計算ノード10以外の計算ノードに配分して学習させてもよい。
一定割合の訓練データを削除して残りを配分することで、削除しない場合に比べて、機械学習における反復時間を短縮することができる。
【0043】
モード決定部103は、削減プロセス数判定部102により判定された削減プロセス数に基づき、分散学習を切り離しモードで行なうか縮退モードで行なうかを決定する。例えば、モード決定部103は、全プロセス数に対する削減プロセス数の割合を閾値(例えば6 %)と比較し、削減プロセス数の割合が閾値以下である場合には、切り離しモードを選択する。また、削減プロセス数の割合が閾値以下である場合には、モード決定部103は、切り離しモードを選択する。以下、全プロセス数に対する削減プロセス数の割合を削減プロセス数比という場合がある。
【0044】
上述の如く、切り離しモードと縮退モードとでは、1つのプロセス当たりのデータ処理量が異なる。
図5は実施形態の一例としてのコンピュータシステム1における切り離しモードと縮退モードでのプロセス当たりのデータ処理量を示す図である。
この
図5においては、横軸は削減プロセス数比を示し、縦軸は削減プロセス以外のプロセスにおけるプロセス当たりのデータ処理量を示す。
【0045】
モード決定部103は、削減プロセス数比が所定の閾値以下である場合に、切り離しモードを決定し、削減プロセス数比が閾値より大きい場合に縮退モードを選択する。従って、削減プロセス数比が閾値以下の場合においては、プロセス当たりのデータ処理量は一定である(
図5の符号D参照)。これに対して、削減プロセス数比が閾値より大きい場合には、削減プロセス数比の増加に応じて、削減プロセス以外のプロセスにおけるプロセス当たりのデータ処理量が増加する(
図5の符号E参照)。
【0046】
処理時間算出部104は、性能情報収集部101が収集した各計算ノード10の性能情報に基づき、複数の計算ノード10を用いて行なう分散学習における処理時間を算出する。
【0047】
処理時間算出部104は、性能情報収集部101が収集した各計算ノード10の性能情報に基づき、複数の計算ノード10(プロセス)について、性能情報(スループット)に応じてソートを行なう。そして、処理時間算出部104は、処理性能が最も低い計算ノード10から順に1つ以上の計算ノード10を選択する。かかる処理は、この選択された計算ノード10のプロセスを選択することと同義である。
【0048】
この選択される1つ以上の計算ノード10を削減計算ノード10という場合があり、削減計算ノード10のプロセスを削減プロセスという場合がある。
【0049】
また、全ての計算ノード10のうち、削減計算ノード10以外の複数の計算ノード10を残存計算ノードグループという場合があり、これらの残存計算ノードグループにおける複数のプロセスを残存プロセスグループという場合がある。
【0050】
処理時間算出部104は、残存計算ノードグループにより実行されるプロセス(残存プロセスグループ)の処理時間を算出(試算,シミュレーション)する。処理時間算出部104は、各計算ノード10のスループットに基づき、構成する計算ノード10の数が異なる複数種類の残存計算ノードグループ(ノード群)による機械学習の処理時間をそれぞれ試算する。
【0051】
処理時間算出部104は、残存計算ノードグループを構成する複数の計算ノード10のうち、処理性能(スループット)が最も低い計算ノード10のスループットを、残存計算ノードグループのスループットとして採用する。
【0052】
処理時間算出部104は、残存計算ノードグループが処理するデータ量(処理データ量)を、残存計算ノードグループのスループットで除算することで、当該残存計算ノードグループ(残存プロセスグループ)の処理時間を算出(試算)する。
処理時間算出部104は、削減計算ノード10を一つずつ増加させながら、残存計算ノードグループによる処理時間を、順次、算出する。
【0053】
例えば、32プロセスが基準(実行開始時)とした場合に、処理時間算出部104は、先ず、残存プロセスグループが31プロセスである場合の処理時間を見積もる。次に、処理時間算出部104は、残存プロセスグループが30プロセスである場合の処理時間を見積もる。以下、処理時間算出部104は、残存プロセスグループのプロセス数を減らしながら、各プロセス数での残存プロセスグループの処理時間をそれぞれ算出する。
【0054】
処理時間算出部104は、残存プロセスグループのプロセスが1つになるまで、残存プロセスグループのプロセスを減らしながら、全てのパターンでの残存プロセスグループの処理時間をシミュレーションしてもよい。また、処理時間算出部104は、例えば、残存プロセスグループのプロセスが基準の半分になるまで、残存プロセスグループの処理時間のシミュレーションを行なってもよい。すなわち、上記の例(基準の32プロセス)において、残存プロセスグループのプロセスが基準のプロセス数の半分(16プロセス)に到達した時点でシミュレーションを終了させてもよく、適宜変更して実施することができる。
図6は実施形態の一例としてのコンピュータシステム1における処理時間算出部104による処理を説明するための図である。
【0055】
この
図6においては、6つの計算ノード10について、計算ノード10の数(プロセス数)が5つの残存プロセスグループ(符号a参照)と、計算ノード10の数(プロセス数)が4つの残存プロセスグループ(符号b参照)とのそれぞれの処理時間を算出する例を示す。
【0056】
以下に示す例においては、1200の訓練データがあるものとする。また、モード決定部103により、4つ以下のプロセス数では切り離しモードでターゲット精度に到達すると決定され、5つより大きいプロセス数では縮退モードでターゲット精度に到達すると決定されたものとする。
【0057】
処理時間算出部104は、残存計算ノードグループが処理するデータ量(処理データ量)を、残存計算ノードグループのスループットで除算することで、当該残存計算ノードグループ(残存プロセスグループ)の処理時間を算出する。
【0058】
図6に示す例において、計算ノード10の数(プロセス数)が5つの残存プロセスグループ(符号a参照)について、処理性能(スループット)が最も低い計算ノード10のスループットは60である。また、この計算ノード10の数(プロセス数)が5つの残存プロセスグループ(符号a参照)において切り離しモードでの1エポック当たりでのプロセス当たりのデータ処理量は200(= 1200 / 6)である。
従って、処理時間算出部104は、計算ノード10の数(プロセス数)が5つの残存プロセスグループ(符号a参照)の処理時間を以下の式により算出する。
200 / 60 = 3.33
【0059】
一方、
図6に示す例において、計算ノード10の数(プロセス数)が4つの残存プロセスグループ(符号b参照)について、処理性能(スループット)が最も低い計算ノード10のスループットは80である。また、この計算ノード10の数(プロセス数)が4つの残存プロセスグループ(符号b参照)において縮退モードでの1エポック当たりでのプロセス当たりのデータ処理量は300(= 1200 / 4)である。
従って、処理時間算出部104は、計算ノード10の数(プロセス数)が4つの残存プロセスグループ(符号b参照)の処理時間を以下の式により算出する。
300 / 80 = 3.75
【0060】
実行プロセス数決定部105は、処理時間算出部104によって算出された各プロセス数での残存プロセスグループの処理時間に基づいて、分散学習において並列して処理されるプロセス数(実行プロセス数)を決定する。
【0061】
実行プロセス数決定部105は、処理時間算出部104によって算出された各プロセス数での残存プロセスグループの処理時間のうち、最も短い処理時間となる残存プロセスグループのプロセス数を実行プロセス数として決定する。
【0062】
例えば、
図6に示した例においては、実行プロセス数決定部105は、処理時間が3.33である、計算ノード10の数(プロセス数)が5つの残存プロセスグループ(符号a参照)のプロセス数5を実行プロセス数として決定する。
【0063】
(B)動作
上述の如く構成された実施形態の一例としてのコンピュータシステム1における分散学習時の計算ノード数の決定方法を、
図7および
図8に示すフローチャートに従って説明する。なお、
図7は、その概要を示すフローチャート(ステップA1~A4)であり、
図8は、
図7のステップA3の処理の詳細を示すフローチャート(ステップB1~B5)である。
【0064】
これらの
図7および
図8に示すフローチャートは、複数の計算ノード10のうち一部の計算ノード10において性能低下が検出された場合に実行される。
図7のステップA1において、性能情報収集部101が、各計算ノード10(CPU11)のスループット(性能情報)を計測(収集)する。
図7のステップA2において、処理時間算出部104が、性能情報収集部101が収集した各計算ノード10の性能情報に基づき、いずれかの計算ノード10において性能低下が生じたかを判断する。
【0065】
いずれの計算ノード10においても性能低下が検出されない場合には(ステップA2のNOルート参照)、処理を終了する。一方、いずれかの計算ノード10において性能低下が検出された場合には(ステップA2のYESルート参照)、
図7のステップA3に移行する。
【0066】
ステップA3において、処理時間算出部104が、性能情報収集部101が収集した各計算ノード10の性能情報に基づき、複数の計算ノード10を用いて行なう分散学習における処理時間を算出する。
このステップA3の処理の詳細を、
図8を用いて説明する。
【0067】
図8のステップB1において、処理時間算出部104は、複数の計算ノード10(プロセス)について、性能情報(スループット)に応じてソートを行なう。そして、処理時間算出部104は、残存計算ノードグループを構成する複数の計算ノード10のうち、スループットが最も低い計算ノード10のスループットを、当該残存計算ノードグループのスループットとする。
【0068】
図8のステップB2において、モード決定部103は、全プロセス数に対する削減プロセス数の割合を閾値(例えば、6 %)と比較し、全プロセス数に対する削減プロセス数の割合が閾値以下であるかを確認する。なお、この閾値は6%に限定されるものではなく、適宜変更して実施することができる。
確認の結果、全プロセス数に対する削減プロセス数の割合が閾値以下である場合には(ステップB2のYESルート参照)、
図8のステップB3に移行する。
【0069】
ステップB3において、モード決定部103は、切り離しモードを選択する。切り離しモードにおいては、プロセス当たりのデータ処理量に変更はない。その後、
図8のステップB5に移行する。
【0070】
また、ステップB2における確認の結果、全プロセス数に対する削減プロセス数の割合が閾値以下でない場合(ステップB2のNOルート参照)、すなわち、全プロセス数に対する削減プロセス数の割合が閾値よりも多い場合には、
図8のステップB4に移行する。
【0071】
ステップB4において、モード決定部103は、縮退モードを選択する。縮退モードにおいては、プロセス当たりのデータ処理量に変更が生じる。すなわち、遅延計算ノード10のプロセスが、複数の計算ノード10のうちの、遅延計算ノード10以外の計算ノード10に分配される。その後、ステップB5に移行する。
【0072】
ステップB5において、処理時間算出部104が、残存計算ノードグループが処理するデータ量(処理データ量)を、残存計算ノードグループのスループットで除算することで、当該残存計算ノードグループ(残存プロセスグループ)の処理時間を算出する。その後、
図7のステップA4に移行する。
【0073】
図7のステップA4において、実行プロセス数決定部105は、処理時間算出部104によって算出された各プロセス数での残存プロセスグループの処理時間のうち、最も短い処理時間となる残存プロセスグループのプロセス数を実行プロセス数として決定する。その後、処理を終了する。
【0074】
(C)効果
このように、実施形態の一例としてのコンピュータシステム1によれば、処理時間算出部104は、削減計算ノード10を一つずつ増加させながら、残存計算ノードグループによる処理時間を順次算出する。そして、実行プロセス数決定部105が、処理時間算出部104によって算出された各プロセス数での残存プロセスグループの処理時間のうち、最も短い処理時間となる残存プロセスグループのプロセス数を実行プロセス数として決定する。これにより、分散学習における訓練完了までにかかる時間を短縮することができ、特に、計算ノード10の処理性能にばらつきがある場合においても、効率的な分散学習を実現することができる。
【0075】
また、モード決定部103が、削減プロセス数判定部102によって算出された削減プロセス数に基づいて、遅延計算ノード10の発生時における機械学習の最適化動作モードを決定する。
【0076】
具体的には、モード決定部103は、削減プロセスの割合が閾値以下の場合には、残存プロセスグループの各計算ノード10に処理量が増加しない切り離しモードを採用する。これにより、切り離しモードによりプロセスが機械学習に反映されないことによる機械学習精度の低下への影響を抑えることができ、機械学習精度の低下を阻止し、所望の学習精度を確保することができる。また、一部の計算ノード10に遅延が発生した場合においても、機械学習完了までに要する時間を短縮することができる。
【0077】
また、削減プロセスの割合が閾値より大きい場合には、残存プロセスグループの各計算ノード10に処理量が増加する縮退を採用することで、機械学習精度の低下を阻止し、所望の学習精度を確保することができる。
(D)その他
本実施形態の各構成および各処理は、必要に応じて取捨選択することができ、あるいは適宜組み合わせてもよい。
そして、開示の技術は上述した実施形態に限定されるものではなく、本実施形態の趣旨を逸脱しない範囲で種々変形して実施することができる。
【0078】
例えば、上述した実施形態においては、コンピュータシステム1に備えられた複数の計算ノード10のうちの計算ノード10―1がマスタ(プライマリ)として機能し、分散学習管理部100としての機能を実現する例を示しているが、これに限定されるものではない。コンピュータシステム1に計算ノード10とは別に管理装置を備え、当該管理装置において分散学習管理部100としての機能を実現してもよい。
また、上述した実施形態においては、複数の計算ノード10間において処理性能にばらつきが生じた場合の性能安定化手法として切り離しと縮退との一方を選択する例を示したが、これに限定されるものではない。安定化手法として切り離しおよび縮退以外の手法を用いてもよい。
また、上述した開示により本実施形態を当業者によって実施・製造することが可能である。
【0079】
(E)付記
以上の実施形態に関し、さらに以下の付記を開示する。
(付記1)
複数の計算ノードを用いた機械学習における分散学習において、
前記複数の計算ノードのうちの一つ以上の第1の計算ノードに性能低下が生じた場合に、
前記第1の計算ノードのプロセスの割合が閾値以下の場合は、前記第1の計算ノードのプロセスの学習結果を前記機械学習に反映させない第1のモードで、前記複数の計算ノードのうち前記第1の計算ノード以外の第2の計算ノードに機械学習をそれぞれ行なわせ、
前記割合が閾値より大きい場合は、前記第1の計算ノードのプロセスにおいて処理予定の訓練データを前記第2の計算ノードに配分して処理させる第2のモードで、前記第2の計算ノードに機械学習をそれぞれ行なわせる
処理をプロセッサに実行させることを特徴とする機械学習プログラム。
【0080】
(付記2)
前記複数の計算ノードの各性能情報に基づき、構成する計算ノードの数が異なる複数種類の計算ノード群の、前記第1のモードまたは前記第2のモードでのデータ処理時間をそれぞれ算出し、
前記処理時間に基づいて前記複数の計算ノード群から選択した計算ノード群を構成する複数の計算ノードを前記第2の計算ノードとする
処理を前記プロセッサに実行させることを特徴とする付記1に記載の機械学習プログラム。
【0081】
(付記3)
複数の計算ノードを用いた機械学習における分散学習において、
前記複数の計算ノードのうちの一つ以上の第1の計算ノードに性能低下が生じた場合に、
前記第1の計算ノードのプロセスの割合が閾値以下の場合は、前記第1の計算ノードのプロセスの学習結果を前記機械学習に反映させない第1のモードで、前記複数の計算ノードのうち前記第1の計算ノード以外の第2の計算ノードに機械学習をそれぞれ行なわせ、
前記割合が閾値より大きい場合は、前記第1の計算ノードのプロセスにおいて処理予定の訓練データを前記第2の計算ノードに配分して処理させる第2のモードで、前記第2の計算ノードに機械学習をそれぞれ行なわせる
処理をプロセッサが実行することを特徴とする機械学習方法。
【0082】
(付記4)
前記複数の計算ノードの各性能情報に基づき、構成する計算ノードの数が異なる複数種類の計算ノード群の、前記第1のモードまたは前記第2のモードでのデータ処理時間をそれぞれ算出し、
前記処理時間に基づいて前記複数の計算ノード群から選択した計算ノード群を構成する複数の計算ノードを前記第2の計算ノードとする
処理を前記プロセッサが実行することを特徴とする付記3に記載の機械学習方法。
【0083】
(付記5)
複数の計算ノードを用いた機械学習における分散学習において、
前記複数の計算ノードのうちの一つ以上の第1の計算ノードに性能低下が生じた場合に、
前記第1の計算ノードのプロセスの割合が閾値以下の場合は、前記第1の計算ノードのプロセスの学習結果を前記機械学習に反映させない第1のモードで、前記複数の計算ノードのうち前記第1の計算ノード以外の第2の計算ノードに機械学習をそれぞれ行なわせ、
前記割合が閾値より大きい場合は、前記第1の計算ノードのプロセスにおいて処理予定の訓練データを前記第2の計算ノードに配分して処理させる第2のモードで、前記第2の計算ノードに機械学習をそれぞれ行なわせる
処理部を備えることを特徴とする情報処理装置。
【0084】
(付記6)
前記処理部が、
前記複数の計算ノードの各性能情報に基づき、構成する計算ノードの数が異なる複数種類の計算ノード群の、前記第1のモードまたは前記第2のモードでのデータ処理時間をそれぞれ算出し、
前記処理時間に基づいて前記複数の計算ノード群から選択した計算ノード群を構成する複数の計算ノードを前記第2の計算ノードとする
処理を行なうことを特徴とする付記5に記載の情報処理装置。
【符号の説明】
【0085】
1 コンピュータシステム
2 ネットワーク
10ー1~10ーn,10 計算ノード
11 CPU(処理部)
12 メモリ
13 HDD
14 アクセラレータ
15 NIC
100 分散学習管理部
101 性能情報収集部
102 削減プロセス数判定部
103 モード決定部
104 処理時間算出部
105 実行プロセス数決定部