本発明の様々な実施形態の記載は、例示のために提示するが、網羅的であることも、開示する実施形態に限定されることも意図していない。記載する実施形態の範囲から逸脱することなく、当業者には多くの変更および変形が明らかであろう。本明細書において用いる用語は、実施形態の原理、実際的な用途、もしくは市場に存在する技術に対する技術的な改良を最も良く説明するため、または、本明細書に開示する実施形態を当業者が理解することを可能とするために、選択したものである。
実施形態は、マップ・リデュース・フレームワークを利用し、スイープ動作を用いることによって、k個の予測子について2kの可能な回帰モデルを計算する。実施形態は、多数のノード(マッパー)を用いてローカル回帰モデル(例えばローカル最良回帰モデル)を並列に計算し、次いで1つのノード(リデューサー)を用いて多数のノードからの結果を組み合わせて、ローカル回帰モデルから1つのグローバル回帰モデル(例えばグローバル最良回帰モデル)を選択する。実施形態は、グローバル検索シーケンスを多数のローカル検索シーケンスに体系的に分解し、これらのローカル検索シーケンスは多数のノード上で別個に実行することができる。ローカル検索シーケンスは、グローバル検索シーケンスからのサブシーケンスと呼ぶことができる。
ノードは、クラスタ内の1つの中央処理装置(CPU)コアに関連付けた実行ユニットと呼ぶことができる。クラスタは、多数のノードを有するものと説明することができ、これらのノードは同一または異なるコンピュータ上に存在し得る。いくつかの実施形態において、1つのノードは1つのマップまたはリデュースのタスクを実行することができる。
いくつかの実施形態において、多数のマッパーおよび単一のリデューサーが、多数のCPUコアを有する単一のコンピュータ/マシン上で動作することができる。いくつかの実施形態では、多数のマッパーおよび単一のリデューサーが異なるコンピュータ/マシン上で動作することができる。
実施形態は、グローバル検索シーケンス/空間を、M(=2m)個(m<k−1)のローカル検索シーケンス/空間に分解し、2k−mのスイープピボットのローカル検索シーケンス上でスイープ動作を適用し、これによって2k−mの回帰モデルを得る。ピボットは、スイープ動作が適用される行列の特定の対角成分に相当する。そして、実施形態は、M個のマッパーにおいて並列にローカル回帰モデルを見出し、1つのリデューサーを用いてそれらのマッパーからの結果を組み合わせてグローバル回帰モデルを見出す。図1は、いくつかの実施形態に従ったマップ・リデュース・フレームワーク100を示す。いくつかの実施形態において、計算アーキテクチャを用いて、マップ・リデュース・フレームワーク100における全ての可能な回帰モデルを計算する。マップ・リデュース・フレームワーク100は、入力としてグローバル検索空間110を受信し、グローバル回帰モデル160を出力する。マップ・リデュース・フレームワーク100は、マッパー120、130、...140、およびリデューサー150を含む。グローバル検索空間110は、複数のローカル検索空間に分割される。各マッパー120、130、...140は、1つのローカル検索空間を受信し、1つのローカル回帰モデルをリデューサー150に出力する。リデューサー150は、各マッパー120、130、...140からのローカル回帰モデルを用いてグローバル回帰モデルを識別し、これがグローバル回帰モデル160として出力される。
実施形態は、回帰モデル解決策を講じるにあたってマップ・リデュース・フレームワーク100を活用する。また、実施形態はスイープ動作を用いる。
スイープ動作
単に実施形態の理解を深めるためであるが、ここでスイープ動作の特性について述べる。
回帰モデルにおいて、予測子は、連続フィールドまたはカテゴリ・フィールドである場合がある。カテゴリ・フィールドは、有限数の名目カテゴリまたは序数カテゴリを値として有するものと呼ぶことができる。パラメータ化技法に基づいて、J個のカテゴリを有する各カテゴリ予測子をJ個のダミー変数によって拡張することができ、従って、回帰モデルにおいては1つのカテゴリ予測子に対応するJ個の係数がある。
予測子X行列にk個の効果(effects)があると仮定する。k個の効果は連続予測子およびカテゴリ予測子の双方を含み得るので(実際、k個の効果の一部はいくつかの予測子の組み合わせであり得るが、簡単にするためにかつ一般性を失うことなく、それらは除外されるので、k個の効果はk個の予測子とする)、回帰モデルにおける係数の数、例えばpは、kよりも大きくなり得る。標準方程式
に基づいて、回帰係数
には閉形式解がある。ここでYはn×1ベクトルであり、nはレコード数であり、Xはk個の予測子から導出されたn×p行列であり、
は係数推定値のp×1ベクトルである。
を得るための技法がスイープ動作である。スイープ動作は以下のように機能する。すなわち、交差積(p+1)×(p+1)行列
で、第1のp個のピボットまたはピボット要素についてスイープを行い、その結果が以下である。
ここで、残差平方和(SSE)は、回帰モデルを選択する際に用いる基準の計算において通常必要となる残差平方和である。一般に、第1のp個のピボット要素のいずれかのサブセットについてCをスイープすると、Xのそのサブセットに対するYの回帰に相当する回帰係数の推定値が得られる。
スイープ動作には2つの特性がある。すなわち、(1)可逆的である(同一のピボット要素を用いた2回の連続スイープはヌル動作と同じである)、および(2)可換である(r番目のピボット要素に、次いでs番目のピボット要素についてスイープを行うと、逆の順序のスイープと同じ結果が得られる)。これらの特性を利用して、(連続予測子について)特定の行および列に、または(カテゴリ予測子に対応するJ個のダミー変数の集合について)Cの特定のJ個の行および列の集合に、スイープ動作をそれぞれ適用すると、適合した回帰モデルに予測子が導入されるか、または、予測子がすでにモデル内に存在する場合は予測子が除去される。すなわち、1つの予測子に対する各スイープ動作によって1つの回帰モデルが得られる。いくつかの実施形態では、以下のように、2k−1のスイープ動作のシーケンスによって、可能な2k−1の回帰を得ることができる。
・k=1である場合、2k−1=1であり、第1の予測子に対応するピボット要素(複数のピボット要素)についてスイープを行うことで単一の回帰を実行する。ピボットのシーケンスはS1={1}である。
・k=2である場合、第1の予測子についてスイープを行うことで第1の回帰を実行する。そして、第2の予測子についてスイープを行うと、第1および第2の予測子の双方を含む新しい回帰が生成される。次に再び第1の予測子についてスイープを行うと、第1の予測子は削除され、第2の予測子のみを含む回帰が生成される。ピボットのシーケンスS2={121}についてC行列をスイープすることで、全ての2k−1=3の回帰モデルが生成される。
・k=3である場合、シーケンスS2において第1の回帰が3つ得られる。そして、第3の予測子についてスイープを行うと、シーケンスS2により生成された回帰に第3の予測子を追加した新しい回帰が生成される。シーケンスS2は、第3の予測子を含まない3つの別個の回帰を生成したので、シーケンスS2を繰り返すと、第3の予測子を含む別の3つの回帰が生成される。次いで、ピボットのシーケンスS3={S2,3,S2}={1213121}についてC行列をスイープすることで、2k−1=7の回帰モデルが生成される。
・第1のk−1個の予測子のシーケンスSk−1で、k−1個の予測子に対する全ての2k−1の可能な回帰が得られると想定する。そして、k番目の予測子についてスイープを行うと、シーケンスSk−1により生成された回帰モデルにk番目の予測子を追加した新しい回帰モデルが生成される。次いでシーケンスSk−1を繰り返すと、k番目の予測子を含む別の2k−1の別個の回帰モデルが生成される。従って、ピボットのシーケンスSk={Sk−1,k,Sk−1}についてC行列をスイープすることで、2k−1の回帰モデルが生成される。
図2は、いくつかの実施形態に従った回帰モデルのシーケンスを表200で示す。図2において、Slは、ピボットとされる予測子の指数を識別する。図2において、3列目の各カッコは回帰モデルを表す。カッコ内の数は、その回帰モデルに含まれる予測子を示す。
表200から、4個の予測子のシーケンスは、S4={121312141213121}(2列目)と表され、15の回帰モデルを生成する(3列目)(インターセプトのみの回帰モデルが含まれる場合は回帰モデルは16である)。検索シーケンスのサイズは15である。
シーケンスS
k、すなわち
等を構築するための1つの技法は帰納的プロセスであり、2
k−1の回帰モデルを順次生成することができる。一方、シーケンスS
kをいくつかのサブシーケンスに分解可能であることは容易に理解でき、その後に各サブセットから2
k−1の回帰モデルのサブセットを生成することができる。例えば、シーケンス
を4個のサブシーケンスまたはローカル・シーケンスに分解すると、{121}、{3121}、{34121}、{4121}であり、これら4つのサブシーケンスによって15の回帰モデルを並列に生成することができる。
回帰モデル
スイープ動作を用いて回帰モデルを発生させるため、実施形態は最初に、XおよびYに基づいた(p+1)×(p+1)行列である交差積行列Cを計算する。この計算は、大きい分散データ・ソースのためのマップ・リデュース・フレームワークにおいて行われる。次いで、2kの回帰モデルの計算により、C行列に繰り返しスイープ動作を適用する。このような計算はデータ・ソースに基づかないので、典型的なマップ・リデュース・ジョブではない。従って実施形態は、2kの回帰モデルを計算するために、マップ・リデュース・フレームワークにおける並列計算の潜在機能を活用する。
実施形態では、(1)クラスタ内の利用可能ノードを充分かつ効果的に利用するために適正な数のマッパーを指定し、(2)2kの回帰モデルのサブセットを正しく実行するために最少量の入力を各マッパーに供給する。
Lは、分散クラスタにおいて利用可能な中央処理装置(CPU)コアの数であり、既知であると仮定すると、マッパーまたは実際のサブタスクの数Mは、以下の2つのルールに基づいて指定される。
(a)M≦L いくつかの実施形態では、効率を上げるためにこれを用いる。代替的な実施形態では、M>Lを用いる。
(b)M=2m、m<k−1 各ローカル検索シーケンスのサイズが2k−mであると、M個のマッパーは2kの回帰モデルをカバーすることができる。
典型的なマップ・リデュース・ジョブにおいて、マッパーに対する入力はスプリット/ブロックからのデータであるので、データ・スプリットの数がマッパーの数を決定する。スプリットは、固定サイズの部分に分割される大きいデータセットのサブセットと称することができる。例えば実施形態は、各スプリットに1つのマップタスクを生成し、スプリット内の各レコードでユーザ指定のマップ機能を実行する。いくつかの実施形態では、ほとんどのジョブについて、良好なスプリット・サイズは、Hadoop分散ファイル・システム(HDFS)ブロックのサイズである傾向があり、デフォルトで64MBであるが、これはクラスタのために(全ての新しく生成されたファイルについて)変更したり、各ファイルを生成する際に指定したりすることができる。
ここでの2kの回帰モデルの計算は、元のデータ・スプリットに基づいていない。代わりに実施形態は、M行を有する一時的な入力ファイルを生成し、スプリット・サイズを1行のサイズとして構成することでM個のスプリットを生成し、M個のマッパーを導出することによって、M個のマッパーが存在するように制御を行うことができる。
一時的な入力ファイル内の1行の情報は、1つの入力スプリットおよび1つのマッパーに送信される。この行の情報はローカル検索シーケンスを含み、これはマッパーに対して、回帰モデルのシーケンスを得るためにどのようにスイープ動作の順序を適用するかを教える。ローカル検索シーケンスは、マッパーによって異なり、ローカル・シーケンスを組み合わせることで2kの可能な回帰モデルが生成されるようになっている。いくつかの実施形態では、異なるマッパーにローカル検索シーケンス全体をそれぞれ送信すると、kが大きい場合はネットワーク・トラフィックが増大する可能性がある。このため実施形態は、異なるマッパーに、各ローカル検索シーケンスの一部分(すなわち先行インデックス・シーケンス)を送信することで、ネットワーク・トラフィックを軽減する。これが実行可能である理由は、ローカル検索シーケンスを2つの部分、すなわち(i)「共通インデックス・シーケンス」および(ii)「先行インデックス・シーケンス」に、更に分解可能であるからである。
共通インデックス・シーケンスは、全てのローカル検索シーケンスについて同一であり、同じ予測子グループ(「共通インデックス予測子」と呼ばれる)に関連付けられているので、共通インデックス・シーケンスは、ネットワークを介して送信されずに、各マッパー内で発生させることができる。
先行インデックス・シーケンスは、ローカル検索シーケンスによって異なり、異なる予測子(「先行インデックス予測子」と呼ばれる)に関連付けられているので、それらの各々は異なるマッパーに送信される。いくつかの実施形態では、先行インデックス・シーケンスは共通インデックス・シーケンスよりも著しく小さいので、(先行インデックス・シーケンスおよび共通インデックス・シーケンスの双方でなく)先行インデックス・シーケンスのみを送信することで、ネットワーク・トラフィックを軽減することができる。
異なるマッパーに送信される個々の情報の他に、入力の第2の部分は、全てのマッパーについて同一であり、交差積行列C、共通インデックス予測子等を含む。共通インデックス・シーケンスは、共通インデックス予測子に基づいて各マッパー内で発生させることができる。
マップ・リデュース・フレームワークを利用する実施形態は、はるかに多くの予測子を用いて全ての可能な回帰モデルを実行するか、または固定数の予測子について性能を向上させることができる。従って、実施形態はスケーラブルであり、予測子の数kが大きい場合に最良回帰モデルを見出す能力が向上する。実施形態は、マッパーの数を制御することで高効率となり、ネットワークを介して伝達する情報のサイズを縮小する。実施形態は、マッパー間に作業負荷を均等に分散することができるので、バランスがとれる。
実施形態は、マップ・リデュース・フレームワーク100内に2kの可能な回帰モデルの計算を適合させるために、2つの部分から成る。すなわち、(1)M=2mのマッパーの各々が、2kの可能な回帰モデルのサブセットを実行するための命令を受信し、ローカル回帰モデルをリデューサーに送信する、および(2)リデューサーが、(例えば分散ファイル・システムに)出力するグローバル回帰モデルを見出すために、ローカル回帰モデルを選択する。回帰モデルは、他のいずれかの予測モデルと同様、ターゲットと予測子集合との間の関係の予測または発見あるいはその両方、および解釈を行うために用いることができる。
実施形態は、マップ・リデュース・フレームワーク100および分散ファイル・システム(例えばHadoop分散ファイル・システム(HDFS)によって実施することができる。図3は、いくつかの実施形態に従った、可能な回帰モデルを計算するためのプロセス全体を示す。いくつかの実施形態では、全ての可能な回帰モデルを計算する。図3は、ローカル・ファイル・システム300、分散ファイル・システム310、およびマップ・リデュース・ジョブ330を含む。
ローカル・ファイル・システム300は、(1)先行インデックス・シーケンスである固有入力情報、(2)共通インデックス予測子、C行列、および他の入力(例えばレコード数)を含む共有入力情報、ならびに(3)分散ファイル・システム310内で共有入力情報の位置を識別する共有入力情報に対する参照、を記憶している。いくつかの実施形態では、この参照はURI(Uniform Resource Identifier)であり、分散ファイル・システム310内で共有入力情報の名前またはリソースを識別するために用いられる文字列である。分散ファイル・システム310は、(1)スプリット1、スプリット2、...スプリットM(M行)を含む一時ファイル(各スプリットが固有先行インデックス・シーケンスおよび共有入力情報に対する参照を含む)、ならびに(2)ローカル・ファイル・システムからアップロードされた共有入力情報、を含む。マップ・リデュース・ジョブ330は、マッパー1 332、マッパー2 334、...マッパーM 336、およびリデューサー338を含む。
共有入力情報は、ローカル・ファイル・システム300から分散ファイル・システム310にアップロードされる。同時に、分散ファイル・システム内の共有入力情報に対する参照が記録される。次いで、分散ファイル・システム310において、M行を有する一時ファイルが生成される。一時ファイルの1行内に、1つの先行インデックス・シーケンスおよび共有入力情報に対する参照が書き込まれる。一時ファイルの1行のサイズとして1つの入力スプリットのサイズが構成され、これは、指定数(M)のマッパーによるマップ・リデュース・ジョブを駆動するために用いられる。従って、1行は1つのスプリットおよび1つのマッパーに対応する。マッパー332、334、...336が駆動されると、マッパー332、334、...336は、各入力スプリット内の内容を抽出する。マッパー332、334、...336は、参照によって分散ファイル・システム310内の共有入力情報の位置を識別し、共有入力情報をそのローカル・ファイル・システムにダウンロードする。固有先行インデックス・シーケンスおよび共有入力情報を用いて、マッパーはローカル検索を実行し、ローカル回帰モデルを発生させ、これがリデューサー338に出力される。リデューサー338は、マッパー332、334、...336からのローカル回帰モデルからの結果を比較し、グローバル回帰モデルを分散ファイル・システム350に出力する。いくつかの実施形態では、分散ファイル・システム310、350は同一の分散ファイル・システムであり、他の実施形態では、分散ファイル・システム310、350は異なる分散ファイル・システムである。
いくつかの実施形態においては、参照を一時ファイルに記憶する必要はない。いくつかの実施形態では、参照は、構成のインスタンスにプロパティとして記憶し、Hadoopフレームワーク内の構成アプリケーション・プログラミング・インタフェース(API)を介して各マッパーに渡すことができる。次いで、全てのマッパーがこの参照を受信し、HDFSにおいてどこで共有入力情報を抽出するかを知る。他の実施形態では、参照は記憶され、マップ・リデュース・フレームワークのための一時ファイルを介して渡される。
分散クラスタにおいて利用可能なCPUコアの数Lが与えられると共に、k個の予測子の指数(1、...、kと表される)が与えられると、マッパーの数Mは、M≦LおよびM=2mと指定することができる(m<k−1)。k個の予測子は、m個の先行インデックス予測子およびk−m個の共通インデックス予測子に分割することができる。2kのサイズのグローバル検索シーケンスは、2k−mのサイズのM個のローカル検索シーケンスに分解されて、各マッパーにおいて2k−m個の回帰モデルを生成する。
典型的なマップ・リデュース・ジョブにおいて、入力は分散ファイル・システムに記憶されたデータセットである。多数のノードに計算を分散させるため、データは多数のピースに分割され、各ピースは入力スプリットと呼ばれる。デフォルトの入力スプリット・サイズは、分散ファイル・システムのデフォルトのブロック・サイズである。このため、マッパーの数は、入力データセットのデータ・ブロック数によって決定される。換言すると、マッパーの数は入力データのボリュームによって決定される。すなわち、データセットが大きくなればなるほどマッパーの数が増える。
実施形態では、2kの回帰モデルの計算は元のデータ・スプリットに基づかないので、実施形態は、駆動される指定マップ・リデュース・ジョブにおけるマッパーの数を制御するために、M行の一時入力ファイルを生成し、入力スプリット・サイズを1行のサイズとして再構成する。1行の内容を1つのマッパーに送信して、2k−mの回帰モデルを生成する。行の内容の候補として当然のものはローカル検索シーケンスである。しかしながら、kが大きいと、ローカル検索シーケンスのサイズ(2k−m)はまだ大きいことがある。従って実施形態は、各行にローカル検索シーケンスの小さい一部分(すなわちmの先行インデックス予測子に基づいて発生させた先行インデックス・シーケンス)を含む。ローカル検索シーケンスの他の部分(すなわちk−mの共通インデックス予測子に基づいて発生させた共通インデックス・シーケンス)は、各マッパー内で発生させる。一般に、kが大きい場合、先行インデックス・シーケンスのサイズ(m)は共通インデックス・シーケンスのサイズ(2k−m−1)より小さく、従って、先行インデックス・シーケンスのみを異なるマッパーに送信することで、ネットワーク・トラフィックが著しく軽減する。
マップ・リデュース・ジョブを駆動する前に、先行インデックス・シーケンスおよび共有入力情報に対する参照を、M行の単一ファイルに書き込む。各行が、1つの先行インデックス・シーケンスおよび共有入力情報に対する参照を表す。それらの先行インデックス・シーケンスのための空間を小さいサイズにすることで、各行の長さを同一に保つ。ファイルは、マッパーの入力として分散ファイル・システムにセーブされる。入力スプリット・サイズは1行のサイズとして構成されるので、M行の入力ファイルからM個のスプリットを導出することができ、M個のスプリットはM個のマッパーを決定する。更に、1行に対応するように入力キー/値を定義する。キーは行のオフセットであり、値はファイル内の対応する行の内容である。従って、各マッパーは1つのキー/値対を受信し、次いで1つの固有先行インデックス・シーケンスおよび共有入力情報に対する参照を抽出する。
入力の第2の部分は、マッパーのための共有(同一)入力情報である。入力の第2の部分は、(1)ピボットとしての先行インデックス・シーケンスおよび共通インデックス・シーケンスに従ってC行列にスイープ動作を適用することによって異なる回帰モデルを発生するために用いられるC行列、(2)(SSEに加えて)基準値を計算するために用いられるレコードの数、ならびに(3)マッパー内で共通インデックス・シーケンスを発生するために用いられる共通インデックス予測子のリスト、を含む。共有入力情報がネットワーク内で正しく伝送されることを保証するため、共有入力情報は、ファイル(またはファイル・ストリーム)内にシリアル化し、分散ファイル・システムに記憶することができる。次いで、全てのマッパーは、共有入力情報に対する参照によって、分散ファイル・システムからマッパー内のローカル・システムに共有入力情報をコピーすることができる。
入力のこれら2つの部分を用いて、各マッパーは以下のタスクを実行する。すなわち、(1)そのマッパーに割り当てられた先行インデックス・シーケンス全体についてC行列にスイープ動作を適用して、1つの回帰モデルと、結果として得られるC行列(C*である)とを生成する。(2)共通インデックス予測子に基づいて共通インデックス・シーケンスを発生させる。(3)順次、共通インデックス・シーケンスに従ってC*行列内のピボットについてスイープして、2k−m−1の回帰モデルを生成する。(4)2k−mの回帰モデルから基準値に基づいてローカル回帰モデルを見出す(例えば基準が自由度調整済み決定係数である場合、最大の自由度調整済み決定係数を有するローカル回帰モデルを選択する)。(5)ローカル回帰モデルにキーを割り当て、ローカル回帰モデルの結果を値として指定する。(6)出力キー/値の対を介してローカル回帰モデルをリデューサーに渡す。
リデューサーは、入力キー/値の対を介してローカル回帰モデルを集めて、M個の回帰モデル間でグローバル回帰モデルを見出し、このグローバル回帰モデルを、出力キー/値の対を介して分散ファイル・システムにエクスポートする。マッパー、リデューサー、および分散ファイル・システム間で回帰モデルを受け渡しするため、マッパーの出力キー/値の対ならびにリデューサーの入力および出力キー/値の対は同じタイプとして定義することができる。1つのキー/値の対は1つの回帰モデルに対応し、キーは1つの回帰モデルの識別子(ID)として定義され、値は回帰モデルの関連する結果として定義される。
分散コンピューティングも並列コンピューティングも行わずに可能な回帰モデルを実行する時間計算量(time complexity)は、k個の予測子でO(2k)である。一方、M個のマッパーを用いた同じ計算の時間計算量は約O(2k−m)であり、リデューサーの時間計算量は約O(M)である。従って、マップ・リデュース・フレームワークにおける全体的な時間計算量は、約O(2k−m)+O(M)≒O(2k−m)である。マッパーの数が増えれば増えるほど、性能は向上する。
m個の先行インデックス予測子およびk−m個の共通インデックス予測子を含むk個の予測子があると仮定する。事前順序付け(pre-ordering)動作を実行する。すなわち、まず、連続予測子(1つのカテゴリを有する)を選択し、次いで、カテゴリ予測子をカテゴリ数の昇順にソートする。一般性を失うことなく、実施形態は、k個の事前順序付け予測子の指数を1、...、kに割り当てるので、予測子kはカテゴリ数が最大となる。更に、最初のk−m個の事前順序付け予測子を共通インデックス予測子に割り当て、最後のm個の予測子を先行インデックス予測子に割り当てる。この動作によって、2kの回帰モデルを実行するために用いるスイープ動作数が最小限に抑えられることが確実となる。
M=2m個のマッパーを指定すると仮定する。2kのサイズのグローバル検索シーケンスは、2k−mのサイズのM個のローカル検索シーケンスに分解され、各ローカル検索シーケンスは、更に2つの部分に分解される。すなわち、(1)k−m個の共通インデックス予測子に関連付けられ、全てのマッパーについて同一である「共通インデックス・シーケンス」、および(2)m個の先行インデックス予測子に関連付けられ、マッパーによって異なる「先行インデックス・シーケンス」である。上述したスイープ動作のための帰納的技法に基づいて、共通インデックス・シーケンスはk−m個の共通インデックス予測子から導出され、2k−m−1のサイズのSk−mである。先行インデックス・シーケンスの集合は、全てのl(l=0、...、m)についてm個の先行インデックス予測子のlの組み合わせの集合として構築されるので、それらは2mとなり、M=2m個のマッパーに送信される。このため、任意の先行インデックス・シーケンスの最大サイズはmであり、kが大きい場合は共通インデックス・シーケンスのサイズ(2k−m−1)より小さい。そして、先行インデックス・シーケンスをマッパーに送信し、各マッパー内で共通インデックス・シーケンスを発生させることによって、ネットワーク・トラフィックを軽減することができる。
図4は、いくつかの実施形態に従ったローカル・シーケンスの一例を示す。単に理解を深めるため、本明細書に一例を提供する。この例は、5個の予測子および4個のマッパーを有し、ローカル検索シーケンス、先行インデックス・シーケンス、および共通インデックス・シーケンスについて示すと共に、それらの対応するサイズを示す。
実施形態を用いず、並列コンピューティングを利用しない状況において、5個の予測子があり、グローバル検索シーケンスを、{1213121412131215121312141213121}として発生させて、32=25の回帰モデルを順次生成する。
図4において、パネル400は並列コンピューティングを利用する状況を示す。5個の予測子は事前順序付けされ、先行インデックス予測子4、5と共通インデックス予測子1、2、3とに分割されている。先行インデックス・シーケンス集合は、先行インデックス予測子4および5のうち0個、1個、および2個の組み合わせの集合である。すなわち、{0}(スイープ動作を行わないことを意味する)、{4}、{5}、および{45}であるので、最大サイズは2である。先行インデックス・シーケンスは、{00}{40}{05}{45}と書かれ、一次入力ファイルの4つの行で同一のサイズを保つことができる。共通インデックス・シーケンスは、S3={1213121}であるので、サイズは7である。次いで4個のローカル・シーケンスを構築する。各ローカル・シーケンスは、1つの先行インデックス・シーケンス(1つの回帰モデルを生成する)および共通インデックス・シーケンス(7個の回帰モデルを生成する)を有し、4個のローカル・シーケンスが32の回帰モデルを並列に生成するようになっている。
先行インデックス・シーケンスまたは共通インデックス・シーケンスにおける1つの値は、(連続予測子について)特定の行および列に、または(カテゴリ予測子に対応するJ個のダミー変数の集合について)特定のJ個の行および列の集合に、スイープ動作を適用することを示す。4個のローカル・シーケンスにおいて、共通インデックス予測子1、2、および3は、それぞれ16回、8回、および4回現れるので、それらにスイープ動作はそれぞれ16回、8回、および4回適用される。先行インデックス予測子4および5は2回現れ、2回スイープされる。予測子1が連続予測子である場合、スイープ動作数は16である。しかし、予測子1がJ個のカテゴリを有するカテゴリ予測子である場合、その数は16Jになる。このように、事前順序付け予測子動作を実行して、スイープ動作の合計数が最小限であり、ある程度の計算時間を節約可能であることを保証する。
図4の例は、共通インデックス・シーケンスのサイズ(2k−m−1)が通常は先行インデックス・シーケンスのサイズ(m)より大きいことを明示している。また、図4は、先行インデックス・シーケンス(および共通インデックス・シーケンスでない)が、M行の一時入力ファイルに含まれて異なるマッパーに送信された場合、ネットワーク・トラフィックが軽減される(共通インデックス・シーケンスを送信しないので)ことを示す。更に図4の例に示すように、事前順序付け動作が、実行するスイープ動作数を最小限に抑えることができる。
実施形態は、マップ・リデュース特性を利用して、(a)マップ・リデュース・フレームワークを構成するためのM行の入力ファイルを生成して、この入力ファイルをM個の入力スプリットに設定し、次いでこれを用いて指定されたマップ・リデュース・ジョブのためのM個のマッパーを導出し、(b)入力を、2つの部分、すなわち、キー/値の対によってパースされて正しい命令が各マッパーに送信されるようになっている、共有入力情報に対する参照と一緒になった個別情報と、ファイルにシリアル化されることで情報がネットワークを介してマッパーによって正しく引き出されるようになっている共有情報と、に分割し、更に、(c)各マッパーの出力ならびにリデューサーの入力および出力のためのキー/値の対を同じタイプで定義することで、選択された回帰モデルをネットワーク内で正しく伝達可能とする。
実施形態は、マッパーに先行インデックス・シーケンスを送信するが、共通インデックス・シーケンスは送信しないので、(a)先行インデックス・シーケンス集合が、全てのl(l=0、...、m)についてm個の先行インデックス予測子のl個の組み合わせの集合である場合、(b)いくつかのカテゴリ予測子が存在する場合に事前順序付け動作によってカテゴリ予測子を先行インデックス予測子に割り当て、最小数のスイープ動作を実行することを保証した場合、ネットワーク・トラフィックを軽減することができる。
図5は、いくつかの実施形態に従ったマップ・リデュース・フレームワーク実施の一例を示す。図5は、図4を参照して検討したものと同じ例を参照して検討する。この場合も、この例では、5個の予測子および4個のマッパーがあると想定する。図5は、ローカル・ファイル・システム500、分散ファイル・システム510、およびマップ・リデュース・ジョブ530を含む。
予測子1、2、および3は共通インデックス予測子であり、対応する共通インデックス・シーケンスは{1213121}である。図5では、共通インデックス予測子のみを4個のマッパー全てに送信し、次いで共通インデックス予測子に基づいて各マッパーによって共通インデックス・シーケンスを発生させる。
予測子4および5は先行インデックス予測子であるが、対応する先行インデックス・シーケンスは異なるので、マッパーに送信される入力が異なるようになっている。図5のマップ・リデュース・フレームワークでは、先行インデックス・シーケンスは{0}、{4}、{45}、{5}であり、それらはファイル内に4行として含まれてマッパーに送信され、次いで各マッパーは1つの特定のシーケンスに対してC行列をスイープして、結果としてC*行列を得る。
マップ・リデュース・フレームワークでは、各マッパーは8個の回帰モデルを生成し、1つのローカル回帰モデルを選択し、次いで4個のマッパーからのローカル回帰モデルがリデューサーに送信され、リデュースサーはグローバル回帰モデルを選択し、これが分散ファイル・システムに送信される。
マップ・リデュース・フレームワークは、2kの回帰モデルを実行するためにクラスタ内でいかなる数のノードも利用可能であるので、スケーラブルである。
図6Aおよび図6Bは、マップ・リデュース・フレームワークにおいて並列計算の潜在能力を利用するために、マップ・リデュース・フレームワークを用いて元のデータセットにタスクを実行するための動作をフロー図で示す。いくつかの実施形態では、タスクは、C行列をスイープして全ての可能な2kの回帰モデルを計算することによって線形回帰モデルを選択することである。このような実施形態では、C行列が元のデータセットである。
制御はブロック600において開始し、元のデータセットの少なくとも1つの特徴に基づいて、タスクの潜在的サブタスクの最大数Nを計算する。いくつかの実施形態では、タスクの潜在的サブタスクの最大数はN=2kである。可能な回帰モデルを計算するための元のデータセットの特徴は、kに関連するC行列(元のデータセット)の次元である。C行列はXおよびYに基づいて構築され、Xにおける予測子数がkであるからである。
ブロック602において、利用可能なマッパーの数Lを決定する。いくつかの実施形態では、数Lはクラスタ内で利用可能なCPUコアの数である。
ブロック604において、LおよびNに基づいて、実際のサブタスクTの数Mを計算する。ここで、各サブタスクはT1、...、TMとして識別される。各サブタスク(Ti)は、マッパーが2k−mの回帰モデル間でローカル線形回帰モデルを見出そうとすることにより実行される。
いくつかの実施形態では、実際のサブタスクの数MはM=2mであり、m<k−1であるので、M<N(=2k)である。更に、実際のサブタスクの数Mは、効率を上げるために、マッパーの数L以下に指定される(すなわちM≦L)。従って、ほとんどの状況では、M、L、およびN間の関係は、M≦L<Nである。
しかしながら、いくつかの実施形態では、実際のサブタスクの数Mがマッパーの数Lよりも大きい場合がある(すなわちM>L)。このような実施形態では、CPUがそれらのサブタスクの各々の処理に利用可能となるまで、いくつかのサブタスクはキューで待機する場合がある。
ブロック606において、処理データセットを生成する。この場合データセットは、R1、...、RMとして識別されるM個のレコードを含み、レコードRiの各々はサブタスクTiに固有のデータを含み、レコードRiの各々は実際のサブタスクの全てに適用可能なデータに対する参照を含み、元のデータセットからの少なくとも一部の情報を含む。いくつかの実施形態では、処理データセットは一時入力ファイルであり、このファイルはR1、...、RMとして識別されるM行を含み、各レコードRiは各サブタスクTiについての別個の先行インデックス・シーケンス(最大サイズはm)を含み、各レコードRiは、C行列に対する参照、(k−mの)共通インデックス予測子のリスト、および全てのサブタスクに適用可能な他の入力を含む。いくつかの実施形態では、参照は、Hadoopフレームワークの構成APIを介して各マッパーに渡すことができる。
ブロック608において、マップ/リデュース・フレームワークを構成して、設定した処理データの1つのレコードRiを処理のためにキー/値の対を介して各マッパーに送信する。
ブロック608(図6A)から、処理は続いてブロック610に移る(図6B)。
ブロック610において、タスクをマップ/リデュース・フレームワークにサブミットし、各マッパーは、処理データセットのレコードRi内のデータに基づいて割り当てられたサブタスクTiを実行して、出力(例えばローカル回帰モデル)を発生する。いくつかの実施形態では、サブタスクTiはマップ/リデュース・フレームワークにおいて実行され、各マッパーはレコードRiを取得してサブタスクTiを実行するが、この際に、(a)先行インデックス・シーケンスに対してC行列にスイープ動作を適用する、(b)共通インデックス予測子に基づいて共通インデックス・シーケンスを発生する、(c)共通インデックス・シーケンスに対してスイープ動作を適用する、そして(d)ローカル回帰モデルを見出す。
ブロック612において、リデューサーは、マッパーからの出力を集約して、タスク結果(例えばグローバル回帰モデル)を決定する。タスク結果は、異なる実施形態において様々に変動する可能性がある。例えばタスク結果は、解決しようとする問題によって単純または複雑なものであり得る。いくつかの実施形態では、M個のローカル回帰モデルをマッパーからリデューサーに送信してグローバル回帰モデルを識別する。
クラウド・コンピューティング
本開示はクラウド・コンピューティングに関する詳細な記述を含むが、本明細書に述べる教示の実施はクラウド・コンピューティング環境に限定されないことは予め理解されるであろう。本発明の実施形態は、現在既知であるかまたは今後開発される他のいかなるタイプのコンピューティング環境とも関連付けて実施することができる。
クラウド・コンピューティングは、サービス配信の回帰モデルであり、構成可能コンピューティング・リソースの共有プール(例えばネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、記憶装置、アプリケーション、仮想マシン、およびサービス)に対して便利なオンデマンド・ネットワーク・アクセスを可能とし、管理上の労力またはサービス・プロバイダとの相互作用を最小限に抑えながら、迅速にプロビジョニング(provision)およびリリースすることができる。このクラウド回帰モデルは、少なくとも5つの特徴、少なくとも3つのサービス回帰モデル、および少なくとも4つの展開回帰モデルを含むことができる。
特徴は以下の通りである。
オンデマンド・セルフサービス:クラウド消費者は、必要に応じて自動的に、サーバ時間およびネットワーク記憶装置等のコンピューティング機能を一方的にプロビジョニングすることができ、サービス・プロバイダとの人の相互作用は必要ない。
広範なネットワーク・アクセス:機能は、ネットワークを介して利用可能であり、異種のシック(thick)またはシン(thin)・クライアント・プラットフォーム(例えば移動電話、ラップトップ・コンピュータ、およびPDA)による使用を推進する標準的な機構を介してアクセスされる。
リソースのプール:プロバイダのコンピューティング・リソースはプールされて、マルチテナント回帰モデルを用いて多数の消費者に供給され、異なる物理リソースおよび仮想リソースが需要に応じて動的に割り当ておよび再割り当てされる。一般に消費者は提供されるリソースの正確な位置について制御しないし知ることもないが、もっと高い抽象レベルでは位置を指定可能であり得るという点で、位置独立の感覚がある。
素早い順応性:機能は、場合によっては自動的に、素早くかつ順応性高くプロビジョニングして迅速にスケールアウトし、素早くリリースして迅速にスケールインすることができる。消費者にとって、プロビジョニングに利用可能な機能は無限のように見えることが多く、いつでもいかなる量でも購入することができる。
測定されたサービス:クラウド・システムは、サービスのタイプ(例えば記憶装置、処理、帯域幅、およびアクティブなユーザ・アカウント)に適した一定の抽象レベルで計測機能を活用することで、リソース使用を自動的に制御し最適化する。リソース使用を監視、制御、および報告することで、利用されたサービスのプロバイダおよび消費者の双方に透明性を与えることができる。
サービス回帰モデルは以下の通りである。
サース(SaaS:Software as a Service):消費者に提供される機能は、クラウド・インフラストラクチャ上で動作しているプロバイダのアプリケーションを用いることである。アプリケーションは、ウェブ・ブラウザ等のシン・クライアント・インタフェース(例えばウェブ・ベースの電子メール)を介して様々なクライアント・デバイスからアクセス可能である。消費者は、ネットワーク、サーバ、オペレーティング・システム、記憶装置、または個々のアプリケーション機能をも含めて、基礎にあるクラウド・インフラストラクチャを管理することも制御することもないが、例外的にあり得るのは、限られたユーザ固有のアプリケーション構成設定である。
パース(PaaS:Platform as a Service):消費者に提供される機能は、プロバイダによりサポートされるプログラミング言語およびツールを用いて生成された、消費者が生成または取得したアプリケーションを、クラウド・インフラストラクチャ上に展開することである。消費者は、ネットワーク、サーバ、オペレーティング・システム、または記憶装置を含む、基礎にあるクラウド・インフラストラクチャを管理することも制御することもないが、展開したアプリケーションを制御し、場合によってはアプリケーション・ホスティング環境構成も制御する。
イアース(IaaS:Infrastructure as a Service):消費者に提供される機能は、消費者が、オペレーティング・システムおよびアプリケーションを含み得る、任意のソフトウェアを展開および実行することができる処理、記憶装置、ネットワーク、および他の基本的なコンピューティング・リソースをプロビジョニングすることである。消費者は、基礎にあるクラウド・インフラストラクチャを管理することも制御することもないが、オペレーティング・システム、記憶装置、展開したアプリケーションを制御し、場合によってはネットワーク・コンポーネント(例えばホスト・ファイアウォール)の選択において限られた制御を有する。
展開回帰モデルは以下の通りである。
プライベート・クラウド:クラウド・インフラストラクチャは1つの組織のためにのみ操作される。これは、その組織または第三者によって管理することができ、構内または構外に存在し得る。
コミュニティ・クラウド:クラウド・インフラストラクチャはいくつかの組織によって共有され、共通の関心事(例えば任務、セキュリティ要求、政策、およびコンプライアンスの問題)を持つ特定のコミュニティをサポートする。これは、その組織または第三者によって管理することができ、構内または構外に存在し得る。
パブリック・クラウド:クラウド・インフラストラクチャは、一般大衆または大きい業界団体に利用可能とされ、クラウド・サービスを販売する組織によって所有される。
ハイブリッド・クラウド:クラウド・インフラストラクチャは、2つ以上のクラウド(プライベート、コミュニティ、またはパブリック)の複合であり、独自のエンティティのままであるが、データおよびアプリケーションのポータビリティを可能とする標準化技術または独自の技術によって結合される(例えば、クラウド間でのロード・バランシングのめのクラウド・バースト(cloud bursting))。
クラウド・コンピューティング環境はサービス指向型であり、ステートレス(statelessness)、低結合、モジュール性、および意味相互運用性に焦点を当てている。クラウド・コンピューティングの中核は、相互接続されたノードのネットワークを含むインフラストラクチャである。
ここで図7を参照すると、クラウド・コンピューティング・ノードの一例の概略が示されている。クラウド・コンピューティング・ノード710は、適切なクラウド・コンピューティング・ノードの一例に過ぎず、本明細書に記載する本発明の実施形態の使用または機能性の範囲について限定を示唆することは意図していない。ともかく、クラウド・コンピューティング・ノード710は、上述の機能性のいずれも実施または実行あるいはその両方を行うことができる。
クラウド・コンピューティング・ノード710には、コンピュータ・システム/サーバ712があり、これは多数の他の汎用または特殊用途コンピューティング・システム環境または構成と共に動作する。コンピュータ・システム/サーバ712と共に用いるのに適切であり得る周知のコンピューティング・システム、環境、または構成あるいはそれら全ての例は、限定ではないが、パーソナル・コンピュータ・システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、ハンドヘルド・デバイスまたはラップトップ・デバイス、マルチプロセッサ、システム、マイクロプロセッサ・ベースのシステム、セット・トップ・ボックス、プログラマブル家庭用電子機器、ネットワークPC、ミニコンピュータ・システム、メインフレーム・コンピュータ・システム、および上記のシステムまたはデバイスのいずれかを含む分散型クラウド・コンピューティング環境等を含む。
コンピュータ・システム/サーバ712は、コンピュータ・システムによって実行される、プログラム・モジュール等のコンピュータ・システム実行可能命令の一般的な状況で記述することができる。一般に、プログラム・モジュールは、特定のタスクを実行するかまたは特定の抽象データ・タイプを実施するルーチン、プログラム、オブジェクト、コンポーネント、論理、データ構造等を含むことができる。コンピュータ・システム/サーバ712は、通信ネットワークを介してリンクされたリモート処理デバイスによってタスクが実行される分散型クラウド・コンピューティング環境において実現可能である。分散型クラウド・コンピューティング環境において、プログラム・モジュールは、メモリ記憶デバイスを含むローカルおよびリモートの双方のコンピュータ・システム記憶媒体に配置することができる。
図7に示すように、クラウド・コンピューティング・ノード710におけるコンピュータ・システム/サーバ712は、汎用コンピューティング・デバイスの形態で示す。コンピュータ・システム/サーバ712のコンポーネントは、限定ではないが、1つまたは複数のプロセッサまたは処理ユニット716と、システム・メモリ728と、システム・メモリ728を含む様々なシステム・コンポーネントをプロセッサまたは処理ユニット716に結合するバス718と、を含むことができる。
バス718は、多種多様なバス・アーキテクチャのいずれかを用いた、メモリ・バスまたはメモリ・コントローラ、周辺バス、アクセラレーテッド・グラフィックス・ポート(AGP)、およびプロセッサまたはローカル・バスを含むいくつかのタイプのバス構造のいずれかの1つまたは複数を表す。限定ではなく一例として、そのようなアーキテクチャは、業界標準アーキテクチャ(ISA:Industry Standard Architecture)・バス、マイクロ・チャネル・アーキテクチャ(MCA)・バス、エンハンストISA(EISA)バス、ベザ(VESA:Video Electronics Standards Association)ローカル・バス、および周辺コンポーネント相互接続(PCI)バスを含む。
コンピュータ・システム/サーバ712は典型的に、多種多様なコンピュータ・システム読み取り可能媒体を含む。そのような媒体は、コンピュータ・システム/サーバ712によってアクセス可能ないずれかの利用可能媒体であればよく、揮発性および不揮発性の媒体、着脱可能および固定(non-removable)の媒体の双方を含む。
システム・メモリ728は、ランダム・アクセス・メモリ(RAM)730またはキャッシュ・メモリ732あるいはその両方等、揮発性メモリの形態のコンピュータ・システム読み取り可能媒体を含むことができる。コンピュータ・システム/サーバ712は更に、他の着脱可能/固定、揮発性/不揮発性のコンピュータ・システム読み取り可能媒体を含んでもよい。一例に過ぎないが、固定の不揮発性磁気媒体(図示せず。典型的には「ハード・ドライブ」と呼ばれる)からの読み取りおよびこれへの書き込みのために、記憶システム734を設けることができる。図示しないが、着脱可能な不揮発性磁気ディスク(例えば「フレキシブルディスク」)からの読み取りおよびこれへの書き込みのための磁気ディスク・ドライブと、CD−ROM、DVD−ROM、または他の光媒体等の着脱可能な不揮発性光ディスクへの読み取りおよびこれへの書き込みのための光ディスク・ドライブと、を設けることができる。そのような例では、各々を1つまたは複数のデータ媒体インタフェースによってバス718に接続することができる。以下で更に図示し記載するように、メモリ728は、本発明の実施形態の機能を実行するように構成されたプログラム・モジュールのセット(少なくとも1つ)を有する少なくとも1つのプログラムを含んでもよい。
限定ではなく一例として、メモリ728に、プログラム・モジュール742のセット(少なくとも1つ)を有するプログラム/ユーティリティ740を記憶することができ、更に、オペレーティング・システム、1つまたは複数のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データも記憶することができる。オペレーティング・システム、1つまたは複数のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データの各々、またはそれらの何らかの組み合わせは、ネットワーキング環境の実施を含むことができる。プログラム・モジュール742は一般に、本明細書に記載したような本発明の実施形態の機能または方法あるいはその両方を実行する。
また、コンピュータ・システム/サーバ712は、キーボード、ポインティング・デバイス等の1つまたは複数の外部デバイス714、ディスプレイ724等、ユーザとコンピュータ・システム/サーバ712との相互作用を可能にする1つまたは複数のデバイス、またはコンピュータ・システム/サーバ712が1つまたは複数の他のコンピューティング・デバイスと通信することを可能とするいずれかのデバイス(例えばネットワーク・カード、モデム等)、あるいはそれら全てと通信を行うことができる。このような通信は、入出力(I/O)インタフェース722を介して実行することができる。更に、コンピュータ・システム/サーバ712は、ネットワーク・アダプタ720を介して、ローカル・エリア・ネットワーク(LAN)、一般ワイド・エリア・ネットワーク(WAN)、またはパブリック・ネットワーク(例えばインターネット)あるいはそれら全てのような1つまたは複数のネットワークと通信することができる。図示のように、ネットワーク・アダプタ720は、バス718を介してコンピュータ・システム/サーバ712の他のコンポーネントと通信する。図示しないが、コンピュータ・システム/サーバ712と関連付けて、他のハードウェア・コンポーネントまたはソフトウェア・コンポーネントあるいはその両方も使用可能であることは理解されよう。その例は、限定ではないが、マイクロコード、デバイス・ドライバ、冗長処理ユニット、外部ディスク・ドライブ・アレイ、RAIDシステム、テープ・ドライブ、およびデータ・アーカイブ記憶システム等を含む。
ここで図8を参照すると、例示的なクラウド・コンピューティング環境850が示されている。図示のように、クラウド・コンピューティング環境850は1つまたは複数のクラウド・コンピューティング・ノード710を含み、これは、クラウド消費者により用いられるローカル・コンピューティング・デバイスと通信を行うことができる。このデバイスは、例えばパーソナル・デジタル・アシスタント(PDA)または携帯電話854A、デスクトップ・コンピュータ854B、ラップトップ・コンピュータ854C、または自動車コンピュータ・システム854Nあるいはそれら全てである。ノード710は、相互に通信を行うことも可能である。それらは、上述したようなプライベート・クラウド、コミュニティ・クラウド、パブリック・クラウド、もしくはハイブリッド・クラウド、またはそれらの組み合わせ等の1つまたは複数のネットワークに、物理的または仮想的にグループ化(図示せず)することができる。これによって、クラウド・コンピューティング環境850は、インフラストラクチャ、プラットフォーム、またはソフトウェアあるいはそれら全てをサービスとして提供することができ、それらについてクラウド消費者はローカル・コンピューティング・デバイス上にリソースを維持する必要はない。図8に示すコンピューティング・デバイス854A〜854Nのタイプが例示のみを意図していること、更に、コンピューティング・ノード710およびクラウド・コンピューティング環境850がいずれかのタイプのネットワークまたはネットワークアドレス可能接続あるいはその両方を介して(例えばウェブ・ブラウザを用いて)いかなるタイプのコンピュータ化デバイスとも通信可能であることは理解されよう。
ここで図9を参照すると、クラウド・コンピューティング環境850(図8)が提供する機能抽象レイヤ集合が示されている。図9に示すコンポーネント、レイヤ、および機能が例示に過ぎず、本発明の実施形態がこれらに限定されないことは予め理解されるであろう。図示のように、以下のレイヤおよび対応する機能が提供される。
ハードウェアおよびソフトウェア・レイヤ960は、ハードウェアおよびソフトウェア・コンポーネントを含む。ハードウェア・コンポーネントの例は、一例ではIBM(R)zSeries(R)システムであるメイン・フレーム、一例ではIBM(R)pSeries(R)システムであるリスク(RISC:Reduced Instruction Set Computer)アーキテクチャ・ベースのサーバ、IBMxSeries(R)システム、IBMBladeCenter(R)システム、記憶デバイス、ネットワークおよびネットワーキング・コンポーネントを含む。ソフトウェア・コンポーネントの例は、一例ではIBM WebSphere(R)アプリケーション・サーバ・ソフトウェアであるネットワーク・アプリケーション・サーバ・ソフトウェア、一例ではIBM DB2(R)データベース・ソフトウェアであるデータベース・ソフトウェアを含む。(IBM、zSeries、pSeries、xSeries、BladeCenter、WebSphere、およびDB2は、世界の多くの管轄区域で登録されたインターナショナル・ビジネス・マシーンズ・コーポレーションの商標である。)
仮想化レイヤ962は抽象レイヤを提供し、ここから以下の仮想エンティティを提供することができる。その例には、仮想サーバ、仮想記憶装置、仮想プライベート・ネットワークを含む仮想ネットワーク、仮想アプリケーションおよびオペレーティング・システム、ならびに仮想クライアントが挙げられる。
一例において、管理レイヤ964は以下に記載する機能を提供することができる。リソース・プロビジョニングは、クラウド・コンピューティング環境内でタスクを実行するために利用されるコンピューティング・リソースおよび他のリソースの動的な調達を行う。計測および価格付けは、クラウド・コンピューティング環境内でリソースが利用される際にコスト追跡を行い、これらのリソースの消費について課金または送り状作成を行う。一例では、これらのリソースはアプリケーション・ソフトウェア・ライセンスを含む場合がある。セキュリティは、クラウド消費者およびタスクについてアイデンティティ検証を行い、更にデータおよび他のリソースの保護を行う。ユーザ・ポータルは、消費者およびシステム管理者にクラウド・コンピューティング環境へのアクセスを与える。サービス・レベル管理は、必要なサービス・レベルを満足させるようにクラウド・コンピューティング・リソースの割り当ておよび管理を行う。サービス・レベル合意書(SLA)計画および実行は、SLAに従って、将来の必要性が予測されるクラウド・コンピューティング・リソースのための事前取り決めおよびその調達を行う。
作業負荷レイヤ966は、クラウド・コンピューティング環境を利用することができる機能の例を与える。このレイヤから提供され得る作業負荷および機能の例は、マッピングおよびナビゲーション、ソフトウェア開発およびライフサイクル管理、仮想教室教育配信、データ分析処理、トランザクション処理、ならびに回帰モデルの計算を含む。
従って、いくつかの実施形態において、本明細書に記載した実施形態に従って回帰モデルの計算を実施するソフトウェアまたはプログラムが、クラウド環境におけるサービスとして提供される。
クラウド環境においていくつかの実施形態を実施する。いくつかの代替的な実施形態はクラウド環境では実施されない。
追加の実施形態の詳細
当業者によって認められるように、本発明の態様は、システム、方法、またはコンピュータ・プログラムとして具現化することができる。従って、本発明の態様は、全体的にハードウェアの実施形態、全体的にソフトウェアの実施形態(ファームウェア、常駐ソフトウェア、マイクロコード等を含む)、または、ソフトウェアおよびハードウェアの態様を組み合わせた実施形態という形態を取ることができ、それらは全て本明細書において、「回路」、「モジュール」、または「システム」と一般的に称することができる。更に、本発明の態様は、具現化されたコンピュータ読み取り可能プログラム・コードを有する1つまたは複数のコンピュータ読み取り可能媒体(複数の媒体)において具現化されたコンピュータ・プログラムの形態を取ることも可能である。
1つまたは複数のコンピュータ読み取り可能媒体(複数の媒体)のあらゆる組み合わせを利用することができる。コンピュータ読み取り可能媒体は、コンピュータ読み取り可能信号媒体またはコンピュータ読み取り可能記憶媒体とすることができる。コンピュータ読み取り可能記憶媒体は例えば、限定ではないが、電子、磁気、光、電磁、赤外線、または半導体のシステム、装置、デバイス、または前述のもののいずれかの適切な組み合わせとすることができる。コンピュータ読み取り可能記憶媒体の更に具体的な例(非網羅的な列挙)は、以下を含む。すなわち、1つまたは複数のワイヤを有する電気的接続、携帯型コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読み取り専用メモリ(ROM)、消去可能プログラマブル読み取り専用メモリ(EPROMまたはフラッシュ・メモリ)、光ファイバ、携帯型コンパクト・ディスク読み取り専用メモリ(CD−ROM)、光記憶デバイス、磁気記憶デバイス、固体メモリ、磁気テープ、または前述のもののいずれかの適切な組み合わせである。この文書の文脈において、コンピュータ読み取り可能記憶媒体は、命令実行システム、装置、またはデバイスによってまたはそれと接続して用いるためにプログラムを含有または記憶することが可能ないずれかの有形の(tangible)媒体とすることができる。
コンピュータ読み取り可能信号媒体は、例えばベースバンドにおいてまたは搬送波の一部として、具現化されたコンピュータ読み取り可能プログラム・コードを有する伝播データ信号を含むことができる。かかる伝播信号は様々な形態のいずれかを取ることができ、それらは限定ではないが、電磁、光、またはそれらのいずれかの適切な組み合わせを含む。コンピュータ読み取り可能信号媒体は、コンピュータ読み取り可能記憶媒体でないが、命令実行システム、装置、またはデバイスによってまたはそれと接続して用いるためにプログラムを伝達、伝播、または転送することが可能ないずれかのコンピュータ読み取り可能媒体とすることができる。
コンピュータ読み取り可能媒体上で具現化されるプログラム・コードは、限定ではないが、無線、有線、光ファイバ・ケーブル、RF等、または前述のもののいずれかの適切な組み合わせを含むいずれかの適切な媒体を用いて伝送することができる。
本発明の態様の動作を実行するためのコンピュータ・プログラム・コードは、Java、Smalltalk、C++等のオブジェクト指向プログラミング言語および「C」プログラミング言語または同様のプログラミング言語等の従来の手順プログラミング言語を含む1つまたは複数のプログラミング言語のいずれかの組み合わせにおいて記述することができる。プログラム・コードは、全体的にユーザのコンピュータ上で、部分的にユーザのコンピュータ上で、スタンドアロンのソフトウェア・パッケージとして、部分的にユーザのコンピュータ上でおよび部分的にリモート・コンピュータ上で、または全体的にリモート・コンピュータもしくはサーバ上で、実行することができる。後者の場合、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)またはワイド・エリア・ネットワーク(WAN)を含むいずれかのタイプのネットワークを介してユーザのコンピュータに接続することができ、または、接続は、(例えばインターネット・サービス・プロバイダを用いてインターネットを介して)外部コンピュータに対して行うことができる。
本発明の実施形態に従った方法、装置(システム)、およびコンピュータ・プログラムのフローチャート図またはブロック図あるいはその両方を参照して、本発明の実施形態の態様について以下に記載する。フローチャート図またはブロック図あるいはその両方の各ブロック、およびフローチャート図またはブロック図あるいはその両方におけるブロックの組み合わせは、コンピュータ・プログラム命令によって実施可能であることは理解されよう。これらのコンピュータ・プログラム命令は、汎用コンピュータ、特殊目的コンピュータ、または他のプログラマブル・データ処理装置のプロセッサに提供されて機械を生成することができ、これによって、コンピュータまたは他のプログラマブル・データ処理装置のプロセッサによって実行される命令が、フローチャートまたはブロック図あるいはその両方のブロックまたは複数のブロックに規定された機能/行為を実施するための手段を生成するようになっている。
また、これらのコンピュータ・プログラム命令はコンピュータ読み取り可能媒体に記憶することができ、これによって、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイスに特定の方法で機能するように指示することができ、これにより、コンピュータ読み取り可能媒体に記憶された命令が、フローチャートまたはブロック図あるいはその両方のブロックまたは複数のブロックに規定された機能/行為を実施する命令を含む製造品を生成するようになっている。
また、コンピュータ・プログラム命令を、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイスにロードして、そのコンピュータ、他のプログラマブル装置、または他のデバイス上で一連の動作処理(例えば動作またはステップ)を実行させてコンピュータ実施プロセスを生成することができ、これによって、コンピュータまたは他のプログラマブル装置上で実行する命令が、フローチャートまたはブロック図あるいはその両方のブロックまたは複数のブロックに規定された機能/行為を実施するためのプロセスを提供するようになっている。
更に、前述の動作を実施するコードは、ハードウェア論理または回路(例えば集積回路チップ、プログラマブル・ゲート・アレイ(PGA)、特定用途向けIC(ASIC)等)で実施することができる。ハードウェア論理をプロセッサに結合して動作を実行することができる。
明示的に指定する場合を除いて、相互に連通しているデバイスは、相互に連続的に連通している必要はない。更に、相互に連通しているデバイスは、直接にまたは1つまたは複数の媒介部を介して間接的に通信を行うことができる。
相互に連通したいくつかのコンポーネントを有する実施形態の記載は、そのようなコンポーネントが全て必須であることを示唆するわけではない。むしろ、本発明の幅広い可能な実施形態を例示するために、多種多様な任意選択のコンポーネントを記載している。
更に、プロセス・ステップ、方法ステップ、アルゴリズム等は、連続した順序で記載することができるが、そのようなプロセス、方法、およびアルゴリズムは代替的な順序で動作するように構成することも可能である。換言すると、記載され得るステップのいかなるシーケンスまたは順序も、必ずしもそれらのステップをその順序で実行することを要求するわけではない。本明細書に記載するプロセスのステップは、他のいずれの順序の実施においても実行可能である。更に、いくつかのステップは同時に実行される場合もある。
本明細書において単一のデバイスまたは物品を記載する場合、単一のデバイス/物品の代わりに2つ以上のデバイス/物品(それらが共働するものであろうとなかろうと)を使用可能であることは容易に認められよう。同様に、本明細書において2つ以上のデバイス(それらが共働するものであろうとなかろうと)または物品を記載する場合、2つ以上のデバイスもしくは物品の代わりに単一のデバイス/物品を使用可能であること、または示した数のデバイスもしくはプログラムの代わりに異なる数のデバイス/物品を使用可能であることは、容易に明らかとなろう。デバイスの機能性または特性(features)あるいはその両方は、そのような機能性/特性を有すると明示的に記載されていない1つまたは複数の他のデバイスによって代替的に具現化することができる。従って、本発明の他の実施形態は、デバイス自体を含むことは必須ではない。
フロー図に示した動作は、いくつかのイベントが一定の順序で発生することを示す。代替的な実施形態では、いくかの動作は異なる順序で実行されるか、変更されるか、または除去される場合がある。また、動作を上述の論理に追加することができ、その場合も記載した実施形態に適合させることができる。更に、本明細書に記載した動作は順次発生することがあり、または、いくつかの動作は並列処理される場合がある。また、動作は、単一の処理ユニットによってまたは分散型処理ユニットによって実行することができる。
本明細書において用いた用語は、特定の実施形態を記載する目的のためだけのものであり、本発明を限定することは意図していない。本明細書において用いたように、単数形「1つの(a)、(an)、(the)」は、文脈によって明らかに他の場合が示されない限り、複数形を含むことが意図されている。また、「含む(comprises)」または「含んでいる(comprising)」という言葉あるいはその両方は、本明細書において用いられた場合、述べた特性、整数、ステップ、動作、要素、またはコンポーネントあるいはそれら全ての存在を規定するが、1つまたは複数の他の特性、整数、ステップ、動作、要素、コンポーネント、またはそれらのグループあるいはそれら全ての存在または追加を除外するものではないことは、理解されよう。
「一実施形態」、「実施形態」、「複数の実施形態」、「その実施形態」、「それらの実施形態」、「1つまたは複数の実施形態」、「いくつかの実施形態」、および「1つの実施形態」という言葉は、明示的に指定する場合を除いて、「本発明(複数の本発明)の1つまたは複数の(ではあるが全てではない)実施形態」を意味する。
「含んでいる(including)」、「含んでいる(comprising)」、「有している(having)」という言葉およびそれらの変形は、明示的に指定する場合を除いて、「限定ではないが、以下を含む」という意味である。
明示的に指定する場合を除いて、項目の列挙は、それらの項目のいずれかまたは全てが相互に排他的であることを示唆するものではない。
以下の特許請求の範囲における全てのミーンズまたはステップ・プラス・ファンクション要素の対応する構造、材料、行為、および均等物は、具体的に特許請求したような他の特許請求した要素と組み合わせて機能を実行するためのいずれかの構造、材料、または行為を含むことが意図されている。本発明の実施形態の記載は、例示および記述の目的のために提示したが、網羅的であることや、開示した形態に本発明を限定することは、意図していない。本発明の範囲から逸脱することなく、当業者には多くの変更および変形が明らかであろう。実施形態は、本開示の原理および実際的な用途を最良に説明するため、更に、想定される特定の用途に適した様々な変更と共に様々な実施形態に関して当業者が本発明を理解することを可能とするために、選択し記載したものである。
図面におけるフローチャートおよびブロック図は、本発明の様々な実施形態に従ったシステム、方法、およびコンピュータ・プログラムの可能な実施のアーキテクチャ、機能性、および動作を例示する。この点で、フローチャートまたはブロック図における各ブロックは、規定された論理機能(複数の論理機能)を実施するための1つまたは複数の実行可能命令を含むコードのモジュール、セグメント、または一部を表すことができる。また、いくつかの代替的な実施において、ブロックに明記した機能は、図面に明記した順序通りでなく発生する場合があることに留意すべきである。例えば、関与する機能性に応じて、連続して示した2つのブロックは実際には実質的に同時に実行されることがあり、またはブロックは時に逆の順序で実行される場合がある。また、ブロック図またはフローチャート図あるいはその両方の各ブロック、およびブロック図またはフローチャート図あるいはその両方におけるブロックの組み合わせは、規定された機能もしくは行為を実行する特殊目的ハードウェア・ベースのシステム、または特殊目的ハードウェアおよびコンピュータ命令の組み合わせによって実施可能であることに留意すべきである。
本発明の実施形態の前述の記載は、例示および記述の目的のために提示したものである。網羅的であることや、開示した形態そのものに本発明を限定することは意図していない。上述の教示に照らし合わせて、多くの変更および変形が可能である。実施形態の範囲は、この詳細に記載によって限定されるのではなく、添付の特許請求の範囲によって限定されることが意図される。この明細書、例示、およびデータは、実施形態の構成の製造および使用の完全な記述を提供する。本発明の範囲から逸脱することなく多くの実施形態を生成可能であるので、実施形態は、添付の特許請求の範囲または全ての以降提出される特許請求の範囲およびそれらの均等物において存在する。