このオブジェクトはジョブの実行中は保持されますから、Optimizerなどの任意の状態や条件をこのオブジェクトのメンバーとして持たせることによって、上記で述べたような条件を好きなように設定することができます。ユーザーは計算の再開、待機、中止を決定する任意の条件をプログラムによって表現することができます。このPolicyとetcdのアクセス先を渡すことで、ChainerMNのCommunicatorと互換で、耐障害性のあるCommunicatorを作ることができます。使って、実際にImageNetの学習をスケールアップさせたり、スケールダウンさせる実験を行いました。実験に用いた環境はMN-1b上のKubernetesを使ったコンテナです。10GbE上のTCP/IP上で行われます。ノード(16−32GPU)の間で増減する実験をしました。いうものを実装しました。プロセス数が一定範囲内にある限り動作を継続するというものです。ノードの増減がなく正常に終了した学習の進捗です。以下の図はいずれも横軸に実時間、縦時間にImageNetの学習エポックをプロットしています。学習した際の速度GPUの数に応じて学習の速度(線の傾き)が変化しているのがわかります。離散的に変化するために線が破線状になっています。次に、学習の途中で2ノード(8GPU)追加してみます。緑の線と、茶色の線がそれぞれ別のタイミングで途中ノードを追加したものです。追加の前後でも同様に学習が動作していることがわかります。それぞれ、20000秒付近、34000秒付近で学習の速度が変化し、32GPUと同じ速度になっていることがわかります。1回だけの測定ですが、元の論文[12]と同程度の精度がノード追加にも関わらず再現できました。次に、ノードが途中離脱した場合です。32GPUと16GPUで実行していたジョブを、それぞれ途中でプロセスを落とすことでGPU数を減らしています。赤線では、GPU数が32から16に途中で減っています。同じタイミングで、線の傾きも16GPUのそれと同じになっています。同様に、16から8に減った緑線の場合でも8GPUと同じ速度に傾きが落ち込んでいることがわかります。プロセスが離脱する前後でもジョブ全体が落ちることはなく動作継続することができました。低下していますが、これが常に下がるものなのかどうかは原因も含めて今後調査する必要があります。このように、分散深層学習のジョブを実行中に動的に計算資源を追加することにより学習の進行速度を上げたり、ジョブを止めることなく動的に計算資源を一部取り除くことができるようになりました。関連研究および関連システム分散深層学習の先駆けであるDistBeliefはもともとGoogleの大規模分散システム上で耐障害性を持って動作していました[15]。パラメーターサーバーを持つモデルで、パラメーターサーバー以外のワーカーノードが故障しても、その部分のミニバッチを別のノードで再計算すれば済みました。いわれる分散方式で、始めから耐障害性を考慮されたものです。これにはパラメーターサーバーに負荷が集中してボトルネックになりやすい、古い勾配を使って学習してしまうなどの問題がありました。SGDといわれる分散方式を採用し、HPC技術の恩恵を受けて上記の問題点を解決し、深層学習の高速化に寄与しました。HPC技術の恩恵を受ける代わりに、非同期SGDが持っていた耐障害性を失うこととなりました。HPCの分野でも、もちろん同期的な集団通信に耐障害性を与える研究が行われています。MPIのWGで精力的に標準化が検討されています。これはMPIに障害のハンドリングするAPIを追加しようとするものです。その実験結果をまとめました。考え方に基づいた表現方法を提案しました。分散処理、専用ハードウェア、バイオインフォマティクス、ケモインフォマティクスといった幅広い分野で研究開発を行っています。