分散学習機構Mixの概念説明¶
本項では、分散学習機構であるMixの概念について説明します。
Mixの概念¶
データの分析を行う際の分散処理環境の方式として、分析に使用するデータそのものを複数のサーバノード間で複製し・共有する方式を採用する場合、データサイズが膨大になります。
Jubatusでは、データそのものを共有するのではなく、分析に必要なモデル情報(データを分析した結果)のみを交換・共有する方式を採用しています。 一般的にモデル情報はデータそのものよりもはるかに小さいサイズで格納することが可能です。
Jubatusでは、このモデル情報を各ノードが格納し、データに基づいたモデル情報の更新を行います。また、そのモデル情報に基づくデータの分析を行います。
各サーバノードのみでモデル情報が更新される場合、各サーバノードのモデル情報には差異が生じます。そのため、各サーバーノード間でのモデル情報の交換と共有を行い、システム全体でモデル情報の更新を行う必要があります。 Mixとは、各サーバーノード間のモデル情報の交換によるモデル情報の共有を行う操作を示します。
Mixによるモデル情報更新のイメージ¶
ここでは、サーバノードが3台の分散環境において「与えられたデータの平均値を計算する処理」を例として、Mix操作におけるモデル情報更新のイメージを説明します。
サーバノードA、B、Cそれぞれに、以下のような異なる学習データが与えられたとします。
サーバノードA サーバノードB サーバノードC データ 7.0 12.0 9.0 3.0 18.0 15.0 - 15.0 6.0 - 5.0 -
上記の学習データから各サーバノードで平均値を計算し、各サーバノードでは以下のようなモデル情報を保持することとなります。
モデル情報 サーバノードA サーバノードB サーバノードC 合計値 10.0 50.0 30.0 データ数 2 4 3 平均値 5.0 12.5 10.0
この例では、全学習データの合計値が90.0、データ数が9となるため、平均値は10.0となります。
クライアントからの平均値を求める要求が運よくサーバノードCに割り当てられた場合、全学習データの平均値と同じ10.0という値を得ることができますが、クライアントからの要求がサーバノードAもしくはBに割り当てられた場合、正しい結果を得ることができません。
現在のMix操作では、サーバノードのどれか1台が代表となり、自動的に各サーバーノードが保持するモデル情報を取得し、モデル情報の更新を行います。
モデル情報 サーバノードA サーバノードB サーバノードC(Mix代表) 合計値 10.0 50.0 90.0(=10.0+50.0+30.0) データ数 2 4 9(=2+4+3) 平均値 5.0 12.5 10.0(=90.0/9)
その後、Mix操作の代表となったサーバノードから、残りのサーバノードに対して更新されたモデル情報を共有することで、全サーバノードのモデル情報が同一の内容に更新されます。
モデル情報 サーバノードA サーバノードB サーバノードC(Mix代表) 合計値 90.0 90.0 90.0 データ数 9 9 9 平均値 10.0 10.0 10.0
以上のように、学習データそのものを共有するのではなく、各サーバノードで得られたモデル情報のみを交換・共有するMix操作により、全サーバノードのモデル情報が同一の内容となります。
Mixにおける注意点¶
Jubatusでは、上記に説明したMix操作により、モデル情報を緩やかに共有します。そのため、同一時刻において同じモデルが全サーバノードで共有されていることが保証されていないという制限があります。 言い換えれば、分散環境として構築したJubatusにおいては、クライアントから同一の分析要求を行っても(Mix操作のタイミング前後においては)、必ずしも同一の分析結果が得られるという保証はありません。 そのため、サーバノード間で密なデータ交換が必要なシステムや、正確な結果が必要となるシステム、トランザクションが必要なシステムには、Jubatusは向いていません。
また、サーバノード数を増やすことにより分析処理性能をスケールアウトすることが可能ですが、その反面、Mix操作によるサーバノード間のモデル情報の交換・共有のための処理時間が増加することとなります。