(57)【要約】【課題】分散計算の効率が最大化できるようアルゴリズムのロジックを適切に分散し、通信負荷が大きくならないよう解候補を適切にプロセス間で通信する方法を提供する。【解決手段】演算処理を行うＣＰＵと、解候補を格納する記憶部と、解候補の送受信を行う通信部とを備えたサーバを複数備え、サーバを相互に接続するネットワークとを備えた分散計算装置であって、前記サーバは、前記解候補を評価して評価値を決定する解候補評価部と、前記解候補と解候補の評価値から新たな解候補を生成する解候補生成部と、を有し、前記解候補評価部は、前記解候補生成部が生成した解候補を評価して前記評価値を決定し、前記複数のサーバの解候補生成部のいずれかひとつを選択して、当該選択したサーバの解候補生成部に前記解候補と評価値を送信し、前記解候補生成部は、前記解候補評価部から受信した前記解候補と評価値から新たな解候補を生成する。【選択図】図４
2011113377.tif 000002
【特許請求の範囲】
【請求項１】
演算処理を行うＣＰＵと、解候補を格納する記憶部と、解候補の送受信を行う通信部とを備えたサーバを複数備え、
前記サーバを相互に接続するネットワークと、を備えた分散計算装置であって、
前記サーバは、
前記解候補を評価して評価値を決定する解候補評価部と、
前記解候補と解候補の評価値から新たな解候補を生成する解候補生成部と、を有し、
前記解候補評価部は、
前記解候補生成部が生成した解候補を評価して前記評価値を決定し、前記複数のサーバの解候補生成部のいずれかひとつを選択して、当該選択したサーバの解候補生成部に前記解候補と評価値を送信し、
前記解候補生成部は、
前記解候補評価部から受信した前記解候補と評価値から新たな解候補を生成することを特徴とする分散計算装置。
【請求項２】
請求項１に記載の分散計算装置であって、
前記解候補評価部は、
前記複数のサーバの解候補生成部のうちのいずれかひとつをランダムに選択し、当該選択した解候補生成部を前記解候補と評価値の送信先に決定することを特徴とする分散計算装置。
【請求項３】
請求項２に記載の分散計算装置であって、
前記解候補評価部は、
前記解候補と評価値の送信先の解候補生成部を、前記解候補の評価値に基づいてランダムに決定することを特徴とする分散計算装置。
【請求項４】
請求項１に記載の分散計算装置であって、
前記解候補評価部は、
前記複数のサーバの解候補生成部のいずれかひとつを選択して、当該選択した解候補生成部へ前記解候補と評価値を間欠的に送信することを特徴とする分散計算装置。
【請求項５】
請求項４に記載の分散計算装置であって、
前記解候補評価部は、
前記解候補の評価値が所定の基準を満たしたか否かを判定することで、当該解候補を解候補生成部に送信するか否かを決定することを特徴とする分散計算装置。
【請求項６】
請求項１に記載の分散計算装置であって、
前記解候補生成部は、当該サーバの記憶部に前記生成した解候補を書き込み、
前記解候補評価部は、当該サーバの記憶部から前記解候補を読み込むことを特徴とする分散計算装置。
【請求項７】
演算処理を行うＣＰＵと、解候補を格納する記憶部と、前記解候補の送受信を行う通信部とを備えたサーバを複数備えてネットワークで相互に接続し、前記解候補を前記サーバに配分する分散計算装置の制御方法であって、
前記サーバが、前記解候補を評価して評価値を決定する解候補評価ステップと、
前記サーバが、前記解候補と解候補の評価値から新たな解候補を生成する解候補生成ステップと、を含み、
前記解候補評価ステップは、
前記生成した解候補を評価して前記評価値を決定するステップと、
前記複数のサーバのいずれかひとつを選択するステップと、
当該選択したサーバに前記解候補と評価値を送信するステップと、を含み、
前記解候補生成ステップは、
前記サーバから前記解候補と評価値を受信するステップと、
前記受信した解候補と評価値から新たな解候補を生成するステップと、を含むことを特徴とする分散計算装置の制御方法。
【請求項８】
請求項７に記載の分散計算装置の制御方法であって、
前記解候補評価ステップは、
前記複数のサーバのうちのいずれかひとつをランダムに選択し、当該サーバを前記解候補と評価値の送信先に決定することを特徴とする分散計算装置の制御方法。
【請求項９】
請求項８に記載の分散計算装置の制御方法であって、
前記解候補評価ステップは、
前記解候補と評価値の送信先のサーバを、前記解候補の評価値に基づいてランダムに決定することを特徴とする分散計算装置の制御方法。
【請求項１０】
請求項７に記載の分散計算装置の制御方法であって、
前記解候補評価ステップは、
前記複数のサーバのいずれかひとつを選択して、当該選択したサーバへ前記解候補と評価値を間欠的に送信することを特徴とする分散計算装置の制御方法。
【請求項１１】
請求項１０に記載の分散計算装置の制御方法であって、
前記解候補評価ステップは、
前記解候補の評価値が所定の基準を満たしたか否かを判定することで、当該解候補を解候補生成部に送信するか否かを決定することを特徴とする分散計算装置の制御方法。
【請求項１２】
請求項７に記載の分散計算装置の制御方法であって、
前記解候補生成ステップは、
当該サーバの記憶部に前記生成した解候補を書き込み、
前記解候補評価ステップは、
当該サーバの記憶部から前記解候補を読み込むことを特徴とする分散計算装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、分散計算装置に関し、特に、遺伝的アルゴリズムや遺伝的プログラミング等の解候補評価フェーズと解候補生成フェーズを繰り返すアルゴリズムを分散して計算する装置に関する。
【背景技術】
【０００２】
仮想化技術の成熟に伴い、クラウドコンピューティング環境が整いつつあり、これによりデータセンタにある大量の計算機リソースを動的に増減しながら利用できるようになってきている。
【０００３】
このような状況の中、クラウドコンピューティングにおける分散計算モデルとしてＭａｐＲｅｄｕｃｅ（Dean, J. and Ghemawat, S., MapReduce: simplified data processing on large clusters, Communications of the ACM, Vol. 51 (2008), 107-113.）に注目が集まっており、クラウドコンピューティングにおけるデファクトになりつつある。ＭａｐＲｅｄｕｃｅの規格に従ってプログラムを書くことで、専用の分散計算システムを構築することなく、Ｈａｄｏｏｐ等の汎用ＭａｐＲｅｄｕｃｅ分散計算システム上で分散計算を実行することが可能となる。
【０００４】
その一方で、企業や自治体は業務ログやセンサデータなどのデータを保持しており、機械学習等の既存技術により、これらのデータから予測や異常検知など行い、業務に活用したいというニーズがある。機械学習は計算を大規模化することにより、予測や異常検知の精度を向上させることができる。そのため、クラウドコンピューティング上で大規模に機械学習を実行することが望まれている。
【０００５】
機械学習アルゴリズムとしては、遺伝的アルゴリズムや遺伝的プログラミング等が知られている。例えば、遺伝的プログラミングは、検索結果のアイテムをランキングするのに用いられる（Jen Y. Yeh, Jung Y. Lin, Hao R. Ke, Wei P. Yang: Learning to Rank for Information Retrieval Using Genetic Programming in SIGIR 2007 workshop）。検索結果のランキングの例では、最適解とは、アイテムの特徴量からそのアイテムの順位を推定する最適なランキング関数のことを意味する。遺伝的プログラミングでは、計算を大規模化することで、ランキングの精度を向上させることができる。
【０００６】
以下、関連する公知の技術に関して述べる。
【０００７】
特許文献１には、遺伝的アルゴリズムを並列実行させたとき、サーバごとに独立に遺伝的アルゴリズムを実行し、定期的にサーバ間で解候補の交換を行うことで、探索を効率化する技術が示されている。本方法は「島モデル」の呼び名で広く知られている。
【０００８】
特許文献２には、遺伝的アルゴリズムを並列実行させたとき、各サーバで処理する解候補の数を制御することにより、サーバ間での解候補生成処理時間のばらつきによって生じる待ち時間や通信処理時間を減らす技術が示されている。
【０００９】
特許文献３には、遺伝的アルゴリズムを並列実行させたとき、サーバごとに独立に遺伝的アルゴリズムを実行し、一度評価した解候補をデータベースに記録しておき、再度評価を行わないことで、評価フェーズの時間を短縮する技術が示されている。
【００１０】
特許文献４には、 遺伝的アルゴリズムを並列実行させたとき、サーバごとに独立に遺伝的アルゴリズムを実行し、局所解に陥りそうな探索の戦略を変更することにより、局所解におちいることなく探索を継続する技術が示されている。
【００１１】
特許文献５には、遺伝的アルゴリズムを並列実行させたとき、サーバごとに独立に遺伝的アルゴリズムを実行し、局所解に陥った探索プロセスを打ち切ることで、探索を効率化する技術が示されている。
【００１２】
特許文献６には、バッファを用いて、ストリーム処理ベースで遺伝的アルゴリズムを並列実行する技術が示されている。
【００１３】
ＭａｐＲｅｄｕｃｅモデルで遺伝的アルゴリズムを実行する手法としてＭＲＰＧＡ（Chao Jin, Christian Vecchiola and Rajkumar Buyya: MRPGA: An Extension of MapReduce for Parallelizing Genetic Algorithms, In 4th IEEE International Conference on e-Science, 2008）が知られている。ＭＲＰＧＡでは、解候補評価フェーズのみ並列実行し、解候補生成フェーズは単一プロセスで実行する。
【００１４】
またオープンソースソフトウェアのＭａｈｏｕｔ（http://lucene.apache.org/mahout/）も解候補評価フェーズのみＭａｐｒｅｄｕｃｅモデルで並列実行する技術が使われている。
【先行技術文献】
【特許文献】
【００１５】
【特許文献１】特開２００１−２８３１８３号公報
【特許文献２】特開２００４−２５８８４２号公報
【特許文献３】特開２００２−１４９６１８号公報
【特許文献４】特開２００２−３５８２０１号公報
【特許文献５】特開平１０−１３４０１９号公報
【特許文献６】特開平０６−３１４２７０号公報
【発明の概要】
【発明が解決しようとする課題】
【００１６】
しかしながら、前述した従来技術のうち、特許文献１、特許文献２、特許文献３、特許文献４、特許文献５、特許文献６に示された技術は、ＭａｐＲｅｄｕｃｅ計算モデルに則っておらず、専用の分散計算システムが必要である。クラウドコンピューティング環境においては、必要に応じて仮想マシンを一時的に確保して計算を実行し、計算が終了したら仮想マシンを解放するという方法がとられる。そのため、専用の分散計算システム上でしか実行できない方式では、クラウドコンピューティング上で実行するのは不可能である。一方、ＭａｐＲｅｄｕｃｅ計算モデルに則った方式であれば、ＭａｐＲｅｄｕｃｅ計算モデルがクラウドコンピューティング上のデファクトになりつつあるため、クラウドコンピューティング上でも専用の分散計算システムを構築することなく実行することが可能である。
【００１７】
また前述した従来技術のうち、特許文献１、特許文献２、特許文献３、特許文献４、特許文献５に示された技術は、サーバごとにほぼ独立して遺伝的アルゴリズムを実行するため、アルゴリズムの精度が劣化する。一般的に、遺伝的アルゴリズムをサーバごとに独立に実行する場合には、高頻度で解候補をサーバ間で交換し、解候補を混ぜ合わせることによりアルゴリズムの精度が向上することが知られている（Kenneth Holladay: Characterizing the Genetic Programming Environment for FIFTH (GPE5) on a High Performance Computing Cluster, Genetic and Evolutionary Computation Conference, 2009など）。しかし解候補の交換の頻度を高くすると、サーバ間の通信負荷が大きくなり、アルゴリズムの実行速度が低下するという問題があった。
【００１８】
また前述した従来技術のうち、ＭＲＰＧＡ、Ｍａｈｏｕｔの方式は、解候補生成フェーズが並列化されておらず、ＭＲＰＧＡの方式が提案されている論文においても、解候補生成フェーズに時間がかかっていることが示されている。また計算が大規模化したときには、解候補生成フェーズが１つのサーバで実行されるため、解候補生成フェーズを実行するサーバと解候補評価フェーズを実行するサーバ間で解候補を送受信するときに、解候補生成フェーズを実行するサーバの通信負荷が大きくなり、アルゴリズムの実行速度が低下する、という問題があった。
【００１９】
本発明は、上記問題点に鑑みてなされたものであって、本発明の目的は、遺伝的アルゴリズムや遺伝的プログラミング等の解候補評価フェーズと解候補生成フェーズを繰り返すアルゴリズムを分散実行する装置において、分散計算の効率が最大化できるようアルゴリズムのロジックを適切に分散し、通信負荷が大きくならないよう解候補を適切にプロセス間で通信する方法を提供することにある。また本発明の別の目的は、遺伝的アルゴリズムや遺伝的プログラミング等の解候補評価フェーズと解候補生成フェーズを繰り返すアルゴリズムを分散実行する装置において、クラウドコンピューティング上でも実行可能なようＭａｐＲｅｄｕｃｅ計算モデルに則った分散計算方式を提供することにある。
【課題を解決するための手段】
【００２０】
本発明は、演算処理を行うＣＰＵと、解候補を格納する記憶部と、解候補の送受信を行う通信部とを備えたサーバを複数備え、前記サーバを相互に接続するネットワークと、を備えた分散計算装置であって、前記サーバは、前記解候補を評価して評価値を決定する解候補評価部と、前記解候補と解候補の評価値から新たな解候補を生成する解候補生成部と、を有し、前記解候補評価部は、前記解候補生成部が生成した解候補を評価して前記評価値を決定し、前記複数のサーバの解候補生成部のいずれかひとつを選択して、当該選択したサーバの解候補生成部に前記解候補と評価値を送信し、前記解候補生成部は、前記解候補評価部から受信した前記解候補と評価値から新たな解候補を生成する。
【発明の効果】
【００２１】
本発明によれば、解候補評価部と解候補生成部が異なる処理に分離されており、解候補の評価が終わった解候補から逐次、解候補生成部に送られるため、データ送信の待ち時間が発生せず、解候補評価部が終了した後には即座に解候補生成部を開始することができる。
【００２２】
また、本発明によれば、解候補の送り先となる解候補生成部を決定することで、例えば、ランダムに送信先を決める等により、解候補を適切な水準で混ぜ合わせることができる。これによりアルゴリズムの精度の劣化を最小限に留めることができる。
【００２３】
また、本発明によれば、解候補の評価値に基づいて、解候補を解候補生成部に送信するか否かを決定する手段を備えるため、例えば、評価値が非常に低い解候補の送信をやめる等により、データ送信量を減らし、高速にアルゴリズムを実行できる。
【００２４】
また、本発明によれば、解候補評価部のみならず、解候補生成部も複数のサーバので分散して実行されるため、解候補生成部は従来技術であるＭＲＰＧＡやＭａｈｏｕｔに比べ、高速にアルゴリズムを実行できる。
【００２５】
また、本発明によれば、解候補生成部では、処理が実行されているサーバの記憶部（ローカルの補助記憶装置等、短時間でアクセスできる記憶部に、生成した解候補を格納し、一方、解候補評価部では、同様に短時間でアクセスできる記憶部に格納されている解候補に対して評価を行うため、解候補生成部から解候補評価部に移る際のデータ送信量を少なくでき、高速にアルゴリズムを実行できる。
【００２６】
また、本発明によれば、本発明の分散計算方式はＭａｐＲｅｄｕｃｅモデルに則っているため、クラウドコンピューティング環境上でも専用の分散計算システムを構築することなく実行することが可能である。
【図面の簡単な説明】
【００２７】
【図１】本発明の実施形態を示し、コンピュータの一構成を示すブロック図である。
【図２】本発明の実施形態を示し、分散計算装置の一構成を示すブロック図である。
【図３】本発明の実施形態を示し、分散計算装置の処理対象であるアルゴリズムのフローチャート図である。
【図４】本発明の実施形態を示し、分散計算装置で分散計算するときの、アルゴリズムのロジックの分割と、データの流れを示したブロック図である。
【図５】本発明の実施形態を示し、公知例に係わる、島モデルによる分散計算のブロック図である。
【図６】本発明の実施形態を示し、解候補評価フェーズプロセスのフローチャートである。
【図７】本発明の実施形態を示し、解候補生成フェーズプロセスのフローチャートである。
【発明を実施するための形態】
【００２８】
以下、本発明の一実施形態を添付図面に基づいて説明する。
【００２９】
［実施形態１］
以下、第１の実施例の分散計算装置について説明する。
【００３０】
本実施形態の分散計算装置で使用するサーバは、汎用のコンピュータであり、例えば図１に示す構成をもつものである。
【００３１】
図１に示す１００はコンピュータを示しており、入力部であるキーボードやマウス等の入力デバイス１０１、インターネットなどのネットワークに接続するためのインタフェース部であるネットワークデバイス１０２、処理部である中央処理部（Central Processing Unit：ＣＰＵ）１０３、メモリなどで構成された記憶部である主記憶部１０４と、ディスク装置等で構成されてプログラムやデータを格納する補助記憶部１０５等が内部のバス１０６に接続される構成を持つ。その他必要に応じて、出力部となる表示デバイスなどが追加される。ＣＰＵ１０３は、記憶部に記憶或いはダウンロードされるプログラムを実行することにより、以下詳述するような各種のプロセスを実行する。なお、プロセスはプログラムとして記憶媒体である補助記憶部１０５に格納される。
【００３２】
本実施形態の分散計算装置は、図１に示すコンピュータ１００を複数台並べ、ネットワークデバイス１０２により相互に接続したサーバ群、例えば図２に示す構成をもつものにより実施される。
【００３３】
図２に示す１００−１は１番目のサーバを模式的に表したものであり、１００−２は２番目のサーバを模式的に表したものであり、１００−ＫはＫ番目のサーバを模式的に表したものである。２０３はネットワークを表したものである。これら、サーバ１００−１〜１００−Ｋによりクラウドコンピューティングを行うことができる。
【００３４】
図３は、本実施形態の分散計算装置が処理するアルゴリズムのフローチャートである。本実施形態の分散計算装置が処理するアルゴリズムの概要は、まず、解候補生成フェーズにて後述するように複数の新しい解候補を生成する（３００）。
【００３５】
次に、解候補評価フェーズにて、解候補生成フェーズで生成された複数の解候補の良さをそれぞれ評価する（３０１）。続いて、終了条件を満たしているかどうかを評価し、終了条件を満たしていればアルゴリズムを終了し、満たしていなければ解候補生成フェーズ３００に戻る（３０２）。
【００３６】
即ち、解候補生成フェーズと解候補評価フェーズを繰り返しながら最適解を探す。なお、解候補評価フェーズでは複数の解候補の良さの判定は、例えば解候補の評価値と予め設定した基準値とを比較することで実現することができる。
【００３７】
図３のフローチャートのアルゴリズムの例として、遺伝的アルゴリズム、遺伝的プログラミング、タブーサーチ、ランダム探索、山登り探索、シミュレーティッドアニーリング法などがある。この中で、遺伝的プログラミングは扱うデータ量が大きく、また解候補を混ぜ合わせることによりアルゴリズムの精度が向上するため、本発明の実施形態は、遺伝的プログラミングにおいて最も効果がある。従って以下では、分散処理する具体的なアルゴリズムとして遺伝的プログラミングを想定して説明をする。しかしながら、本発明は遺伝的プログラミング以外にも、図３の形式のアルゴリズムに広く適用可能であることは明白である。
【００３８】
例えば、遺伝的プログラミングは、検索結果のアイテムをランキングするのに用いられる（Jen Y. Yeh, Jung Y. Lin, Hao R. Ke, Wei P. Yang: Learning to Rank for Information Retrieval Using Genetic Programming in SIGIR 2007 workshop）。この例で最適解とは、アイテムの特徴量からそのアイテムの順位を推定する最適なランキング関数のことを意味する。
【００３９】
図３のフローチャートにおいて、２周目以降の解候補生成フェーズ（３００）では、前回生成した解候補とその候補の評価値を参照情報として、複数の新しい解を生成する。遺伝的プログラミングの例では、直前の解候補評価フェーズで評価値が高かった解候補を組み合わせて新しい解候補を生成する。遺伝的プログラミングでは、１周目（初回の処理）の解候補生成フェーズでは、補助記憶部１０５に予め格納された解候補のデータを用いてランダムに解候補を生成する。
【００４０】
図４は、図３に示すアルゴリズムを本実施形態の分散計算装置で分散計算するときの、アルゴリズムのロジックの分割と、データの流れを示した図である。分散計算装置を構成するサーバ１００−１〜１００−Ｋでは、それぞれ遺伝的プログラミングが実行される。遺伝的プログラミングは、２つのプロセスに分割されて実行されており、解候補評価フェーズプロセス４００と、解候補生成フェーズプロセス４１０に分割される。なお、図４では、各サーバ１００−１〜１００−Ｋで実行される遺伝的プログラミングに１〜Ｋの添え字を付した。以下では解候補評価フェーズプロセスの総称を４００とし、解候補生成フェーズプロセスの総称を４１０とする。
【００４１】
本発明の遺伝的プログラミングでは、解候補生成フェーズプロセス４１０は生成した解候補をローカルの補助記憶部１０５に格納し、解候補評価フェーズプロセス４００は、ローカルの補助記憶部１０５から読み込んだ解候補を評価する。そして、解候補評価フェーズプロセス４００は、ランダムにサーバ１００−１〜１００−Ｋの解候補生成フェーズプロセス４１０−１〜４１０Ｎを選択し、評価した解候補を選択した解候補生成フェーズプロセス４１０に送信する。
【００４２】
解候補生成フェーズプロセス４１０は、解候補評価フェーズプロセス４００−１〜４００−Ｋから受信した解候補から新たな解候補を生成する。
【００４３】
図４において、サーバ１００−１では、解候補評価フェーズプロセス４００−１と、解候補生成フェーズプロセス４１０−１が独立して実行され、サーバ１００−Ｋでは解候補評価フェーズプロセス４００−Ｋと、解候補生成フェーズプロセス４１０−Ｋが独立して実行される。
【００４４】
サーバ１００−１の４００−１は１番目の解候補評価フェーズプロセスであり、図４の例では、解候補１、解候補２、．．．を評価し、各解候補に評価値を付与する。同様に、サーバ１００−２の４００−２は２番目の解候補評価フェーズプロセスであり、図４の例では、解候補１０１、解候補１０２、．．．を評価し、各解候補に評価値を付与する。同様に、サーバ１００−Ｋの４００−ＫはＫ番目の解候補評価フェーズプロセスであり、図４の例では、解候補２０１、解候補２０２、．．．を評価し、各解候補に評価値を付与する。解候補評価フェーズの詳細については、図６を用いて後述する。
【００４５】
サーバ１００−１の４１０−１は１番目の解候補生成フェーズプロセスであり、図４の例では、解候補評価フェーズプロセス４００−２から送られてきた解候補１０２と、解候補評価フェーズプロセス４００−Ｋから送られてきた解候補２０１などから、新しい解候補である新解候補１、新解候補２、．．．を生成する。
【００４６】
同様に、サーバ１００−２の４１０−２は２番目の解候補生成フェーズプロセスであり、図４の例では、解候補評価フェーズプロセス４００−１から送られてきた解候補１と、解候補評価フェーズプロセス４００−２から送られてきた解候補１０３などから、新しい解候補である新解候補１０１、新解候補１０２、．．．を生成する。
【００４７】
同様に、サーバ１００−Ｋの４１０−ＫはＫ番目の解候補生成フェーズプロセスであり、図４の例では、解候補評価フェーズプロセス４００−１から送られてきた解候補２と、解候補評価フェーズプロセス４００−２から送られてきた解候補１０１などから、新しい解候補である新解候補２０１、新解候補２０２、．．．を生成する。解候補生成フェーズの詳細については、図７を用いて後述する。なお、上記図４で示した解候補の移動は１例であり、この限りではない。
【００４８】
解候補評価フェーズプロセス４００の終了と、解候補生成フェーズプロセス４１０の開始の間には、解候補が異なるプロセス間で混ざり合うことになる。これにより遺伝的プログラミング等のアルゴリズムの精度の劣化を最小限に留めることができる。
【００４９】
一方、解候補生成フェーズプロセス４１０の終了と、解候補評価フェーズプロセス４００の開始の間では、同一のサーバ１００のローカルの補助記憶部１０５から解候補を読み込むため、解候補は混ざり合わず、解候補生成フェーズプロセス４１０で生成された新しい解候補群が、そのまま同一のサーバ１００で実行される解候補評価フェーズプロセス４００に渡される。これによりサーバ１００−１〜１００−Ｋ間で無駄なデータ通信が発生することがなく、高速にアルゴリズムを実行できる。特に遺伝的プログラミングでは、生成される解候補のデータ量が数百万などの大きな値となるため、サーバ１００−１〜１００−Ｋ間のデータ転送量を低減し、ネットワーク２０３が分散処理のボトルネックとなるのを防いで、分散計算機装置の処理速度を向上させるのに有効である。
【００５０】
上記解候補評価フェーズプロセス４００と解候補生成フェーズプロセス４１０のプロセス間の通信に関しては、公知の方法を用いて行う。例えば、ＳＳＨを用いたファイルベースの通信や、ＭＰＩ（Ｍｅｓｓａｇｅ  Ｐａｓｓｉｎｇ  Ｐｒｏｃｅｓｓｉｎｇ）を用いた通信などが挙げられる。
【００５１】
図５は、遺伝的アルゴリズムを前記従来例により分散実行する場合に、標準的に用いられる島モデル方式を表したブロック図である。５００−１は１番目のサーバであり、５００−２は２番目のサーバであり、５００−ＫはＫ番目のサーバである。それぞれのサーバ５００−１〜５００−Ｋでは独立して遺伝的アルゴリズムが実行され、定期的にサーバ間で解候補が交換される。この例では、解候補評価フェーズと解候補生成フェーズは同一のプロセスで実行され、各サーバ５００−１〜５００−Ｋ間での解候補の大規模なシャッフル（移動）が効率的に実行できるようには設計されておらず、解候補の交換頻度を上げるとアルゴリズムの実行速度が低下する。またＭａｐＲｅｄｕｃｅモデルに適合しない。
【００５２】
図６は、図４に示した解候補評価フェーズプロセス４００のフローチャートである。なお、解候補評価フェーズプロセス４００の開始条件としては、例えば、後述する解候補生成フェーズプロセス４１０が終了した時点や、未処理の解候補の数が所定値以上となったときなど、所定の条件が成立した場合である。
【００５３】
解候補評価フェーズプロセス４００は、まずローカルの補助記憶部１０５から解候補を１つ読み込む（６００）。なお、ファイル読み込み用のバッファを主記憶部１０４に備えて、効率的に解候補をローカルの補助記憶部１０５から読み込めるようにしてもよい。また本実施形態ではローカルの補助記憶部１０５のみに解候補が格納されていることを想定しているが、当該プロセスから、高速に読み出しができる記憶装置であればローカルディスクでなくてもよい。
【００５４】
次に、解候補評価フェーズプロセス４００は、解候補を評価し、評価値を付与する（６０１）。この処理は、例えば検索結果のランキング関数を学習する場合には、解候補はランキング関数を表し、評価値は正解のランキングに対する正解率となる。
【００５５】
続いて解候補評価フェーズプロセス４００は、ステップ６０１で得た評価値が基準以上か否かを判定する（６０２）。基準以上であれば、ステップ６０４へ進み、基準未満であればステップ６０３へ進む。例えば、評価値が０以上１未満の値をとる場合、閾値を０．７として、０．７以上で基準クリアとすることができる。
【００５６】
ステップ６０２の分岐において、評価値が基準以下の場合には、さらにローカルの補助記憶部１０５に未評価の解候補が残っているか否かを判定して分岐する（６０３）。ローカルの補助記憶部１０５に未評価の解候補が残っている場合には、ステップ６００に戻りローカルの補助記憶部１０５からさらに解候補を１つ読み込み、処理を継続する。ローカルの補助記憶部１０５に未評価の解候補が残っていない場合には、終了条件を満足したのでそのまま処理を終了する。
【００５７】
ステップ６０２の分岐において、評価値が基準以上の場合には、ステップ６０４で解候補の送り先となる解候補生成フェーズプロセスを決定する。解候補の送り先となる解候補生成フェーズプロセス４１０を決定する例として、以下の式を使うことが挙げられる。
（解候補生成フェーズプロセスの番号）＝ＲＡＮＤ（１、Ｋ）
ここでＫは解候補生成フェーズプロセスの数であり、ＲＡＮＤ（１、Ｋ）は１からＫまでのランダムな数を返す関数である。上式は、送り先となる解候補生成フェーズプロセス４１０−１〜４１０−Ｋを、解候補ごとにランダムに選択することを意味している。また解候補の評価値に基づいて、解候補と評価値の送り先となる解候補生成フェーズプロセス４１０−１〜４１０−Ｋを決定する他の例として、以下の式を使うことが挙げられる。
（解候補生成フェーズプロセスの番号）＝１＋ＦＬＯＯＲ（（評価値）×Ｋ）
ここでＦＬＯＯＲは少数点以下の値を切り捨てて整数を返す関数である。解候補の評価値が０以上１未満の値をとる場合、上式は、解候補の送り先となる解候補生成フェーズプロセスを、解候補の評価値の少数点第１位の位の値に従って決定することを意味している。この例では、評価値の良い解候補が集まるサーバと、評価値が悪い解候補が集まるサーバが異なることになるので、解候補の演算精度が向上するという効果を得ることができる。
【００５８】
続いて、解候補評価フェーズプロセス４００は、ステップ６０４で決定した解候補生成フェーズプロセスに解候補と評価値を送信する（６０５）。具体的には、送り先となる解候補生成フェーズプロセス４１０が実行されるサーバ１００のローカルの補助記憶部１０５に解候補とその解候補の評価値を書き込む。実際には、サーバ１００は、データ送信および書き込み用のバッファを主記憶部１０４に備えており、効率的に解候補を送信および書き込みできるようにしている。また本実施形態ではローカルの補助記憶部１０５のみに解候補が格納することを想定しているが、送り先となる解候補生成フェーズプロセス４１０が高速に読み出しできる記憶装置であればローカルの補助記憶部１０５でなくてもよい。
【００５９】
解候補評価フェーズプロセス４００による解候補の送信は、解候補ごとに逐次実行される。そのため、解候補評価フェーズプロセス４００が終了した時点では、既に送られるべき解候補はすべて解候補生成フェーズプロセス４１０が補助記憶部１０５等から高速に読み出せるようになっており、解候補生成フェーズプロセス４１０の開始の待ち時間を最小にできる。
【００６０】
解候補の送信が終了すると、ステップ６０３の分岐に移る。
【００６１】
ステップ６０２の分岐において、解候補評価フェーズプロセス４００は評価値が基準以上の解候補のみ、複数の解候補生成フェーズプロセス４１０うちのひとつに送信することができる。そのため、アルゴリズムの精度に対する影響が小さい解候補を送ることがなく、データ送信量を抑えることができる。これにより、アルゴリズムの精度に対する影響が大きい解候補（評価値が基準値以上の解候補）のみを間欠的に送ることにより、遺伝的プログラミングにおいて、サーバ１００−１〜１００−Ｋ間のデータ転送量を抑制しながらも演算の精度を向上させることが可能となる。
【００６２】
図７は、解候補生成フェーズプロセス４１０のフローチャートである。解候補生成フェーズプロセス４１０の開始条件は、例えば、解候補評価フェーズプロセス４００が終了した時点や解候補評価フェーズプロセス４００から解候補を受信したとき、間欠的に受信した解候補の数が所定値以上になったとき等、所定の条件が成立した場合である。
【００６３】
解候補生成フェーズプロセス４１０は、まず、ローカルの補助記憶部１０５から解候補とその評価値をすべて読み込む（７００）。本実施形態ではローカルの補助記憶部１０５のみに解候補が格納されていることを想定しているが、当該プロセスから高速に読み出しができる記憶装置であればローカルの補助記憶部１０５でなくてもよい。
【００６４】
次に解候補生成フェーズプロセス４１０は、Ｎ個の新しい解候補を生成する（７０１）。ここでＮは、１つの解候補生成フェーズプロセス４１０が生成する解候補の数を表す。全体でＫ個の解候補生成フェーズプロセス４１０がある場合には、分散計算装置全体で生成される解候補数はＫ×Ｎである。解候補の生成は、本発明の分散計算装置が処理するアルゴリズムの公知の方法に従って行う。例えば遺伝的プログラミングの場合は、評価値が高い解候補同士を組み合わせて、新しい解候補を生成する。遺伝的プログラミングにおける解候補の生成法に関しては、例えば、「Koza, J. R. (1992), Genetic Programming: On the Programming of Computers by Means of Natural Selection, MIT Press」に詳細が記述されている。
【００６５】
続いて解候補生成フェーズプロセス４１０は、ステップ７０１で生成した新しい解候補をローカルの補助記憶部１０５に書き込む（７０２）。本実施形態ではローカルの補助記憶部１０５のみに解候補を格納することを想定しているが、当該プロセスが高速に書き込みできる記憶装置であればローカルの補助記憶部１０５でなくてもよい。
【００６６】
以上の構成により、解候補評価フェーズプロセス４００は同一のサーバ１００で実行される解候補生成フェーズプロセス４１０が生成した新たな解候補をローカルの補助記憶部１０５から読み込むことで、データ送信の待ち時間を最小化でき、さらに、解候補評価フェーズプロセス４００は評価した解候補をランダムに選択した解候補生成フェーズプロセス４１０へ逐次送信することでアルゴリズムの精度の劣化を最小限に留めることができ、データ送信量を軽減でき、ＭａｐＲｅｄｕｃｅモデルに則った分散計算装置を提供することが可能となる。
【００６７】
なお、上記実施形態においては、ひとつのサーバ１００でひとつの解候補評価フェーズプロセス４００と解候補生成フェーズプロセス４１０を実行する例を示したが、ひとつのサーバ１００で複数の解候補評価フェーズプロセス４００と解候補生成フェーズプロセス４１０を実行し、各プロセスが扱う解候補の量を低減しても良い。すなわち、サーバ１００の数よりも遺伝的プログラミング（プロセス）数を大きく設定し、例えば、サーバーの数＝１０、解候補１００万、遺伝的プログラミング（プロセス）の数＝１００とする。この場合、遺伝的プログラミング（プロセス）の数＝１０に較べて各プロセスの処理時間が短縮され、また、処理時間のバラツキも抑制される。ひとつのサーバ１００上で複数のプロセスを実行する場合には、マルチコアＣＰＵの１コア上で複数のプロセスを実行してもよいし、ひとつのコアに１つのプロセスを割り当てることもできる。
【００６８】
また、上記実施形態では、解候補評価フェーズプロセス４００と解候補生成フェーズプロセス４１０を交互に実行する例を示したが、解候補評価フェーズプロセス４００と解候補生成フェーズプロセス４１０を並列的に実行しても良い。この場合、２つのプロセスの終了条件（３０２）としては、例えば、実行開始からの経過時間が所定値に達したとき等を終了条件の成立とすればよい。
【００６９】
また、上記実施形態では、解候補評価フェーズと解候補生成フェーズをプロセスとしたが、サーバ１００で実行可能な処理の単位であれば良く、例えば、スレッドなどとしてもよい。
【産業上の利用可能性】
【００７０】
以上詳述した本発明は、分散計算装置に関し、特に、遺伝的アルゴリズムや遺伝的プログラミング等の解候補評価フェーズと解候補生成フェーズを繰り返して最適解を探すアルゴリズムをクラウドコンピューティング上で分散実行する分散計算技術に適用できる。
【符号の説明】
【００７１】
１００  サーバ
１０１  入力デバイス
１０２  ネットワークデバイス
１０３  ＣＰＵ
１０４  主記憶部
１０５  補助記憶部
１０６  バス
２０３  ネットワークケーブル
４００  解候補評価フェーズプロセス
４１０  解候補生成フェーズプロセス
【図１】
2011113377.tif 000003
【図２】
2011113377.tif 000004
【図３】
2011113377.tif 000005
【図４】
2011113377.tif 000006
【図５】
2011113377.tif 000007
【図６】
2011113377.tif 000008
【図７】
2011113377.tif 000009