(57)【特許請求の範囲】
【請求項１】
プロセッサとメモリとローカル記憶装置を備えた第１の計算機と、
プロセッサとメモリを備えて複数の前記第１の計算機に分散処理を指令する第２の計算機と、
前記分散処理に用いるデータを格納したストレージと、
前記第１の計算機と第２の計算機及び前記ストレージとを接続するネットワークと、
を備えて、前記複数の第１の計算機で並列的に処理を行う分散計算システムであって、
前記第２の計算機は、
前記複数の第１の計算機に、前記分散処理として学習処理を実行させる制御部を備え、
前記制御部は、
前記複数の第１の計算機のうち所定の複数の第１の計算機に、学習処理を実行するデータ適用部及び前記データ適用部毎に学習処理の対象となる前記ストレージのデータを割り当てて第１のワーカーとして学習処理を実行させ、
前記複数の第１の計算機のうち少なくとも一つの第１の計算機に、前記データ適用部の出力を受信して学習モデルを更新するモデル更新部を割り当てて第２のワーカーとして学習処理を実行させ、
前記第１のワーカーは、
前記データ適用部が、前記第２の計算機から割り当てられたデータを前記ストレージから読み込んでローカル記憶装置に格納し、前記メモリ上に予め確保したデータ領域に前記ローカル記憶装置のデータのうち未処理のデータを順次読み込んで、当該データ領域のデータに対して学習処理を実行し、当該学習処理の結果を前記第２のワーカーへ送信し、
前記第２のワーカーは、
前記モデル更新部が、前記複数の第１のワーカーから学習処理の結果を受信し、前記受信した複数の学習処理の結果から学習モデルを更新し、当該更新した学習モデルが所定の基準を満たすか否かを判定し、前記更新した学習モデルが所定の基準を満たしていない場合には、前記第１のワーカーへ更新した学習モデルを送信して学習処理を指令し、前記更新した学習モデルが所定の基準を満たす場合には、前記第２の計算機に前記更新した学習モデルを送信し、
前記データ適用部は、
前記学習処理を反復する際には、前記データ領域のデータを保持し、当該データを反復開始後の未処理データとして利用し、
前記第２の計算機は、
予め複数の学習モデルを有し、
前記第１のワーカーとして機能する第１の計算機のデータ適用部のそれぞれに前記複数の学習モデルのうちの一つを送信し、前記第２のワーカーとして機能する第１の計算機のモデル更新部に前記複数の学習モデルを送信し、
前記第２のワーカーは、
前記モデル更新部が、前記複数の第１のワーカーから学習処理の結果を受信すると、前記第１のワーカーに他の学習モデルを送信し、学習処理の開始を指令することを特徴とする分散計算システム。
【請求項２】
請求項１に記載の分散計算システムであって、
前記データ適用部は、
前記データをローカル記憶装置から前記メモリに読み込むときに、前記ローカル記憶装置に格納されたデータを所定の順番で読み込むことを特徴とする分散計算システム。
【請求項３】
請求項２に記載の分散計算システムであって、
前記データ適用部は、
前記学習処理を終了して前記第２のワーカーに学習処理の結果を送信した後、前記第２のワーカーから学習モデルを受信して再度学習処理を行う場合には、前記メモリのデータ領域上に保持しているデータから学習処理を開始することを特徴とする分散計算システム。
【請求項４】
請求項１に記載の分散計算システムであって、
前記データ適用部は、
前記ローカル記憶装置から前記データをメモリのデータ領域に読み込み、当該データ領域のデータについて学習処理が終了した後に、前記ローカル記憶装置から未処理のデータを前記メモリへ読み込む際に、前記終了した学習処理の結果を部分的な学習処理の結果として前記第２のワーカーに送信することを特徴とする分散計算システム。
【請求項５】
プロセッサとメモリとローカル記憶装置を備えた第１の計算機と、
プロセッサとメモリを備えて複数の前記第１の計算機に分散処理を指令する第２の計算機と、
前記分散処理に用いるデータを格納したストレージと、
前記第１の計算機と第２の計算機及び前記ストレージとを接続するネットワークと、
を備えて、前記複数の第１の計算機で並列的に処理を行う分散計算システムであって、
前記第２の計算機は、
前記複数の第１の計算機に、前記分散処理として学習処理を実行させる制御部を備え、
前記制御部は、
前記複数の第１の計算機のうち所定の複数の第１の計算機に、学習処理を実行するデータ適用部及び前記データ適用部毎に学習処理の対象となる前記ストレージのデータを割り当てて第１のワーカーとして学習処理を実行させ、
前記複数の第１の計算機のうち少なくとも一つの第１の計算機に、前記データ適用部の出力を受信して学習モデルを更新するモデル更新部を割り当てて第２のワーカーとして学習処理を実行させ、
前記第１のワーカーは、
前記データ適用部が、前記第２の計算機から割り当てられたデータを前記ストレージから読み込んでローカル記憶装置に格納し、前記メモリ上に予め確保したデータ領域に前記ローカル記憶装置のデータのうち未処理のデータを順次読み込んで、当該データ領域のデータに対して学習処理を実行し、当該学習処理の結果を前記第２のワーカーへ送信し、
前記第２のワーカーは、
前記モデル更新部が、前記複数の第１のワーカーから学習処理の結果を受信し、前記受信した複数の学習処理の結果から学習モデルを更新し、当該更新した学習モデルが所定の基準を満たすか否かを判定し、前記更新した学習モデルが所定の基準を満たしていない場合には、前記第１のワーカーへ更新した学習モデルを送信して学習処理を指令し、前記更新した学習モデルが所定の基準を満たす場合には、前記第２の計算機に前記更新した学習モデルを送信し、
前記第２の計算機は、
予め複数の学習モデルを有し、
前記第１のワーカーとして機能する第１の計算機のデータ適用部のそれぞれに前記複数の学習モデルのうちの一つを送信し、前記第２のワーカーとして機能する第１の計算機のモデル更新部に前記複数の学習モデルを送信し、
前記第２のワーカーは、
前記モデル更新部が、前記複数の第１のワーカーから学習処理の結果を受信すると、前記第１のワーカーに他の学習モデルを送信し、学習処理の開始を指令することを特徴とする分散計算システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は分散環境における計算システムに関し、特に、機械学習アルゴリズムの並列実行制御プログラム、およびこの制御プログラムによって動作する分散計算システムに関する。
【背景技術】
【０００２】
近年、計算機のコモディティ化が進み、データの取得と保存が容易になってきた。そのため、大量の業務データを分析して、業務改善に生かしたいというニーズが高まっている。
【０００３】
大量のデータを処理する際に、複数の計算機を用いて処理を高速化する手法がとられる。しかし、従来の分散処理の実装は煩雑で、実装コストがかかることが問題となっていた。近年、分散処理の実装を容易化するソフトウェア基盤と計算機システムが注目を集めている。
【０００４】
ひとつの実装として特許文献１に記載されているＭａｐＲｅｄｕｃｅが知られている。ＭａｐＲｅｄｕｃｅでは、各計算機に並列に計算を行わせるＭａｐ処理と、Ｍａｐ処理の結果を集約するＲｅｄｕｃｅ処理を組み合わせて分散処理を行う。Ｍａｐ処理は分散ファイルシステムから並列にデータを読み込むことで、効率的に並列な入出力を実現している。プログラムの作成者は分散処理部Ｍａｐと集約処理部Ｒｅｄｕｃｅを作成するだけでよい。計算機に対するＭａｐ処理の割り当てや、Ｍａｐ処理の終了待ちなどのスケジューリング、データ通信の詳細についてはＭａｐＲｅｄｕｃｅのソフトウェア基盤が実行を受け持つ。以上の理由から特許文献２〜４の分散処理と比較して、特許文献１のＭａｐＲｅｄｕｃｅは実装に要するコストを抑制できる。
【０００５】
計算機によりデータ分析を行い、知識を抽出する技術として機械学習が注目されている。機械学習では入力により多くのデータを用いることで得られる知識の精度を向上させることが可能であり、様々な工夫がされている。例えば、特許文献５には、大量データへの機械学習が提案されている。また、特許文献６にはＭａｐ  Ｒｅｄｕｃｅを用いた機械学習の一手法が提案されている。特許文献５、６の手法は学習処理の分散を可能にするが、同一データの通信が何度もなされるという、非効率的なデータアクセスが行われているという問題がある。機械学習には反復的なアルゴリズムを含むものが多く、同じデータに対して繰り返しアクセスされるという特徴がある。ＭａｐＲｅｄｕｃｅを機械学習に適用すると、反復処理の際にデータ再利用が行われないため、データアクセス速度が低下してしまう。
【０００６】
特許文献７には更新頻度に基づいて、ＭａｐＲｅｄｕｃｅ処理において有効にキャッシュを利用することができるキャッシュ構造を実現している。この手法はＲｅｄｕｃｅ処理にキャッシュを導入している。しかし、機械学習においてはＭａｐ処理に大量のデータを反復して用いるため、Ｒｅｄｕｃｅ処理のキャッシュが寄与する速度向上はマップ部と比較して小さなものになる。
【０００７】
非特許文献１では、ＭａｐＲｅｄｕｃｅを反復実行に適するように改変しており、ＭａｐとＲｅｄｕｃｅのプロセスを実行の全体にわたって保持し、プロセスを再利用している。しかし、反復全体にわたるデータの効率的な再利用は行われていない。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】米国特許第７，６５０，３３１号明細書
【特許文献２】特開２００１−１６７０９８号公報
【特許文献３】特開２００４−３２６４８０号公報
【特許文献４】特開平１１−１７５４８３号公報
【特許文献５】米国特許第７，２２２，１２７号明細書
【特許文献６】特表２００９−５０５２９０号公報
【特許文献７】特開２０１０−０９２２２２号公報
【非特許文献】
【０００９】
【非特許文献１】Jaliya Ekanayake  他著、“ＭａｐＲｅｄｕｃｅ for Data Intensive Scientific Analyses”、[online]、[平成２２年６月３０日検索]、インターネット＜URL:http://grids.ucs.indiana.edu/ptliupages/publications/ekanayake-ＭａｐＲｅｄｕｃｅ.pdf＞
【発明の概要】
【発明が解決しようとする課題】
【００１０】
分散計算システムを並列機械学習に用いると、大量のデータをより短時間に学習することが可能となる。しかし、ＭａｐＲｅｄｕｃｅを並列機械学習に利用する場合には、実行速度の低下とメモリ利用に関する困難に直面する。
【００１１】
図１１に示すようにＭａｐＲｅｄｕｃｅは一度だけの処理用にアーキテクチャが組まれている。Ｍａｐ処理を担当するプロセスは一度処理を終えると終了し、特徴量データを開放してしまう。機械学習では反復処理が必要なため、反復処理部分ではＭａｐプロセスの起動と終了、ファイルシステム（ストレージ装置）からメモリへのデータロードが繰り返され、実行速度が低下してしまう。
【００１２】
ＭａｐＲｅｄｕｃｅでは、ソフトウェア基盤によってデータロードの詳細を秘匿しているので、各計算機に対するデータの割り当てがシステムにゆだねられてしまうため、ユーザが管理できるファイルシステムとメモリの自由度は小さい。そのため、各計算機の合計メモリ量を超えるデータの処理が発生するとファイルシステムへのアクセスが増大して処理速度が極端に低下する、あるいは、処理が停止するなどの問題が生じる。前述の公知の技術では、これらを実現できる技術はない。
【００１３】
そこで本発明は、上記問題点に鑑みてなされたもので、並列的に機械学習を実行する分散計算機システムにおいて学習処理の起動と終了、及びファイルシステムからのデータロードを抑制し、機械学習の処理速度を向上させることを目的とする。
【課題を解決するための手段】
【００１４】
本発明は、プロセッサとメモリとローカル記憶装置を備えた第１の計算機と、プロセッサとメモリを備えて複数の前記第１の計算機に分散処理を指令する第２の計算機と、前記分散処理に用いるデータを格納したストレージと、前記第１の計算機と第２の計算機及び前記ストレージとを接続するネットワークと、を備えて、前記複数の第１の計算機で並列的に処理を行う分散計算システムであって、前記第２の計算機は、前記複数の第１の計算機に、前記分散処理として学習処理を実行させる制御部を備え、前記制御部は、前記複数の第１の計算機のうち所定の複数の第１の計算機に、学習処理を実行するデータ適用部及び前記データ適用部毎に学習処理の対象となる前記ストレージのデータを割り当てて第１のワーカーとして学習処理を実行させ、前記複数の第１の計算機のうち少なくとも一つの第１の計算機に、前記データ適用部の出力を受信して学習モデルを更新するモデル更新部を割り当てて第２のワーカーとして学習処理を実行させ、前記第１のワーカーは、前記データ適用部が、前記第２の計算機から割り当てられたデータを前記ストレージから読み込んでローカル記憶装置に格納し、前記メモリ上に予め確保したデータ領域に前記ローカル記憶装置のデータのうち未処理のデータを順次読み込んで、当該データ領域のデータに対して学習処理を実行し、当該学習処理の結果を前記第２のワーカーへ送信し、前記第２のワーカーは、前記モデル更新部が、前記複数の第１のワーカーから学習処理の結果を受信し、前記受信した複数の学習処理の結果から学習モデルを更新し、当該更新した学習モデルが所定の基準を満たすか否かを判定し、前記更新した学習モデルが所定の基準を満たしていない場合には、前記第１のワーカーへ更新した学習モデルを送信して学習処理を指令し、前記更新した学習モデルが所定の基準を満たす場合には、前記第２の計算機に前記更新した学習モデルを送信し、前記データ適用部は、前記学習処理を反復する際には、前記データ領域のデータを保持し、当該データを反復開始後の未処理データとして利用し、前記第２の計算機は、予め複数の学習モデルを有し、前記第１のワーカーとして機能する第１の計算機のデータ適用部のそれぞれに前記複数の学習モデルのうちの一つを送信し、前記第２のワーカーとして機能する第１の計算機のモデル更新部に前記複数の学習モデルを送信し、前記第２のワーカーは、前記モデル更新部が、前記複数の第１のワーカーから学習処理の結果を受信すると、前記第１のワーカーに他の学習モデルを送信し、学習処理の開始を指令する。
【発明の効果】
【００１５】
したがって、本発明の分散計算システムは、データ適用部がアクセスするローカル記憶装置とメモリ上のデータ領域に学習対象のデータを学習処理の期間中保持することによって、データ適用部の起動と終了の回数とストレージとのデータの通信コストを(１／反復回数)に削減することができるので、効率的に並列的な機械学習を実行することができる。さらに、データ適用部がストレージとメモリとローカル記憶装置にアクセスすることで、分散計算システム全体のメモリの合計量を超える学習データの扱いを効率的に行うことができる。
【図面の簡単な説明】
【００１６】
【図１】本発明の第１の実施形態を示し、分散計算機システムで使用する計算機のブロック図である。
【図２】本発明の第１の実施形態を示し、分散計算機システムのブロック図である。
【図３】本発明の第１の実施形態を示し、分散計算機システムの機能要素を示すブロック図である。
【図４】本発明の第１の実施形態を示し、分散計算機システムで行われる全体的な処理の一例を示すフローチャートである。
【図５】本発明の第１の実施形態を示し、分散計算機システムのデータの流れを示すシーケンス図である。
【図６】本発明の第１の実施形態を示し、分散計算機システムでｋ−ｍｅａｎｓクラスタリング法を実現するフローチャートである。
【図７Ａ】本発明の第１の実施形態を示し、本発明に用いるデータ適用部のプログラムのうち、分散計算機システムが利用者に提供する部分と利用者が作成する部分を表した模式図である。
【図７Ｂ】本発明の第１の実施形態を示し、本発明に用いるモデル更新部のプログラムのうち、分散計算機システムが利用者に提供する部分と利用者が作成する部分を表した模式図である。
【図８Ａ】本発明の第１の実施形態を示し、機械学習で用いる特徴量データの一例を示す説明図で、クラスタリングの特徴量データである。
【図８Ｂ】本発明の第１の実施形態を示し、機械学習で用いる特徴量データの一例を示す説明図で、識別問題の特徴量データである。
【図９】本発明の第１の実施形態を示し、データ適用部がローカルファイルシステムの特徴量データをメモリに読み込む例を示す模式図である。
【図１０】本発明の第１の実施形態を示し、データ適用部がローカルファイルシステムの特徴量データをメモリに読み込む例を示すシーケンス図である。
【図１１】従来例を示し、ＭａｐＲｅｄｕｃｅに基づく分散計算システムの構成例を示すブロック図である。
【図１２】従来例を示し、ＭａｐＲｅｄｕｃｅの処理の一例を示すフローチャートである。
【図１３】従来例を示し、ＭａｐＲｅｄｕｃｅに基づいて機械学習を実現するための通信手順の例を示すシーケンス図である。
【図１４】本発明の第１の実施形態と、従来例ＭａｐＲｅｄｕｃｅに基づいてｋ−ｍｅａｎｓを実行した場合の特徴量データのレコード数と実行時間の関係を表す図である。
【図１５】本発明の第１の実施形態に基づいてｋ−ｍｅａｎｓを実行した場合のデータ適用部の数と速度変化の割合の関係を表す図である。
【発明を実施するための形態】
【００１７】
以下、本発明の一実施形態を添付図面に基づいて説明する。
【００１８】
以下の実施の形態において、要素の数等に言及する場合、特に指定された場合および原理的に明らかに特定される場合を除き、その特定の数に限定されることはなく、特定の数以上でも以下でもよい。
【００１９】
さらに、以下の実施の形態において、その構成要素は、特に指定された場合および原理的に明らかに必要とされる場合を除き、必ずしも必須のものではないということは明らかである。また、同様に以下の実施の形態において、構成要素の形状や位置関係について言及するときは、特に明示する場合や原理的に明らかにそうでないと考えられる場合を除き、実質的にその形状等に近似または類似するものを含むものとする。このことは上記数値および範囲に関しても同様である。
【００２０】
＜第１実施形態＞
図１は、本発明の分散計算機システムで使用する計算機のブロック図である。分散計算機システムで使用する計算機５００は図１に示すような汎用の計算機５００を想定しており、具体的にはＰＣサーバで構成している。ＰＣサーバは中央演算装置（Central Processing Unit、ＣＰＵ）５１０とメモリ５２０とローカルファイルシステム５３０と入力装置５４０と出力装置５５０とネットワークデバイス５６０とバス５７０を有する。ＣＰＵ５１０からネットワークデバイス５６０までの各装置はバス５７０によって接続されている。ネットワークを介してリモートから操作する場合、入力装置５４０と出力装置５５０については省略可能である。また、ローカルファイルシステム５３０とは、計算機に内蔵ないし外部に接続された書き換え可能な記憶領域を指し、具体的には、ハードディスクドライブやソリッドステートドライブ、ＲＡＭディスクなどの記憶装置である。
【００２１】
以下簡単に、本発明の適応対象となる機械学習アルゴリズムを説明する。機械学習では特徴量データに表れる共通のパターンを抽出することを目的とする。機械学習アルゴリズムの例として、ｋ−ｍｅａｎｓ（J．McQueen "Some methods for classification and analysis of multivariate observations" In Proceedings of the Fifth Berkeley Symposium on Mathematical Statistics and Probability、 pp.281-297 、1967）やＳＶＭ（Support Vector Machine；Chapelle、 Olivier: Training a Support Vector Machine in the Primal、 Neural Computation、 Vol.19、 No.5、 pp.1155-1178、 2007）がある。機械学習アルゴリズムで扱うデータとしては、パターンを抽出する対象となる特徴量データと、学習対象となるモデルパラメータがある。機械学習では、予め、モデルを決めておき、特徴データがよく当てはまるようにモデルパラメータを決定する。例えば、特徴量データ｛（ｘ１，ｙ１），（ｘ２，ｙ２），．．．｝における線形モデルでは、モデルは、
ｆ（ｘ）＝  （ｗ，ｘ）＋ｂ
と関数ｆで表される。ここで（ｗ，ｘ）はベクトルｗとｘの内積を表す。上式のｗとｂがモデルパラメータである。ｙｉ＝ｆ（ｘｉ）が小さい誤差で成り立つようにｗとｘを決めることが、機械学習の目的である。以下では特徴量データを用いて、モデルパラメータを推定することを学習と呼ぶ。
【００２２】
上記の ｋ−ｍｅａｎｓやＳＶＭなどの機械学習アルゴリズムは、データ適用の実行と、モデル更新の実行を繰り返すことにより学習を行う。データ適用とモデル更新は、アルゴリズムごとに設定されたモデルパラメータの収束判定基準を満たすまで、繰り返される。データ適用とは、現在の推定値であるモデルパラメータを用いて、モデルを特徴量データに当てはめる。例えば、上記の線形モデルであれば、現在の推定値であるｗとｂを持つ関数ｆを特徴量データに当てはめ、誤差を算出する。モデル更新では、データ適用の結果を用いて、モデルパラメータを再推定する。データ適用とモデル更新を繰り返すことにより、モデルパラメータの推定精度が高くなっていく。
【００２３】
図２は、本発明の分散計算機システムのブロック図である。本発明に使用する計算機は図２のように一台のマスタ用計算機６００と一台以上のワーカー用計算機６１０−１〜６１０−４、がネットワーク（ＬＡＮ）６３０を介して接続される。
【００２４】
マスタ用計算機６００とワーカー用計算機６１０は、図１に示した計算機５００でそれぞれ構成される。マスタ用計算機（以下、マスタ）６００は後述する分散計算制御部２６０を実行する。ワーカー用計算機（以下、ワーカー）６１０−１〜６１０−４は後述するデータ適用部２１０もしくはモデル更新部２４０を実行する。なお、図２では４つのワーカー１〜４（６１０−１〜６１０−４）で構成した例を示し、これらの総称をワーカー６１０とする。ワーカー１〜３（６１０−１〜６１０−３）では、データ適用部１〜３をそれぞれ実行し、これらは同一のプログラムであるので、総称をデータ適用部２１０とする。各ワーカー１〜３はそれぞれのローカルファイルシステム５３０の特徴量データ記憶部１〜３（２２０）に割り当てられた特徴量データ３１０をそれぞれ格納し、各データ適用部１〜３が参照する。これらの特徴量データ記憶部１〜３の総称を特徴量データ記憶部２２０とする。
【００２５】
データ適用部２１０は、特徴量データを保持し、モデル更新部２４０から付与されたモデルパラメータに対して、特徴量データを当てはめ、部分出力を出力するプログラムである。
【００２６】
モデル更新部２４０は、データ適用部２１０から付与された部分出力を集約し、モデルパラメータを再推定し、更新するプログラムである。またモデルパラメータが収束したかどうかの判定を行う。
【００２７】
ワーカー４（６１０−４）ではモデル更新部２４０を実行する。また、データ適用部２１０とモデル更新部２４０は一台の計算機に共存させることも可能である。
【００２８】
マスタ６００とワーカー６１０は、一般的なコンピュータネットワーク機器によって接続されており、具体的にはＬＡＮ（以下、ネットワーク）６３０で接続されている。また、ＬＡＮ６３０には分散ファイルシステム６２０が接続される。分散ファイルシステム６２０は、機械学習の対象である特徴量データ３１０を格納するマスタデータ記憶部２８０を有する記憶装置（ストレージ装置）として機能し、複数の計算機から構成されており、具体的にはＨＤＦＳ（Hadoop Distributed File System）を用いている。分散ファイルシステム６２０とマスタ６００とワーカ６１０ーは前記のネットワーク６３０によって接続されている。マスタ６００とワーカー６１０は、分散ファイルシステム６２０を構成する要素を兼務することができる。
【００２９】
マスタ６００はワーカー６１０のＩＰアドレスまたはホスト名のリストを保持し、ワーカー６１０を管理する。ワーカー６１０で利用可能な計算資源はマスタ６００が把握している。利用可能な計算資源とは、同時に実行できるスレッド数、使用可能なメモリ量の最大値、使用可能なローカルファイルシステム５３０の容量の最大値を指す。
【００３０】
ワーカー６１０を追加する場合、ワーカー６１０側の設定として分散ファイルシステム６２０へのアクセスを可能にするため、分散ファイルシステム６２０のエージェント等をインストールする必要がある。また、マスタ６００側の設定として、ワーカー６１０のＩＰアドレスやホスト名、さらに計算機資源の情報を追加する。
【００３１】
マスタ６００とワーカー６１０と分散ファイルシステム６２０を接続するネットワーク６３０は通信速度が求められるため、一つのデータセンタ内に存在している。マスタ６００やワーカー６１０あるいはファイルシステム６２０のそれぞれの構成要素を別のデータセンタに置くことも可能であるが、ネットワークの帯域や遅延などの問題があるため、その場合はデータ転送の速度が低下する。
【００３２】
マスタ６００ではワーカー６１０を管理する分散計算制御部２６０を実行する。マスタ６００は、図１に示した入力装置５４０から機械学習を行う特徴量データ３１０の割り当てや、機械学習のモデル（学習モデル）とパラメータ及び分散実行のパラメータ等、機械学習の分散処理に関する設定を受け付ける。そして、マスタ６００の分散計算制御部２６０は、上記受け付けた設定に基づいて、分散計算に使用するワーカー６１０と、各ワーカー６１０に割り当てる特徴量データ３１０と、機械学習の学習モデル及びパラメータをデータ適用部２１０とモデル更新部２４０に設定し、各ワーカー６１０に送信し、後述するように機械学習の分散計算を実行する。
【００３３】
図３は、本発明の分散計算機システムの機能要素を示すブロック図である。
【００３４】
図３に示すように、機械学習はＣＰＵで実行可能なソフトウェアとして実装されている。機械学習のソフトウェアはマスタ６００用とワーカー６１０用が存在している。マスタ６００で動作するソフトウェアは、分散計算制御部２６０であり、各ワーカー６１０への特徴量データの割り当てとワーカー６１０で実行されるのソフトウェアの割り当てを行う。ワーカー６１０で実行されるソフトウェアは２種類存在する。
【００３５】
一つ目のワーカー６１０用のソフトウェアは分散ファイルシステム６２０のマスタデータ記憶部２８０からの特徴量データ３１０の取得と、特徴量データ記憶部２２０の読み書きと、分散計算制御部２６０とのデータ通信と、特徴量データ記憶部２２０を用いた学習処理とを行うデータ適用部２１０である。各ワーカー１〜３のデータ適用部２１０は、ワーカー４から入力データ２００を受け取り、メモリ５２０から読みだした特徴量データを用いて処理を行うことで部分出力データ２３０をそれぞれ出力する。
【００３６】
もうひとつのソフトウェアは機械学習のパラメータの初期化と結果の統合と収束判定を行うモデル更新部２４０である。モデル更新部２４０はワーカー４（６１０−４）で実行されてデータ適用部２１０から部分出力データ２３０（図中部分出力１〜部分出力３）を受け取り、所定の処理を行ってシステムの出力となる出力データ２５０を返す。この際、収束条件を満たさない場合は、出力データ２５０を入力データ２００とし、再度学習処理を行う。
【００３７】
次に、分散計算機システムの起動手順について説明する。分散ファイルシステムの使用者はマスタ６００の電源を入れてＯＳ（オペレーティングシステム）を立ち上げる。同様にすべてのワーカー６１０の電源を入れてＯＳを立ち上げる。マスタ６００とワーカー６１０のすべてが、分散ファイルシステム６２０にアクセス可能な状態にする。
【００３８】
マスタ６００に予め格納した設定ファイル（図示省略）に、機械学習で使用するワーカー６１０のＩＰアドレスやホスト名をすべて追加する。以降、分散計算制御部２６０、データ適用部２１０、モデル更新部２４０の各プロセスは、このＩＰアドレスとホスト名をもとに通信を行う。
【００３９】
図４は、分散計算機システムで行われる全体的な処理の一例を示すフローチャートである。
【００４０】
まず、ステップ１００では、マスタ６００の分散計算制御部２６０は、データ適用部２１０とモデル更新部２４０を初期化し、ワーカー１〜３にデータ適用部２１０を送信し、ワーカー４にモデル更新部２４０を送信する。なお、分散計算制御部２６０は、データ適用部２１０とモデル更新部２４０に学習モデルと学習パラメータを含めて送信する。
【００４１】
ステップ１１０では、マスタ６００の分散計算制御部２６０は、分散ファイルシステム６２０が保持するマスタデータ記憶部２８０の特徴量データ３１０を分割し、各データ適用部２１０に特徴量データ３１０を割り当てる。特徴量データ３１０の分割はワーカー１〜３で重複が起こらないように行われる。
【００４２】
ステップ１２０では、ワーカー４のモデル更新部２４０は学習パラメータの初期化を行い、ワーカー１〜３のデータ適用部２１０に学習パラメータの初期パラメータを送信する。
【００４３】
ステップ１３０では、ワーカー１〜３の各データ適用部２１０は、分散ファイルシステム６２０のマスタデータ記憶部２８０から特徴量データ３１０のうち割り当てられた部分をロードし、ローカルファイルシステム５３０の特徴量データ記憶部２２０に特徴量データ１〜３としてそれぞれ保存する。分散ファイルシステム６２０とワーカー１〜３のデータ通信は、このステップ１３０のみで行われ、以降の手順では分散ファイルシステム６２０からの特徴量データの読み出しは行われない。
【００４４】
ステップ１４０では、ワーカー１〜３の各データ適用部２１０はローカルファイルシステム５３０からメモリ５２０に特徴量データ１〜３を所定量ずつ逐次読み込み、モデル更新部２４０から渡されたモデルパラメータに対して、特徴量データを当てはめ、中間結果を部分出力として出力する。なお、データ適用部２１０は、メモリ５２０上に特徴量データをローカルファイルシステム５３０から読み込む所定のデータ領域を確保し、当該データ領域へ読み込んだ特徴量データについて処理を行う。そして、データ適用部２１０は、ステップ１４０を繰り返す度に、ローカルファイルシステム５３０のうち未処理の特徴量データをデータ領域へ読み込んで処理を繰り返す。
【００４５】
ステップ１５０では、ワーカー１〜３の各データ適用部２１０は中間結果である部分出力をモデル更新部２４０に送信する。
【００４６】
ステップ１６０では、モデル更新部２４０は各ワーカー１〜３から受信したパラメータを集約し、モデルパラメータを再推定し、更新する。例えば、各データ適用部２１０から、特徴量データをモデルに当てはめたときの誤差が部分出力として送られてきた場合、すべての誤差値を考慮して、最も誤差が小さくなると予想される値にモデルパラメータを更新する。
【００４７】
ステップ１７０では、ワーカー４のモデル更新部２４０において、ステップ１６０で更新されたモデルパラメータが収束したかどうかの判定を行う。収束判定の基準は、機械学習のアルゴリズムごとに設定されている。学習パラメータがまだ収束していないと判定された場合は、ステップ１８０に進んで、マスタ６００は各ワーカーに新しいモデルパラメータを送信する。そして処理１４０に戻り、モデルパラメータが収束するまで、データ適用部の処理とモデル更新部の処理が繰り返される。一方、モデルパラメータが収束したと判定された場合は、ループを抜けて処理を終了する。
【００４８】
ワーカー４のモデル更新部２４０は、モデルパラメータが収束したと判定されると、モデルパラメータをマスタ６００に送信し、マスタ６００はワーカー４から学習処理の結果であるモデルパラメータを受信すると学習処理の終了を検知し、マスタ６００がワーカー１〜４に学習プロセス（データ適用部２１０とモデル更新部２４０）の終了を指示する。
【００４９】
ワーカー１〜４はマスタから学習プロセス終了の指示を受け取ると、メモリ５２０上の特徴量データと、ローカルファイルシステム５３０上のファイル（特徴量データ）とを開放する。ワーカー１〜３は特徴量データを開放した後、学習プロセスを終了させる。
【００５０】
以上の処理を、２回の反復を行う場合について具体的に記述したものが図５である。図５は、分散計算機システムのデータの流れを示すシーケンス図である。
【００５１】
１回目のデータ適用部１４０の処理では、ワーカー１〜３のデータ適用部２１０が分散ファイルシステム６２０のマスタデータ記憶部２８０にアクセスして特徴量データ１〜３を取得するが、２回目のデータ適用部１４０−２では、ファイルシステム６２０とデータ通信が起こっていないことが分かる。これにより、本発明はネットワーク６３０の負荷を軽減している。
【００５２】
このフローチャートによって多くの機械学習アルゴリズムは、いかなる並列数にでも並列化することができる。機械学習は以下の３つの特徴を持つ機械学習アルゴリズムである。
１）識別モデルや回帰モデルをもつ。
２）特徴量データを上記モデルに適用することでモデルパラメータの妥当性を調べる。
３）モデルパラメータの妥当性をフィードバックしてモデルパラメータを再推定し、更新する。
【００５３】
このうち、上記２）の手順で特徴量データを走査する部分をデータ適用部２１０として複数のワーカーに分散し、モデル更新部２４０での統合処理を行うことで、本発明は機械学習アルゴリズムを並列化している。
【００５４】
そのため、上記２）の手順で学習データを並列的に読み込むことができる学習アルゴリズムに本発明を適用できる。そのようなアルゴリズムとして、周知のｋ−ｍｅａｎｓ、ＳＶＭ（Support Vector Machine）などがあり、代表的な機械学習手法に対して本発明を適用することが可能である。
【００５５】
例えば、ｋ−ｍｅａｎｓアルゴリズムの場合、上記１）のモデル（識別モデルまたは回帰モデル）パラメータとして、各クラスタの重心ベクトルを持つ。２）のモデルパラメータの妥当性の計算に関しては、現在のモデルパラメータに基づいて、特徴量データがどのクラスタに属するかの判定をする。３）のモデルパラメータの更新では、２）で分類したクラスタごとに、属する特徴量データの重心を計算することで、クラスタの重心ベクトルを更新する。また更新前後での、クラスタ重心ベクトルの差が一定の範囲以上であれば、収束していないと判定し、新しく計算された重心ベクトルを用いて再度上記２）の手順を実行する。ここで、２）の学習データがどのクラスタに属するかの判定とを並列化することができる。
【００５６】
以下では、図６をもとに具体例としてｋ−ｍｅａｎｓクラスタリング法による数値ベクトルのクラスタリングを本発明の分散計算機システム上で実行する手順を説明する。図６は、本発明の分散計算機システムでｋ−ｍｅａｎｓクラスタリング法を実現するフローチャートである。
【００５７】
図６において、図２に示したひとつのマスタ６００で分散計算制御部２６０が実行され、ひとつのワーカーｍ＋１でモデル更新部２４０が実行され、ｍ個のワーカー６１０でデータ適用部２１０が実行されているとする。
【００５８】
ステップ１０００では、初期化を行う。ステップ１０００は図４のステップ１００からステップ１３０に相当する。はじめに、マスタ６００において分散計算制御部２６０が、各データ適用部２１０とモデル更新部２４０の初期化を行い、データ適用部２１０とモデル更新部２４０を各ワーカー６１０に送信する。次に分散計算制御部２６０は各データ適用部２１０が担当する特徴量データを割り当てる。そして、モデル更新部２４０がｋ個の重心ベクトルＣ（ｉ）をランダムに初期化する。モデル更新部２４０は各データ適用部２１０に重心ベクトルＣ（ｉ）を送信する。ｉは現在までの反復の回数を表し、初期値をｉ＝０とする。各データ適用部２１０は分散ファイルシステム６２０のマスタデータ記憶部２８０から特徴量データ３１０をロードし、ローカルファイルシステム５３０の特徴量データ記憶部２２０にそれぞれ保存する。
【００５９】
以降のステップ１０１０からステップ１０６０までの処理が図４のステップ１４０からステップ１８０に示される反復部分に相当する。
【００６０】
ステップ１０１０は現在の重心Ｃ（ｉ）を表す。
【００６１】
ステップ１０２０で各データ適用部２１０は割り当てられた特徴量データ１〜３に含まれる数値ベクトルを順に重心ベクトルＣ（ｉ）と比較し、もっとも距離が小さい重心ベクトルのラベルｌ，｛ｌ｜１＜ｌ＜＝ｋ，ｌ∈Ｚ｝を付与する。ここでＺは整数の集合を表す。
【００６２】
さらに、ｊ番目｛ｊ｜１＜ｊ＜＝ｍ，ｊ，ｍ∈Ｚ｝のデータ適用部２１０は、ラベル付けされた数値ベクトルについて、ラベルごとに重心ベクトルｃ（ｉ，ｊ）を計算する。ステップ１０３０では各データ適用部２１０が上記ステップ１０２０の処理で得た重心ベクトルｃ（ｉ，ｊ）を表す。
【００６３】
ステップ１０４０では、各データ適用部２１０が計算された重心ベクトルｃ（ｉ，ｊ）をモデル更新部２４０に送信する。モデル更新部２４０が各データ適用部２１０から重心ベクトルを受け取り、ステップ１０５０では、モデル更新部２４０がラベルごとの重心ベクトルからラベル全体の重心ベクトルを計算し、新たな重心ベクトルｃ（ｉ＋１）とする。そして、モデル更新部２４０では、上述のテストデータと新たな重心ベクトルｃ（ｉ＋１）との距離を比較し、もっとも近い重心ベクトルのラベルを付与し、収束判定を行う。予め設定された収束基準が満たされた場合、処理を終了する。
【００６４】
一方、収束基準が満たされない場合、ステップ１０６０で反復回数ｉに１を加算し、モデル更新部２４０は再度重心ベクトルを各データ適用部２１０に送信する。そして、上述の処理を繰り返す。
【００６５】
上記ステップ１０００〜１０６０の処理により、ｋ−ｍｅａｎｓクラスタリング法によって数値ベクトルのクラスタリングを複数のワーカーで実行することができる。
【００６６】
図７Ａは、本発明に用いるデータ適用部２１０のプログラムのうち、分散計算機システムが利用者に提供する部分と利用者が作成する部分を表した模式図である。また、図７Ｂは、本発明に用いるモデル更新部のプログラムのうち、分散計算機システムが利用者に提供する部分と利用者が作成する部分を表した模式図である。
【００６７】
図７Ａ、図７Ｂに示すように、データ適用部２１０とモデル更新部２４０は共通部分と学習手方法に依存する部分に分けられている。  図７Ａにおいてデータ適用部２１０の共通部分とは、分散計算制御部２６０やモデル更新部２４０、分散ファイルシステム６２０のマスタデータ記憶部２８０との通信や、特徴量データ記憶部２２０へのデータの保存処理や読み出しの処理方法などであり、予めデータ適用部２１０のデータ適用テンプレート１３２０に実装されている。そのため、利用者はデータ適用部２１０のうちｋ−ｍｅａｎｓデータ適用１３３０を作成するだけでよい。
【００６８】
図７Ｂにおいてモデル更新部２４０は、分散計算制御部２６０やデータ適用部２１０、分散ファイルシステム６２０のマスタデータ記憶部２８０との通信などの共通部分がモデル更新テンプレート１３４０に実装されている。分散計算機システムの利用者は、モデル更新部２４０のうち、ｋ−ｍｅａｎｓ初期化１３５０とｋ−ｍｅａｎｓモデル統合１３６０とｋ−ｍｅａｎｓ収束判定１３７０を作成するだけでよい。
【００６９】
このように、本発明では機械学習に共通する部分はテンプレートとして用意されているため、利用者が作成するプログラムの量を減らすことができ、開発を効率的にすることが可能である。
【００７０】
本発明は、データ適用部２１０とモデル更新部２４０及び分散計算制御部２６０を上記のような実施形態の構造にすることにより、以下の２つの機能と効果を奏することができる。
（１）  ネットワークを通した学習データの通信の削減
（２）  プロセス起動及び終了の回数の削減
従来例に示したＭａｐＲｅｄｕｃｅを機械学習に用いる場合の例を図１１と図１２及び図１３に示す。図１１は、ＭａｐＲｅｄｕｃｅに基づく分散計算システムの構成例を示すブロック図である。
【００７１】
図１１において、従来例の分散計算機システムは、複数のＭａｐプロセス（図中Ｍａｐ１〜Ｍａｐ３）３２０を実行する複数の計算機３７０と、Ｒｅｄｕｃｅプロセス３４０を実行するひとつの計算機３７１と、Ｍａｐプロセス３２０及びＲｅｄｕｃｅプロセス３４０を制御するマスタプロセスを実行するマスタ３６０と、特徴量データを保持する分散ファイルシステム３８０から構成される。
【００７２】
図１２は、ＭａｐＲｅｄｕｃｅにより機械学習を行う処理の一例を示すフローチャートである。図１３は、上記図１２のＭａｐＲｅｄｕｃｅに基づいて機械学習を実現するための通信手順の例を示すシーケンス図である。
【００７３】
従来例に示したＭａｐＲｅｄｕｃｅを用いてｎ回の反復処理で機械学習を行ったとすると、図１２、図１３のステップ４３０に示すように分散ファイルシステム３８０から特徴量データを読み出す手順がｎ回繰り返される。
【００７４】
つまり、図１２、図１３において、ステップ４００ではマスタ３６０が重心ベクトルの初期化を行い、ステップ４１０では、マスタ３６０は複数のＭａｐプロセス３２０が担当する特徴量データを割り当て、ステップ４２０では、マスタ３６０が各Ｍａｐプロセス３２０を起動させて、重心ベクトルと担当する特徴量データを送信する。
【００７５】
ステップ４３０では、各Ｍａｐプロセス３２０が、分散ファイルシステム３８０のマスタデータから特徴量データを読み込んで重心ベクトルを算出する。そして、ステップ４４０では、各Ｍａｐプロセス３２０は、求めた重心ベクトルをＲｅｄｕｃｅプロセス３４０に送信する。
【００７６】
ステップ４５０では、Ｒｅｄｕｃｅプロセス３４０が、各Ｍａｐプロセス３２０から受信した複数の重心ベクトルから全体の重心ベクトルを算出し、新たな重心ベクトルとして更新する。
【００７７】
ステップ４６０では、Ｒｅｄｕｃｅプロセス３４０が新たな重心ベクトルについて予め設定した基準と比較して収束したか否かを判定する。基準を満たして収束していれば処理を終了する。一方、収束していなければステップ４７０で、Ｒｅｄｕｃｅプロセス３４０はマスタ３６０に収束が未了であることを通知する。通知を受けたマスタ３６０が各Ｍａｐプロセス３２０を起動して、重心ベクトルと特徴量データを各Ｍａｐプロセスに割り当ててからステップ４３０に戻って上記処理を繰り返す。なお、図１３には、同一のステップに同一の符号を付した。
【００７８】
一方、本発明では、図４のステップ１３０に示すように、分散ファイルシステム６２０のマスタデータ記憶部２８０から特徴量データを読み出す回数はデータ適用部２１０の初回の実行のみである。そのため、ネットワーク６３０を介した特徴量データの通信量は、従来例のＭａｐＲｅｄｕｃｅに比してｎ分の１になる。
【００７９】
同様に、プロセスの起動及び終了も図１２、図１３のように従来例のＭａｐＲｅｄｕｃｅではｎ回の反復処理でｎ回行われる。一方で本発明では、データ適用部２１０、モデル更新部２４０とも処理の間、終了されることはないため、プロセスの起動及び終了回数も従来例に比してｎ分の１になる。
【００８０】
以上のように、分散計算機環境において機械学習を実行する上で、本発明はネットワーク６３０の通信量と、ＣＰＵ資源を削減することができる。つまり、データ適用部２１０とモデル更新部２４０のプロセスが保持され、かつ、メモリ上の特徴量データを再利用することができるため、プロセスの起動と終了の回数を削減し、特徴量データのロードも一回で済むため通信量とＣＰＵ負荷の抑制が可能となる。
【００８１】
図８Ａ、図８Ｂに本発明の機械学習に用いる特徴量データの一例を示す。自然言語の文書や、画像データなどの様々な形式のデータを機械学習で扱いやすいように予め変換したデータが特徴量データである。
【００８２】
図８Ａは、クラスタリングの特徴量データ７００を示し、図８Ｂは、識別問題の特徴量データ７１０を示し、図２のマスタデータ記憶部２８０に格納される特徴量データである。特徴量データ７００、７１０は、ラベルと数値ベクトルの組からなる。一行に一つのラベルと数値ベクトルが記されている。１列目がラベルを表し、２列目以降が数値ベクトルを表す。例えば、図８Ａのデータの１行目では、ラベルが「１」であり、数値ベクトルが「１：０．１  ２：０．４５  ３：０．９１，．．．」である。数値ベクトルは「次元の番号：値」という形式で記述されており、図８Ａのデータの１行目の例では、ベクトルの１次元目が０．１、２次元目が０．４５、３次元目が０．９１であることを表す。特徴量データ７００での必須項目は数値ベクトルであり、場合によりラベルは省略される。例えば、学習時で用いられる特徴量データ７００にはラベルが付与されているが、テストで用いられる場合はラベルが付与されていない。また、教師なし学習の場合には、学習で用いられる特徴量にもラベルが付与されない。
【００８３】
機械学習では、読み込む特徴量データの順序は結果に影響しない。この機械学習の特長を生かし、図９、図１０のようにローカルファイルシステム５３０から特徴量データをメモリ５２０のデータ領域にロードする順番を最適化することで、図４に示した反復処理ごとに変えて、特徴量データのロード時間を減らすことができる。
【００８４】
図９は、データ適用部２１０がローカルファイルシステム５３０の特徴量データ記憶部２２０からメモリ５２０に予め設定したデータ領域に読み込む例を示す模式図である。図１０は、データ適用部２１０がローカルファイルシステム５３０の特徴量データをメモリ５２０のデータ領域に読み込む例を示すシーケンス図である。
【００８５】
ここでは、ローカルファイルシステム５３０の特徴量データ記憶部２２０に保存された特徴量データのデータ量がメモリ５２０に設定したデータ領域のサイズの２倍になっている場合を考える。この場合、特徴量データを複数のセグメントに分け、それぞれデータセグメント１（１１００）、データセグメント２（１１１０）と呼ぶ。なお、メモリ５２０上のデータ領域のサイズは、これらのデータセグメント１、２を格納可能な所定の容量で予め確保されたものである。
【００８６】
以下、図１０をもとに反復処理のデータロードについて述べる。１回目のデータロード（１００１）の際には、ＣＰＵ５１０は、ローカルファイルシステム５３０からデータセグメント１（１１００）を最初にメモリ５２０のデータ領域に読み、処理（データ１処理）が終わり次第データセグメント１を開放し、ローカルファイルシステム５３０からデータセグメント２（１１１０）をメモリ５２０のデータ領域に読み込む。ＣＰＵ５１０は、処理（データ２処理）が終わっても、メモリ５２０のデータ領域上にあるデータセグメント２を保持する。モデル更新（２４０）を行った後の２回目の反復処理の際にはメモリ５２０のデータ領域上に保持したデータセグメント２から処理（データ２処理）を始める。同様に２＊ｉ回目｛ｉ｜ｉ∈Ｚ｝の反復に、データのセグメント１から処理を行い、２＊ｉ＋１回目の反復にデータセグメント２から処理を行う。こうすることで、ローカルファイルシステム５３０からの特徴量データのロード回数は毎回データセグメント１から読む場合と比べて半分になり、機械学習を高速に実行できるようになる。
【００８７】
＜実行の中断＞
本発明では、機械学習中に処理を中断することが可能である。
【００８８】
各データ適用部２１０は分散計算制御部２６０から処理の中断の命令を受けると、実行中の学習処理を終えて計算結果をモデル更新部２４０に送信した後、次の回の学習処理を実行することを一時的に停止する。そして、メモリ５２０上に読み込まれた特徴量データを開放する。
【００８９】
モデル更新部２４０は分散計算制御部２６０から処理の中断の命令を受けると、データ適用部２１０からの部分結果を待ち受け、実行中の統合処理を終えるまで処理を続ける。その後、収束判定を保留し、分散計算制御部２６０からの中断解除（学習再開）の指令を待ち受ける。
【００９０】
＜学習処理の再開＞
各ワーカー１〜３はマスタ６００から学習再開の命令を受けると、ローカルファイルシステム５３０の特徴量データ記憶部２２０から特徴量データをメモリ５２０に読み込む。マスタ６００から転送された学習パラメータを用いて、反復処理を実行する。以降は通常の実行時と同様の手順に戻る。
【００９１】
以上のように本発明によれば、学習処理を並列的に行う分散計算機システムにおいて、マスタ６００（第２の計算機）の分散計算制御部２６０は、特徴量データの割り当てと、データ適用部２１０、モデル更新部２４０をワーカー１〜４（第１の計算機）へ割り当てる。ワーカー１〜３のデータ適用部２１０は機械学習アルゴリズムの反復計算を担当し、学習処理の開始時にネットワークを介して分散ファイルシステム６２０（ストレージ）から特徴量データを取得し、ローカルファイルシステム５３０（ローカル記憶装置）に格納する。データ適用部２１０は、２回目以降の学習処理の反復時にはローカルファイルシステム５３０から特徴量データを読み込んで学習処理を行う。特徴量データは学習処理の終了までローカルファイルシステム５３０またはメモリ５２０に保持される。データ適用部２１０は学習処理の結果のみをモデル更新部２４０に送信し、モデル更新部２４０からの次の入力（学習モデル）を待ち受ける。モデル更新部２４０は学習モデル及びパラメータの初期化と、データ適用部２１０からの学習処理の結果の統合と収束判定を行い、学習モデルが収束していれば、処理を終了し、収束していなければ、新しい学習モデル及びモデルパラメータをデータ適用部２１０に送信し、学習処理を繰り返す。このとき、データ適用部２１０は、ネットワークを介して分散ファイルシステム６２０にアクセスすることなくローカルファイルシステム５３０の特徴量データを再利用するので、学習処理の起動と終了及び分散ファイルシステム６２０からのデータのロードを抑制して、機械学習の処理速度を向上させることが可能となる。
【００９２】
本発明によって並列化したｋ−ｍｅａｎｓ法の実行時間を計測した。実験には、マスタ６００を１台とワーカー６１０を６台と１つの分散ファイルシステム６２０と１ＧｂｐｓのＬＡＮ６３０を用いた。特徴量データ３１０として、４つのクラスタに属する５０次元の数値ベクトルを用いた。特徴量データのレコード数を２００，０００点，２，０００，０００点，２０，０００，０００点と変化させたて実験を行った。
【００９３】
マスタはＣＰＵ５１０を８個持ち、メモリ５２０を３ＧＢ持ち、ローカルファイルシステムを２４０ＧＢ持つ。６台のワーカーのうち４台はＣＰＵを４個持ち、メモリを４ＧＢ持ち、ローカルファイルシステムを１ＴＢ持つ。残りの２台のワーカーはＣＰＵを４個持ち、メモリを２ＧＢ持ち、ローカルファイルシステムを２４０ＧＢ持つ。メモリを４ＧＢ持つワーカー４台にデータ適用部２１０を８個実行させ、メモリ２ＧＢを持つワーカー２台にデータ適用部を４個実行させた。モデル更新部２４０は、６台のワーカーのうち１台で１個実行させた。
【００９４】
図１４に各データの大きさに対する反復処理１回あたりの実行時間を表す。横軸はデータの大きさであり、縦軸は実行時間［秒］である。図１４は両側対数グラフとして描かれている。折れ線１４００で結果が示されているＭｅｍｏｒｙ＋ＬＦＳとはワーカー６１０のローカルファイルシステム５３０に特徴量データを保存し、メモリ５２０に乗っている特徴量データを利用する場合を表す。各ワーカーのメモリには２００，０００点の特徴量データがキャッシュされており、反復計算において再利用される。折れ線１４１０で結果が示されているＬＦＳとは、ワーカー６１０のローカルファイルシステム５３０に特徴量データを保存し、メモリ５２０の特徴量データを利用しない場合を表す。折れ線１４２０で結果が示されているＤＦＳ（ＭａｐＲｅｄｕｃｅ）とはＭａｐＲｅｄｕｃｅを用いてＫ−ｍｅａｎｓ法を実装し、分散ファイルシステム６３０の特徴量データを利用した場合を表す。全てのデータにおいて、Ｍｅｍｏｒｙ＋ＬＦＳはＬＦＳより早く処理を終えており、ＬＦＳは（ＭａｐＲｅｄｕｃｅ）よりも早く処理を終えている。２００，０００点のデータを用いた時、Ｍｅｍｏｒｙ＋ＬＦＳはＤＦＳ（ＭａｐＲｅｄｕｃｅ）と比べて６１．３倍速く処理を実行している。２，０００，０００点のデータを用いた時、Ｍｅｍｏｒｙ＋ＬＦＳはＤＦＳ（ＭａｐＲｅｄｕｃｅ）と比べて２７．７倍速く処理を実行している。２０，０００，０００点のデータを用いた時、Ｍｅｍｏｒｙ＋ＬＦＳはＤＦＳ（ＭａｐＲｅｄｕｃｅ）と比べて、１５．２倍速く処理を実行している。Ｍｅｍｏｒｙ＋ＬＦＳは、メモリに全ての特徴量データがキャッシュされる２００，０００点と２，０００，０００点の特徴量データの場合にＬＦＳと比べて、それぞれ３．３３倍、２．９６倍と大きな速度向上を示している。
次に、ワーカーの台数を１台から６台まで１台ずつ増やし、本発明によって並列化したｋ−ｍｅａｎｓ法の実行時間を計測した。ワーカーを追加する順番で、１台目から４台目のワーカーはデータ適用部２１０を８個持ち、５台目と６台目のワーカーはデータ適用部を４個持つ。特徴量データ３１０として、４つのクラスタに属する５０次元の数値ベクトルを２０，０００，０００点用いた。この実験では、６台のうち１台のワーカーにモデル更新部２４０を１個割り当てた。図１５にデータ適用部の個数に対する速度向上率を示す。なお、速度向上率はＣＰＵが８個の場合を基準としている。Ｍｅｍｏｒｙ＋ＬＦＳの結果は折れ線１５００で示されていおり、ＬＦＳの結果は折れ線１５１０で示されている。Ｍｅｏｍｏｒｙ＋ＬＦＳとＬＦＳの両方で、ワーカーの台数が増えることにより、速度向上の割合が上がっている。Ｍｅｍｏｒｙ＋ＬＦＳでは２台のワーカーで計８個のＣＰＵを使うときに、１．５３倍に速度が向上しており、６台のワーカーで計４０個のＣＰＵを使うときは１３．３倍に速度が向上している。ＬＦＳでは２台のワーカーで計８個のＣＰＵを使うときに１．４８倍に速度が向上しており、６台のワーカーで計４０個のＣＰＵを使うときは９．７２倍に速度が向上している。Ｍｅｍｏｒｙ＋ＬＦＳとＬＦＳでは、ワーカーの数とともに、ＣＰＵやＬＦＳの数が増えることで処理分散が起こっていることで、速度が向上している。それに加えて、Ｍｅｍｏｒｙ＋ＬＦＳの場合、メモリにキャッシュされる特徴量データの量も向上しており、速度の向上の割合がＬＦＳの場合と比べて大きくなっている。
【００９５】
＜第２実施形態＞
次に、本発明の第２の実施の形態について説明する。第２実施の形態で用いる分散計算機システムの構成は、前記第１実施形態と同一である。
【００９６】
データ適用部２１０における学習結果のモデル更新部２４０への送信と、モデル更新部２４０における学習結果の統合が第１実施形態とは異なる。本第２実施形態例において、データ適用部２１０での学習処理時にメモリ５２０上の特徴量データのみを学習処理に使用する。メモリ５２０上の特徴量データの学習処理が終わると、部分的な結果をモデル更新部２４０へと送信する。この送信の際に、データ適用部２１０は、ローカルファイルシステム５３０の特徴量データ記憶部２２０のうち未処理の特徴量データをメモリ５２０に読み込んで入れ替える。
【００９７】
上記処理により、モデル更新部２４０の通信の待ち時間を低減することができる。以下では第１実施形態と第２実施形態の相違点についてのみ説明する。
【００９８】
今、ローカルファイルシステム５３０にはデータ適用部２１０で扱うことのできるメモリ量の２倍の量の特徴量データが存在すると仮定する。なお、データ適用部２１０は、メモリ５２０上に特徴量データを格納する領域と、学習結果等を格納する領域を設定するものとする。便宜上、ローカルファイルシステム５３０上の特徴量データ記憶部２２０を図９で示したようにデータセグメント１（１１００）、データセグメント２（１１１０）の２つに分割されていると考える。
【００９９】
はじめに、データ適用部２１０がデータセグメント１を学習処理する。学習処理が終了すると通信スレッド（図示省略）と特徴量データロードスレッド（図示省略）を活性化（実行）する。データロードスレッドがデータセグメント２をロードしている間に通信スレッドが途中結果をモデル更新部２４０に送信する。モデル更新部は各データ適用部から途中結果を受け取ると、随時新しいモデルパラメータを更新する。データ適用部での学習処理は特徴量データがロードされると、通信スレッドの終了を待つことなく実行される。このように、データ適用部２１０の途中結果をモデル更新部２４０が把握することで、データ適用部２１０が学習処理を行っている間もモデル更新部２４０は途中結果を用いて計算（統合処理）を行うことができる。そのため、データ適用部２１０の学習終了時に実行する統合処理に要する時間を短縮することができる。これにより、機械学習処理のさらなる高速化を図ることができる。
【０１００】
＜第３実施形態＞
次に、本発明の第３の実施の形態を説明する。機械学習の一手法にアンサンブル学習が知られている。アンサンブル学習は独立した複数のモデルを作成し、複数のモデルを統合する学習手法である。アンサンブル学習を用いると学習アルゴリズムが並列化されていない場合でも、独立した学習モデルの構築を並列的に行うことができる。各アンサンブル手法を本発明上に実装することを考える。本第３実施形態の分散計算機システムの構成は前記第１実施形態と同一である。アンサンブル学習の際に、学習用データをデータ適用部２１０に固定してモデルのみを移動させることで、特徴量データの通信量を減らすことができる。以下では第１実施形態と第３実施形態の相違点についてのみ説明する。
【０１０１】
アンサンブル学習のためにデータ適用部２１０をｍ個用いると仮定する。単一のデータ適用部２１０のみで動作する機械学習アルゴリズムが１０種類あると仮定する。分散計算制御部２６０がデータ適用部２１０をワーカー１〜ｍへ送信する際に全ての機械学習アルゴリズムが送信される。１度目のデータ適用部２１０の処理で各ローカルファイルシステム５３０には特徴量データが分散ファイルシステム６２０のマスタデータ記憶部２８０から読み込まれる。
【０１０２】
そして各データ適用部２１０において、１種類目のアルゴリズムの学習が行われ、学習後に結果がモデル更新部２４０に送信される。２度目以降の処理では、学習されていないアルゴリズムが順次学習される。その際に、機械学習アルゴリズムや特徴量データはメモリ５２０上、もしくはローカルファイルシステム５３０に存在するものを用いる。データ適用部２１０とモデル更新部２４０の処理を合計１０回繰り返すことで、全てのアルゴリズムを全ての特徴量データについて学習する。
【０１０３】
このような方法によって、データサイズの大きい特徴量データをワーカーのデータ適用部２１０から移動させることなく、効率的にアンサンブル学習を行うことができる。
【０１０４】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発
明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可
能であることはいうまでもない。
【０１０５】
なお、上記各実施形態においては、特徴量データ３１０を分散ファイルシステム６２０のマスタデータ記憶部２８０に格納する例を示したが、ワーカー６１０からアクセス可能なストレージ装置を用いることができ、分散ファイルシステム６２０に限定されるものではない。
【０１０６】
また、上記各実施形態においては、分散計算制御部２６０とデータ適用部２１０及びモデル更新部２４０がそれぞれ独立した計算機５００で実行される例を示したが、各処理部２１０、２４０、２６０は仮想計算機上で実行されてもよい。
【産業上の利用可能性】
【０１０７】
以上のように、本発明は機械学習を並列して実行する分散計算システムに適用することができ、特に、反復処理を含むデータ処理を実行する分散計算機システムに適用することができる。
【符号の説明】
【０１０８】
２１０  データ適用部
２２０  特徴量データ記憶部
２４０  モデル更新部
２６０  分散計算制御部
２８０  マスタデータ記憶部
３１０  特徴量データ
５１０  中央演算装置 (Central Processing Unit、CPU)
５２０  メモリ
５３０  ローカルファイルシステム
５４０  入力装置
５５０  出力装置
５６０  ネットワークデバイス
５７０  バス
６００  マスタ用計算機
６１０  ワーカー用計算機
６２０  分散ファイルシステム
６３０  ネットワーク機器（ＬＡＮ）
【図１】
0005584914.tif 000002
【図２】
0005584914.tif 000003
【図３】
0005584914.tif 000004
【図４】
0005584914.tif 000005
【図５】
0005584914.tif 000006
【図６】
0005584914.tif 000007
【図７Ａ】
0005584914.tif 000008
【図７Ｂ】
0005584914.tif 000009
【図８Ａ】
0005584914.tif 000010
【図８Ｂ】
0005584914.tif 000011
【図１１】
0005584914.tif 000012
【図１２】
0005584914.tif 000013
【図１３】
0005584914.tif 000014
【図１４】
0005584914.tif 000015
【図１５】
0005584914.tif 000016
【図９】
0005584914.tif 000017
【図１０】
0005584914.tif 000018