(57)【要約】  分散処理管理装置１０は、複数の実行サーバ２０に通信可能に接続されている。分散処理管理装置１０は、実行サーバ２０毎に、実行サーバ２０で実行される機械学習エンジンが利用可能なデータ形式を特定し、実行サーバ２０が保持するデータのデータ形式を、特定したデータ形式に変換するよう指示を与える、変換指示部１１を備えている。
2019082982.tif 000002
【特許請求の範囲】
【請求項１】
分散処理を実行する複数の実行サーバに通信可能に接続された分散処理管理装置であって、
前記複数の実行サーバそれぞれ毎に、当該実行サーバで実行される機械学習エンジンが利用可能なデータ形式を特定し、当該実行サーバが保持するデータのデータ形式を、特定した前記データ形式に変換するよう指示を与える、変換指示部を備えている、
ことを特徴とする分散処理管理装置。
【請求項２】
前記複数の実行サーバは、第１のデータ形式を利用可能な第１の機械学習エンジンを実行する実行サーバ群と、前記第１のデータ形式とは異なる第２のデータ形式を利用可能な第２の機械学習エンジンを実行する実行サーバ群とを含み、
前記第１の機械学習エンジンと前記第２の機械学習エンジンとは、互いに異なる機械学習ライブラリに属する、
請求項１に記載の分散処理管理装置。
【請求項３】
前記複数の実行サーバそれぞれ毎に、当該実行サーバが保持するデータのデータ形式を、予め定められた共通形式に変換するよう指示を与える、プレ変換指示部を更に備え、
前記変換指示部は、前記複数の実行サーバそれぞれ毎に、前記共通形式に変換されているデータのデータ形式を、特定した前記データ形式に変換するよう指示を与える、
請求項１または２に記載の分散処理管理装置。
【請求項４】
前記共通形式が、前記複数の実行サーバそれぞれで利用される機械学習エンジンにより用いられる、特徴量とラベルのみを含む、データ形式である、
請求項３に記載の分散処理管理装置。
【請求項５】
前記複数の実行サーバによって実行される分散処理のタスク定義を受け付ける、タスク受付部を更に備えている、
請求項３または４に記載の分散処理管理装置。
【請求項６】
前記複数の実行サーバそれぞれが、前記分散処理に用いるデータを予め保持している場合において、前記タスク受付部によって受け付けられた前記タスク定義に基づいて、前記複数の実行サーバそれぞれが保持すべきデータを決定し、前記複数の実行サーバそれぞれに対して、決定に応じたデータを保持するように、データの再配置を指示する、データ再配置指示部を、更に備え、
前記プレ変換指示部は、前記複数の実行サーバそれぞれ毎に、再配置後のデータのデータ形式を、前記共通形式に変換させる、
請求項５に記載の分散処理管理装置。
【請求項７】
前記複数の実行サーバそれぞれ毎に、当該実行サーバで実行される機械学習エンジンを指定し、指定した機械学習エンジンを用いて学習モデルを生成するように指示を与える、学習モデル生成指示部を、更に備え、
前記変換指示部は、前記複数の実行サーバそれぞれ毎に、当該実行サーバが保持するデータのデータ形式を、指定された機械学習エンジンで利用可能なデータ形式に変換するよう指示を与える、
請求項１〜６のいずれかに記載の分散処理管理装置。
【請求項８】
前記複数の実行サーバそれぞれにおいて、利用される前記機械学習エンジンが異なっており、更に、前記機械学習エンジン毎に利用可能なデータ形式も異なっている、
請求項１〜７のいずれかに記載の分散処理管理装置。
【請求項９】
複数の実行サーバを用いて分散処理を行うための方法であって、
（ａ）前記複数の実行サーバそれぞれ毎に、当該実行サーバで実行される機械学習エンジンが利用可能なデータ形式を特定し、当該実行サーバが保持するデータのデータ形式を、特定した前記データ形式に変換するよう指示を与える、ステップを有する、
ことを特徴とする分散処理方法。
【請求項１０】
前記複数の実行サーバは、第１のデータ形式を利用可能な第１の機械学習エンジンを実行する実行サーバ群と、前記第１のデータ形式とは異なる第２のデータ形式を利用可能な第２の機械学習エンジンを実行する実行サーバ群とを含み、
前記第１の機械学習エンジンと前記第２の機械学習エンジンとは、互いに異なる機械学習ライブラリに属する、
請求項９に記載の分散処理方法。
【請求項１１】
（ｂ）前記複数の実行サーバそれぞれ毎に、当該実行サーバが保持するデータのデータ形式を、予め定められた共通形式に変換するよう指示を与える、ステップを更に有し、
前記（ａ）のステップにおいて、前記複数の実行サーバそれぞれ毎に、前記共通形式に変換されているデータのデータ形式を、特定した前記データ形式に変換するよう指示を与える、
請求項９または１０に記載の分散処理方法。
【請求項１２】
前記共通形式が、前記複数の実行サーバそれぞれで利用される機械学習エンジンにより用いられる、特徴量とラベルのみを含む、データ形式である、
請求項９に記載の分散処理方法。
【請求項１３】
（ｃ）前記複数の実行サーバによって実行される分散処理のタスク定義を受け付ける、ステップを更に有する、
請求項１１または１２に記載の分散処理方法。
【請求項１４】
（ｄ）前記複数の実行サーバそれぞれが、前記分散処理に用いるデータを予め保持している場合において、前記（ｃ）のステップで受け付けられた前記タスク定義に基づいて、前記複数の実行サーバそれぞれが保持すべきデータを決定し、前記複数の実行サーバそれぞれに対して、決定に応じたデータを保持するように、データの再配置を指示する、ステップを、更に有し、
前記（ｂ）のステップにおいて、前記複数の実行サーバそれぞれ毎に、再配置後のデータのデータ形式を、前記共通形式に変換させる、
請求項１３に記載の分散処理方法。
【請求項１５】
（ｅ）前記複数の実行サーバそれぞれ毎に、当該実行サーバで実行される機械学習エンジンを指定し、指定した機械学習エンジンを用いて学習モデルを生成するように指示を与える、ステップを、更に有し、
前記（ａ）のステップにおいて、前記複数の実行サーバそれぞれ毎に、当該実行サーバが保持するデータのデータ形式を、指定された機械学習エンジンで利用可能なデータ形式に変換するよう指示を与える、
請求項９〜１４のいずれかに記載の分散処理方法。
【請求項１６】
前記複数の実行サーバそれぞれにおいて、利用される前記機械学習エンジンが異なっており、更に、前記機械学習エンジン毎に利用可能なデータ形式も異なっている、
請求項９〜１５のいずれかに記載の分散処理方法。
【請求項１７】
コンピュータによって複数の実行サーバを用いた分散処理を行うためのプログラムを記録しているコンピュータ読み取り可能な記録媒体であって、
前記コンピュータに、
（ａ）前記複数の実行サーバそれぞれ毎に、当該実行サーバで実行される機械学習エンジンが利用可能なデータ形式を特定し、当該実行サーバが保持するデータのデータ形式を、特定した前記データ形式に変換するよう指示を与える、ステップを実行させる、命令を含む、プログラムを記録しているコンピュータ読み取り可能な記録媒体。
【請求項１８】
前記複数の実行サーバは、第１のデータ形式を利用可能な第１の機械学習エンジンを実行する実行サーバ群と、前記第１のデータ形式とは異なる第２のデータ形式を利用可能な第２の機械学習エンジンを実行する実行サーバ群とを含み、
前記第１の機械学習エンジンと前記第２の機械学習エンジンとは、互いに異なる機械学習ライブラリに属する、
請求項１７に記載のコンピュータ読み取り可能な記録媒体。
【請求項１９】
（ｂ）前記複数の実行サーバそれぞれ毎に、当該実行サーバが保持するデータのデータ形式を、予め定められた共通形式に変換するよう指示を与える、ステップを更に有し、
前記（ａ）のステップにおいて、前記複数の実行サーバそれぞれ毎に、前記共通形式に変換されているデータのデータ形式を、特定した前記データ形式に変換するよう指示を与える、
請求項１７又は１８に記載のコンピュータ読み取り可能な記録媒体。
【請求項２０】
前記共通形式が、前記複数の実行サーバそれぞれで利用される機械学習エンジンにより用いられる、特徴量とラベルのみを含む、データ形式である、
請求項１９に記載のコンピュータ読み取り可能な記録媒体。
【請求項２１】
前記プログラムが、前記コンピュータに、更に、
（ｃ）前記複数の実行サーバによって実行される分散処理のタスク定義を受け付ける、ステップを実行させる命令を含む、
請求項１９または２０に記載のコンピュータ読み取り可能な記録媒体。
【請求項２２】
前記プログラムが、前記コンピュータに、更に、
（ｄ）前記複数の実行サーバそれぞれが、前記分散処理に用いるデータを予め保持している場合において、前記（ｃ）のステップで受け付けられた前記タスク定義に基づいて、前記複数の実行サーバそれぞれが保持すべきデータを決定し、前記複数の実行サーバそれぞれに対して、決定に応じたデータを保持するように、データの再配置を指示する、ステップを実行させる命令を含み、
前記（ｂ）のステップにおいて、前記複数の実行サーバそれぞれ毎に、再配置後のデータのデータ形式を、前記共通形式に変換させる、
請求項２１に記載のコンピュータ読み取り可能な記録媒体。
【請求項２３】
前記プログラムが、前記コンピュータに、更に、
（ｅ）前記複数の実行サーバそれぞれ毎に、当該実行サーバで実行される機械学習エンジンを指定し、指定した機械学習エンジンを用いて学習モデルを生成するように指示を与える、ステップを実行させる命令を含み、
前記（ａ）のステップにおいて、前記複数の実行サーバそれぞれ毎に、当該実行サーバが保持するデータのデータ形式を、指定された機械学習エンジンで利用可能なデータ形式に変換するよう指示を与える、
請求項１７〜２２のいずれかに記載のコンピュータ読み取り可能な記録媒体。
【請求項２４】
前記複数の実行サーバそれぞれにおいて、利用される前記機械学習エンジンが異なっており、更に、前記機械学習エンジン毎に利用可能なデータ形式も異なっている、
請求項１７〜２３のいずれかに記載のコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、分散処理基盤を構成する分散処理システム、分散基盤において実行サーバを管理するための分散処理管理装置、及び分散処理方法に関し、更には、これらを実現するためのプログラムを記録したコンピュータ読み取り可能な記録媒体に関する。
【背景技術】
【０００２】
従来から、機械学習の分野においては、大量のデータを効率良く処理する必要があるため、データ処理を多数の実行サーバに分散して実行させる分散処理基盤が利用されている（例えば、特許文献１参照）。【０００３】
また、分散処理基盤の例としては、例えば、Apache Hadoop、Apache Sparkが知られている。このうち、Apache Sparkによれば、多段で構成されたジョブを処理する際のレイテンシーを小さくでき、更に、ジョブ間でのデータ利用を実現できる。このため、Apache Sparkは、同一の処理を反復して何度も実行する必要がある機械学習に特に有効である（例えば、非特許文献１参照）。【０００４】
また、通常、分散処理基盤を利用して機械学習を行う場合、ユーザは、利用可能な種々の機械学習ライブラリの中から、目的に応じた機械学習ライブラリを選択する。そして、ユーザは、選択した機械学習ライブラリを用いて、分散処理基盤上で機械学習を実行する。【０００５】
加えて、近年、利用可能な機械学習ライブラリは多数あり、適切な機械学習ライブラリを選択することは難しくなっている。このため、特許文献２は、複数の機械学習ライブラリを比較し、比較結果をユーザに提示する技術を開示している。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１２−２２５５８号公報
【特許文献１】特開２０１７−０４５０９号公報
【非特許文献】
【０００７】
【非特許文献１】Sparks et al. “Automating Model Search for Large Scale Machine Learning.” In ACM SoCC, 2015.
【発明の概要】
【発明が解決しようとする課題】
【０００８】
ところで、特許文献２に開示された技術によれば、ユーザにおける機械学習ライブラリの選択は容易なものになると考えられるが、ユーザにおいては、一つだけではなく、複数の機械学習ライブラリを用いて、機械学習を実行したい場合がある。【０００９】
しかしながら、従来からの分散処理基盤では、複数の機械学習ライブラリを利用することは予定されておらず、複数の機械学習ライブラリを利用する場合は、ユーザにおけるタスク定義が煩雑となり、ユーザの負担が増大してしまう。【００１０】
本発明の目的の一例は、上記問題を解消し、分散処理基盤において、ユーザにおける負担の増大を軽減しつつ、複数の機械学習ライブラリの利用を可能にし得る、分散処理管理装置、分散処理方法、及びコンピュータ読み取り可能な記録媒体を提供することにある。
【課題を解決するための手段】
【００１１】
上記目的を達成するため、本発明の一側面における分散処理管理装置は、分散処理を実行する複数の実行サーバに通信可能に接続された分散処理管理装置であって、
前記複数の実行サーバそれぞれ毎に、当該実行サーバで実行される機械学習エンジンが利用可能なデータ形式を特定し、当該実行サーバが保持するデータのデータ形式を、特定した前記データ形式に変換するよう指示を与える、変換指示部を備えている、
ことを特徴とする。【００１２】
また、上記目的を達成するため、本発明の一側面における分散処理方法は、複数の実行サーバを用いて分散処理を行うための方法であって、
（ａ）前記複数の実行サーバそれぞれ毎に、当該実行サーバで実行される機械学習エンジンが利用可能なデータ形式を特定し、当該実行サーバが保持するデータのデータ形式を、特定した前記データ形式に変換するよう指示を与える、ステップを有する、
ことを特徴とする。【００１３】
更に、上記目的を達成するため、本発明の一側面におけるコンピュータ読み取り可能な記録媒体は、コンピュータによって複数の実行サーバを用いた分散処理を行うためのプログラムを記録しているコンピュータ読み取り可能な記録媒体であって、
前記コンピュータに、
（ａ）前記複数の実行サーバそれぞれ毎に、当該実行サーバで実行される機械学習エンジンが利用可能なデータ形式を特定し、当該実行サーバが保持するデータのデータ形式を、特定した前記データ形式に変換するよう指示を与える、ステップを実行させる、命令を含む、プログラムを記録していることを特徴とする。
【発明の効果】
【００１４】
以上のように、本発明によれば、分散処理基盤において、ユーザにおける負担の増大を軽減しつつ、複数の機械学習ライブラリを利用することができる。
【図面の簡単な説明】
【００１５】
【図１】図１は、本発明の実施の形態における分散処理管理装置の概略構成を示すブロック図である。
【図２】図２は、本発明の実施の形態における分散処理管理装置の具体的構成を示すブロック図である。
【図３】図３は、本発明の実施の形態における分散処理管理装置の動作を示すフロー図である。
【図４】図４は、本発明の実施の形態における分散処理管理装置が機械学習エンジンを指定する際の指示データを示す図である。
【図５】図５は、本発明の実施の形態における分散処理管理装置が共通形式への変換を指示する際の指示データを示す図である。
【図６】図６は、本発明の実施の形態における分散処理管理装置が機械学習エンジンに対応する形式への変換を指示する際の指示データを示す図である。
【図７】図７は、本発明の実施の形態で用いられる実行サーバの一つの動作を示すフロー図である。
【図８】図８は、本発明の実施の形態の具体例１において各実行サーバが保持しているデータの一例を示す図である。
【図９】図９は、本発明の実施の形態の具体例１で用いられる共通形式の一例を示す図である。
【図１０】図１０は、図８に示した各実行サーバが保持しているデータのデータ形式を共通形式に変換した例を示す図である。
【図１１】図１１は、本発明の実施の形態の具体例１における機械学習エンジンで利用されるデータ形式の一例を示す図である。
【図１２】図１２は、図９に示す共通形式のデータを図１１に示すデータ形式に変換した状態を示す図である。
【図１３】図１３は、本発明の実施の形態の具体例２における機械学習エンジンで利用されるデータ形式の一例を示す図である。
【図１４】図１４は、図９に示す共通形式のデータを図１３に示すデータ形式に変換した状態を示す図である。
【図１５】図１５は、本発明の実施の形態における分散処理管理装置を実現するコンピュータの一例を示すブロック図である。
【発明を実施するための形態】
【００１６】
（発明の概要）
従来においては、「第１のデータ形式を扱う第１の機械学習エンジンと、この第１のデータ形式とは異なる第２のデータ形式を扱う第２の機械学習エンジンとを、同じ分散処理基盤で実行する」という思想は、存在しておらず、いずれの先行文献にも開示されていない。これは、そもそも、複数の異なる機械学習エンジンは、互いに異なるデータ形式を用いているからである。例えば、ある機械学習エンジンは、LibSVM形式でデータを読みこむ必要があるのに対して、別の機械学習エンジンは、CSV形式でデータを読み込む必要がある。このため、従来において、データ形式の異なる複数の機械学習エンジンが一つの分散処理基盤で実行されることはない。
【００１７】
これに対して、本発明では、分散処理基盤上に、使用される機械学習エンジンを特定し、分散処理基盤で保持されているデータを、特定した機械学習エンジンで利用可能なデータ形式に変換する機能が備えられている。本発明によれば、データ形式の異なる複数の機械学習エンジンを一つの分散処理基盤で実行することが可能となる。特に、第１の機械学習エンジンと第２の機械学習エンジンとが互いに異なる機械学習ライブラリに属している場合に、本発明によれば、複数の機械学習ライブラリを一つの分散処理基盤で実行することが可能となる。
【００１８】
（用語の説明）
理解を容易にするため、以下に示す用語を説明する。
【００１９】
「機械学習ライブラリ」：機械学習ライブラリは、機械学習に必要となる複数のプログラム（オブジェクトコード）の集合である。各プログラムは他のプログラムから呼び出して利用可能なように部品化されている。機械学習ライブラリの具体例としては、例えばscikit-learnまたはTensorFlowなどが挙げられる。
【００２０】
「機械学習エンジン」：機械学習ライブラリに含まれる複数のプログラムのうち、機械学習を実行するプログラムのことを機械学習エンジンと呼ぶ。例えば、scikit-learnに含まれる機械学習エンジンの具体例としてはLinearSVC、RandomForestClassifierがある。LinearSVCは、線形カーネルを使用したSupport Vector Classificationアルゴリズムを実行する機械学習エンジンである。RandomForestClassifierは、決定木を弱学習器とする集団学習アルゴリズムであるRandom Forestアルゴリズムを実行する機械学習エンジンである。Random Forestアルゴリズムは、決定木を弱学習器とする集団学習アルゴリズムである。例えば、TensorFlowに含まれる機械学習エンジンの具体例としてLSTM(Long short-term memory)、CNN(Convolution Neural Network)がある。LSTMは、再帰型ニューラルネットワークモデルの一種であるLong short-termmemoryモデルを学習するアルゴリズムを実行する、機械学習エンジンである。CNNは、畳み込みニューラルネットワークモデルを学習するアルゴリズムを実行する、機械学習エンジンである。
【００２１】
「データ形式」：データ形式の具体例としては、RDD形式、LibSVM形式またはCSV形式などが挙げられる。他にも、教師有り機械学習のための訓練データについて、目的変数（ラベル）を何列目に配置するか、区切り文字の違いなども、データ形式の違いとして挙げられる。典型的には、一つの機械学習ライブラリに含まれる複数の機械学習エンジンが読み込むデータ形式は共通していることが多い。例えば、scikit-learnに含まれる複数の機械学習エンジンは共通してLibSVM形式でデータを読み込むことができる。TensorFlowに含まれる複数の機械学習エンジンは共通してCSV(comma-separated value)形式でデータを読み込むことができる。一方、同じ機械学習ライブラリに属する機械学習エンジンでも、典型的なデータ構造の違いとして、例えば数値０の要素も含めてすべての行列要素を記録する密行列表現と、要素の行・列の位置情報と要素の値を組にして記録する疎行列表現との違いがある。
【００２２】
典型的には、異なる機械学習ライブラリに属する機械学習エンジンは、異なるデータ形式を扱うことが多い。
【００２３】
（実施の形態）
以下、本発明の実施の形態における分散処理管理装置、分散処理方法、及びコンピュータ読み取り可能な記録媒体について、図１〜図１５を参照しながら説明する。
【００２４】
［装置構成］
最初に、本実施の形態における分散処理管理装置の概略構成について説明する。図１は、本発明の実施の形態における分散処理管理装置の概略構成を示すブロック図である。
【００２５】
図１に示すように、本実施の形態における分散処理管理装置１０は、ネットワーク４０を介して、分散処理を実行する複数の実行サーバ２０に通信可能に接続されている。分散処理管理装置１０は、実行サーバ２０と共に、分散処理基盤３０を構築している。
【００２６】
また、図１に示すように、本実施の形態における分散処理管理装置１０は、変換指示部１１を備えている。変換指示部１１は、まず、実行サーバ２０毎に、その実行サーバ２０で実行される機械学習エンジンが利用可能なデータ形式を特定する。次いで、変換指示部１１は、実行サーバ２０毎に、その実行サーバが保持するデータのデータ形式を、特定したデータ形式に変換するよう指示を与える。
【００２７】
このように、本実施の形態では、分散処理管理装置１０は、各実行サーバ２０で実行される機械学習エンジンで利用可能なデータ形式を特定し、実行サーバ２０毎に、データ形式を、その機械学習エンジンに対応したデータ形式に変換する。
【００２８】
従って、本実施の形態では、従来の分散処理基盤のように、一つの分散処理基盤において扱われるデータ形式が一種類に限定されることはない。言い換えると、本実施の形態では、一つの分散処理基盤において複数のデータ形式を扱うことが可能となる。典型的には、本実施の形態では、一つの分散処理基盤において複数の機械学習ライブラリを利用することが可能となる。また、分散処理管理装置１０によって、各機械学習エンジンに適したデータ形式への変換が行われるので、ユーザは、複雑なタスク定義を行わなくても、複数の機械学習ライブラリを利用でき、ユーザにおけるタスク定義の負担を軽減することができる。
【００２９】
続いて、図２を用いて、本実施の形態における分散処理管理装置１０の構成についてより具体的に説明する。図２は、本発明の実施の形態における分散処理管理装置の具体的構成を示すブロック図である。
【００３０】
図２に示すように、本実施の形態では、分散処理管理装置１０は、変換指示部１１に加えて、プレ変換指示部１２と、タスク受付部１３と、データ再配置指示部１４と、学習モデル生成指示部１５とを更に備えている。
【００３１】
プレ変換指示部１２は、実行サーバ２０毎に、各実行サーバ２０が保持するデータのデータ形式を、予め定められた共通形式に変換するよう指示を与える。共通形式としては、例えば、各実行サーバ２０で利用される機械学習エンジンにより用いられる、特徴量とラベルのみを含む、データ形式が挙げられる（後述の図６参照）。
【００３２】
変換指示部１１は、本実施の形態では、実行サーバ２０毎に、そこで実行される機械学習エンジンが利用可能なデータ形式を特定すると、共通形式に変換されているデータのデータ形式を、特定したデータ形式（例えば、ＬｉｂＳＶＭ形式、ＣＳＶ形式等）に変換するよう指示を与える。
【００３３】
タスク受付部１３は、実行サーバ２０それぞれによって実行される分散処理のタスク定義を受け付ける。
【００３４】
データ再配置指示部１４は、実行サーバ２０それぞれが、分散処理に用いるデータを予め保持している場合において、タスク受付部１３によって受け付けられたタスク定義に基づいて、実行サーバ２０それぞれが保持すべきデータを決定する。
【００３５】
また、データ再配置指示部１４は、実行サーバ２０それぞれに対して、決定に応じたデータを保持するように、データの再配置を指示する。この場合、プレ変換指示部１２は、実行サーバ２０毎に、再配置後のデータのデータ形式を共通形式に変換するよう指示を与える。
【００３６】
学習モデル生成指示部１５は、実行サーバ２０それぞれ毎に、各実行サーバ２０で実行される機械学習エンジンを指定し、指定した機械学習エンジンを用いて学習モデルを生成するように指示を与える。また、この場合において、変換指示部１１は、実行サーバ２０それぞれ毎に、その実行サーバ２０が保持するデータのデータ形式を、学習モデル生成指示部１５に指定された機械学習エンジンで利用可能なデータ形式に変換するよう指示を与える。
【００３７】
また、本実施の形態は、複数の実行サーバ２０が、第１のデータ形式を利用可能な第１の機械学習エンジンを実行する実行サーバ群と、第１のデータ形式とは異なる第２のデータ形式を利用可能な第２の機械学習エンジンを実行する実行サーバ群とを含んでいる態様であっても良い。この場合において、第１の機械学習エンジンと第２の機械学習エンジンとは、互いに異なる機械学習ライブラリに属する。
【００３８】
［装置動作］
次に、本発明の実施の形態における分散処理管理装置１０及び各実行サーバ２０の動作について図３及び図４を用いて説明する。以下の説明においては、適宜図１及び図２を参酌する。また、本実施の形態では、分散処理管理装置１０を動作させることによって、分散処理方法が実施される。よって、本実施の形態における分散処理方法の説明は、以下の分散処理管理装置１０の動作説明に代える。
【００３９】
最初に、図３〜図６を用いて、分散処理管理装置１０の動作について説明する。図３は、本発明の実施の形態における分散処理管理装置の動作を示すフロー図である。図４は、本発明の実施の形態における分散処理管理装置が機械学習エンジンを指定する際の指示データを示す図である。図５は、本発明の実施の形態における分散処理管理装置が共通形式への変換を指示する際の指示データを示す図である。図６は、本発明の実施の形態における分散処理管理装置が機械学習エンジンに対応する形式への変換を指示する際の指示データを示す図である。
【００４０】
図３に示すように、最初に、分散処理管理装置１０において、タスク受付部１３は、実行サーバ２０それぞれによって実行される分散処理のタスク定義を受け付ける（ステップＡ１）。タスク定義は、例えば、分散処理基盤３０の管理者によって、外部の端末装置を介して入力される。
【００４１】
次に、データ再配置指示部１４は、実行サーバ２０それぞれが、分散処理に用いるデータを予め保持している場合において、ステップＡ１で受け付けられたタスク定義に基づいて、実行サーバ２０それぞれが保持すべきデータを決定する（ステップＡ２）。
【００４２】
次に、ステップＡ２が実行されると、学習モデル生成指示部１５は、各実行サーバ２０に対して、その実行サーバ２０で利用される機械学習エンジンを指定する（ステップＡ３）。具体的には、学習モデル生成指示部１５は、例えば、図４に示す指示データを各実行サーバ２０に送信する。
【００４３】
次に、プレ変換指示部１２は、各実行サーバ２０に、保持しているデータのデータ形式を共通形式に変換するよう指示を与える（ステップＡ４）。具体的には、プレ変換指示部１２は、例えば、図５に示す指示データを各実行サーバ２０に送信する。これにより、後述の図７に示すステップＢ１及びＢ２が実行され、各実行サーバ２０は、保持しているデータのデータ形式を共通形式に変換する。
【００４４】
次に、データ再配置指示部１４は、実行サーバ２０それぞれに対して、ステップＡ２の決定に応じたデータを保持するように、データの再配置を指示する（ステップＡ５）。ステップＡ５が実行されると、各実行サーバ２０においては、後述の図７に示すステップＢ３及びＢ４が実行される。共通形式に変換されたデータが、各実行サーバに適切に配置された状態となる。
【００４５】
続いて、学習モデル生成指示部１５は、各実行サーバ２０に、ステップＡ３で指定した機械学習エンジンを用いて学習モデルを生成するように指示を与える（ステップＡ６）。具体的には、学習モデル生成指示部１５は、各実行サーバ２０に対して、そこで利用される機械学習ライブラリを指定して、学習モデルの生成を指示する。これにより、各実行サーバ２０においては、後述の図７に示すステップＢ５が実行される。
【００４６】
また、「機械学習ライブラリ」は、機械学習エンジンを始め、機械学習に必要となる各種ツールを含むファイルであり、機械学習毎に提供されている。本実施の形態では、機械学習ライブラリは、分散処理管理装置１０によって用意されていても良いし、外部の機器に用意されていても良い。
【００４７】
更に、ステップＡ６が実行されると、変換指示部１１は、各実行サーバ２０に、それが保持するデータのデータ形式を、指定された機械学習エンジンで利用可能なデータ形式に変換するよう指示を与える（ステップＡ７）。具体的には、変換指示部１１は、例えば、図７に示す指示データを各実行サーバ２０に送信する。これにより、各実行サーバ２０においては、後述の図７に示すステップＢ６〜Ｂ８が実行される。
【００４８】
続いて、図７を用いて、実行サーバ２０の動作について説明する。図７は、本発明の実施の形態で用いられる実行サーバの一つの動作を示すフロー図である。なお、以下においては、複数ある実行サーバのうちの一つを例にとって動作を説明する。
【００４９】
図７に示すように、分散処理管理装置１０によって、図３に示したステップＡ１〜Ａ４が実行され、共通形式への変換が指示されると、実行サーバ２０は、この変換指示を受信し（ステップＢ１）、保持しているデータのデータ形式を共通形式に変換する（ステップＢ２）
【００５０】
次に、分散処理管理装置１０によって、図３に示したステップＡ５が実行され、データの再配置が指示されると、実行サーバ２０は、データの再配置の指示を受信し（ステップＢ３）、受信した指示に対応するようにデータの再配置を実行する（ステップＢ４）。具体的には、ステップＢ４では、実行サーバ２０は、他の実行サーバ２０に送信するように指示されたデータをその実行サーバに送信し、他の実行サーバ２０から送信されてきたデータを受信し、受信したデータを保持する。
【００５１】
次に、分散処理管理装置１０によって、図３に示したステップＡ６が実行され、指定した機械学習エンジンを用いた学習モデルの生成が指示されると、実行サーバ２０は、学習モデルの生成指示を受信する（ステップＢ５）。続いて、分散処理管理装置１０によって、ステップＡ６が実行され、保持しているデータのデータ形式を、指定された機械学習エンジンで利用可能なデータ形式に変換するように指示が行われると、実行サーバ２０は、この指示も受信する（ステップＢ６）。
【００５２】
次に、実行サーバ２０は、保持しているデータのデータ形式を、ステップＢ６で指示されたデータ形式に変換し（ステップＢ７）、変換後のデータを用いて、指定された機械学習エンジンによる機械学習を実行する（ステップＢ８）。
【００５３】
このように、本実施の形態では、分散処理基盤３０において、実行サーバ毎に、異なる機械学習エンジンを用いて機械学習を実行することができる。本実施の形態によれば、分散処理基盤３０において、複数の機械学習ライブラリを利用することが可能である。
【００５４】
また、本実施の形態では、各実行サーバ２０が保持しているデータのデータ形式は、一旦、共通形式に変換されているので、各実行サーバ２０は、データ形式を、簡単に、使用される機械学習エンジンに対応する形式に変換できる。
【００５５】
仮に、データ形式が共通形式に変換されていない場合は、各実行サーバ２０は、現在のデータ形式を特定し、特定したデータ形式を、使用される機械学習エンジンに対応する形式に変換できる変換モジュールを探し出し、その後、変換を行う必要がある。この場合、実行サーバにおける処理負担は大きく、学習処理が遅延してしまう。
【００５６】
ところで、従来からの分散処理基盤において、新たな機械学習エンジンを追加する場合は、その分散処理基盤に適したデータ形式を新たな機械学習エンジンが読み込むデータ形式に変換する変換モジュールを用意する必要があり、このことはユーザにとって煩雑となる。一方、本実施の形態においても、分散処理基盤３０において、新たな機械学習エンジンを追加する場合は、データ形式を共通形式に変換するための変換モジュールとして、そのエンジン専用の変換モジュールを用意する必要がある。
【００５７】
しかしながら、本実施の形態において用いられる、共通形式を新たな機械学習エンジンが読み込むデータ形式に変換する変換モジュールは、分散処理基盤に適したデータ形式を新たな機械学習エンジンが読み込むデータ形式に変換する変換モジュールと異なる。共通形式から新たな機械学習エンジンが読み込むデータ形式に変換する変換モジュールを用いる場合は、実装の工数負荷を軽減できる。更に、この結果、新たな機械学習エンジンを追加する際のプログラムの実行コード量が低減されるので、バグ等の不具合が混入されるリスクの低減も図られる。
【００５８】
つまり、分散処理基盤に適したデータ形式を新たな機械学習エンジンが読み込むデータ形式に変換する変換モジュールを用意するよりも、データ形式を共通形式から新たな機械学習エンジンが読み込むデータ形式に変換する変換モジュールを用意する方が、より簡単である。
【００５９】
この理由を説明する。図６は、共通形式から機械学習エンジンが読み込むデータ形式に変換する例を示す図である。図６の例では、２つの関数が示されている。一つは、共通形式をLibLinearという機械学習エンジンが読み込むデータ形式に変換して当該機械学習エンジンを実行するlearnWithLibLinear()関数（１２行目〜２４行目）である。もう一つは、共通形式をscikit-learnという機械学習エンジンが読み込むデータ形式に変換して当該機械学習エンジンを実行するlearnWithScikitLearn()関数（２６行目〜３４行目）である。
【００６０】
図６の例において着目すべき点は、機械学習エンジンを実行する命令の行を除き、２つの関数の変換処理で互いに相違する点が１４行目と２８行目とのそれぞれの１行部分のみにとどまっている点である。つまり変換モジュールの実装者は、機械学習エンジンによってデータ形式を変更する数行のみを変更するだけで変換モジュールを実装することができる。以上、共通形式から新たな機械学習エンジンが読み込むデータ形式に変換する変換モジュールを用意することが簡単である理由を説明した。
【００６１】
［具体例１］
続いて、本実施の形態における具体例１について、図８〜図１２を用いて説明する。
図８は、本発明の実施の形態の具体例１において各実行サーバが保持しているデータの一例を示す図である。図９は、本発明の実施の形態の具体例１で用いられる共通形式の一例を示す図である。図１０は、図８に示した各実行サーバが保持しているデータのデータ形式を共通形式に変換した例を示す図である。図１１は、本発明の実施の形態の具体例１における機械学習エンジンで利用されるデータ形式の一例を示す図である。図１２は、図９に示す共通形式のデータを図１１に示すデータ形式に変換した状態を示す図である。
【００６２】
以下の説明においては、実行サーバ２０は２つであり、それぞれを実行サーバＡ、実行サーバＢと表記するとする。そして、図８に示すように、実行サーバＡ及びＢそれぞれにおいて、利用される機械学習エンジンは異なっており、利用可能なデータ形式も異なっているとする。更に、実行サーバＡ及びＢは、それぞれ異なるデータ形式でデータを保持しているとする。
【００６３】
また、本具体例１では、図９に示すように、共通形式は、実行サーバＡ及びＢで利用される機械学習エンジンにより用いられる、特徴量（特徴量１〜３、予測ターゲット変数）と、ラベル（サンプルＩＤ）とを含むデータ形式である。この場合、特徴量は、機械学習において、説明変数の候補として用いられる。
【００６４】
本具体例１において、プレ変換指示部１２は、実行サーバＡ及びＢそれぞれに対して、保持しているデータのデータ形式を共通形式に変換するよう指示を与えると、実行サーバＡ及びＢは、図１０に示すように、データ形式を共通形式に変換する。
【００６５】
また、本具体例１で使用される機械学習エンジンが、機械学習エンジンＡ及びＢの２つであり、各機械学習エンジンが要求するデータ形式が、図１１に示す通りであるとする。この場合において、変換指示部１１が、実行サーバＡに対して、データ形式を機械学習エンジンＡのデータ形式に変換するよう指示を与える。更に、変換指示部１１は、実行サーバＢに対して、データ形式を機械学習エンジンＢのデータ形式に変換するよう指示を与える。
【００６６】
この結果、図１０に示した実行サーバＡ及びＢそれぞれが保持しているデータのデータ形式は、図１２に示すように変換される。具体的には、実行サーバＡは、共通形式におけるサンプルＩＤの列を除去し、残った列の列名も除去する。また、実行サーバＢは、共通形式における予測ターゲット変数の列を左から２列目に移動させ、更に、各列名も除去する。なお、図１２においては、説明のため、括弧書きで列名を併記している。
【００６７】
このように、各実行サーバ２０が保持するデータのデータ形式を一旦共通形式に変換すれば、各実行サーバ２０は、データ形式を、簡単に、使用される機械学習エンジンに対応する形式に変換できる。
【００６８】
また、本実施の形態では、共通形式として、一次元配列が採用されていても良い。例えば、共通形式は、図９に示す共通形式を行方向の一次元配列に変換して得られた形式であっても良い。この場合、図９に示されたデータは下記の通りとなる。また、下記において、１つ目の要素は元のテーブルの行数、２つめの要素は元のテーブルの列数を示している。
（2,5, 1.0, 1.8, 3.0, 2.5, 1.0, 2.0, 3.4, 1.0, -2.9, -1.0）
【００６９】
また、機械学習エンジンが、データ形式として、列方向の一次元配列が採用されたデータ形式を要求しているとする。この場合、上記の行方向の一次元配列のデータは、下記のように変換される。
（2,5, 1.0, 2.0, 1.8, 3.4, 3.0, 1.0, 2.5, -2.9, 1.0, -1.0）
【００７０】
［具体例２］
続いて、本実施の形態における具体例２について、図１３及び図１４を用いて説明する。図１３は、本発明の実施の形態の具体例２における機械学習エンジンで利用されるデータ形式の一例を示す図である。図１４は、図９に示す共通形式のデータを図１３に示すデータ形式に変換した状態を示す図である。
【００７１】
具体例２においても、実行サーバＡ及びＢが保持するデータは、具体例１と同様であり、共通形式も具体例１と同様であるとする。また、具体例２においても、図１３に示すように、機械学習エンジンＡが要求するデータ形式は、具体例１と同じであり、密行列表現によって表現されている。但し、機械学習エンジンＢが要求するデータ形式は、具体例１と異なり、疎行列表現によって表現されている。疎行列表現は、要素の位置と値とを並べた連結リスト表現になっている。
【００７２】
このため、具体例２において、変換指示部１１が、実行サーバＡに対して、データ形式の変換を指示すると、実行サーバＡは、具体例１と同様に、共通形式におけるサンプルＩＤの列を除去し、残った列の列名も除去する。一方、変換指示部１１が、実行サーバＢに対して、データ形式の変換を指示すると、実行サーバＢは、密行列表現を疎行列表現に変更し、列名を除去する。
【００７３】
この結果、具体例２では、図１０に示した実行サーバＡ及びＢそれぞれが保持しているデータのデータ形式は、図１４に示すように変換される。具体例２においても、具体例１と同様に、各実行サーバ２０が保持するデータのデータ形式は一旦共通形式に変換されるので、各実行サーバ２０は、データ形式を、簡単に、使用される機械学習エンジンに対応する形式に変換できる。
【００７４】
［変形例］
分散処理基盤３０で実行されたプログラム（例えば、Ｊａｖａ（登録商標）プログラム）上で機械学習を行なう場合は、オペレーティングシステムとは別のプロセスを実行する必要がある。このため、実行サーバ２０においては、プログラムが使用するメモリ空間と、学習エンジンのメモリ空間とを別々に設け、両者間でデータのコピーを行なう必要がある。
【００７５】
このため、本変形例では、例えば、Ｊａｖａ上で、ＪＮＩ（Java Native Interface）を使用して、機械学習エンジンを実行することができる。この場合、メモリ空間を別々に設けることなく、Ｊａｖａ上で機械学習を行うことが可能となる。
【００７６】
［プログラム］
本発明の実施の形態におけるプログラムは、コンピュータに、図３に示すステップＡ１〜Ａ７を実行させるプログラムであれば良い。このプログラムをコンピュータにインストールし、実行することによって、本実施の形態における分散処理管理装置１０と分散処理方法とを実現することができる。この場合、コンピュータのプロセッサは、変換指示部１１、プレ変換指示部１２、タスク受付部１３、データ再配置指示部１４、及び学習モデル生成指示部１５として機能し、処理を行なう。
【００７７】
また、本実施の形態におけるプログラムは、複数のコンピュータによって構築されたコンピュータシステムによって実行されても良い。この場合は、例えば、各コンピュータが、それぞれ、変換指示部１１、プレ変換指示部１２、タスク受付部１３、データ再配置指示部１４、及び学習モデル生成指示部１５のいずれかとして機能しても良い。
【００７８】
［物理構成］
ここで、本実施の形態におけるプログラムを実行することによって、分散処理管理装置を実現するコンピュータについて図１５を用いて説明する。図１５は、本発明の実施の形態における分散処理管理装置を実現するコンピュータの一例を示すブロック図である。
【００７９】
図１５に示すように、コンピュータ１１０は、ＣＰＵ（Central Processing Unit）１１１と、メインメモリ１１２と、記憶装置１１３と、入力インターフェイス１１４と、表示コントローラ１１５と、データリーダ／ライタ１１６と、通信インターフェイス１１７とを備える。これらの各部は、バス１２１を介して、互いにデータ通信可能に接続される。
【００８０】
ＣＰＵ１１１は、記憶装置１１３に格納された、本実施の形態におけるプログラム（コード）をメインメモリ１１２に展開し、これらを所定順序で実行することにより、各種の演算を実施する。メインメモリ１１２は、典型的には、ＤＲＡＭ（Dynamic Random Access Memory）等の揮発性の記憶装置である。また、本実施の形態におけるプログラムは、コンピュータ読み取り可能な記録媒体１２０に格納された状態で提供される。なお、本実施の形態におけるプログラムは、通信インターフェイス１１７を介して接続されたインターネット上で流通するものであっても良い。
【００８１】
また、記憶装置１１３の具体例としては、ハードディスクドライブの他、フラッシュメモリ等の半導体記憶装置が挙げられる。入力インターフェイス１１４は、ＣＰＵ１１１と、キーボード及びマウスといった入力機器１１８との間のデータ伝送を仲介する。表示コントローラ１１５は、ディスプレイ装置１１９と接続され、ディスプレイ装置１１９での表示を制御する。
【００８２】
データリーダ／ライタ１１６は、ＣＰＵ１１１と記録媒体１２０との間のデータ伝送を仲介し、記録媒体１２０からのプログラムの読み出し、及びコンピュータ１１０における処理結果の記録媒体１２０への書き込みを実行する。通信インターフェイス１１７は、ＣＰＵ１１１と、他のコンピュータとの間のデータ伝送を仲介する。
【００８３】
また、記録媒体１２０の具体例としては、ＣＦ（Compact Flash（登録商標））及びＳＤ（Secure Digital）等の汎用的な半導体記憶デバイス、フレキシブルディスク（Flexible Disk）等の磁気記録媒体、又はＣＤ−ＲＯＭ（Compact Disk Read Only Memory）などの光学記録媒体が挙げられる。
【００８４】
なお、本実施の形態における分散処理管理装置１０は、プログラムがインストールされたコンピュータではなく、各部に対応したハードウェアを用いることによっても実現可能である。更に、分散処理管理装置１０は、一部がプログラムで実現され、残りの部分がハードウェアで実現されていてもよい。
【００８５】
上述した実施の形態の一部又は全部は、以下に記載する（付記１）〜（付記２４）によって表現することができるが、以下の記載に限定されるものではない。
【００８６】
（付記１）
分散処理を実行する複数の実行サーバに通信可能に接続された分散処理管理装置であって、
前記複数の実行サーバそれぞれ毎に、当該実行サーバで実行される機械学習エンジンが利用可能なデータ形式を特定し、当該実行サーバが保持するデータのデータ形式を、特定した前記データ形式に変換するよう指示を与える、変換指示部を備えている、
ことを特徴とする分散処理管理装置。
【００８７】
（付記２）
前記複数の実行サーバは、第１のデータ形式を利用可能な第１の機械学習エンジンを実行する実行サーバ群と、前記第１のデータ形式とは異なる第２のデータ形式を利用可能な第２の機械学習エンジンを実行する実行サーバ群とを含み、
前記第１の機械学習エンジンと前記第２の機械学習エンジンとは、互いに異なる機械学習ライブラリに属する、
付記１に記載の分散処理管理装置。
【００８８】
（付記３）
前記複数の実行サーバそれぞれ毎に、当該実行サーバが保持するデータのデータ形式を、予め定められた共通形式に変換するよう指示を与える、プレ変換指示部を更に備え、
前記変換指示部は、前記複数の実行サーバそれぞれ毎に、前記共通形式に変換されているデータのデータ形式を、特定した前記データ形式に変換するよう指示を与える、
付記１または２に記載の分散処理管理装置。
【００８９】
（付記４）
前記共通形式が、前記複数の実行サーバそれぞれで利用される機械学習エンジンにより用いられる、特徴量とラベルのみを含む、データ形式である、
付記３に記載の分散処理管理装置。
【００９０】
（付記５）
前記複数の実行サーバによって実行される分散処理のタスク定義を受け付ける、タスク受付部を更に備えている、
付記３または４に記載の分散処理管理装置。
【００９１】
（付記６）
前記複数の実行サーバそれぞれが、前記分散処理に用いるデータを予め保持している場合において、前記タスク受付部によって受け付けられた前記タスク定義に基づいて、前記複数の実行サーバそれぞれが保持すべきデータを決定し、前記複数の実行サーバそれぞれに対して、決定に応じたデータを保持するように、データの再配置を指示する、データ再配置指示部を、更に備え、
前記プレ変換指示部は、前記複数の実行サーバそれぞれ毎に、再配置後のデータのデータ形式を、前記共通形式に変換させる、
付記５に記載の分散処理管理装置。
【００９２】
（付記７）
前記複数の実行サーバそれぞれ毎に、当該実行サーバで実行される機械学習エンジンを指定し、指定した機械学習エンジンを用いて学習モデルを生成するように指示を与える、学習モデル生成指示部を、更に備え、
前記変換指示部は、前記複数の実行サーバそれぞれ毎に、当該実行サーバが保持するデータのデータ形式を、指定された機械学習エンジンで利用可能なデータ形式に変換するよう指示を与える、
付記１〜６のいずれかに記載の分散処理管理装置。
【００９３】
（付記８）
前記複数の実行サーバそれぞれにおいて、利用される前記機械学習エンジンが異なっており、更に、前記機械学習エンジン毎に利用可能なデータ形式も異なっている、
付記１〜７のいずれかに記載の分散処理管理装置。
【００９４】
（付記９）
複数の実行サーバを用いて分散処理を行うための方法であって、
（ａ）前記複数の実行サーバそれぞれ毎に、当該実行サーバで実行される機械学習エンジンが利用可能なデータ形式を特定し、当該実行サーバが保持するデータのデータ形式を、特定した前記データ形式に変換するよう指示を与える、ステップを有する、
ことを特徴とする分散処理方法。
【００９５】
（付記１０）
前記複数の実行サーバは、第１のデータ形式を利用可能な第１の機械学習エンジンを実行する実行サーバ群と、前記第１のデータ形式とは異なる第２のデータ形式を利用可能な第２の機械学習エンジンを実行する実行サーバ群とを含み、
前記第１の機械学習エンジンと前記第２の機械学習エンジンとは、互いに異なる機械学習ライブラリに属する、
付記９に記載の分散処理方法。
【００９６】
（付記１１）
（ｂ）前記複数の実行サーバそれぞれ毎に、当該実行サーバが保持するデータのデータ形式を、予め定められた共通形式に変換するよう指示を与える、ステップを更に有し、
前記（ａ）のステップにおいて、前記複数の実行サーバそれぞれ毎に、前記共通形式に変換されているデータのデータ形式を、特定した前記データ形式に変換するよう指示を与える、
付記９または１０に記載の分散処理方法。
【００９７】
（付記１２）
前記共通形式が、前記複数の実行サーバそれぞれで利用される機械学習エンジンにより用いられる、特徴量とラベルのみを含む、データ形式である、
付記９に記載の分散処理方法。
【００９８】
（付記１３）
（ｃ）前記複数の実行サーバによって実行される分散処理のタスク定義を受け付ける、ステップを更に有する、
付記１１または１２に記載の分散処理方法。
【００９９】
（付記１４）
（ｄ）前記複数の実行サーバそれぞれが、前記分散処理に用いるデータを予め保持している場合において、前記（ｃ）のステップで受け付けられた前記タスク定義に基づいて、前記複数の実行サーバそれぞれが保持すべきデータを決定し、前記複数の実行サーバそれぞれに対して、決定に応じたデータを保持するように、データの再配置を指示する、ステップを、更に有し、
前記（ｂ）のステップにおいて、前記複数の実行サーバそれぞれ毎に、再配置後のデータのデータ形式を、前記共通形式に変換させる、
付記１３に記載の分散処理方法。
【０１００】
（付記１５）
（ｅ）前記複数の実行サーバそれぞれ毎に、当該実行サーバで実行される機械学習エンジンを指定し、指定した機械学習エンジンを用いて学習モデルを生成するように指示を与える、ステップを、更に有し、
前記（ａ）のステップにおいて、前記複数の実行サーバそれぞれ毎に、当該実行サーバが保持するデータのデータ形式を、指定された機械学習エンジンで利用可能なデータ形式に変換するよう指示を与える、
付記９〜１４のいずれかに記載の分散処理方法。
【０１０１】
（付記１６）
前記複数の実行サーバそれぞれにおいて、利用される前記機械学習エンジンが異なっており、更に、前記機械学習エンジン毎に利用可能なデータ形式も異なっている、
付記９〜１５のいずれかに記載の分散処理方法。
【０１０２】
（付記１７）
コンピュータによって複数の実行サーバを用いた分散処理を行うためのプログラムを記録しているコンピュータ読み取り可能な記録媒体であって、
前記コンピュータに、
（ａ）前記複数の実行サーバそれぞれ毎に、当該実行サーバで実行される機械学習エンジンが利用可能なデータ形式を特定し、当該実行サーバが保持するデータのデータ形式を、特定した前記データ形式に変換するよう指示を与える、ステップを実行させる、命令を含む、プログラムを記録しているコンピュータ読み取り可能な記録媒体。
【０１０３】
（付記１８）
前記複数の実行サーバは、第１のデータ形式を利用可能な第１の機械学習エンジンを実行する実行サーバ群と、前記第１のデータ形式とは異なる第２のデータ形式を利用可能な第２の機械学習エンジンを実行する実行サーバ群とを含み、
前記第１の機械学習エンジンと前記第２の機械学習エンジンとは、互いに異なる機械学習ライブラリに属する、
付記１７に記載のコンピュータ読み取り可能な記録媒体。
【０１０４】
（付記１９）
（ｂ）前記複数の実行サーバそれぞれ毎に、当該実行サーバが保持するデータのデータ形式を、予め定められた共通形式に変換するよう指示を与える、ステップを更に有し、
前記（ａ）のステップにおいて、前記複数の実行サーバそれぞれ毎に、前記共通形式に変換されているデータのデータ形式を、特定した前記データ形式に変換するよう指示を与える、
付記１７又は１８に記載のコンピュータ読み取り可能な記録媒体。
【０１０５】
（付記２０）
前記共通形式が、前記複数の実行サーバそれぞれで利用される機械学習エンジンにより用いられる、特徴量とラベルのみを含む、データ形式である、
付記１９に記載のコンピュータ読み取り可能な記録媒体。
【０１０６】
（付記２１）
前記プログラムが、前記コンピュータに、更に、
（ｃ）前記複数の実行サーバによって実行される分散処理のタスク定義を受け付ける、ステップを実行させる命令を含む、
付記１９または２０に記載のコンピュータ読み取り可能な記録媒体。
【０１０７】
（付記２２）
前記プログラムが、前記コンピュータに、更に、
（ｄ）前記複数の実行サーバそれぞれが、前記分散処理に用いるデータを予め保持している場合において、前記（ｃ）のステップで受け付けられた前記タスク定義に基づいて、前記複数の実行サーバそれぞれが保持すべきデータを決定し、前記複数の実行サーバそれぞれに対して、決定に応じたデータを保持するように、データの再配置を指示する、ステップを実行させる命令を含み、
前記（ｂ）のステップにおいて、前記複数の実行サーバそれぞれ毎に、再配置後のデータのデータ形式を、前記共通形式に変換させる、
付記２１に記載のコンピュータ読み取り可能な記録媒体。
【０１０８】
（付記２３）
前記プログラムが、前記コンピュータに、更に、
（ｅ）前記複数の実行サーバそれぞれ毎に、当該実行サーバで実行される機械学習エンジンを指定し、指定した機械学習エンジンを用いて学習モデルを生成するように指示を与える、ステップを実行させる命令を含み、
前記（ａ）のステップにおいて、前記複数の実行サーバそれぞれ毎に、当該実行サーバが保持するデータのデータ形式を、指定された機械学習エンジンで利用可能なデータ形式に変換するよう指示を与える、
付記１７〜２２のいずれかに記載のコンピュータ読み取り可能な記録媒体。
【０１０９】
（付記２４）
前記複数の実行サーバそれぞれにおいて、利用される前記機械学習エンジンが異なっており、更に、前記機械学習エンジン毎に利用可能なデータ形式も異なっている、
付記１７〜２３のいずれかに記載のコンピュータ読み取り可能な記録媒体。
【０１１０】
以上、実施の形態を参照して本願発明を説明したが、本願発明は上記実施の形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【０１１１】
この出願は、２０１７年１０月２６日に出願された米国出願６２／５７７，４０８を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【産業上の利用可能性】
【０１１２】
以上のように、本発明によれば、分散処理基盤において、ユーザにおける負担を増大させることなく、複数の機械学習ライブラリを利用することができる。本発明は、分散システムによって大量のデータに対して機械学習を行なう場合に有用である。
【符号の説明】
【０１１３】
１０  分散処理管理装置
１１  変換指示部
１２  プレ変換指示部
１３  タスク受付部
１４  データ再配置指示部
１５  学習モデル生成指示部
２０  実行サーバ
３０  分散処理基盤
４０  ネットワーク
１１０  コンピュータ
１１１  ＣＰＵ
１１２  メインメモリ
１１３  記憶装置
１１４  入力インターフェイス
１１５  表示コントローラ
１１６  データリーダ／ライタ
１１７  通信インターフェイス
１１８  入力機器
１１９  ディスプレイ装置
１２０  記録媒体
１２１  バス
【図１】
2019082982.tif 000003
【図２】
2019082982.tif 000004
【図３】
2019082982.tif 000005
【図４】
2019082982.tif 000006
【図５】
2019082982.tif 000007
【図６】
2019082982.tif 000008
【図７】
2019082982.tif 000009
【図８】
2019082982.tif 000010
【図９】
2019082982.tif 000011
【図１０】
2019082982.tif 000012
【図１１】
2019082982.tif 000013
【図１２】
2019082982.tif 000014
【図１３】
2019082982.tif 000015
【図１４】
2019082982.tif 000016
【図１５】
2019082982.tif 000017
【手続補正書】
【提出日】令和2年4月22日(2020.4.22)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
分散処理を実行する複数の実行サーバに通信可能に接続された分散処理管理装置であって、
前記複数の実行サーバそれぞれ毎に、当該実行サーバで実行される機械学習エンジンが利用可能なデータ形式を特定し、当該実行サーバが保持するデータのデータ形式を、特定した前記データ形式に変換するよう指示を与える、変換指示部を備えている、
ことを特徴とする分散処理管理装置。
【請求項２】
前記複数の実行サーバは、第１のデータ形式を利用可能な第１の機械学習エンジンを実行する実行サーバ群と、前記第１のデータ形式とは異なる第２のデータ形式を利用可能な第２の機械学習エンジンを実行する実行サーバ群とを含み、
前記第１の機械学習エンジンと前記第２の機械学習エンジンとは、互いに異なる機械学習ライブラリに属する、
請求項１に記載の分散処理管理装置。
【請求項３】
前記複数の実行サーバそれぞれ毎に、当該実行サーバが保持するデータのデータ形式を、予め定められた共通形式に変換するよう指示を与える、プレ変換指示部を更に備え、
前記変換指示部は、前記複数の実行サーバそれぞれ毎に、前記共通形式に変換されているデータのデータ形式を、特定した前記データ形式に変換するよう指示を与える、
請求項１または２に記載の分散処理管理装置。
【請求項４】
前記共通形式が、前記複数の実行サーバそれぞれで利用される機械学習エンジンにより用いられる、特徴量とラベルのみを含む、データ形式である、
請求項３に記載の分散処理管理装置。
【請求項５】
前記複数の実行サーバによって実行される分散処理のタスク定義を受け付ける、タスク受付部を更に備えている、
請求項３または４に記載の分散処理管理装置。
【請求項６】
前記複数の実行サーバそれぞれが、前記分散処理に用いるデータを予め保持している場合において、前記タスク受付部によって受け付けられた前記タスク定義に基づいて、前記複数の実行サーバそれぞれが保持すべきデータを決定し、前記複数の実行サーバそれぞれに対して、決定に応じたデータを保持するように、データの再配置を指示する、データ再配置指示部を、更に備え、
前記プレ変換指示部は、前記複数の実行サーバそれぞれ毎に、再配置後のデータのデータ形式を、前記共通形式に変換させる、
請求項５に記載の分散処理管理装置。
【請求項７】
前記複数の実行サーバそれぞれ毎に、当該実行サーバで実行される機械学習エンジンを指定し、指定した機械学習エンジンを用いて学習モデルを生成するように指示を与える、学習モデル生成指示部を、更に備え、
前記変換指示部は、前記複数の実行サーバそれぞれ毎に、当該実行サーバが保持するデータのデータ形式を、指定された機械学習エンジンで利用可能なデータ形式に変換するよう指示を与える、
請求項１〜６のいずれかに記載の分散処理管理装置。
【請求項８】
前記複数の実行サーバそれぞれにおいて、利用される前記機械学習エンジンが異なっており、更に、前記機械学習エンジン毎に利用可能なデータ形式も異なっている、
請求項１〜７のいずれかに記載の分散処理管理装置。
【請求項９】
複数の実行サーバを用いて分散処理を行うための方法であって、
（ａ）前記複数の実行サーバそれぞれ毎に、当該実行サーバで実行される機械学習エンジンが利用可能なデータ形式を特定し、当該実行サーバが保持するデータのデータ形式を、特定した前記データ形式に変換するよう指示を与える、ステップを有する、
ことを特徴とする分散処理方法。
【請求項１０】
前記複数の実行サーバは、第１のデータ形式を利用可能な第１の機械学習エンジンを実行する実行サーバ群と、前記第１のデータ形式とは異なる第２のデータ形式を利用可能な第２の機械学習エンジンを実行する実行サーバ群とを含み、
前記第１の機械学習エンジンと前記第２の機械学習エンジンとは、互いに異なる機械学習ライブラリに属する、
請求項９に記載の分散処理方法。
【請求項１１】
（ｂ）前記複数の実行サーバそれぞれ毎に、当該実行サーバが保持するデータのデータ形式を、予め定められた共通形式に変換するよう指示を与える、ステップを更に有し、
前記（ａ）のステップにおいて、前記複数の実行サーバそれぞれ毎に、前記共通形式に変換されているデータのデータ形式を、特定した前記データ形式に変換するよう指示を与える、
請求項９または１０に記載の分散処理方法。
【請求項１２】
前記共通形式が、前記複数の実行サーバそれぞれで利用される機械学習エンジンにより用いられる、特徴量とラベルのみを含む、データ形式である、
請求項９に記載の分散処理方法。
【請求項１３】
（ｃ）前記複数の実行サーバによって実行される分散処理のタスク定義を受け付ける、ステップを更に有する、
請求項１１または１２に記載の分散処理方法。
【請求項１４】
（ｄ）前記複数の実行サーバそれぞれが、前記分散処理に用いるデータを予め保持している場合において、前記（ｃ）のステップで受け付けられた前記タスク定義に基づいて、前記複数の実行サーバそれぞれが保持すべきデータを決定し、前記複数の実行サーバそれぞれに対して、決定に応じたデータを保持するように、データの再配置を指示する、ステップを、更に有し、
前記（ｂ）のステップにおいて、前記複数の実行サーバそれぞれ毎に、再配置後のデータのデータ形式を、前記共通形式に変換させる、
請求項１３に記載の分散処理方法。
【請求項１５】
（ｅ）前記複数の実行サーバそれぞれ毎に、当該実行サーバで実行される機械学習エンジンを指定し、指定した機械学習エンジンを用いて学習モデルを生成するように指示を与える、ステップを、更に有し、
前記（ａ）のステップにおいて、前記複数の実行サーバそれぞれ毎に、当該実行サーバが保持するデータのデータ形式を、指定された機械学習エンジンで利用可能なデータ形式に変換するよう指示を与える、
請求項９〜１４のいずれかに記載の分散処理方法。
【請求項１６】
前記複数の実行サーバそれぞれにおいて、利用される前記機械学習エンジンが異なっており、更に、前記機械学習エンジン毎に利用可能なデータ形式も異なっている、
請求項９〜１５のいずれかに記載の分散処理方法。
【請求項１７】
コンピュータによって複数の実行サーバを用いた分散処理を行うためのプログラムであって、
前記コンピュータに、
（ａ）前記複数の実行サーバそれぞれ毎に、当該実行サーバで実行される機械学習エンジンが利用可能なデータ形式を特定し、当該実行サーバが保持するデータのデータ形式を、特定した前記データ形式に変換するよう指示を与える、ステップを実行させる、プログラム。
【請求項１８】
前記複数の実行サーバは、第１のデータ形式を利用可能な第１の機械学習エンジンを実行する実行サーバ群と、前記第１のデータ形式とは異なる第２のデータ形式を利用可能な第２の機械学習エンジンを実行する実行サーバ群とを含み、
前記第１の機械学習エンジンと前記第２の機械学習エンジンとは、互いに異なる機械学習ライブラリに属する、
請求項１７に記載のプログラム。
【請求項１９】
前記コンピュータに、
（ｂ）前記複数の実行サーバそれぞれ毎に、当該実行サーバが保持するデータのデータ形式を、予め定められた共通形式に変換するよう指示を与える、ステップを更に実行させ、
前記（ａ）のステップにおいて、前記複数の実行サーバそれぞれ毎に、前記共通形式に変換されているデータのデータ形式を、特定した前記データ形式に変換するよう指示を与える、
請求項１７又は１８に記載のプログラム。
【請求項２０】
前記共通形式が、前記複数の実行サーバそれぞれで利用される機械学習エンジンにより用いられる、特徴量とラベルのみを含む、データ形式である、
請求項１９に記載のプログラム。
【請求項２１】
前記コンピュータに、更に、
（ｃ）前記複数の実行サーバによって実行される分散処理のタスク定義を受け付ける、ステップを実行させる、
請求項１９または２０に記載のプログラム。
【請求項２２】
前記コンピュータに、更に、
（ｄ）前記複数の実行サーバそれぞれが、前記分散処理に用いるデータを予め保持している場合において、前記（ｃ）のステップで受け付けられた前記タスク定義に基づいて、前記複数の実行サーバそれぞれが保持すべきデータを決定し、前記複数の実行サーバそれぞれに対して、決定に応じたデータを保持するように、データの再配置を指示する、ステップを実行させる、
前記（ｂ）のステップにおいて、前記複数の実行サーバそれぞれ毎に、再配置後のデータのデータ形式を、前記共通形式に変換させる、
請求項２１に記載のプログラム。
【請求項２３】
前記コンピュータに、更に、
（ｅ）前記複数の実行サーバそれぞれ毎に、当該実行サーバで実行される機械学習エンジンを指定し、指定した機械学習エンジンを用いて学習モデルを生成するように指示を与える、ステップを実行させ、
前記（ａ）のステップにおいて、前記複数の実行サーバそれぞれ毎に、当該実行サーバが保持するデータのデータ形式を、指定された機械学習エンジンで利用可能なデータ形式に変換するよう指示を与える、
請求項１７〜２２のいずれかに記載のプログラム。
【請求項２４】
前記複数の実行サーバそれぞれにおいて、利用される前記機械学習エンジンが異なっており、更に、前記機械学習エンジン毎に利用可能なデータ形式も異なっている、
請求項１７〜２３のいずれかに記載のプログラム。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】０００１
【補正方法】変更
【補正の内容】
【０００１】
本発明は、分散処理基盤を構成する分散処理システム、分散基盤において実行サーバを管理するための分散処理管理装置、及び分散処理方法に関し、更には、これらを実現するためのプログラムに関する。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００１０
【補正方法】変更
【補正の内容】
【００１０】
本発明の目的の一例は、上記問題を解消し、分散処理基盤において、ユーザにおける負担の増大を軽減しつつ、複数の機械学習ライブラリの利用を可能にし得る、分散処理管理装置、分散処理方法、及びプログラムを提供することにある。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００１３
【補正方法】変更
【補正の内容】
【００１３】
更に、上記目的を達成するため、本発明の一側面におけるプログラムは、コンピュータによって複数の実行サーバを用いた分散処理を行うためのプログラムであって、
前記コンピュータに、
（ａ）前記複数の実行サーバそれぞれ毎に、当該実行サーバで実行される機械学習エンジンが利用可能なデータ形式を特定し、当該実行サーバが保持するデータのデータ形式を、特定した前記データ形式に変換するよう指示を与える、ステップを実行させる、プログラム。
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】０１０２
【補正方法】変更
【補正の内容】
【０１０２】
（付記１７）
コンピュータによって複数の実行サーバを用いた分散処理を行うためのプログラムであって、
前記コンピュータに、
（ａ）前記複数の実行サーバそれぞれ毎に、当該実行サーバで実行される機械学習エンジンが利用可能なデータ形式を特定し、当該実行サーバが保持するデータのデータ形式を、特定した前記データ形式に変換するよう指示を与える、ステップを実行させる、プログラム。
【手続補正７】
【補正対象書類名】明細書
【補正対象項目名】０１０３
【補正方法】変更
【補正の内容】
【０１０３】
（付記１８）
前記複数の実行サーバは、第１のデータ形式を利用可能な第１の機械学習エンジンを実行する実行サーバ群と、前記第１のデータ形式とは異なる第２のデータ形式を利用可能な第２の機械学習エンジンを実行する実行サーバ群とを含み、
前記第１の機械学習エンジンと前記第２の機械学習エンジンとは、互いに異なる機械学習ライブラリに属する、
付記１７に記載のプログラム。
【手続補正８】
【補正対象書類名】明細書
【補正対象項目名】０１０４
【補正方法】変更
【補正の内容】
【０１０４】
（付記１９）
前記コンピュータに、
（ｂ）前記複数の実行サーバそれぞれ毎に、当該実行サーバが保持するデータのデータ形式を、予め定められた共通形式に変換するよう指示を与える、ステップを更に実行させ、
前記（ａ）のステップにおいて、前記複数の実行サーバそれぞれ毎に、前記共通形式に変換されているデータのデータ形式を、特定した前記データ形式に変換するよう指示を与える、
付記１７又は１８に記載のプログラム。
【手続補正９】
【補正対象書類名】明細書
【補正対象項目名】０１０５
【補正方法】変更
【補正の内容】
【０１０５】
（付記２０）
前記共通形式が、前記複数の実行サーバそれぞれで利用される機械学習エンジンにより用いられる、特徴量とラベルのみを含む、データ形式である、
付記１９に記載のプログラム。
【手続補正１０】
【補正対象書類名】明細書
【補正対象項目名】０１０６
【補正方法】変更
【補正の内容】
【０１０６】
（付記２１）
前記コンピュータに、更に、
（ｃ）前記複数の実行サーバによって実行される分散処理のタスク定義を受け付ける、ステップを実行させる、
付記１９または２０に記載のプログラム。
【手続補正１１】
【補正対象書類名】明細書
【補正対象項目名】０１０７
【補正方法】変更
【補正の内容】
【０１０７】
（付記２２）
前記コンピュータに、更に、
（ｄ）前記複数の実行サーバそれぞれが、前記分散処理に用いるデータを予め保持している場合において、前記（ｃ）のステップで受け付けられた前記タスク定義に基づいて、前記複数の実行サーバそれぞれが保持すべきデータを決定し、前記複数の実行サーバそれぞれに対して、決定に応じたデータを保持するように、データの再配置を指示する、ステップを実行させ、
前記（ｂ）のステップにおいて、前記複数の実行サーバそれぞれ毎に、再配置後のデータのデータ形式を、前記共通形式に変換させる、
付記２１に記載のプログラム。
【手続補正１２】
【補正対象書類名】明細書
【補正対象項目名】０１０８
【補正方法】変更
【補正の内容】
【０１０８】
（付記２３）
前記コンピュータに、更に、
（ｅ）前記複数の実行サーバそれぞれ毎に、当該実行サーバで実行される機械学習エンジンを指定し、指定した機械学習エンジンを用いて学習モデルを生成するように指示を与える、ステップを実行させ、
前記（ａ）のステップにおいて、前記複数の実行サーバそれぞれ毎に、当該実行サーバが保持するデータのデータ形式を、指定された機械学習エンジンで利用可能なデータ形式に変換するよう指示を与える、
付記１７〜２２のいずれかに記載のプログラム。
【手続補正１３】
【補正対象書類名】明細書
【補正対象項目名】０１０９
【補正方法】変更
【補正の内容】
【０１０９】
（付記２４）
前記複数の実行サーバそれぞれにおいて、利用される前記機械学習エンジンが異なっており、更に、前記機械学習エンジン毎に利用可能なデータ形式も異なっている、
付記１７〜２３のいずれかに記載のプログラム。
【国際調査報告】
2019082982.tif 000018
2019082982.tif 000019