IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ インターナショナル・ビジネス・マシーンズ・コーポレーションの特許一覧

特許7590093分散型機械学習環境にわたるテンソル比較
<>
  • 特許-分散型機械学習環境にわたるテンソル比較 図1
  • 特許-分散型機械学習環境にわたるテンソル比較 図2
  • 特許-分散型機械学習環境にわたるテンソル比較 図3
  • 特許-分散型機械学習環境にわたるテンソル比較 図4
  • 特許-分散型機械学習環境にわたるテンソル比較 図5
  • 特許-分散型機械学習環境にわたるテンソル比較 図6
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-11-18
(45)【発行日】2024-11-26
(54)【発明の名称】分散型機械学習環境にわたるテンソル比較
(51)【国際特許分類】
   G06N 3/098 20230101AFI20241119BHJP
【FI】
G06N3/098
【請求項の数】 15
(21)【出願番号】P 2023512288
(86)(22)【出願日】2021-08-25
(65)【公表番号】
(43)【公表日】2023-09-08
(86)【国際出願番号】 CN2021114535
(87)【国際公開番号】W WO2022042603
(87)【国際公開日】2022-03-03
【審査請求日】2024-01-23
(31)【優先権主張番号】17/004,060
(32)【優先日】2020-08-27
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【弁理士】
【氏名又は名称】太佐 種一
(74)【代理人】
【識別番号】100120710
【弁理士】
【氏名又は名称】片岡 忠彦
(72)【発明者】
【氏名】コリアス、ゲルギオス
(72)【発明者】
【氏名】サロニディス、テオドロス
(72)【発明者】
【氏名】ワン、シキン
【審査官】山本 俊介
(56)【参考文献】
【文献】特開2020-149663(JP,A)
【文献】米国特許出願公開第2017/0004166(US,A1)
【文献】米国特許出願公開第2020/0293887(US,A1)
【文献】中国特許出願公開第111580827(CN,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/00-99/00
(57)【特許請求の範囲】
【請求項1】
コンピュータの情報処理によるネットワークにわたるテンソル比較のためのコンピュータ実装方法であって、
1つまたは複数のコンピュータ・プロセッサによって、第1のプロセッサに関連付けられた第1のテンソル・オブジェクトの第1のベクトル表現の第1のパラメータを決定することと、
前記1つまたは複数のコンピュータ・プロセッサによって、第2のプロセッサに関連付けられた第2のテンソル・オブジェクトの第2のベクトル表現に関連付けられた第2のパラメータを受信することと、
前記1つまたは複数のコンピュータ・プロセッサによって、前記第1のパラメータと前記第2のパラメータとの間の第1の差分値を決定することと、
前記1つまたは複数のコンピュータ・プロセッサによって、第1の閾値に対する前記第1の差分値に従って、前記第1のベクトル表現を前記第1のプロセッサから前記第2のプロセッサに送信することと、
を含む、コンピュータ実装方法。
【請求項2】
前記1つまたは複数のコンピュータ・プロセッサによって、前記第1のテンソル・オブジェクトの前記第1のベクトル表現の第3のパラメータを決定することと、
前記1つまたは複数のコンピュータ・プロセッサによって、前記第2のテンソル・オブジェクトの前記第2のベクトル表現に関連付けられた第4のパラメータを受信することと、
前記1つまたは複数のコンピュータ・プロセッサによって、前記第1のパラメータ、前記第2のパラメータ、前記第3のパラメータおよび前記第4のパラメータに従って、前記第1のベクトル表現と前記第2のベクトル表現との間の第2の差分値を決定することと、
を更に含み、
前記1つまたは複数のコンピュータ・プロセッサによって、前記第1のベクトル表現を前記第1のプロセッサから前記第2のプロセッサに送信することは、第2の閾値に対する前記第2の差分値に従って更に実行される、請求項1に記載のコンピュータ実装方法。
【請求項3】
前記1つまたは複数のコンピュータ・プロセッサによって前記第3のパラメータを決定することが、シード値に従って更に実行され、
前記第4のパラメータは、前記1つまたは複数のコンピュータ・プロセッサによって、前記シード値に従って更に決定される、請求項2に記載のコンピュータ実装方法。
【請求項4】
前記第3のパラメータは、前記第1のベクトル表現に関連付けられた符号ベクトルを含み、前記第4のパラメータは、前記第2のベクトル表現に関連付けられた符号ベクトルを含む、請求項2に記載のコンピュータ実装方法。
【請求項5】
前記1つまたは複数のコンピュータ・プロセッサによって、前記第2の閾値に対する前記第2の差分値に従って、明示的な「テンソル送信なし」メッセージを前記第1のプロセッサから前記第2のプロセッサに送信することを更に含む、請求項2に記載のコンピュータ実装方法。
【請求項6】
前記1つまたは複数のコンピュータ・プロセッサによって、前記第2の閾値に対する前記第2の差分値に従って、前記第1のプロセッサと前記第2のプロセッサとの間で通信タイムアウトを実行することを更に含む、請求項2に記載のコンピュータ実装方法。
【請求項7】
前記第1のパラメータは、前記第1のベクトル表現の長さを含み、前記第2のパラメータは、前記第2のベクトル表現の長さを含む、請求項1に記載のコンピュータ実装方法。
【請求項8】
ネットワークにわたるテンソル比較のためのコンピュータ・プログラムであって、前記コンピュータ・プログラムは、コンピュータに対して、請求項1~請求項7に記載のコンピュータ実装方法を実行させる、コンピュータ・プログラム。
【請求項9】
ネットワークにわたるテンソル比較のためのコンピュータ・システムであって、前記コンピュータ・システムは、
1つまたは複数のコンピュータ・プロセッサと、
1つまたは複数のコンピュータ可読ストレージ・デバイスと、
前記1つまたは複数のコンピュータ・プロセッサによって実行するための、前記1つまたは複数のコンピュータ可読ストレージ・デバイス上に記憶されたプログラム命令とを備え、前記コンピュータ・システムは、
第1のプロセッサに関連付けられた第1のテンソル・オブジェクトの第1のベクトル表現の第1のパラメータを決定すること、
第2のプロセッサに関連付けられた第2のテンソル・オブジェクトの第2のベクトル表現に関連付けられた第2のパラメータを受信すること、
前記第1のパラメータと前記第2のパラメータとの間の第1の差分を決定すること、
第1の閾値に対する前記第1の差分値に従って、前記第1のベクトル表現を前記第1のプロセッサから前記第2のプロセッサに送信すること、
実行する、コンピュータ・システム。
【請求項10】
前記コンピュータ・システムは、
前記第1のテンソル・オブジェクトの前記第1のベクトル表現の第3のパラメータを決定すること、
前記第2のテンソル・オブジェクトの前記第2のベクトル表現に関連付けられた第4のパラメータを受信すること、
前記第1のパラメータ、前記第2のパラメータ、前記第3のパラメータおよび前記第4のパラメータに従って、前記第1のベクトル表現と前記第2のベクトル表現との間の第2の差分値を決定するたこと、
を更に実行し、
前記第1のベクトル表現を前記第1のプロセッサから前記第2のプロセッサに送信することは、第2の閾値に対する前記第2の差分値に従って更に実行される、請求項に記載のコンピュータ・システム。
【請求項11】
前記第3のパラメータを決定することは、シード値に従って更に実行され、前記第4のパラメータは、前記シード値に従って更に決定される、請求項10に記載のコンピュータ・システム。
【請求項12】
前記第3のパラメータは、前記第1のベクトル表現に関連付けられた符号ベクトルを含み、前記第4のパラメータは、前記第2のベクトル表現に関連付けられた符号ベクトルを含む、請求項10に記載のコンピュータ・システム。
【請求項13】
前記コンピュータ・システムは、前記第2の閾値に対する前記第2の差分値に従って、「テンソル送信なし」メッセージを前記第1のプロセッサから前記第2のプロセッサに送信することを更に実行する、請求項10に記載のコンピュータ・システム。
【請求項14】
前記コンピュータ・システムは、前記第2の閾値に対する前記第2の差分値に従って、前記第1のプロセッサと前記第2のプロセッサとの間で通信タイムアウトを実行すること、を更に実行する、請求項10に記載のコンピュータ・システム。
【請求項15】
請求項8に記載のコンピュータ・プログラムを記録した、コンピュータ可読な記録媒体
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、概して、分散コンピューティング環境にわたるテンソル比較(tensor comparison)に関する。本開示は、特に、テンソル類似度に従って分散ネットワーク環境にわたってテンソルを共有することに関する。
【背景技術】
【0002】
大きなデータセット、例えば、Turing-NLG、170億パラメータ言語モデルにわたって大きなモデルをトレーニングすることは、分散型機械学習(DML)を利用する。そのような用途は、遠隔に分散したプロセス間の大きなテンソル・オブジェクトの反復的な送信を必要とする。プロセス間で送信されるテンソルを圧縮および展開するための技術が存在する。ネットワーク化されたコンピューティング環境にわたってプロセッサ間で大きなテンソル・オブジェクトを送信することは、大量の通信リソースを消費する可能性がある。
【発明の概要】
【0003】
以下は、本開示の1つまたは複数の実施形態の基本的な理解を提供するための概要を提示する。この概要は、主要なまたは重要な要素を特定することを意図したものでもなければ、特定の実施形態の任意の適用範囲または特許請求の範囲の任意の適用範囲を画定することを意図したものでもない。この概要の唯一の目的は、後に提示されるより詳細な説明に対する導入部として、単純な形式で概念を提示することである。本明細書に記載の1つまたは複数の実施形態において、デバイス、システム、コンピュータ実装方法、装置もしくはコンピュータ・プログラム製品またはそれらの組合せは、テンソル比較、およびテンソル類似度に関連付けられた通信を可能にする。
【0004】
本発明の態様は、第1のプロセッサに関連付けられた第1のテンソル・オブジェクトの第1のベクトル表現の第1のパラメータを決定することと、第2のプロセッサに関連付けられた第2のテンソル・オブジェクトの第2のベクトル表現に関連付けられた第2のパラメータを受信することと、第1のパラメータと第2のパラメータとの間の第1の差分を決定することと、第1の差分に従って、第1のベクトル表現を第1のプロセッサから第2のプロセッサに送信することとによるネットワークにわたるテンソル比較に関連付けられた方法、システムおよびコンピュータ可読媒体を開示する。ベクトル・パラメータ(長さおよび角度)を交換および比較することによって、プロセスは、元のテンソルが(概ね)類似しているか否かを判断することができ、送信者(sender)は自身のテンソルを受信者(receiver)に送信するか否かを判定することができる。テンソルを必要な場合にのみ(テンソルが概ね類似していないときにのみ)送信することによって、通信リソースが節約される。
【0005】
添付の図面において本開示のいくつかの実施形態のより詳細な説明を通じて、本開示の上記の目的および他の目的、特徴ならびに利点がより明らかとなる。同じ参照符号は、本開示の実施形態において概ね同じ構成要素を指す。
【図面の簡単な説明】
【0006】
図1】本発明の実施形態によるコンピューティング環境の概略図である。
図2】本発明の実施形態による動作シーケンスを示すフローチャートである。
図3】本発明の実施形態によるデータ・フローの概略図である。
図4】本発明の実施形態によるデータ・フローの概略図である。
図5】本発明の実施形態によるクラウド・コンピューティング環境を示す図である。
図6】本発明の実施形態による抽象モデル層を示す図である。
【発明を実施するための形態】
【0007】
添付の図面をより詳細に参照して、いくつかの実施形態が説明される。添付の図面において、本開示の実施形態が示されている。しかしながら、本開示は、様々な方式で実施することができ、このため、本明細書に開示される実施形態に限定されると解釈されるべきでない。
【0008】
一実施形態では、システムの1つまたは複数の構成要素は、本質的に高度に技術的な問題(例えば、第1のテンソルのベクトル表現のパラメータを決定する、第2のテンソルのベクトル表現に関連付けられたパラメータ値を受信する、パラメータ間の差分を決定する、差分に従って第1のベクトル表現を送信する等)を解決するためにハードウェアもしくはソフトウェアまたはその両方を用いることができる。これらの解決策は抽象的でなく、例えばネットワークにわたるテンソル比較を容易にするために必要な処理能力に起因して、人間による精神活動のセットとして実行することができない。さらに、行われるプロセスのうちのいくつかは、分散通信に関連する定義されたタスクを実行するための専用コンピュータによって実行することができる。例えば、専用コンピュータは、ネットワーク等にわたってテンソル値を比較することによるネットワーク通信リソース使用の管理に関連するタスクを実行するために用いることができる。
【0009】
圧縮および展開技術の使用は、DMLトレーニングおよび使用中のネットワークにわたる大きなテンソルエンティティの送信の通信負荷を低減することができる。圧縮および展開技術は、依然として大きなデータエンティティの通信を必要とする。圧縮/展開サイクルは、1つまたは複数のプロセスの全ての反復において必要でない場合がある。なぜなら、プロセスは、用途の要件(例えば、収束判断基準)に十分類似しているとみなされるテンソルを記憶することができるためである。そのような場合、通信および計算リソースは、テンソルの圧縮、通信および展開において浪費される。加えて、或る特定の分散用途において、セキュリティ制約は、データが類似度要件を満たす場合にのみデータの交換が行われることを可能にすることができる。このため、実際に第1のサーバまたはプロセッサから第2のサーバまたはプロセッサにテンソルを送信する前に、プロセス間で維持されるテンソルが十分類似しているか否かを知ることが重要である。圧縮、通信および展開ステップを回避することにより、計算/通信リソースが大幅に節減される。類似度判断基準に基づいて自身のテンソルを他のプロセスに明らかにする(またはしない)ことを判定するプロセスを可能にすることにより、システム全体のデータ・セキュリティが改善する。
【0010】
例として、DMLアプリケーションは、ローカル・データを用いてグローバル機械学習(GML)モデルをトレーニングするのに用いられるローカル・ノードを有する。ローカル・ノードは、サーバおよびプロセッサのネットワークにわたって分散され、互いから遠隔にある。トレーニング中、ノードは、ネットワーク通信リソースを用いてモデル・パラメータを含むテンソルを交換する必要がある。例えば、テンソルは、n×nのアレイであり、全てのノードが自身のテンソルを次元d=n×nのベクトルに変換する。トレーニング反復中、送信者ノードが、次元d(モデル・パラメータ数)の自身のベクトル
【0011】
【数1】
【0012】
が受信ノードにおける現在のベクトル
【0013】
【数2】
【0014】
と実質的に異なる場合にのみ、自身のベクトルを送信する場合、通信リソースが節約される。ベクトルを比較するために、送信者は、
【0015】
【数3】
【0016】
を受信し、ベクトル差分の長さ
【0017】
【数4】
【0018】
をローカルで計算し、次に、相対許容閾値に基づいて、
【0019】
【数5】
【0020】
を送信することを判定することができる。しかしながら、この手法は、元の意図を無視したものである。なぜなら、このとき、ベクトル全体がサーバ間で合計d×mビット通信されることになるためであり、ここで、mは、通常、32または64(単一精度または二重精度)の「単語」ビット長である。さらに、ベクトル全体
【0021】
【数6】
【0022】
が共有されることになり、したがって曝されることになる。
【0023】
開示されるシステムおよび方法は、遠隔マシンにおいて実行される2つの別個のプロセスにおいて、2つのテンソル・オブジェクトがテンソル・オブジェクトを共有することなく概ね「近い」(または類似している)か否かの判断を可能にする。一実施形態では、本発明は、テンソル・オブジェクトをベクトル化し、各結果として得られるベクトルを(長さ、角度)対として符号化し、元のテンソル・オブジェクトの代わりに符号化ベクトルを共有および比較することによって機能する。ここで、角度は、局所性鋭敏型ハッシュ(LSH:locally sensitive hashing)を用いて計算される。開示される方法は、通信オーバヘッドを実質的に節減し、プロセスがテンソル類似性基準に基づいて他のプロセスとのテンソルの共有を制御することを可能にする。
【0024】
開示されるシステムおよび方法は、一般的なネットワーク化されたコンピューティング環境に適用可能であり、増大処理性能においてマルチ・ノード・アルゴリズムを実行するネットワーク化された環境にわたって分散されたノードを有するDMLシステム環境に特に適用可能である。
【0025】
一実施形態では、方法はkビットを使用し、ここで、kはd×mよりもはるかに低く、2つのベクトル(およびそれらの関連付けられた元のテンソル)がどれだけ近いかの概算は、これらの2つの通信エージェント間でベクトルを実際に一切共有することなく行われる。この実施形態において、方法は、2つのリモート・テンソルが概ね「近い」か否かを、それらのいずれも送信することなく判断する。この方法は、まず、テンソルのベクトル化バージョンを取得することによって機能する。次に、結果として得られるベクトルは、(長さ、角度)対として符号化され、ここで、長さは、ベクトルの大きさを表す実数であり、角度は、ベクトルの角度を表すkビットベクトルハッシュである。
【0026】
この実施形態において、各ベクトルの角度は、局所性鋭敏型ハッシュ技法を用いて計算される。ベクトル
【0027】
【数7】
【0028】
【0029】
【数8】
【0030】
との間の角度θを概算するために、(バイナリ)符号ベクトル
【0031】
【数9】
【0032】
および
【0033】
【数10】
【0034】
がベクトル
【0035】
【数11】
【0036】
および
【0037】
【数12】
【0038】
の各々について計算される。ベクトルの長さ、および角度を表すその符号ベクトルは、この類似度比較手法において送信される唯一の情報である。この情報は、元のテンソルの僅かな部分(したがって、通信オーバヘッドを劇的に低減する)であり、元のテンソルに関する最小限の情報も明らかにする(したがって、共有に関する、または類似度に基づかないセキュリティ制約を有する用途に適用可能である)。
【0039】
ベクトル長さおよび角度を交換および比較することによって、プロセスは、元のテンソルが(概ね)類似しているか否かを判断することができ、送信者は自身のテンソルを受信者に送信するか否かを判定することができる。
【0040】
一実施形態では、開示される方法の用途は、摂動下で特に安定した分散型反復アルゴリズムに適用可能である。例としては、完全に(または部分的に)非同期の計算モデルに移されるときに収束特性の大部分を保持するアルゴリズムが挙げられる。開示される方法は、具体的には収束によりベクトルが「近く」なる確率が増大すると想定され得るときにアルゴリズムの後段階に向けて、各通信エージェント対に、各反復に適用可能である。
【0041】
一実施形態では、開示される実施形態は、確率近似に基づいて学習アルゴリズムに適用可能である。例として、通常、ミニバッチにおいてトレーニングされる確率的勾配降下法(SGD)変数は、概して、リサイズまたはシャッフルのような入力データ「摂動」に対しロバストである。これは、小さな入力のずれが、取り消し不可能な不安定性につながり得る、より決定論的なデータ・フローを用いた他の従来の方法と比較して、(「近接性」についての)距離のような表記を緩和および近似するとき、確率性が感度の観点ではるかにより「寛容」ともなり得ることを暗に意味する。方法は、大きなベクトルの通信において更なる適用可能性を有する。ここで、通信される実数ベクトルのサイズdが、符号化ビットベクトルのサイズkよりもはるかに大きいことが想定される。開示される方法は、トレーニングされたモデルに適用することができる。これらは、一般的に行列として表され、方法の適用中にベクトル化することができる。一実施形態では、開示される方法は、通信負荷を低減することによって適用速度を増大させ、データ共有需要を低減することによってデータ・セキュリティを更に増大させる。
【0042】
本発明の態様は、第1のプロセッサに関連付けられた第1のテンソル・オブジェクトの第1のベクトル表現の第1のパラメータを決定することと、第2のプロセッサに関連付けられた第2のテンソル・オブジェクトの第2のベクトル表現に関連付けられた第2のパラメータを受信することと、第1のテンソル・オブジェクトの第1のベクトル表現の第3のパラメータを決定することと、第2のテンソル・オブジェクトの第2のベクトル表現に関連付けられた第4のパラメータを受信することと、第1のパラメータ、第2のパラメータ、第3のパラメータおよび第4のパラメータに従って、第1のベクトル表現と第2のベクトル表現との間の差分を決定することと、差分に従って、第1のベクトル表現を第1のプロセッサから第2のプロセッサに送信することとによるネットワークにわたるテンソル比較に関連付けられた方法、システムおよびコンピュータ可読媒体を開示する。
【0043】
開示される発明の以下の記載について、論考は、送信者プロセス(送信者)と受信者プロセス(受信者)との間の通信およびインタラクションに焦点を当てる。送信者プロセスおよび受信者プロセスの各々は、分散コンピューティング環境の一部分において実行されるプロセス・アプリケーションを構成する。各プロセスは、環境の異なる部分において実行され、プロセスは、ネットワーク通信システムを介して通信する。
【0044】
一実施形態では、送信者はテンソルXを所有し、受信者はテンソルXを所有する。本方法の進行の開始時に、送信者はXをベクトル
【0045】
【数13】
【0046】
に変換し、受信者はXをベクトル
【0047】
【数14】
【0048】
に変換する。各ベクトルは、それぞれのテンソルに含まれる情報の表現を提供する。この実施形態において、送信者は、自身のベクトルについて長さパラメータaを計算し、
【0049】
【数15】
【0050】
に関連付けられた長さパラメータbを受信者に要求する。受信者は、
【0051】
【数16】
【0052】
についてbを決定し、要求に応答してbを送信者に送信する。
【0053】
送信者は、aとbとの間の絶対差分を決定し、この差分を所定の閾値と比較する。一実施形態では、方法は、類似したテンソルの送信を回避しようとし、方法は、所定の閾値よりも大きい決定された差分を有するテンソルを送信することに進む。
【0054】
テンソルXおよびXは類似した長さaおよびbを有するが、
【0055】
【数17】
【0056】
の送信を正当化するのに十分相違している場合がある。そのようなインスタンスを捕捉し、相違テンソルを送信するために、方法は、所定の閾値未満の長さ差分を有するベクトルについて追加の類似度試験を行う。この類似度試験について、送信者は、自身の疑似乱数発生器を初期化するために、シード値sを用いてk個のランダム・ベクトルr、r、r、…rを生成する。ランダム・ベクトルごとに、送信者はランダム・ベクトルと
【0057】
【数18】
【0058】
とのドット積の符号(正または負)を計算する。送信者は、送信者kビット符号ベクトル
【0059】
【数19】
【0060】
として、計算されたドット積符号を収集する。受信者も、自身の疑似乱数発生器を初期化するために、シード値sを用いてk個のランダム・ベクトルr、r、r、…rを生成する。受信者も、ランダム・ベクトルと
【0061】
【数20】
【0062】
とのドット積の符号を計算する。受信者は、受信者kビット符号ベクトル
【0063】
【数21】
【0064】
として、計算されたドット積符号を収集し、bおよびベクトル
【0065】
【数22】
【0066】
を送信者に送信する。一実施形態では、送信者は、受信者に、ベクトル
【0067】
【数23】
【0068】
の計算において用いるためのsおよびkを提供する。代替として、送信者および受信者の各々が、これらの計算のためにsおよびkのそれぞれについて所定の値を保有する。
【0069】
一実施形態では、k、sおよび閾値は、静的に固定され、それらの値は、テンソル比較を利用し、リソース、予算および他の制約を計算する特定の用途に関係することができる。kを増大させる結果として、計算負荷、すなわちよりランダム化された投影と引き換えに、より良好な近似が得られる。閾値を増大させることは、方法がポイント・ツー・ポイント通信をスキップする反復数に影響を及ぼし、したがって、通信リソース利用を低減させる方法の有用性に影響を及ぼす。
【0070】
送信者は、2つのベクトル
【0071】
【数24】
【0072】
および
【0073】
【数25】
【0074】
が同一符号である確率pを、
【0075】
【数26】
【0076】
および
【0077】
【数27】
【0078】
における同一エントリの相対数を要素ごとにカウントすることによって推定する。pを所与として、方法は、式p=1-θ/πを用いて2つのベクトル間の近似角θを推定する。近似角θ、
【0079】
【数28】
【0080】
の長さbおよび
【0081】
【数29】
【0082】
の長さaを得ると、ここで送信者は、ベクトル差分の長さ
【0083】
【数30】
【0084】
を、余弦定理
【0085】
【数31】
【0086】
によって概算することができる。
【0087】
相対ベクトル差分c/aが許容閾値rよりも大きい場合、送信者は自身の
【0088】
【数32】
【0089】
を受信者に送信し、そうでない場合、この通信をスキップする。一実施形態では、受信者は、ノード(プロセッサ)間の通信タイムアウトの実行を通じて、またはテンソルが受信者に送信されなかったかもしくは送信されないことを示す明示的なスキップされたテンソルの通信メッセージを送信者が送信することによって、スキップについて通知される。
【0090】
一実施形態では、送信者および受信者はそれぞれ、上記のように自身のそれぞれのベクトル表現についてシードsおよびkを用いて長さおよび符号ベクトルを計算する。この実施形態において、送信者は受信者にbおよび符号ベクトル
【0091】
【数33】
【0092】
を要求し、これを受信者から受信する。送信者は、2つのベクトル間の差分を決定し、
【0093】
【数34】
【0094】
を受信者に送信するか、または通信をスキップする。一実施形態では、送信者は、相違テンソルの送信を回避しようとし、c/aが定義された閾値r未満であるときにのみ
【0095】
【数35】
【0096】
を送信する。一実施形態では、送信者は、類似テンソルの送信を回避しようとし、c/aが所定の閾値rを超えているとき、
【0097】
【数36】
【0098】
を送信する。
【0099】
完全なベクトルの通信は、d×mビットの送信を必要とする。一実施形態では、方法は、3×m+kビットのみを用いてテンソルを比較する。投影数kおよびシード値が予め指定されており、比較ごとに共有されない実施形態では、比較プロセスは、m+kビットの通信しか必要としない。
【0100】
図1は、開示された発明の実行に関連付けられた例示的なネットワークリソースの概略図を提供する。本発明は、命令ストリームを処理する開示された要素のうちの任意のもののプロセッサにおいて実施することができる。図に示すように、ネットワーク化されたクライアント・デバイス110は、サーバ・サブ・システム102に無線で接続する。クライアント・デバイス104は、ネットワーク114を介してサーバ・サブ・システム102に無線で接続する。クライアント・デバイス104および110は、プログラムを実行するための十分なコンピューティング・リソース(プロセッサ、メモリ、ネットワーク通信ハードウェア)と共にテンソル比較プログラム(図示せず)を含む。一実施形態では、クライアント・デバイス104および110、ならびにサーバ・サブ・システム102は、分散型機械学習システムの一部を構築し、ここで、機械学習モデルのトレーニングは、モデル・トレーニング進行として、リソース間のテンソル・オブジェクトの転送を含む。
【0101】
図1に示すように、サーバ・サブ・システム102はサーバ・コンピュータ150を含む。図1は、本発明の実施形態による、ネットワーク化コンピュータ・システム1000内のサーバ・コンピュータ150の構成要素のブロック図を示す。図1は、1つの実装形態の図のみを提供し、異なる実施形態を実施することができる環境に関していかなる制限も暗に意味するものではないことを理解するべきである。示される環境に対する多くの変更を行うことができる。
【0102】
サーバ・コンピュータ150は、プロセッサ154と、メモリ158と、永続ストレージ170と、通信ユニット152と、入力/出力(I/O)インタフェース156と、通信ファブリック140とを含むことができる。通信ファブリック140は、キャッシュ162と、メモリ158と、永続ストレージ170と、通信ユニット152と、入力/出力(I/O)インタフェース156との間の通信を提供する。通信ファブリック140は、プロセッサ(マイクロプロセッサ、通信およびネットワークプロセッサ等)、システム・メモリ、周辺デバイス、およびシステム内の任意の他のハードウェア構成要素間でデータを渡すか、もしくは情報を制御するか、またはその両方を行うために設計された任意のアーキテクチャを用いて実施することができる。例えば、通信ファブリック140は、1つまたは複数のバスを用いて実施することができる。
【0103】
メモリ158および永続ストレージ170はコンピュータ可読ストレージ媒体である。この実施形態において、メモリ158は、ランダム・アクセス・メモリ(RAM)160を含む。一般的に、メモリ158は、任意の適切な揮発性または不揮発性のコンピュータ可読ストレージ媒体を含むことができる。キャッシュ162は、メモリ158から最近アクセスされたデータおよびデータ近くの最近アクセスされたデータを保持することにより、プロセッサ154の性能を高める高速メモリである。
【0104】
プログラム命令および本発明の実施形態を実施するのに用いられるデータ、例えばテンソル比較プログラム175は、キャッシュ162を介したサーバ・コンピュータ150のそれぞれのプロセッサ154の1つまたは複数による実行もしくはアクセスまたはその両方のために、永続ストレージ170に記憶される。この実施形態において、永続ストレージ170は、磁気ハード・ディスク・ドライブを含む。磁気ハード・ディスク・ドライブの代わりに、またはこれに加えて、永続ストレージ170は、ソリッド・ステート・ハード・ドライブ、半導体ストレージ・デバイス、リード・オンリ・メモリ(ROM)、消去可能プログラマブル・リード・オンリ・メモリ(EPROM)、フラッシュ・メモリ、または、プログラム命令もしくはデジタル情報を記憶することが可能な任意の他のコンピュータ可読ストレージ媒体を含むことができる。
【0105】
永続ストレージ170により用いられる媒体は、リムーバブルであってもよい。例えば、リムーバブル・ハード・ドライブが永続ストレージ170のために用いられてよい。他の例としては、光学および磁気ディスク、サムドライブ、および、永続ストレージ170の一部でもある別のコンピュータ可読ストレージ媒体上への転送のためにドライブに挿入されるスマートカードが挙げられる。
【0106】
通信ユニット152は、これらの例において、クライアント・コンピューティング・デバイス104および110のリソースを含む、他のデータ処理システムまたはデバイスとの通信を提供する。これらの例において、通信ユニット152は、1つまたは複数のネットワーク・インタフェース・カードを含む。通信ユニット152は、物理および無線通信リンクのいずれかまたは両方の使用を通じた通信を提供することができる。ソフトウェア配信プログラム、ならびに本発明の実施に用いられる他のプログラムおよびデータは、通信ユニット152を通じてサーバ・コンピュータ150の永続ストレージ170にダウンロードされてもよい。
【0107】
I/Oインタフェース156は、サーバ・コンピュータ150に接続され得る他のデバイスとのデータの入力および出力を可能にする。例えば、I/Oインタフェース156は、キーボード、キーパッド、タッチスクリーン、マイクロフォン、デジタル・カメラもしくはいくつかの他の適切な入力デバイスまたはそれらの組合せ等の外部デバイス190への接続を提供することができる。外部デバイス190は、例えば、サムドライブ、ポータブル光または磁気ディスク、および、メモリ・カード等のポータブル・コンピュータ可読ストレージ媒体も含むことができる。本発明の実施形態を実施するために用いられるソフトウェアおよびデータ、例えば、サーバ・コンピュータ150上のテンソル比較プログラム175は、そのようなポータブル・コンピュータ可読ストレージ媒体上に記憶することができ、I/Oインタフェース156を介して永続ストレージ170上にロードすることができる。I/Oインタフェース156は、ディスプレイ180にも接続する。
【0108】
ディスプレイ180は、データをユーザに表示するためのメカニズムを提供し、例えば、コンピュータ・モニタであってもよい。ディスプレイ180は、タブレット・コンピュータのディスプレイ等のタッチスクリーンとして機能することもできる。
【0109】
図2は、本開示の実施に関連付けられた例示的な活動を示すフローチャート200を提供する。プログラムの開始後、ブロック210において、テンソル比較プログラム175の方法は、送信プロセスによって保持されるテンソルのベクトル表現に関連付けられた第1のパラメータ値を決定する。一実施形態では、第1のパラメータ値は、ベクトル表現の長さを構成する。方法は、ネットワーク化されたコンピューティング・プロセッサにおいて動作する送信プロセスによる方法実行の一部として第1のパラメータ値を生成する。
【0110】
ブロック220において、テンソル比較プログラム175の方法は、第2のパラメータを受信する。第2のネットワーク化されたコンピューティング・プロセッサにおいて動作する受信プロセスは、受信プロセスによってアクセスされる第2のテンソルの第2のベクトル表現に関連付けられた第2のパラメータを決定し、第1のパラメータおよび第2のパラメータは各々、それぞれの関連ベクトル表現の同じパラメータを表す。例えば、各パラメータは、対応するベクトル表現の決定された長さを提供することができる。受信プロセスは、送信プロセスからの第2のパラメータの要求に応答して、送信プロセスに第2のパラメータを提供する。
【0111】
ブロック230において、送信プロセスは、第1および第2のパラメータを比較し、一実施形態では、比較は、2つのパラメータ間の差分の絶対値を決定することを含む。
【0112】
ブロック240において、送信プロセスは、テンソルのベクトル表現をネットワークを介して受信プロセスに送信する。一実施形態では、送信プロセスは、定義された閾値に対し決定されたパラメータ差分を評価し、差分と閾値との間の正しい関係が存在するとき、例えば、必要に応じて差分が閾値を上回るかまたは下回るときにのみベクトルを送信する。一実施形態では、送信は、差分が閾値を超えるときにのみ行われ、別の実施形態では、送信は、差分が閾値を下回るときにのみ行われる。例えば、差分が閾値要件を満たさない場合、方法はベクトルを送信しない。一実施形態では、送信者は、失敗閾値の通知を提供し、別の実施形態では、送信者は失敗閾値の観点でサイレント状態を保つ。
【0113】
図3は、本発明の実施形態によるネットワーク化されたシステムにわたるデータ・フロー300を示す。図に示すように、ステージ0において、送信者310および受信者350の各々が、ベクトル表現X、Xに対するテンソルをベクトル
【0114】
【数37】
【0115】
および
【0116】
【数38】
【0117】
に変換する。送信者310および受信者350の各々が、自身のベクトルの長さパラメータa、bを決定する。ステージ1において、送信者310は、シード値sからk個のランダム・ベクトルを生成する。送信者310は、符号ベクトル
【0118】
【数39】
【0119】
を、k個のランダム・ベクトルの各々と
【0120】
【数40】
【0121】
とのドット積の符号に従って計算する。決定された長さおよび符号ベクトルは、ベクトル
【0122】
【数41】
【0123】
の比較署名(comparison signature)とみなされる。
【0124】
ステージ2において、送信者310は受信者350にkおよびsを提供し、受信者350は、送信者310と同様にkおよびsを利用して
【0125】
【数42】
【0126】
を決定する。受信者350は送信者310からの比較署名の要求に応答して、比較署名bおよび
【0127】
【数43】
【0128】
を送信者310に提供する。
【0129】
ステージ3において、送信者310は2つの比較署名を比較して、ベクトル
【0130】
【数44】
【0131】
および
【0132】
【数45】
【0133】
間の差分を決定する。比較は、それぞれの符号ベクトルに従って2つのベクトル間の角度を決定することを含む。
【0134】
ステージ4において、送信者は、ベクトル間の決定された差分を、定義された閾値と比較して、ベクトル
【0135】
【数46】
【0136】
が受信者350に送信されるべきか否かを判断する。一実施形態では、315において、相違ベクトルを示す、閾値rよりも大きい差分を有するベクトルが送信される。代替的な実施形態では、325において、r未満の差分を有するベクトル、すなわち類似ベクトルが送信される。
【0137】
図4は、本発明の実施形態によるネットワーク化されたシステムにわたるデータ・フロー400を示す。図に示すように、ステージ0において、送信者410および受信者450の各々が、ベクトル表現X、Xに対するテンソルをベクトル
【0138】
【数47】
【0139】
および
【0140】
【数48】
【0141】
に変換する。送信者410および受信者450の各々が、自身のベクトルの長さパラメータa、bを決定する。ステージ1aにおいて、送信者410は受信者450から長さbを要求する。受信者450はbを提供し、送信者410はaおよびbを比較する。415において、送信者410は、aとbとの間の差分が閾値を超えていると判断した後、
【0142】
【数49】
【0143】
を受信者に送信する。425において、送信者は、aとbとの間の差分が閾値未満であると判断した後、ステップ1bに進む。
【0144】
ステージ1bにおいて、送信者410は、シード値sからk個のランダム・ベクトルを生成する。送信者410は、符号ベクトル
【0145】
【数50】
【0146】
を、k個のランダム・ベクトルの各々と
【0147】
【数51】
【0148】
とのドット積の符号に従って計算する。決定された長さおよび符号ベクトルは、ベクトル
【0149】
【数52】
【0150】
の比較署名とみなされる。
【0151】
ステージ2において、送信者410は受信者450にkおよびsを提供し、受信者450は、送信者410と同様にkおよびsを利用して
【0152】
【数53】
【0153】
を決定する。受信者450は送信者410からの比較署名の要求に応答して、比較署名bおよび
【0154】
【数54】
【0155】
を送信者410に提供する。
【0156】
ステージ3において、送信者410は2つの比較署名を比較して、ベクトル
【0157】
【数55】
【0158】
および
【0159】
【数56】
【0160】
間の差分を決定する。比較は、それぞれの符号ベクトルに従って2つのベクトル間の角度を決定することを含む。
【0161】
ステージ4において、送信者410は、ベクトル間の決定された差分を、定義された閾値と比較して、ベクトル
【0162】
【数57】
【0163】
が受信者450に送信されるべきか否かを判断する。一実施形態では、435において、相違ベクトルを示す、閾値rよりも大きい相対的差分を有するベクトルが送信される。代替的な実施形態では、445において、r未満の相対的差分を有するベクトル、すなわち類似ベクトルが送信される。
【0164】
本開示は、クラウド・コンピューティングに関する詳細な説明を含むが、本明細書に記載の教示の実施は、クラウド・コンピューティング環境に限定されないことを理解されたい。むしろ、本発明の実施形態は、現在知られている、または後に開発される任意の他のタイプのコンピューティング環境と併せて実施されることが可能である。
【0165】
クラウド・コンピューティングは、最小限の管理労力またはサービス・プロバイダとの対話で迅速にプロビジョニングおよび解放することができる、構成可能なコンピューティング・リソース(例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシンおよびサービス)の共有プールへの好都合でオン・デマンドのネットワーク・アクセスを可能にするためのサービス送達のモデルである。このクラウド・モデルは、少なくとも5つの特性、少なくとも3つのサービス・モデル、および少なくとも4つの展開モデルを含むことができる。
【0166】
特性は以下の通りである。
【0167】
オン・デマンドのセルフサービス:クラウド消費者は、サービス・プロバイダとの人間の対話を必要とすることなく、自動的に必要に応じて、サーバ時間およびネットワーク・ストレージ等のコンピューティング能力を一方的にプロビジョニングすることができる。
【0168】
ブロード・ネットワーク・アクセス:能力は、ネットワークを介して利用可能にされ、異種のシンまたはシック・クライアント・プラットフォーム(例えば、携帯電話、ラップトップおよびPDA)による使用を促進する標準的なメカニズムを通じてアクセスされる。
【0169】
リソース・プーリング:マルチ・テナント・モデルを用いて複数の消費者にサービングするために、プロバイダのコンピューティング・リソースがプールされ、異なる物理的リソースおよび仮想リソースが、要求に従って動的に割当ておよび再割当てされる。消費者が、通常、提供されるリソースの厳密な場所に対する制御も知識も有しないが、より高い抽象度(例えば、国、州またはデータ・センタ)で場所を指定することが可能であり得るという点で、場所独立性の意義がある。
【0170】
高速な弾力性:能力は、場合によっては自動的に、即座にスケール・アウトするように高速かつ弾力的にプロビジョニングされ、即座にスケール・インするように高速に解放され得る。消費者に対しては、プロビジョニングに利用可能な能力が、多くの場合無制限であるように見え、いつでも任意の量で購入可能である。
【0171】
測定されるサービス:クラウド・システムは、サービスのタイプ(例えば、ストレージ、処理、帯域幅、アクティブなユーザ・アカウント)に適したある抽象度において計測能力を活用することによって、リソース使用を自動的に制御し、最適化する。リソース使用量は、モニタリング、制御、および報告することができ、利用サービスのプロバイダおよび消費者の両方に透明性がもたらされる。
【0172】
サービス・モデルは、以下の通りである。
【0173】
サービスとしてのソフトウェア(SaaS):消費者に提供される能力は、クラウド・インフラ上で実行中のプロバイダのアプリケーションを使用する能力である。アプリケーションは、ウェブ・ブラウザ等のシン・クライアント・インタフェース(例えば、ウェブ・ベースの電子メール)を通して、様々なクライアント・デバイスからアクセス可能である。消費者は、限定されたユーザ固有アプリケーションの構成設定は例外である可能性があるが、ネットワーク、サーバ、オペレーティング・システム、ストレージ、または更には個々のアプリケーション能力を含む、基礎となるクラウド・インフラを管理または制御しない。
【0174】
サービスとしてのプラットフォーム(PaaS):消費者に提供される能力は、プロバイダによってサポートされるプログラミング言語およびツールを使用して生成された、消費者が作成または取得したアプリケーションを、クラウド・インフラ上に展開する能力である。消費者は、ネットワーク、サーバ、オペレーティング・システム、またはストレージを含む基礎となるクラウド・インフラを管理または制御しないが、展開されたアプリケーション、および、場合によっては、アプリケーション・ホスティング環境構成に対して制御を行う。
【0175】
サービスとしてのインフラ(IaaS):消費者に提供される能力は、処理、ストレージ、ネットワーク、ならびに消費者がオペレーティング・システムおよびアプリケーションを含み得る任意のソフトウェアを展開および実行することが可能な、他の基本コンピューティング・リソースをプロビジョニングする能力である。消費者は、基礎となるクラウド・インフラを管理または制御しないが、オペレーティング・システム、ストレージ、展開されたアプリケーションに対して制御を行い、かつ場合によっては、選択ネットワーキング・コンポーネント(例えば、ホスト・ファイアウォール)の限定的な制御を行う。
【0176】
展開モデルは、以下の通りである。
【0177】
プライベート・クラウド:クラウド・インフラは、組織のためだけに動作される。クラウド・インフラは、その組織または第三者によって管理されてもよく、構内または構外に存在し得る。
【0178】
コミュニティ・クラウド:クラウド・インフラは、複数の組織によって共有され、共有の関心事(例えば、任務、セキュリティ要件、ポリシー、およびコンプライアンスの考慮事項)を有する特定のコミュニティをサポートする。クラウド・インフラは、その組織または第三者によって管理されてもよく、構内または構外に存在し得る。
【0179】
パブリック・クラウド:クラウド・インフラは、一般公衆または大きな業界団体に利用可能とされ、クラウド・サービスを販売する組織によって所有される。
【0180】
ハイブリッド・クラウド:クラウド・インフラは、一意なエンティティのままであるが、データおよびアプリケーション・ポータビリティを可能にする標準化技術または独自技術(例えば、クラウド間のロード・バランシングのためのクラウド・バースティング)によって結合された、2つ以上のクラウド(プライベート、コミュニティ、またはパブリック)の合成物である。
【0181】
クラウド・コンピューティング環境は、無国籍、低結合、モジュール性、および意味相互運用性に焦点を当てたサービス指向型である。クラウド・コンピューティングの中心は、相互接続されたノードのネットワークを含むインフラである。
【0182】
ここで図5を参照すると、例示的なクラウド・コンピューティング環境50が示されている。図示するように、クラウド・コンピューティング環境50は、クラウド消費者によって使用されるローカル・コンピューティング・デバイス、例えば、携帯情報端末(PDA)もしくは携帯電話54A、デスクトップ・コンピュータ54B、ラップトップ・コンピュータ54C、もしくは自動車コンピュータ・システム54N、またはそれらの組合せ等が通信し得る、1つまたは複数のクラウド・コンピューティング・ノード10を含む。ノード10は、互いに通信することができる。それらは、上述のようなプライベート、コミュニティ、パブリック、もしくはハイブリッド・クラウド、またはそれらの組合せ等の、1つまたは複数のネットワーク内で物理的または仮想的にグループ化されてもよい(図示せず)。これによって、クラウド・コンピューティング環境50が、インフラ、プラットフォーム、もしくはソフトウェア、またはそれらの組合せを、クラウド消費者がローカル・コンピューティング・デバイス上でリソースを維持する必要がないサービスとして提案することが可能となる。図5に示されるコンピューティング・デバイス54A~Nのタイプは、単なる例示であることを意図し、コンピューティング・ノード10およびクラウド・コンピューティング環境50は、任意の種類のネットワークもしくはネットワーク・アドレス可能な接続またはその両方を介して(例えば、ウェブ・ブラウザを用いて)、任意の種類のコンピュータ化デバイスと通信し得ると理解される。
【0183】
ここで図6を参照すると、クラウド・コンピューティング環境50(図5)によって提供される機能抽象レイヤのセットが示されている。図6に示されるコンポーネント、レイヤ、および機能は、単なる例示であることを意図し、本発明の実施形態は、それらに限定されないと、予め理解されるべきである。図示するように、以下のレイヤおよび対応する機能が提供される。
【0184】
ハードウェアおよびソフトウェア・レイヤ60は、ハードウェアおよびソフトウェア・コンポーネントを含む。ハードウェア・コンポーネントの例は、メインフレーム61、縮小命令セット・コンピュータ(RISC)、アーキテクチャ・ベース・サーバ62、サーバ63、ブレード・サーバ64、ストレージ・デバイス65、ならびにネットワークおよびネットワーキング・コンポーネント66を含む。いくつかの実施形態では、ソフトウェア・コンポーネントは、ネットワーク・アプリケーション・サーバ・ソフトウェア67およびデータベース・ソフトウェア68を含む。
【0185】
仮想化レイヤ70は、仮想エンティティの以下の例、仮想サーバ71、仮想ストレージ72、仮想プライベート・ネットワークを含む仮想ネットワーク73、仮想アプリケーションおよびオペレーティング・システム74、ならびに仮想クライアント75が提供され得る、抽象レイヤを提供する。
【0186】
一例では、管理レイヤ80は、後述する機能を提供することができる。リソース・プロビジョニング81は、クラウド・コンピューティング環境内でタスクを実行するために利用される、コンピューティング・リソースおよび他のリソースの動的な調達を提供する。測定および価格設定82は、リソースがクラウド・コンピューティング環境内で利用されるときにコスト追跡を提供し、これらのリソースの消費に対する課金または請求を提供する。1つの例では、これらのリソースは、アプリケーション・ソフトウェア・ライセンスを含み得る。セキュリティは、データおよび他のリソースについての保護だけでなく、クラウド消費者およびタスクについての本人確認を提供する。ユーザ・ポータル83は、消費者およびシステム管理者にクラウド・コンピューティング環境へのアクセスを提供する。サービス・レベル管理84は、要求されるサービス・レベルが満たされるように、クラウド・コンピューティング・リソース配分および管理を提供する。サービス水準合意(SLA)計画および遂行85は、SLAに従って将来の要件が予期されるクラウド・コンピューティング・リソースの事前配置および調達を提供する。
【0187】
ワークロード・レイヤ90は、クラウド・コンピューティング環境が利用され得る機能性の例を提供する。このレイヤから提供され得るワークロードおよび機能の例は、マッピングおよびナビゲーション91、ソフトウェア開発およびライフサイクル管理92、仮想クラスルーム教育配信93、データ解析処理94、トランザクション処理95、およびテンソル比較プログラム175を含む。
【0188】
本発明は、統合の任意の可能な技術的詳細レベルにおける、システム、方法もしくはコンピュータ・プログラム製品、またはそれらの組合せとすることができる。本発明は、有利には、命令ストリームを処理する、単一のまたは並列の任意のシステムにおいて実施することができる。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を有するコンピュータ可読ストレージ媒体を含むことができる。
【0189】
コンピュータ可読ストレージ媒体は、命令実行デバイスによって用いるための命令を保持および記憶することができる有形デバイスとすることができる。コンピュータ可読ストレージ媒体は、例えば、限定ではないが、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、または上記の任意の適切な組合せとすることができる。コンピュータ可読ストレージ媒体のより具体的な例の非網羅的なリストは以下の、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、リード・オンリ・メモリ(ROM)、消去可能プログラマブル・リード・オンリ・メモリ(EPROMまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク・リード・オンリ・メモリ(CD-ROM)、デジタル・バーサタイル・ディスク(DVD)、メモリ・スティック、フロッピー(R)・ディスク、命令が記録された溝内のパンチ・カードまたは隆起構造等の機械的に符号化されたデバイス、および上記の任意の適切な組合せを含む。コンピュータ可読ストレージ媒体またはコンピュータ可読ストレージ・デバイスは、本明細書において用いられるとき、電波もしくは他の自由に伝播する電磁波、導波路もしくは他の伝送媒体を通じて伝播する電磁波(例えば、光ファイバケーブルを通る光パルス)、または配線を介して送信される電気信号等の、一過性の信号自体であると解釈されるべきではない。
【0190】
本明細書に記載のコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体からそれぞれのコンピューティング/処理デバイスに、または、ネットワーク、例えばインターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、もしくはワイヤレス・ネットワークまたはそれらの組合せを介して外部コンピュータまたは外部ストレージ・デバイスにダウンロードすることができる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、ワイヤレス伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、もしくはエッジ・サーバまたはそれらの組合せを含むことができる。各コンピューティング/処理デバイスにおけるネットワーク・アダプタ・カードまたはネットワーク・インタフェースが、ネットワークからコンピュータ可読プログラム命令を受信し、それらのコンピュータ可読プログラム命令を、それぞれのコンピューティング/処理デバイス内のコンピュータ可読ストレージ媒体への記憶のために転送する。
【0191】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路用設定データ、またはSmalltalk、C++等のオブジェクト指向プログラミング言語、「C」プログラミング言語もしくは類似のプログラミング言語等の手続き型プログラミング言語等を含む、1つまたは複数のプログラミング言語の任意の組合せで記述された、ソースコードまたはオブジェクトコードのいずれかとすることができる。コンピュータ可読プログラム命令は、スタンドアロン・ソフトウェア・パッケージとして全体がユーザのコンピュータ上で、一部がユーザのコンピュータ上で、一部がユーザのコンピュータ上かつ一部がリモート・コンピュータ上で、または全体がリモート・コンピュータもしくはサーバ上で実行されてもよい。後者の場合、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)もしくはワイド・エリア・ネットワーク(WAN)を含む、任意のタイプのネットワークを介してユーザのコンピュータに接続されてもよく、または接続は外部コンピュータ(例えば、インターネット・サービス・プロバイダを使用してインターネットを介して)に対して行ってもよい。いくつかの実施形態では、例えば、プログラマブル論理回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル論理アレイ(PLA)を含む電子回路は、本発明の態様を実行するために、コンピュータ可読プログラム命令の状態情報を利用して電子回路を個人化することにより、コンピュータ可読プログラム命令を実行してもよい。
【0192】
本発明の態様について、本発明の実施形態による方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図もしくはブロック図またはその両方を参照しながら本明細書において説明している。フローチャート図もしくはブロック図またはその両方の各ブロック、およびフローチャート図もしくはブロック図またはその両方のブロックの組合せは、コンピュータ可読プログラム命令によって実施され得ることが理解されよう。
【0193】
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラム可能なデータ処理装置のプロセッサを介して実行される命令が、フローチャートもしくはブロック図またはその両方の1つまたは複数のブロックに指定される機能/動作を実装するための手段を作成するように、汎用コンピュータ、専用コンピュータ、または他のプログラム可能なデータ処理装置のプロセッサに提供され、マシンを作り出すものであってもよい。これらのコンピュータ可読プログラム命令は、命令が格納されたコンピュータ可読ストレージ媒体が、フローチャートもしくはブロック図またはその両方の1つまたは複数のブロックに指定される機能/動作の態様を実施する命令を含む製品を含むように、コンピュータ可読ストレージ媒体に記憶され、コンピュータ、プログラマブルデータ処理装置、もしくは他のデバイスまたはそれらの組合せに、特定の方式で機能するように指示するものであってもよい。
【0194】
コンピュータ可読プログラム命令はまた、コンピュータ、他のプログラマブル装置、または他のデバイス上で実行される命令が、フローチャートもしくはブロック図またはその両方の1つまたは複数のブロックに指定される機能/動作を実施するように、コンピュータ実装プロセスを生成するべく、コンピュータ、他のプログラマブルデータ処理装置、または他のデバイスにロードされ、コンピュータ、他のプログラマブル装置、または他のデバイス上で一連の動作ステップを実行させるものであってもよい。
【0195】
図中のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法およびコンピュータ・プログラム製品の可能な実装形態のアーキテクチャ、機能性および動作を示す。なお、フローチャートまたはブロック図の各ブロックは、指定される論理機能を実装するための1つまたは複数の実行可能命令を含む、命令のモジュール、セグメント、または部分を表すことができる。いくつかの代替の実装形態では、ブロックに記載されている機能は、図に記載されている順序とは異なる順序で行われてもよい。例えば、連続して示されている2つのブロックは、関与する機能性に応じて、実際には実質的に同時に実行されてよく、またはそれらのブロックは場合によっては逆の順序で実行されてもよい。ブロック図もしくはフローチャート図またはその両方の各ブロック、およびブロック図もしくはフローチャート図またはその両方のブロックの組合せは、指定される機能もしくは動作を実行するか、または専用ハードウェアとコンピュータ命令との組合せを遂行する専用ハードウェア・ベースのシステムによって実施され得ることにも留意されたい。
【0196】
本明細書において「1つの実施形態」、「一実施形態」、「例示的な実施形態」等への言及は、説明された実施形態が特定の特徴、構造、または特性を含み得るが、全ての実施形態が必ずしもその特定の特徴、構造、または特性を含まなくてもよいことを示す。さらに、このような語句は、必ずしも同じ実施形態を参照するものではない。さらに、特定の特徴、構造、または特性が実施形態に関連して記述されるとき、明示的に記述されているか否かにかかわらず、他の実施形態に関連して、そのような特徴、構造、または特性に影響を与えることは当業者の知識の範囲内であると考えられる。
【0197】
本明細書において用いられる用語は、特定の実施形態を説明する目的のみであり、本発明を限定することを意図していない。本明細書において用いられるとき、単数形「a」、「an」、および「the」は、文脈で特に明示的に示されない限り、複数形も含むように意図されている。さらに、「備える、含む」もしくは「備えている、含んでいる」またはその両方の用語は、本特許明細書で使用される場合、記載された特徴、整数、ステップ、動作、要素、もしくはコンポーネント、またはそれらの組合せの存在を指定するが、1つまたは複数のその他の特徴、整数、ステップ、動作、要素、コンポーネント、もしくはこれらのグループ、またはそれらの組合せの存在または追加を除外していないということが、理解されるであろう。
【0198】
本発明の様々な実施形態の説明が、例示の目的で提示されたが、包括であることも、開示される実施形態に限定されることも意図されていない。本発明の趣旨および範囲から逸脱することなく、多くの変更形態および変形形態が当業者に明らかとなろう。本明細書において用いられる用語は、実施形態の原理、実際の用途、もしくは市場に見られる技術を上回る技術の改善を最も良好に説明し、他の当業者が、本明細書に開示される実施形態を理解することを可能にするために選択された。
図1
図2
図3
図4
図5
図6