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

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

▶ インターナショナル・ビジネス・マシーンズ・コーポレーションの特許一覧 ▶ レンセラー ポリテクニック インスティチュートの特許一覧

特開2022-181195方法、連合学習システム、およびコンピュータプログラム(圧縮埋め込みを用いた垂直連合学習)
<>
  • 特開-方法、連合学習システム、およびコンピュータプログラム(圧縮埋め込みを用いた垂直連合学習) 図1
  • 特開-方法、連合学習システム、およびコンピュータプログラム(圧縮埋め込みを用いた垂直連合学習) 図2
  • 特開-方法、連合学習システム、およびコンピュータプログラム(圧縮埋め込みを用いた垂直連合学習) 図3
  • 特開-方法、連合学習システム、およびコンピュータプログラム(圧縮埋め込みを用いた垂直連合学習) 図4
  • 特開-方法、連合学習システム、およびコンピュータプログラム(圧縮埋め込みを用いた垂直連合学習) 図5
  • 特開-方法、連合学習システム、およびコンピュータプログラム(圧縮埋め込みを用いた垂直連合学習) 図6
  • 特開-方法、連合学習システム、およびコンピュータプログラム(圧縮埋め込みを用いた垂直連合学習) 図7
  • 特開-方法、連合学習システム、およびコンピュータプログラム(圧縮埋め込みを用いた垂直連合学習) 図8
  • 特開-方法、連合学習システム、およびコンピュータプログラム(圧縮埋め込みを用いた垂直連合学習) 図9
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022181195
(43)【公開日】2022-12-07
(54)【発明の名称】方法、連合学習システム、およびコンピュータプログラム(圧縮埋め込みを用いた垂直連合学習)
(51)【国際特許分類】
   G06N 20/00 20190101AFI20221130BHJP
   G06F 9/50 20060101ALI20221130BHJP
【FI】
G06N20/00
G06F9/50 150Z
【審査請求】未請求
【請求項の数】20
【出願形態】OL
(21)【出願番号】P 2022084275
(22)【出願日】2022-05-24
(31)【優先権主張番号】17/330,340
(32)【優先日】2021-05-25
(33)【優先権主張国・地域又は機関】US
(71)【出願人】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(71)【出願人】
【識別番号】508252206
【氏名又は名称】レンセラー ポリテクニック インスティチュート
(74)【代理人】
【識別番号】100112690
【弁理士】
【氏名又は名称】太佐 種一
(74)【代理人】
【識別番号】100120710
【弁理士】
【氏名又は名称】片岡 忠彦
(74)【復代理人】
【識別番号】110000877
【氏名又は名称】弁理士法人RYUKA国際特許事務所
(72)【発明者】
【氏名】ワン シキアン
(72)【発明者】
【氏名】ダス アニルバン
(72)【発明者】
【氏名】カスティリア ティモシー ジョン
(72)【発明者】
【氏名】パターソン ステーシー エリザベス
(57)【要約】
【課題】標準的なVFL手法では、クライアントとサーバとの間で埋め込みを通信する必要性によって、高い通信オーバヘッドを招き得る。
【解決手段】初期埋め込みおよび初期ラベルに基づいて初期全体埋め込みを再生成する。サーバモデルの現在のバージョンをクライアントコンピューティングデバイスのそれぞれに送信し、クライアントコンピューティングデバイスから、クラスタリングによって圧縮された、更新された圧縮埋め込みと、更新された埋め込みに対応する更新されたクラスタラベルとを取得する。全体埋め込みおよび現在のサーバモデルを用いた複数のクライアントによるローカル訓練に基づいて、更新された埋め込みおよび対応する更新されたラベルに基づいて、更新された全体埋め込みを再生成し、更新された全体埋め込みに基づいてサーバモデルをローカルに訓練する。
【選択図】図2
【特許請求の範囲】
【請求項1】
連合学習システムの複数のクライアントコンピューティングデバイスに対して、
初期圧縮埋め込みであって、前記初期圧縮埋め込みはクラスタリングによって圧縮され、前記初期圧縮埋め込みは、現在のミニバッチに対する初期ローカルモデルの出力を含む、初期圧縮埋め込みと、
前記初期圧縮埋め込みに対応する初期クラスタラベルと
を取得する段階と、
前記複数のクライアントコンピューティングデバイスに対して取得された前記初期圧縮埋め込みおよび前記初期クラスタラベルに基づいて初期全体埋め込みを再生成する段階と、
前記連合学習システムのサーバにおいて、サーバモデルの現在のバージョンを前記複数のクライアントコンピューティングデバイスのそれぞれに送信する段階と、
前記連合学習システムの前記サーバにおいて、前記初期全体埋め込みと前記現在のサーバモデルとを用いた、前記連合学習システムの前記複数のクライアントコンピューティングデバイスによるローカル訓練に基づいて、前記連合学習システムの前記複数のクライアントコンピューティングデバイスから、
更新された圧縮埋め込みであって、前記更新された圧縮埋め込みは、クラスタリングによって圧縮されている、更新された圧縮埋め込みと、
前記更新された圧縮埋め込みに対応する更新されたクラスタラベルと
を取得する段階と、
前記連合学習システムの前記サーバにおいて、前記更新された圧縮埋め込みと前記対応する更新されたクラスタラベルとに基づいて、更新された全体埋め込みを再生成する段階と、
前記連合学習システムの前記サーバにおいて、前記更新された全体埋め込みに基づいて、前記サーバモデルをローカルに訓練して、前記サーバモデルの更新されたバージョンを取得する段階と
を備える、方法。
【請求項2】
前記初期圧縮埋め込みと前記初期クラスタラベルとを取得する前記段階、および、前記初期全体埋め込みを再生成する前記段階が、前記サーバにおいて実行され、前記サーバモデルの前記現在のバージョンを前記複数のクライアントコンピューティングデバイスのそれぞれに送信する前記段階が、前記初期全体埋め込みを送信する段階をさらに含む、請求項1に記載の方法。
【請求項3】
前記複数のクライアントコンピューティングデバイスによる前記ローカル訓練が、更新されたローカルモデルを生成し、さらに、前記サーバモデルの前記更新されたバージョンと前記更新されたローカルモデルとを用いて連合機械学習推論を実行する段階を含む、請求項2に記載の方法。
【請求項4】
前記連合機械学習推論に従って情報技術リソースを展開する段階をさらに備える、請求項3に記載の方法。
【請求項5】
前記連合学習システムの前記複数のクライアントコンピューティングデバイスについて、初期ローカルモデルの前記出力を、前記現在のミニバッチに対する初期圧縮解除埋め込みと判定する段階であって、前記初期ローカルモデルのそれぞれは、データの垂直スライスに基づいている、判定する段階と、
前記連合学習システムの前記複数のクライアントコンピューティングデバイスについて、前記初期圧縮解除埋め込みを前記クラスタリングによって圧縮して、前記初期圧縮埋め込みを取得する段階と、
前記連合学習システムの前記複数のクライアントコンピューティングデバイスについて、前記初期圧縮埋め込みおよび初期クラスタラベルを前記連合学習システムの前記サーバに送信する段階と、
前記連合学習システムの前記複数のクライアントコンピューティングデバイスについて、前記初期全体埋め込みおよび前記現在のサーバモデルに基づいて前記初期ローカルモデルをローカルに訓練して、前記更新されたローカルモデルを取得する段階であって、前記更新されたローカルモデルのそれぞれは、データの別の垂直スライスに基づいている、取得する段階と、
前記連合学習システムの前記複数のクライアントコンピューティングデバイスについて、前記更新されたローカルモデルに基づいて、前記更新されたクラスタリングされた埋め込みと対応する更新されたクラスタラベルとを前記連合学習システムの前記サーバに送信する段階と
をさらに備える、請求項3に記載の方法。
【請求項6】
前記初期圧縮埋め込みおよび前記初期クラスタラベルを取得する前記段階と、前記初期全体埋め込みを再生成する前記段階と、前記サーバモデルの前記現在のバージョンを送信する前記段階と、前記更新された圧縮埋め込みおよび前記更新されたクラスタラベルを取得する前記段階と、前記更新された全体埋め込みを再生成する前記段階と、前記サーバモデルをローカルに訓練して、前記サーバモデルの前記更新されたバージョンを取得する前記段階とを、収束まで繰り返す段階をさらに備える、請求項5に記載の方法。
【請求項7】
前記更新されたクラスタリングされた埋め込みを送信する段階が、差分更新されたクラスタリングされた埋め込みを送信する段階を含む、請求項6に記載の方法。
【請求項8】
前記サーバモデルの前記現在のバージョンの前記送信を繰り返すとき、前記サーバモデルの前記現在のバージョンは圧縮形態で送信される、請求項7に記載の方法。
【請求項9】
前記クラスタリングが、k平均クラスタリングを含む、請求項6に記載の方法。
【請求項10】
前記初期圧縮埋め込みおよび前記初期クラスタラベルを取得する前記段階と、前記初期全体埋め込みを再生成する前記段階と、前記サーバモデルの前記現在のバージョンを送信する前記段階と、前記更新された圧縮埋め込みおよび前記更新されたクラスタラベルを取得する前記段階と、前記更新された全体埋め込みを再生成する前記段階と、前記サーバモデルをローカルに訓練して、前記サーバモデルの前記更新されたバージョンを取得する前記段階とを繰り返すときに、前記クラスタリングにおけるクラスタの数を減らす段階をさらに備える、請求項9に記載の方法。
【請求項11】
前記複数のクライアントコンピューティングデバイス上の前記ローカル訓練、および前記サーバ上の前記ローカル訓練が5~10回の反復にわたって実行される、請求項5から10のいずれか一項に記載の方法。
【請求項12】
コンピュータ実行可能命令を具現化するメモリと、前記メモリに連結された少なくとも1つのプロセッサであって、
複数のクライアントコンピューティングデバイスに対して、
初期圧縮埋め込みであって、前記初期圧縮埋め込みはクラスタリングによって圧縮され、前記初期圧縮埋め込みは、現在のミニバッチに対する初期ローカルモデルの出力を含む、初期圧縮埋め込みと、
前記初期圧縮埋め込みに対応する初期クラスタラベルと
を取得することと、
前記複数のクライアントコンピューティングデバイスから取得した前記初期圧縮埋め込みおよび前記初期クラスタラベルに基づいて初期全体埋め込みを再生成することと、
サーバモデルの現在のバージョンを前記複数のクライアントコンピューティングデバイスのそれぞれに送信することと、
前記初期全体埋め込みおよび前記現在のサーバモデルを用いた前記複数のクライアントコンピューティングデバイスによるローカル訓練に基づいて、前記複数のクライアントコンピューティングデバイスから、
更新された圧縮埋め込みであって、前記更新された圧縮埋め込みはクラスタリングによって圧縮されている、更新された圧縮埋め込みと、
前記更新された圧縮埋め込みに対応する更新されたクラスタラベルと
を取得することと、
前記更新された圧縮埋め込みおよび前記対応する更新されたクラスタラベルに基づいて、更新された全体埋め込みを再生成することと、
前記更新された全体埋め込みに基づいて前記サーバモデルをローカルに訓練して、前記サーバモデルの更新されたバージョンを取得することと
を行うための前記コンピュータ実行可能命令を実行するように動作する、少なくとも1つのプロセッサとを備える、連合学習システム。
【請求項13】
前記メモリおよび前記少なくとも1つのプロセッサは、前記複数のクライアントコンピューティングデバイスと、前記複数のクライアントコンピューティングデバイスに連結されたサーバにわたって分散されており、
前記複数のクライアントコンピューティングデバイスによる前記ローカル訓練が、更新されたローカルモデルを生成し、前記複数のクライアントコンピューティングデバイスが、
初期ローカルモデルの前記出力を、前記ミニバッチに対する初期圧縮解除埋め込みと判定することと、
前記クラスタリングによって前記初期圧縮解除埋め込みを圧縮して、前記初期圧縮埋め込みを取得することと、
前記初期圧縮埋め込みおよび初期クラスタラベルを前記サーバに送信することと、
前記初期全体埋め込みおよび前記現在のサーバモデルに基づいて前記初期ローカルモデルをローカルに訓練して、前記更新されたローカルモデルを取得することと、
前記更新されたローカルモデルに基づいて、前記更新されたクラスタリングされた埋め込みおよび対応する更新されたクラスタラベルを前記連合学習システムの前記サーバに送信することと
を行うように構成されており、
前記サーバは、サーバモデルの前記現在のバージョンを前記複数のクライアントコンピューティングデバイスのそれぞれに送信して、前記更新された圧縮埋め込みおよび前記更新されたクラスタラベルを前記複数のクライアントコンピューティングデバイスから取得し、かつ、前記サーバモデルをローカルに訓練するように構成されている、
請求項12に記載の連合学習システム。
【請求項14】
前記サーバは、前記初期圧縮埋め込みおよび前記初期クラスタラベルを取得し、かつ、前記初期全体埋め込みを再生成するように構成されており、前記サーバは、前記初期全体埋め込みを前記サーバモデルの前記現在のバージョンと共に送信するように構成されている、請求項13に記載の連合学習システム。
【請求項15】
前記サーバおよび前記複数のクライアントコンピューティングデバイスは、前記サーバモデルの前記更新されたバージョンおよび前記更新されたローカルモデルを用いて連合機械学習推論を実行するように協働して構成されている、請求項14に記載の連合学習システム。
【請求項16】
前記サーバおよび前記複数のクライアントコンピューティングデバイスがさらに、前記連合機械学習推論に従って情報技術リソースを展開するように協働して構成されている、請求項15に記載の連合学習システム。
【請求項17】
前記サーバおよび前記複数のクライアントコンピューティングデバイスがさらに、前記初期圧縮埋め込みおよび前記初期クラスタラベルの前記取得と、前記初期全体埋め込みの前記再生成と、前記サーバモデルの前記現在のバージョンの前記送信と、前記更新された圧縮埋め込みおよび前記更新されたクラスタラベルの前記取得と、前記更新された全体埋め込みの前記再生成と、前記サーバモデルの前記更新されたバージョンを取得するための前記サーバモデルの前記ローカル訓練とを、収束まで繰り返すように協働して構成されている、請求項15に記載の連合学習システム。
【請求項18】
前記クラスタリングがk平均クラスタリングを含み、前記サーバおよび前記複数のクライアントコンピューティングデバイスがさらに、前記初期圧縮埋め込みおよび前記初期クラスタラベルの前記取得と、前記初期全体埋め込みの前記再生成と、前記サーバモデルの前記現在のバージョンの前記送信と、前記更新された圧縮埋め込みおよび前記更新されたクラスタラベルの前記取得と、前記更新された全体埋め込みの前記再生成と、前記サーバモデルの前記更新されたバージョンを取得するための前記サーバモデルの前記ローカル訓練とを繰り返すときに、前記クラスタリングにおけるクラスタの数を減らすように協働して構成されている、請求項17に記載の連合学習システム。
【請求項19】
コンピュータに、
複数のクライアントコンピューティングデバイスに対して、
初期圧縮埋め込みであって、前記初期圧縮埋め込みがクラスタリングによって圧縮され、前記初期圧縮埋め込みが、現在のミニバッチに対する初期ローカルモデルの出力を含む、初期圧縮埋め込みと、
前記初期圧縮埋め込みに対応する初期クラスタラベルと
を取得する手順と、
前記複数のクライアントコンピューティングデバイスから取得された前記初期圧縮埋め込みおよび前記初期クラスタラベルに基づいて初期全体埋め込みを再生成する手順と、
サーバモデルの現在のバージョンを前記複数のクライアントコンピューティングデバイスのそれぞれに送信する手順と、
前記初期全体埋め込みおよび前記現在のサーバモデルを用いた前記複数のクライアントコンピューティングデバイスによるローカル訓練に基づいて、前記複数のクライアントコンピューティングデバイスから、
更新された圧縮埋め込みであって、前記更新された圧縮埋め込みはクラスタリングによって圧縮されている、更新された圧縮埋め込みと、
前記更新された圧縮埋め込みに対応する更新されたクラスタラベルと
を取得する手順と、
前記更新された圧縮埋め込みおよび前記対応する更新されたクラスタラベルに基づいて、更新された全体埋め込みを再生成する手順と、
前記更新された全体埋め込みに基づいて前記サーバモデルをローカルに訓練して、前記サーバモデルの更新されたバージョンを取得する順と
を実行させる、コンピュータプログラム。
【請求項20】
前記複数のクライアントコンピューティングデバイスによる前記ローカル訓練が、更新されたローカルモデルを生成し、
前記コンピュータに、
初期ローカルモデルの前記出力を、前記現在のミニバッチに対する初期圧縮解除埋め込みと判定するように前記複数のクライアントコンピューティングデバイスを構成する手順と、
前記クラスタリングによって前記初期圧縮解除埋め込みを圧縮して、前記初期圧縮埋め込みを取得するように前記複数のクライアントコンピューティングデバイスを構成する手順と、
前記初期圧縮埋め込みおよび初期クラスタラベルをサーバに送信するように前記複数のクライアントコンピューティングデバイスを構成する手順と、
前記初期全体埋め込みおよび前記現在のサーバモデルに基づいて前記初期ローカルモデルをローカルに訓練して、前記更新されたローカルモデルを取得するように前記複数のクライアントコンピューティングデバイスを構成する手順と、
前記更新されたローカルモデルに基づいて、前記更新されたクラスタリングされた埋め込みおよび対応する更新されたクラスタラベルを連合学習システムの前記サーバに送信するように前記複数のクライアントコンピューティングデバイスを構成する手順と、
前記サーバモデルの前記現在のバージョンを前記複数のクライアントコンピューティングデバイスのそれぞれに送信して、前記更新された圧縮埋め込みおよび前記更新されたクラスタラベルを前記複数のクライアントコンピューティングデバイスから取得し、かつ、前記サーバモデルをローカルに訓練するように前記サーバを構成する手順と
をさらに実行させる、請求項19に記載のコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、電気、電子、およびコンピュータ分野に関し、より具体的には、人工知能および機械学習などに関する。
【背景技術】
【0002】
連合学習は、分散型データからの分散モデル訓練のための機械学習技法である。データプライバシが維持され、中央クラウドの通信およびストレージ要件が低減されるなどの利益がある。連合学習は、例えば、水平連合学習および垂直連合学習を含む。連合学習の多くの実践的な用途では、特徴は複数のクライアントにわたって垂直に区画化されている。例えば、銀行および保険会社は、同じ人物について異なる情報を有する。そのような情報の組み合わせは、その人物のクレジットスコアなどを予測するために使用され得る。
【0003】
そのような垂直に区画化された特徴に対して連合学習を実施するために、垂直連合学習(VFL)を使用することができる。しかしながら、標準的なVFL手法では、クライアントとサーバとの間で埋め込みを通信する必要性によって、高い通信オーバヘッドを招き得る。
【発明の概要】
【発明が解決しようとする課題】
【0004】
標準的なVFL手法では、クライアントとサーバとの間で埋め込みを通信する必要性によって、高い通信オーバヘッドを招き得る。
【課題を解決するための手段】
【0005】
本発明の原理は、圧縮埋め込みを用いた垂直連合学習のための技法を提供する。一態様では、例示的な方法は、連合学習システムの複数のクライアントコンピューティングデバイスに対して、初期圧縮埋め込みであって、前記初期圧縮埋め込みはクラスタリングによって圧縮され、前記初期圧縮埋め込みは、現在のミニバッチに対する初期ローカルモデルの出力を含む、初期圧縮埋め込みと、前記初期埋め込みに対応する初期クラスタラベルとを取得する段階を含む。本方法はさらに、前記複数のクライアントコンピューティングデバイスに対して取得された前記初期圧縮埋め込みおよび前記初期クラスタラベルに基づいて初期全体埋め込みを再生成する段階と、前記連合学習システムのサーバにおいて、サーバモデルの現在のバージョンを前記複数のクライアントコンピューティングデバイスのそれぞれに送信する段階と、前記連合学習システムの前記サーバにおいて、前記初期全体埋め込みと前記現在のサーバモデルとを用いた、前記連合学習システムの前記複数のクライアントコンピューティングデバイスによるローカル訓練に基づいて、前記連合学習システムの前記複数のクライアントコンピューティングデバイスから、更新された圧縮埋め込みであって、前記更新された圧縮埋め込みは、クラスタリングによって圧縮されている、更新された圧縮埋め込みと、前記更新された圧縮埋め込みに対応する更新されたクラスタラベルと、を取得する段階とを含む。なおさらなる段階は、前記連合学習システムの前記サーバにおいて、前記更新された圧縮埋め込みと前記対応する更新されたクラスタラベルとに基づいて、更新された全体埋め込みを再生成する段階と、前記連合学習システムの前記サーバにおいて、前記更新された全体埋め込みに基づいて、前記サーバモデルをローカルに訓練して、前記サーバモデルの更新されたバージョンを取得する段階とを含む。
【0006】
別の態様では、例示的な連合学習システムは、コンピュータ実行可能命令を具現化するメモリと、前記メモリに連結された少なくとも1つのプロセッサであって、複数のクライアントコンピューティングデバイスに対して、初期圧縮埋め込みであって、前記初期圧縮埋め込みはクラスタリングによって圧縮され、前記初期圧縮埋め込みは、現在のミニバッチに対する初期ローカルモデルの出力を含む、初期圧縮埋め込みと、前記初期圧縮埋め込みに対応する初期クラスタラベルと、を取得することを行うための前記コンピュータ実行可能命令を実行するように動作する、少なくとも1つのプロセッサとを含む。少なくとも1つプロセッサはさらに、前記複数のクライアントコンピューティングデバイスから取得した前記初期圧縮埋め込みおよび前記初期クラスタラベルに基づいて初期全体埋め込みを再生成することと、サーバモデルの現在のバージョンを前記複数のクライアントコンピューティングデバイスのそれぞれに送信することと、前記全体埋め込みおよび前記現在のサーバモデルを用いた前記複数のクライアントコンピューティングデバイスによるローカル訓練に基づいて、前記複数のクライアントコンピューティングデバイスから、更新された圧縮埋め込みであって、前記更新された圧縮埋め込みはクラスタリングによって圧縮されている、更新された圧縮埋め込みと、前記更新された圧縮埋め込みに対応する更新されたクラスタラベルと、を取得することと、を行うための前記コンピュータ実行可能命令を実行するように動作する。少なくとも1つのプロセッサはなおさらに、前記更新された圧縮埋め込みおよび前記対応する更新されたクラスタラベルに基づいて、更新された全体埋め込みを再生成することと、前記更新された全体埋め込みに基づいて前記サーバモデルをローカルに訓練して、前記サーバモデルの更新されたバージョンを取得することとを行うための前記コンピュータ実行可能命令を実行するように動作する。
【0007】
なお別の態様では、例示的なコンピュータプログラム製品は、1つまたは複数のコンピュータ可読記憶媒体と、前記1つまたは複数のコンピュータ可読記憶媒体にまとめて記憶されたプログラム命令とを含む。プログラム命令は、複数のクライアントコンピューティングデバイスに対して、初期圧縮埋め込みであって、前記初期圧縮埋め込みがクラスタリングによって圧縮され、前記初期圧縮埋め込みが、現在のミニバッチに対する初期ローカルモデルの出力を含む、初期圧縮埋め込みと、前記初期圧縮埋め込みに対応する初期クラスタラベルとを取得するプログラム命令と、前記複数のクライアントコンピューティングデバイスから取得された前記初期圧縮埋め込みおよび前記初期クラスタラベルに基づいて初期全体埋め込みを再生成するプログラム命令と、サーバモデルの現在のバージョンを前記複数のクライアントコンピューティングデバイスのそれぞれに送信するプログラム命令と、前記全体埋め込みおよび前記現在のサーバモデルを用いた前記複数のクライアントコンピューティングデバイスによるローカル訓練に基づいて、前記複数のクライアントコンピューティングデバイスから、更新された圧縮埋め込みであって、前記更新された圧縮埋め込みはクラスタリングによって圧縮されている、更新された圧縮埋め込みと、前記更新された圧縮埋め込みに対応する更新されたクラスタラベルとを取得するプログラム命令と、を含む。プログラム命令はさらに、前記更新された圧縮埋め込みおよび前記対応する更新されたクラスタラベルに基づいて、更新された全体埋め込みを再生成するプログラム命令と、前記更新された全体埋め込みに基づいて前記サーバモデルをローカルに訓練して、前記サーバモデルの更新されたバージョンを取得するプログラム命令とを含む。
【0008】
本明細書で使用される場合、動作を「促進する」ことは、動作を実施すること、動作を容易にすること、動作の実行を助けること、または動作を実施させることを含む。そのため、限定ではなく例として、1つのプロセッサ上で実行している命令は、動作を実施させるまたは実施を補助するのに適切なデータまたはコマンドを送信することによって、リモートプロセッサ上で実行している命令によって実行される動作を促進し得る。疑念を回避するため、動作を実施すること以外によってある動作主が動作を促進する場合であっても、それにもかかわらず、動作は何らかのエンティティまたはエンティティの組み合わせによって実施される。
【0009】
本発明の1つまたは複数の実施形態またはそれらの要素は、示される方法ステップを実施するためのコンピュータ使用可能プログラムコードを伴うコンピュータ可読記憶媒体を含むコンピュータプログラム製品の形態で実装することができる。さらに、本発明の1つまたは複数の実施形態またはそれらの要素は、メモリと、メモリに連結され、例示的な方法ステップを実施するように動作する少なくとも1つのプロセッサとを含むシステム(または装置)の形態で実装され得る。なおさらに、別の態様では、本発明の1つまたは複数の実施形態またはそれらの要素は、本明細書に記載の方法ステップのうちの1つまたは複数を実行するための手段の形態で実装され得、手段には、(i)ハードウェアモジュール、(ii)コンピュータ可読記憶媒体(または複数のそのような媒体)に記憶され、ハードウェアプロセッサ上に実装されるソフトウェアモジュール、または(iii)(i)および(ii)の組み合わせが含まれ得、(i)~(iii)のいずれも、本明細書に記載の具体的な技法を実装する。
【0010】
本発明の技法は、実質的に有益な技術的効果を提供し得る。いくつかの実施形態は、これらの潜在的利点を有しない場合があり、これらの潜在的利点は、全ての実施形態に必ずしも必要とされるものではない。例えば、1つまたは複数の実施形態は、以下のうちの1つまたは複数を提供する。
【0011】
クライアントとサーバとの間の通信の効率を高め、それによりデータ転送オーバヘッドを低減することによって、垂直連合機械学習の技術的プロセスを向上させること。
【0012】
将来の挙動を予測するように予測連合学習モデルを訓練し、その予測に従ってITリソースを展開することによって、クラウドベースのITインフラストラクチャなどの情報技術(IT)インフラストラクチャを動作させる技術的プロセスを向上させること。
【0013】
本発明のこれらおよび他の特徴および利点は、添付の図面と併せて読まれる、以下の例示的な実施形態の詳細な説明から明らかとなろう。
【図面の簡単な説明】
【0014】
図1】本発明の1つまたは複数の実施形態が用いられ得る垂直連合学習環境を示す。
【0015】
図2】本発明の一態様によるシステム概要を提示する。
【0016】
図3】本発明の一態様による、垂直連合学習をクラスタリングするためのアルゴリズムを提示する。
【0017】
図4】本発明の一態様による、例示的な訓練損失対上流に伝送されたデータの量のプロットを提示する。
【0018】
図5】本発明の一態様による、例示的な訓練精度対上流に伝送されたデータの量のプロットを提示する。
【0019】
図6】本発明の一態様による、100エポックに対する訓練の終わりに上流に伝送されたデータ対クラスタリングの棒グラフを提示する。
【0020】
図7】本発明の一実施形態によるクラウドコンピューティング環境を示す。
【0021】
図8】本発明の一実施形態による抽象化モデル層を示す。
【0022】
図9】本発明の1つまたは複数の態様、もしくはその要素、またはその両方の実装において有用であり得、また、本発明の一実施形態によるクラウドコンピューティングノードを表している、コンピュータシステムを示す。
【発明を実施するための形態】
【0023】
上記のように、標準的なVFL手法では、クライアントとサーバとの間で埋め込みを通信する必要性によって、高い通信オーバヘッドを招き得る。1つまたは複数の実施形態は、有利に、VFL通信をより効率的にする。図1は、本発明の1つまたは複数の実施形態が用いられ得る垂直連合学習環境を示す。複数のクライアント/データサイロ103-1、103-2、103-3、103-4、103-5、...103K(まとめて103)は、垂直に分離されたデータを含み、サイロ/クライアントは、連合モデルを協働して訓練するために用いられる。このモデルWの一部は、信頼できるサーバ101に常駐し、各クライアントはその自身のモデルW、W、W、W、W、...WKを有する。第1のクライアント/データサイロにおいて生成されたデータの特徴は、典型的には、第2のクライアント/データサイロにおいて生成されたデータの特徴とは異なる。モデルW、W、W、W、W、...WKは各々、全体モデルの一部をなし、各々が、その対応するクライアントの特徴に対して別個に訓練され得る。全体/連合モデルは、信頼できるサーバ101、およびクライアントモデルW、W、W、W、W、...WKに常駐する部分Wを含む。
【0024】
ここで図2も参照すると、図2は、連合モデルの少なくとも一部(例えば、2つのクライアント103-1および103-2(したがって、2つの垂直区画)、ならびに単一のサーバ101)を示す。異なる種類のディープニューラルネットワークモデルを使用することができる。完全に接続されたネットワークが一例として示されているが、畳み込みニューラルネットワーク(CNN)、長短期記憶(LSTM)、または他のタイプのネットワークを用いることができる。特徴は、クライアント103にわたって垂直に区画化され、データサンプルは、共有鍵(例えば、人物に固有の数値、例えば、その人物の社会保障番号)と、共有ラベル(例えば、グランドトゥルース予測結果)とを有する。クライアント103-1に対しては特徴x、x、x、およびxを供給し、一方で、クライアント103-2に対しては特徴x、x、x、およびxを供給する。1つまたは複数の実施形態では、共有鍵を介してクライアント103にわたるミニバッチのサンプリングが同期される。当業者には理解されるように、ミニバッチの勾配降下は、モデル誤差を計算し、かつモデル係数を更新するための使用される小さいバッチに訓練データセットを分割する勾配降下アルゴリズムの変動である。1つまたは複数の実施形態では、ネットワーク全体を通じてフィードフォワードするためにミニバッチが選ばれる。選択されたミニバッチはいくつかのサンプルを含み、それらはクライアントにわたって同期される。例えば、全てのサンプルが同じ人物に関連している。説明したように、ミニバッチのサンプリングが共有鍵を使用して同期され得ると仮定する。
【0025】
図2の例において、クライアント103-1および103-2のモデルは各々が3つの層を有し、各クライアントモデルの第3の層はまた、サーバモデルに対する入力レイヤとしても機能する。各々のケースにおいて、第2の層の後に埋め込みが生成される。埋め込みは、クライアントモデルの第3の層であるサーバモデルの第1の層に供給される。異なるクライアントからの埋め込みは、同じ次元のものであり、したがって、加算することができる。順方向伝搬の間、埋め込みはサーバモデルを通じて順方向に伝搬される。
【0026】
図1および2の例におけるモデルは、クライアント103とサーバ101とに分割される。クライアントおよびサーバのモデルは、同時に(洗剤情報を使用して)または交互に訓練され得る。1つまたは複数の実施形態では、サーバモデルWを訓練するために、クライアントモデルの最後の層の出力から取得された埋め込みはサーバに送信される。クライアント103-2のモデルの層1における上部ニューロンは、特に、上部入力特徴と層1における上部ニューロンとの間の接続に割り当てられた重みである
【数1】
に特徴xを乗算した結果を入力として受信し、クライアント103-2のモデルの層2における上部ニューロンは、特に、層1における上部ニューロンと層2における上部ニューロンとの間の接続に割り当てられた重みである
【数2】
に層1における上部ニューロンの出力である
【数3】
を乗算した結果を入力として受信し、層3における上部ニューロンは、特に、層2における上部ニューロンと層3における上部ニューロンとの間の接続に割り当てられた重みである
【数4】
に層2における上部ニューロンの出力である
【数5】
を乗算した結果を入力として受信することに留意されたい。層4における上部ニューロンは、特に、層3における上部ニューロンと層4における上部ニューロンの間の接続に割り当てられた重みである
【数6】
に層3における上部ニューロンの出力である
【数7】
を乗算した結果を入力として受信する。
【0027】
埋め込みを考慮して、典型的にはベクトルの形態でも同様である。図2の例において、
【数8】

【数9】
を乗算すると、クライアント103-2からサーバ送信された埋め込みベクトルにおける数字のうちの1つが得られる。当業者には理解されるように、埋め込みは、例えば、大きな疎行列の次元を低減するために使用され得る。別の埋め込みがクライアント103-1からサーバに送信される。各クライアントからの埋め込みが加算され、サーバモデルを通じて順方向に供給される。出力が取得され、例えば、ここで分類が実行される。 次に、逆方向伝搬が実行される。 E()は、サーバモデルの終わりにおける計算された損失を表す。 図2の最下部の太い矢印111-1、111-2、111-3、111-4、111-5は、逆方向伝搬の間に、重みの関連するセットに関して損失の勾配(偏導関数)を取ることを示す。 矢印115-1、115-2、115-3、115-4、115-5は、クライアント103-1の順方向伝搬を表す(既に説明した、クライアント103-2の順方向伝搬を表す矢印113-1、113-2、113-3、113-4、113-5と同様に)。
【0028】
クライアントモデルW、W、W、W、W、...Wを訓練するために、現在のサーバモデルが送信されて各クライアントにおいて複製され得るか、または、サーバモデルの第1の層において取得されたサンプル特有の情報が、逆方向伝搬の間にクライアントに送信され得るかのいずれかである(後半のオプションは矢印111-3によって示される)。前半のオプションでは、例えば、クライアント103-1には、クライアント103-2からの埋め込みのスナップショットおよびサーバモデルのスナップショットが提供される。次に、クライアント103-1は、ネットワーク全体を通じた順方向伝搬をローカルに実行することができる。顕著な情報交換が必要とされ得、1つまたは複数の実施形態は、この手順の通信をより効率的にし得る。図2の最下部の太い矢印111-1、111-2、111-3、111-4、111-5は、逆方向伝搬プロセスを示し、ここで、サーバモデルEの勾配が、各段階において、対応する重み
【数10】

【数11】

【数12】

【数13】

【数14】
に関して算出される。
【0029】
サーバモデルは損失を計算することができるため、順方向伝搬および逆方向伝搬の両方が実行され得る。1つまたは複数の実施形態では、クライアントは、それらのニューラルネットワークも訓練する必要があるが、それらは、逆方向伝搬を実行する/ローカル反復を有効にするために、サーバモデルのスナップショットを必要とする。矢印111-3を参照されたい。同様に、本明細書の他の箇所で説明するように、クライアントはそれらの埋め込みのスナップショットをサーバに送信する。
【0030】
既存の垂直連合学習手法では、各データサンプルの埋め込みは、クライアント103とサーバ101との間で伝送される必要があり、これにより高い伝送オーバヘッドが招かれ得る。この問題を克服するために、1つまたは複数の実施形態は、クラスタリング手法を使用して、データサンプル(例えば、ミニバッチにおけるもの)の埋め込みを組み合わせる。クラスタサイズは、埋め込みの類似性、およびさらなる訓練に対するそれらの影響に基づいて判定され得る(すなわち、クラスタサイズは動的に更新され得る)。例えば、特定のクライアントにおける特徴が最終予測に対して影響がない(例えば、このクライアントからの全ての埋め込みが同じである、または非常に類似している)場合、全ての埋め込みを表すのに単一のベクトルを使用するだけで十分であり、すなわち、クラスタサイズは1である。他方で、クライアントにおける特徴が最終予測に対して影響力を持っている(すなわち、予測結果がこれらの特徴に強く依存している)場合、異なるサンプルの埋め込みは非常に異なっている可能性が高く、大きなクラスタサイズを使用することが適切である。
【0031】
埋め込みはまた、前に送信したものと比較した相違点のみを送信する(任意に、量子化の後に)ことによって圧縮され得る。クラスタリングおよび圧縮方法はまた、何らかの事前定義されたメトリックに従ってユーザプライバシーが維持されるように設計され得る。k平均が非限定的な例である。クラスタリングはベクトル量子化の一形態である。1つまたは複数の実施形態では圧縮されたモデルはサーバからクライアントに送信され、すなわち、1つまたは複数の実施形態では、下流通信も圧縮される。
【0032】
図3は、サーバモデルおよび上流圧縮のクラスタリングを用いた垂直連合学習のための例示的なアルゴリズム301の擬似コードを提示する。1行目および2行目において、クライアントおよびサーバのモデルが初期化される(t=0)。時刻t=0におけるk番目のクライアントは、
【数15】
として指定される。時刻t=0におけるサーバモデルは、
【数16】
として指定される。3行目から29行目のFOR NEXTループに従って、時間ステップt=1~Tにわたって全体的な技法が繰り返される。4行目において、所与の時間ステップについて、クライアントにわたって同期され、かつ、特徴Xから選択されたミニバッチBをランダムにサンプリングする。5~9行目において、並行して、各クライアントk=1,...Kについて、ローカルモデルの出力を取得し(6行目)、k平均クラスタリングなどによって上流データを圧縮し(7行目)、クラスタリングされた埋め込みおよびラベルをサーバに送信することによって埋め込みを交換する(8行目)。
【数17】
という記号は、時刻tにおけるミニバッチB、および時刻tにおけるk番目のクライアントのためのモデル
【数18】
に基づいて、関数hを使用してクライアントkにおいて見出されたミニバッチBのための埋め込みを表す。当業者によって理解されるように、関数hはローカルニューラルネットワークモデルからの出力の省略表現である。
【0033】
バッチサイズが50であると仮定する。50個のデータ点のそれぞれに対して1つの埋め込みが存在する。1つまたは複数の実施形態は、埋め込みに対してクラスタリング(7行目に見られるように、k平均クラスタリングは非限定的な例である)を適用して、上流データを圧縮する。k平均(または他の)クラスタリングは、所望の数の重心を取得するように変調され得る。埋め込みのクラスタリングされたセットおよびクラスタラベルは、次に、サーバに送信される。50個のデータ点の例において、k平均(または他の)クラスタリングの結果として5個のクラスタが見出されたと仮定する。50個のデータ点全体ではなく、5個のクラスタの重心およびクラスタラベルはサーバに送信され(8行目)、それにより、必要とされる通信帯域幅が有利に低減される。クラスタラベルは、k平均(または他の)クラスタリングの出力、例えば、サンプル1がクラスタ1に属し、サンプル2がクラスタ1に属し、サンプル3がクラスタ2に属することなどを示すベクトルである。50個のデータ点に対して50個のエントリが存在する。
【0034】
10行目において、サーバは、クラスタ情報を使用して個々のクライアント
【数19】
のものから、全体モデル埋め込み
【数20】
を再生成し、それらを、更新されたサーバモデル
【数21】
と共に、11行目において全てのクライアントに送信する。サーバは、クラスタの重心に基づいて埋め込み行列を再形成する。各クラスタは重心を有し、各データ点を送信する代わりに、各データ点がどのクラスタに属するか、およびそのクラスタの中心を送信する必要があるのみとなる。サーバにおいて、クラスタにおける各データ点は、再形成においてそのクラスタの重心と置き換えられる。これにより、送信される必要があるのは重心およびデータ点ラベルのみとなるため、帯域幅が低減される。1つまたは複数の実施形態では、各クライアントは、ローカル訓練の複数の反復を実行するが、外部通信には周期的にのみ関与する。しかしながら、1つまたは複数の実施形態では、特徴が分散されているため、クライアントは、ローカル反復を可能にするために、他のサイロ/クライアントからの情報(他のクライアントからの埋め込みおよびサーバモデルのスナップショット)を必要とする。サーバは、個々のクライアントから(クラスタリングされた)情報を取得し、全体埋め込みを再生成し、そして11行目において、このプロセスを促進するために、時刻tのサーバモデルと共にそれらを個々のクライアントに送信し返す。
【0035】
この時点で、クライアントは、何回かの反復Qにわたってローカル訓練を実行するのに必要な全ての情報を有している。12~22行目において、並行して、各クライアントは、13行目で全体埋め込みの
【数22】
のそのコピーを受信し、次に、14~19行目のFOR NEXTループにおいて、q=1~Qについて、15行目で、時刻tにおけるミニバッチB、ならびに時刻tおよびq番目の反復におけるk番目のクライアントのためのモデル
【数23】
に基づいて、関数hを使用してローカル埋め込み
【数24】
を(サーバと通信することなく)取得する。 16行目において、損失計算を実行する(ミニバッチに含まれるy(データラベル/クラス)に対して、当業者によって選択され得る適切な損失関数を、時刻tにおけるサーバモデル、各クライアントの埋め込みに適用する)。当業者は、好適な損失関数をヒューリスティックに選び得、非限定的な例には、交差エントロピー損失および平均二乗誤差などが含まれる。17行目において、(時刻tにおけるサーバモデルに基づいて)偏導関数を判定し、ローカル勾配を適用して、q+1のローカルモデルを更新する(18行目)。これは、座標降下などの標準的なニューラルネットワーク訓練技法を使用してなされ得る。Q=1である場合、アルゴリズムは、各ラウンドでサーバ通信を伴う、各反復において順方向および逆方向伝搬を実行することに減じる。Qは、用途およびデータセットのヒューリスティックス/知識に基づいて、1を超えて増加させることができる。非限定的な例において、Qは、5~10の範囲内の値に増加する。
【0036】
Qを過度に増加させることは、収束に悪影響を及ぼし得る。15~18行目において、クライアントは順方向および逆方向伝搬を実行する。順方向伝搬の場合、クライアントは埋め込みを見出し、次に、11行目において取得したサーバモデルのコピーを通じて埋め込みを供給する。16行目において損失を見出し、17行目において勾配を計算する。勾配を適用することによって、ローカルモデルの重みが18行目において更新される。これは、Q回の反復にわたってなされる。Q回の反復の終わりに、クライアントは実際のサーバモデルが訓練することを可能にする。重みは更新されているため、各クライアントモデルの埋め込みもまた更新される。各クライアントモデルは、その更新された埋め込みを形成し、20行目でk平均クラスタリングが実行される。クラスタリングされた埋め込み
【数25】
およびクラスタラベルが、21行目でサーバに送信される。ここでサーバは、24~28行で訓練を行う(10行目と同様に23行目で再生成された)最新の埋め込みを有する。図3の非限定的な例において、サーバはまたQ回の反復にわたって訓練を行い、これにより、より高速でクライアントサーバ通信の必要が低減された訓練が可能となる。21行目および23行目は、8行目および10行目と類似しており、8行目および10行目は初期埋め込みを用いるのに対し、21行目および23行目は更新された埋め込みを用いる。サーバのためのQの値は、必ずしもクライアントのためのQの値と同じである必要はなく、異なるクライアントは必ずしも互いと同じQ値を有する必要はない。
【0037】
そのため、20行目でk平均クラスタリングを実施して、上流データを圧縮し、21行目で、クラスタリングされた埋め込みおよびラベルをサーバに送信する。23行目で、サーバは、クラスタ情報を使用して、個々のクライアントのものから更新された全体モデル埋め込みを再生成する。24~29行目のFOR NEXTループにおいて、損失および偏導関数を計算し、ローカル勾配を適用する。25行目で、損失計算を実行する(ミニバッチに含まれるyに対して、当業者によって選択され得る適切な損失関数を、時刻t、反復qにおけるサーバモデル、全体埋め込みに適用する(上の説明を参照されたい))。26行目において、(時刻t、反復qにおけるサーバモデルに基づいて)偏導関数を判定し、ローカル勾配を適用して、q+1のローカルモデルを更新する(18行目)。再び、これは、座標降下などの標準的なニューラルネットワーク訓練技法を使用してなされ得る。
【0038】
T回のラウンドの終わりに、連合モデルが正確な分類/推論を達成するために使用され得るように十分な訓練が実行された。Tの値は、ヒューリスティックに選択され得るか、または、計算された損失は追跡され得、計算は、(許容可能な性能/精度が達成されるように)損失が許容可能な閾値以下になったときに停止した、または、連続したラウンド/時間ステップの間で有意に変化しない。そのため、擬似コードはT個の時間ステップを示すが、Tは、事前に固定されておらず、むしろ、説明されるように、計算の間に動的に決定され得る。
【0039】
実験
【0040】
病院内死亡率予測の二値分類のために、公共で利用可能な匿名の病院データベースを使用して、2つのワーカ103および1つのサーバ101を用いて実験を実行した。ワーカ103は長短期記憶(LSTM)モデルを使用し、一方で、サーバモデルは、2つの完全に接続された(FC)層およびSoftMax出力を用いた。128のバッチサイズを用い、バッチにおけるクラスタの数は、値16(すなわち、16個の埋め込みを送信する)、32、および64(すなわち、サーバに送信されるデータの量を半分にした)にわたって変動した。「クラスタリングなし」のケースはクラスタリングがなかった場合であり、128個の全てのデータ点が伝送された。実験において、各エポック、すなわち、所与のバッチサイズを有するデータセット全体を通じた1回の反復の終わりに全ての訓練データ点の損失をプロットした。これは、全てのバッチごとにこれを計算するのは非常に高価となるためである。
【0041】
実験において、サーバ101およびワーカ103を各々、5回のエポックにわたってローカルに訓練した(Q=5)。図4において、X軸は、見られるバッチの数(上流に伝送されたキロバイト数)をプロットし、Y軸は,バッチの平均訓練損失を示している。上流に伝送された埋め込みは圧縮される(訓練損失の低減、およびしたがって収束が最も遅い、クラスタリングなしのケースを除く)。収束は、クラスタサイズ64でより速く、クラスタサイズ32でなお速く、クラスタサイズ16で最も速い。異なる述べ方をすると、上流に送信された固定量のデータについて、より小さいクラスタサイズおよびしたがってより多くのデータ圧縮を伴う例は、より多くの訓練ラウンドを行うことができ、したがって、より速く収束する。示される例示的な結果は、異なるシードでの3回のランにおける平均である。1つまたは複数の実施形態では、アルゴリズムが実行された回数、および伝送された浮動小数点数/整数の数を見ることによって、伝送されたバイト数がオフラインで計算される。バッチごとに、2つの上流伝送がある。バッチサイズ128の単一の伝送の場合、伝送されたバイトの総数は以下のように決定される。
【0042】
伝送された総バイト=(埋め込みサイズ×クラスタの数×64+バッチサイズ×6)/(1024×8)バイト。
【0043】
上記において、因数6は、128の2を底とする対数である。
【0044】
なおも図4を参照すると、全てのケースを、約95000KBのデータが伝送されるまで訓練した。100回のエポックの終わりまでに、クラスタサイズ16の構成によっておよそ95000KBが上流に伝送された。転送される同じ量のバイトに対する異なるクラスタリング設定の収束を見ると、転送される同じバイト数では、クラスタの数が減少するにつれて、収束率はより良好となることを見ることができる。これは、転送される同じバイト数では、訓練ラウンド数(図4のドットによって観測される)は圧縮の増加と共に増加するからである。
【0045】
ここで図5を参照すると、転送される同じバイト数に対する異なるクラスタリング設定の訓練精度(本質的には、図4に示される訓練損失の反対)を見ると、転送される同じバイト数では、クラスタの数が減少するにつれて、精度が上昇することを見ることができる。これは、転送される同じバイト数では、訓練ラウンド数(図5のドットによって観測される)は圧縮の増加と共に増加するため、より高い精度がより速く達成されるからである。
【0046】
図6は、100回のエポックに対する訓練の終わりに伝送されたバイト数を示す。伝送されるキロバイト数は、伝送される「埋め込み」の数が増加するにつれて増加していることを見ることができる。例において、1回のエポックあたり115個のバッチを用いて、最大で100回のエポック(T=100)まで全てのケースを訓練した。クラスタリングなしの場合、約700メガバイトより多くを上流に送信する必要がある。16クラスタの場合には約90メガバイトのみ、32クラスタの場合には約180メガバイト、64クラスタの場合には約380メガバイト(クラスタリングなしの場合の量のおよそ半分)を上流に送信する必要がある。
【0047】
そのため、1つまたは複数の実施形態は、複数のクライアントとサーバとを含み、クライアント103およびサーバ101が圧縮埋め込みを交換する、垂直連合学習システムを提供することが理解されるであろう。1つまたは複数の実施形態では、クラスタリング手法を使用して、データサンプル(例えば、ミニバッチにおけるもの)の埋め込みが組み合わされる。クラスタサイズは、例えば、埋め込みの類似性、およびさらなる訓練に対するそれらの影響に基づいて判定され得る。
【0048】
いくつかの例では、埋め込みは、前に送信したものと比較した相違点のみを送信する(任意に、量子化の後に)ことによって圧縮される。圧縮方法は、事前定義されたメトリックに従ってユーザプライバシーが維持されるように設計され得る。圧縮モデルは、クライアントからサーバへ、およびサーバからクライアントへの両方に送信され得る。
【0049】
そのため、1つまたは複数の実施形態は、垂直連合学習の通信オーバヘッドを低減するために、クライアントとサーバとの間で交換される圧縮埋め込みを用いる。1つまたは複数の実施形態は、垂直連合学習スキームに関与している複数の関係者間の通信を高速化させる。加えて、1つまたは複数の実施形態では、サーバもモデルの一部を訓練する。
【0050】
そのため、1つまたは複数の実施形態は、連合学習スキームにおける中央コンピューティングデバイスによって、連合学習スキームにおけるワーカコンピュータによって訓練された圧縮埋め込みを受信すること含む、連合学習スキームの効率を向上させるためにコンピューティングデバイスを使用するための技法を提供する。圧縮埋め込みは、連合学習スキームにおける他のワーカコンピュータによって訓練された他の圧縮埋め込みと結合可能である。連合学習スキームにおいて、連合学習モデルは、受信した全ての圧縮埋め込みに基づいてまとめて訓練される。
【0051】
いくつかの例では、圧縮埋め込みは、各ワーカコンピュータによってアクセスされたデータサンプルに基づく。
【0052】
多様な実践的な用途があり得る。例えば、製造者およびエンドユーザの工業企業は、同じ産業機器について異なる情報を有し得る。そのような情報の組み合わせは、その産業機器に必要なメンテナンススケジュールを予測するために使用することができる。ある企業によって管理されるクラウド(または他のIT)プラットフォームは、別の企業のデータを記憶し得、または、ITインフラストラクチャが、ある企業によって管理され得るが、サービスは別の企業によって提供され得る。いずれの企業もログを記憶し、一方はインフラストラクチャ(どれくらいの帯域幅/ストレージが使用されているか)、他方は、サービスが異なるユーザに対してどのように動作しているか、および過去に遷移してきた状態などの、サービス自体に関するログを記憶する。そのため、同じ期間における異なるログのセットがあり、ITサービスおよびインフラストラクチャの将来の挙動を予測するように予測モデルを訓練することが所望される。
【0053】
これまでの説明を踏まえると本発明の一態様による例示的な方法は、連合学習システムの複数のクライアントコンピューティングデバイスに対して、初期圧縮埋め込みと、初期圧縮埋め込みに対応する初期クラスタラベルとを取得することを含むことが理解されるであろう。初期圧縮埋め込みはクラスタリングによって圧縮され、現在のミニバッチに対する初期ローカルモデルの出力を含む。図3の擬似コードの8行目を参照されたい。クラスタラベルは、訓練データにおけるラベルと一緒にするべきではない。さらなる段階は、複数のクライアントコンピューティングデバイスに対して取得された初期圧縮埋め込みおよび初期クラスタラベルに基づいて、初期全体埋め込みを再生成することを含む。図3の擬似コードの10行目を参照されたい。この段階は、サーバまたは各クライアントにおいてなされ得る。なおさらなる段階は、連合学習システムのサーバにおいて、サーバモデルの現在のバージョンを複数のクライアントコンピューティングデバイスのそれぞれに送信することを含む。図3の擬似コードの11行目を参照されたい。
【0054】
なおさらなる段階は、連合学習システムのサーバにおいて、初期全体埋め込みと現在のサーバモデルとを用いた、連合学習システムの複数のクライアントコンピューティングデバイスによるローカル訓練に基づいて、連合学習システムの複数のクライアントコンピューティングデバイスから、更新された圧縮埋め込みであって、更新された圧縮埋め込みは、クラスタリングによって圧縮されている、更新された圧縮埋め込みと、更新された圧縮埋め込みに対応する更新されたクラスタラベルと、を取得することを含む。図3の擬似コードの21行目を参照されたい。さらに、さらなる段階は、連合学習システムのサーバにおいて、更新された圧縮埋め込みおよび対応する更新されたクラスタラベルに基づいて、更新された全体埋め込みを再生成することを含む。図3の擬似コードの23行目を参照されたい。追加の段階は、連合学習システムのサーバにおいて、更新された全体埋め込みに基づいてサーバモデルをローカルに訓練して、サーバモデルの更新されたバージョンを取得することを含む。図3の擬似コードの25~27行目を参照されたい。1つまたは複数の実施形態では、更新されたラベルは、更新された全体埋め込みを取得するためにのみ使用する必要があり、これは次に、更新されたサーバモデルを訓練および取得するために使用されることに留意されたい。
【0055】
1つまたは複数の実施形態では、初期圧縮埋め込みと初期クラスタラベルとを取得する段階、および、初期全体埋め込みを再生成する段階は、サーバにおいて実行され、サーバモデルの現在のバージョンを複数のクライアントコンピューティングデバイスのそれぞれに送信する段階は、初期全体埋め込みを送信する段階をさらに含む。
【0056】
1つまたは複数の実施形態では、複数のクライアントコンピューティングデバイスによるローカル訓練は、更新されたローカルモデルを生成し、さらなる段階303は、サーバモデルの更新されたバージョンと更新されたローカルモデルとを用いて連合機械学習推論を実行する段階を含む。非限定的な例において、推論の1つの実践的な用途は、305におけるように、推論に従って情報技術リソースを展開することを含む(例えば、図7および8を参照されたい)。
【0057】
一般的に、クライアントおよびサーバは、同じまたは異なるエンティティによって制御/動作され得ることに留意されたい。
【0058】
1つまたは複数の実施形態はさらに、連合学習システムの複数のクライアントコンピューティングデバイスに対して、初期ローカルモデルの出力を、現在のミニバッチに対する初期圧縮解除埋め込みと判定することを含む。初期ローカルモデルのそれぞれは、データの垂直スライスに基づいている。図3の擬似コードの6行目を参照されたい。そのような実施形態はまた、連合学習システムの複数のクライアントコンピューティングデバイスに対して、クラスタリングによって初期圧縮解除埋め込みを圧縮して、初期圧縮埋め込みを取得する(図3の擬似コードの7行目を参照されたい)ことと、連合学習システムの複数のクライアントコンピューティングデバイスに対して、初期圧縮埋め込みおよび初期クラスタラベルを連合学習システムのサーバに送信する(図3の擬似コードの8行目を参照されたい)こととを含む。そのような実施形態はさらに、連合学習システムの複数のクライアントコンピューティングデバイスに対して、初期全体埋め込みおよび現在のサーバモデルに基づいて初期ローカルモデルをローカルに訓練して、更新されたローカルモデルを取得することであって、更新されたローカルモデルのそれぞれは、データの別の垂直スライスに基づいている、取得する(図3の擬似コードの15~18行目を参照されたい)ことと、連合学習システムの複数のクライアントコンピューティングデバイスに対して、更新されたローカルモデルに基づいて、更新されたクラスタリングされた埋め込みおよび対応する更新されたクラスタラベルを連合学習システムのサーバに送信する(図3の擬似コードの20~21行目を参照されたい)こととを含む。
【0059】
データの「別の」垂直スライスの有意性に留意されたい。各ラウンドにおいて、クライアントは、そのクライアントからのデータのみを使用するため、その意味では、データの同じスライスである。しかしながら、更新されたミニバッチのサンプリングにより、正確には同じデータではなく、むしろ、そのクライアントに関連付けられた同じスライスから選択された異なるセットである。
【0060】
上記のように、1つまたは複数の実施形態では、特徴は、クライアント103にわたって垂直に区画化され、データサンプルは、共有鍵(例えば、人物に固有の数値、例えば、その人物の社会保障番号)と、共有ラベル(例えば、グランドトゥルース予測結果)とを有する。1つまたは複数の実施形態では、共有鍵を介してクライアント103にわたるミニバッチのサンプリングが同期される。
【0061】
1つまたは複数の実施形態はさらに、初期圧縮埋め込みおよび初期クラスタラベルを取得する段階と、初期全体埋め込みを再生成する段階と、サーバモデルの現在のバージョンを送信する段階と、更新された圧縮埋め込みおよび更新されたクラスタラベルを取得する段階と、更新された全体埋め込みを再生成する段階と、サーバモデルをローカルに訓練して、サーバモデルの更新されたバージョンを取得する段階とを、収束まで繰り返すことを含む。図3の擬似コードにおける3~29行目のFOR END FORループを参照されたい。Tの値は、ヒューリスティックに選択され得るか、または、計算された損失は追跡され得、計算は、(許容可能な性能/精度が達成されるように)損失が許容可能な閾値以下になったときに停止した、または、連続したラウンド/時間ステップの間で有意に変化しない。そのため、擬似コードはT個の時間ステップを示すが、Tは、事前に固定されておらず、むしろ、説明されるように、計算の間に動的に決定され得る。
【0062】
1つまたは複数の実施形態では、段階が繰り返されるとき(例えば、t=2)、2回目の反復についてはランダムサンプリングが実行され、再び、データセット全体のサブセットをランダムにサンプリングする。1つまたは複数の実施形態では、反復ごとに、データ点(ミニバッチ)の異なるランダムサンプルが使用され、ミニバッチは各反復において異なる。したがって、1つまたは複数の実施形態では、ミニバッチB、および時刻tにおけるk番目のクライアントのモデル
【数26】
は、各ラウンドにおいて異なる。クライアントおよびサーバのモデルは反復的に更新され、これもまた、埋め込みを各反復において変化させる。
【0063】
1つまたは複数の実施形態では、更新されたクラスタリングされた埋め込みを送信すること(図3の擬似コードの21行目)は、差分更新されたクラスタリングされた埋め込みを送信することを含む。他の箇所で上記したように、例えば、埋め込みは、前に送信したものと比較した相違点のみを送信する(任意に、量子化の後に)ことによって圧縮され得る。クラスタリングおよび圧縮方法はまた、何らかの事前定義されたメトリックに従ってユーザプライバシーが維持されるように設計され得る。
【0064】
1つまたは複数の実施形態では、サーバモデルの現在のバージョンの送信を繰り返すとき、サーバモデルの現在のバージョンは圧縮形態で送信される。すなわち、1つまたは複数の実施形態では圧縮されたモデルはサーバからクライアントに送信され、すなわち、1つまたは複数の実施形態では、下流通信も圧縮される。
【0065】
1つまたは複数の実施形態では、クラスタリングはk平均クラスタリングを含み、k平均は非限定的な例であり、クラスタリングは、ベクトル量子化の一形態である。
【0066】
1つまたは複数の実施形態はさらに、初期圧縮埋め込みおよび初期クラスタラベルを取得する段階と、初期全体埋め込みを再生成する段階と、サーバモデルの現在のバージョンを送信する段階と、更新された圧縮埋め込みおよび更新されたクラスタラベルを取得する段階と、更新された全体埋め込みを再生成する段階と、サーバモデルをローカルに訓練して、サーバモデルの更新されたバージョンを取得する段階とを繰り返すときに、クラスタリングにおけるクラスタの数を減らすことを含む。クラスタサイズは、埋め込みの類似性、およびさらなる訓練に対するそれらの影響に基づいて判定され得る(すなわち、クラスタサイズは動的に更新され得る)。例えば、特定のクライアントにおける特徴が最終予測に対して影響がない(例えば、このクライアントからの全ての埋め込みが同じである、または非常に類似している)場合、全ての埋め込みを表すのに単一のベクトルを使用するだけで十分であり、すなわち、クラスタサイズは1である。他方で、クライアントにおける特徴が最終予測に対して影響力を持っている(すなわち、予測結果がこれらの特徴に強く依存している)場合、異なるサンプルの埋め込みは非常に異なっている可能性が高く、大きなクラスタサイズを使用することが適切である。
【0067】
当業者であれば、「K」はクライアントの数、およびk平均クラスタリングの重心の数にも使用されることが理解され、文脈からその区別を理解するであろう(もちろん、クライアントの数および重心の数は必ずしも同じではない)。動的態様は、k平均クラスタリングにおいていくつのクラスタが使用されるか(すなわち、どれほどの圧縮)を変化させることを含み得る。これは、例えば、帯域幅の制限に依存し得る。クラスタリングにおけるデータ点の数を増加させることにより、クラスタの数が低減され、データをより圧縮することを考慮すると、クラスタにおけるデータ点の数を低減することは、より多くのクラスタが必要とされ、圧縮は少ないが、より高精度となることを意味する。例えば、訓練の終わりが近付くにつれて、クラスタがより少なくなり得る。もちろん、それが生じることがなくても、クラスタリングは典型的には反復ごとに変化されるため、ダイナミズムの要素は既に存在している。
【0068】
k平均クラスタリングにおけるクラスタの数のための初期値を選ぶために、例えば、分析されるデータの特性およびミニバッチのサイズに基づいてヒューリスティックスを使用する。例えば、誤差限界を与えられると、各クライアントはkを決定することができる。各クライアントは、所望する場合、異なるkを使用することができる。非限定的な例が、図、例えば図4~6に示されている。図4および5の例において、バッチサイズは128であり、クラスタの数は16~64の範囲であった。そのため、非限定的な例として、クラスタの数の上限は、バッチサイズの50%(64/128)であり得る一方、クラスタの数の下限は、バッチサイズの12.5%(16/128)またはバッチサイズの6.25%(8/128)であり得る。
【0069】
1つまたは複数の実施形態では、クライアント上のローカル訓練およびサーバ上のローカル訓練は、5~10回の反復にわたって実行される(すなわち、Q=5~10)。しかしながら、いくつかのケースでは、Qは、データの多様性および学習率に応じて、10よりもはるかに大きくなり得ることに留意されたい。例えば、Qは100であり得る。さらに、アルゴリズムはまた、単一のローカル更新と共に動作するため、Q=1はいくつかのケースにおける適切な特別なケースである。そのため、いくつかのケースでは、Q=1~100である。Qは、クライアント間で、クライアントとサーバとの間で、およびラウンド間で変動し得る。
【0070】
別の態様では、例示的な連合学習システムは、コンピュータ実行可能命令を具現化するメモリと、メモリに連結された少なくとも1つのプロセッサであって、複数のクライアントコンピューティングデバイス103に対して、初期圧縮埋め込みであって、初期圧縮埋め込みはクラスタリングによって圧縮され、初期圧縮埋め込みは、現在のミニバッチに対する初期ローカルモデルの出力を含む、初期圧縮埋め込みと、初期圧縮埋め込みに対応する初期クラスタラベルと、を取得することを行うためのコンピュータ実行可能命令を実行するように動作する、少なくとも1つのプロセッサとを含む(例えば、図9および付随する文、ならびに上記の図3の擬似コードを参照されたい)。少なくとも1つプロセッサはさらに、複数のクライアントコンピューティングデバイスから取得した初期圧縮埋め込みおよび初期クラスタラベルに基づいて初期全体埋め込みを再生成することと、サーバモデルの現在のバージョンを複数のクライアントコンピューティングデバイスのそれぞれに送信することと、全体埋め込みおよび現在のサーバモデルを用いた複数のクライアントコンピューティングデバイスによるローカル訓練に基づいて、複数のクライアントコンピューティングデバイスから、更新された圧縮埋め込みであって、更新された圧縮埋め込みはクラスタリングによって圧縮されている、更新された圧縮埋め込みと、更新された圧縮埋め込みに対応する更新されたクラスタラベルと、を取得することと、を行うためのコンピュータ実行可能命令を実行するように動作する。少なくとも1つのプロセッサはなおさらに、更新された圧縮埋め込みおよび対応する更新されたクラスタラベルに基づいて、更新された全体埋め込みを再生成することと、更新された全体埋め込みに基づいてサーバモデルをローカルに訓練して、サーバモデルの更新されたバージョンを取得することとを行うためのコンピュータ実行可能命令を実行するように動作する。
【0071】
1つまたは複数の実施形態では、メモリおよび少なくとも1つのプロセッサは、複数のクライアントコンピューティングデバイスと、複数のクライアントコンピューティングデバイスに連結されたサーバ101とにわたって分散されており、複数のクライアントコンピューティングデバイスによるローカル訓練は、更新されたローカルモデルを生成し、複数のクライアントコンピューティングデバイスは、初期ローカルモデルの出力を、ミニバッチに対する初期圧縮解除埋め込みと判定することと、クラスタリングによって初期圧縮解除埋め込みを圧縮して、初期圧縮埋め込みを取得することと、初期圧縮埋め込みおよび初期クラスタラベルをサーバに送信することと、初期全体埋め込みおよび現在のサーバモデルに基づいて初期ローカルモデルをローカルに訓練して、更新されたローカルモデルを取得することと、更新されたローカルモデルに基づいて、更新されたクラスタリングされた埋め込みおよび対応する更新されたクラスタラベルを連合学習システムのサーバに送信することと、を行うように構成されている。さらに、サーバは、サーバモデルの現在のバージョンを複数のクライアントコンピューティングデバイスのそれぞれに送信して、更新された圧縮埋め込みおよび更新されたクラスタラベルを複数のクライアントコンピューティングデバイスから取得し、かつ、サーバモデルをローカルに訓練するように構成されている。
【0072】
クライアントおよびサーバは、例えば、擬似コードにおいて開示されるアルゴリズムの適切な部分を実装するコンピュータ実行可能命令によってそのように構成されていることが理解されるであろう。
【0073】
1つまたは複数の実施形態では、サーバは、初期圧縮埋め込みおよび初期クラスタラベルを取得し、かつ、初期全体埋め込みを再生成するように構成されており、サーバは、初期全体埋め込みをサーバモデルの現在のバージョンと共に送信するように構成されている。
【0074】
1つまたは複数の実施形態では、サーバおよび複数のクライアントコンピューティングデバイスは、サーバモデルの更新されたバージョンおよび更新されたローカルモデルを用いて連合機械学習推論を実行するように協働して構成されている。そのような推論の1つの非限定的かつ例示的な実践用途は、推論に従って情報技術リソースを展開することである。
【0075】
いくつかの例では、サーバおよび複数のクライアントコンピューティングデバイスがさらに、初期圧縮埋め込みおよび初期クラスタラベルの取得と、初期全体埋め込みの再生成と、サーバモデルの現在のバージョンの送信と、更新された圧縮埋め込みおよび更新されたクラスタラベルの取得と、更新された全体埋め込みの再生成と、サーバモデルの更新されたバージョンを取得するためのサーバモデルのローカル訓練とを、収束まで繰り返すように協働して構成されている。
【0076】
上記のように、いくつかのケースでは、クラスタリングはk平均クラスタリングを含む。クラスタリングはk平均クラスタリングを含み、サーバおよび複数のクライアントコンピューティングデバイスはさらに、初期圧縮埋め込みおよび初期クラスタラベルの取得と、初期全体埋め込みの再生成と、サーバモデルの現在のバージョンの送信と、更新された圧縮埋め込みおよび更新されたクラスタラベルの取得と、更新された全体埋め込みの再生成と、サーバモデルの更新されたバージョンを取得するためのサーバモデルのローカル訓練とを繰り返すときに、クラスタリングにおけるクラスタの数を減らすように協働して構成され得る。
【0077】
なお別の態様では、コンピュータプログラム製品(例えば、図9および付随する文、ならびに上記の図3の擬似コードを参照されたい)は、1つまたは複数のコンピュータ可読記憶媒体と、1つまたは複数のコンピュータ可読記憶媒体にまとめて記憶されたプログラム命令とを含み、プログラム命令は、複数のクライアントコンピューティングデバイスに対して、初期圧縮埋め込みであって、初期圧縮埋め込みがクラスタリングによって圧縮され、初期圧縮埋め込みが、現在のミニバッチに対する初期ローカルモデルの出力を含む、初期圧縮埋め込みと、初期圧縮埋め込みに対応する初期クラスタラベルとを取得するプログラム命令と、複数のクライアントコンピューティングデバイスから取得された初期圧縮埋め込みおよび初期クラスタラベルに基づいて初期全体埋め込みを再生成するプログラム命令と、サーバモデルの現在のバージョンを複数のクライアントコンピューティングデバイスのそれぞれに送信するプログラム命令と、全体埋め込みおよび現在のサーバモデルを用いた複数のクライアントコンピューティングデバイスによるローカル訓練に基づいて、複数のクライアントコンピューティングデバイスから、更新された圧縮埋め込みであって、更新された圧縮埋め込みはクラスタリングによって圧縮されている、更新された圧縮埋め込みと、更新された圧縮埋め込みに対応する更新されたクラスタラベルとを取得するプログラム命令と、を含む。プログラム命令はさらに、更新された圧縮埋め込みおよび対応する更新されたクラスタラベルに基づいて、更新された全体埋め込みを再生成するプログラム命令と、更新された全体埋め込みに基づいてサーバモデルをローカルに訓練して、サーバモデルの更新されたバージョンを取得するプログラム命令とを含む。
【0078】
いくつかの実施形態では、プログラム命令は、複数のクライアントコンピューティングデバイス103と、複数のクライアントコンピューティングデバイスに連結されたサーバ101とによって協働して実行され、複数のクライアントコンピューティングデバイスによるローカル訓練は、更新されたローカルモデルを生成する。プログラム命令はさらに、初期ローカルモデルの出力を、ミニバッチに対する初期圧縮解除埋め込みと判定するように複数のクライアントコンピューティングデバイスを構成するプログラム命令と、クラスタリングによって初期圧縮解除埋め込みを圧縮して、初期圧縮埋め込みを取得するように複数のクライアントコンピューティングデバイスを構成するプログラム命令と、初期圧縮埋め込みおよび初期クラスタラベルをサーバに送信するように複数のクライアントコンピューティングデバイスを構成するプログラム命令と、初期全体埋め込みおよび現在のサーバモデルに基づいて初期ローカルモデルをローカルに訓練して、更新されたローカルモデルを取得するように複数のクライアントコンピューティングデバイスを構成するプログラム命令と、更新されたローカルモデルに基づいて、更新されたクラスタリングされた埋め込みおよび対応する更新されたクラスタラベルを連合学習システムのサーバに送信するように複数のクライアントコンピューティングデバイスを構成するプログラム命令とを含む。プログラム命令はなおさらに、サーバモデルの現在のバージョンを複数のクライアントコンピューティングデバイスのそれぞれに送信して、更新された圧縮埋め込みおよび更新されたクラスタラベルを複数のクライアントコンピューティングデバイスから取得し、かつ、サーバモデルをローカルに訓練するようにサーバを構成するプログラム命令を含む。
【0079】
本開示はクラウドコンピューティングに関する詳細な説明を含んでいるが、本明細書に引用されている教示の実装はクラウドコンピューティング環境に限定されるものではないことが理解される。むしろ、本発明の実施形態は、現在知られているまたは後に開発される任意の他のタイプのコンピューティング環境と結合して実装されることが可能である。
【0080】
クラウドコンピューティングは、管理の労力またはサービスのプロバイダとのインタラクションを最小限に抑えながら迅速にプロビジョニングおよびリリースできる構成可能なコンピューティングリソース(例えば、ネットワーク、ネットワーク帯域幅、サーバ、プロセス、メモリ、ストレージ、アプリケーション、仮想マシン、およびサービス)の共有プールに対する便利なオンデマンドネットワークアクセスを可能するための、サービス提供のモデルである。このクラウドモデルは、少なくとも5つの特性、少なくとも3つのサービスモデルおよび少なくとも4つの展開モデルを含んでよい。
【0081】
特性は以下の通りである。
【0082】
オンデマンドセルフサービス:クラウドコンシューマは、人間とサービスのプロバイダとのインタラクションを要求することなく、必要に応じて自動的に、サーバ時間およびネットワークストレージなどのコンピューティング能力を一方的にプロビジョニングできる。
【0083】
ブロードネットワークアクセス:能力はネットワークを通じて利用可能であり、異種混合のシンまたはシッククライアントプラットフォームによる使用を促進する標準的な機構(例えば携帯電話、ラップトップ、およびPDA)を通じてアクセスされる。
【0084】
リソースプール:プロバイダのコンピューティングリソースはプールされ、マルチテナントモデルを使用して複数のコンシューマにサービスを提供し、異なる物理的および仮想的リソースが需要に応じて動的に割り当ておよび再割り当てされる。概してコンシューマは提供されるリソースの厳密な位置についての制御または知識を有しないが、より高い抽象化レベル(例えば、国、州、またはデータセンタ)で位置を指定可能であり得るという点で、位置独立性の意味がある。
【0085】
迅速な柔軟性:いくつかの場合においては自動的に、すばやいスケールアウトのために、能力を急速かつ柔軟にプロビジョニングでき、すばやいスケールインのために迅速にリリースできる。コンシューマにとって、多くの場合、プロビジョニングに利用可能な能力は無制限に見え、任意の時間に任意の量で購入できる。
【0086】
測定されたサービス:クラウドシステムは、サービスのタイプに適切な、いくらかの抽象化レベル(例えば、ストレージ、処理、帯域幅、および、アクティブユーザアカウント)で、測定能力を活用することによって、リソース使用を自動的に制御および最適化する。リソース使用量が監視、制御、報告され得、利用されるサービスのプロバイダおよびコンシューマの両方に透明性を提供する。
【0087】
サービスモデルは以下の通りである。
【0088】
サービスとしてのソフトウェア(SaaS):コンシューマに提供される能力は、クラウドインフラストラクチャ上で実行するプロバイダのアプリケーションを使用するためのものである。アプリケーションは、ウェブブラウザ(例えばウェブベースの電子メール)などのシンクライアントインタフェースを通じて様々なクライアントデバイスからアクセス可能である。コンシューマは、ネットワーク、サーバ、オペレーティングシステム、ストレージ、またはさらには個々のアプリケーション能力を含む基礎となるクラウドインフラストラクチャを管理または制御しないが、限定されたユーザ固有のアプリケーション構成設定は例外であり得る。
【0089】
サービスとしてのプラットフォーム(PaaS):コンシューマに提供される能力は、プロバイダによってサポートされるプログラミング言語およびツールを使用して作成される、コンシューマが作成または取得したアプリケーションをクラウドインフラストラクチャ上に展開することである。コンシューマは、ネットワーク、サーバ、オペレーティングシステム、またはストレージを含む基礎となるクラウドインフラストラクチャを管理または制御しないが、展開されたアプリケーション、および、場合によっては、環境構成をホストするアプリケーションに対する制御を有する。
【0090】
サービスとしてのインフラストラクチャ(IaaS):コンシューマに提供される能力は、処理、ストレージ、ネットワーク、および、コンシューマがオペレーティングシステムおよびアプリケーションを含み得る任意のソフトウェアを展開および実行することが可能な他の基礎的なコンピューティングリソースをプロビジョニングすることである。コンシューマは、基礎となるクラウドインフラストラクチャを管理または制御しないが、オペレーティングシステム、ストレージ、展開されたアプリケーション、および、場合によっては、選択されたネットワーキングコンポーネント(例えばホストファイアウォール)の限定された制御に対する制御を有する。
【0091】
展開モデルは以下の通りである。
【0092】
プライベートクラウド:クラウドインフラストラクチャは組織のみのために動作される。組織またはサードパーティによって管理され得、オンプレミスまたはオフプレミスに存在し得る。
【0093】
コミュニティクラウド:クラウドインフラストラクチャは、複数の組織によって共有され、共有された関心(例えば、ミッション、セキュリティ要件、ポリシー、および、コンプライアンス上の考慮事項)を有する特定のコミュニティをサポートする。組織またはサードパーティによって管理され得、オンプレミスまたはオフプレミスに存在し得る。
【0094】
パブリッククラウド:クラウドインフラストラクチャは、一般大衆または大きい産業グループに利用可能となり、クラウドサービスを販売する組織によって所有される。
【0095】
ハイブリッドクラウド:クラウドインフラストラクチャは、固有のエンティティであり続けるが、データおよびアプリケーションポータビリティを可能にする標準化またはプロプライエタリ技術(例えば、クラウド間のロードバランシングのためのクラウドバースティング)によって共に結合される2以上のクラウド(プライベート、コミュニティ、またはパブリック)の複合である。
【0096】
クラウドコンピューティング環境は、ステートレス、低結合、モジュール性、および、セマンティック相互運用性に対する重点を指向したサービスである。クラウドコンピューティングの中核には、相互接続されたノードで構成されるネットワークを含むインフラストラクチャが存在する。
【0097】
ここで図7を参照すると、例示的なクラウドコンピューティング環境50が示されている。示されるように、クラウドコンピューティング環境50は、クラウドコンシューマによって使用されるローカルコンピューティングデバイス、例えば、携帯情報端末(PDA)またはセルラ電話54A、デスクトップコンピュータ54B、ラップトップコンピュータ54Cもしくは自動車コンピュータシステム54Nまたはその組み合わせなどが通信し得る1つまたは複数のクラウドコンピューティングノード10を含む。ノード10は、互いに通信し得る。ノードは、上記したようなプライベートクラウド、コミュニティクラウド、パブリッククラウドもしくはハイブリッドクラウドまたはこれらの組み合わせなどの1つまたは複数のネットワークにおいて、物理的にまたは仮想的にグループ化(図示せず)されてよい。これにより、クラウドコンピューティング環境50は、クラウドコンシューマがローカルコンピューティングデバイス上のリソースを維持する必要のないサービスとしてのインフラストラクチャ、サービスとしてのプラットフォームもしくはサービスとしてのソフトウェアまたはその組み合わせを提供できるようにする。図7に示されるコンピューティングデバイス54A~Nのタイプは、例示のみを意図し、コンピューティングノード10およびクラウドコンピューティング環境50は、任意のタイプのネットワークもしくはネットワークアドレス指定可能な接続(例えば、ウェブブラウザを使用して)またはその両方を通して、任意のタイプのコンピュータ化デバイスと通信可能であることを理解されたい。
【0098】
ここで、図8を参照すると、クラウドコンピューティング環境50(図7)によって提供される機能抽象化層のセットが示される。図8に示されるコンポーネント、層、および機能が、例示のみを意図するものであり、発明の実施形態がそれに限定されるものではないことを、前もって理解されるべきである。図示の通り、以下の層および対応する機能が提供される。
【0099】
ハードウェアおよびソフトウェア層60は、ハードウェアおよびソフトウェアコンポーネントを含む。ハードウェアコンポーネントの例は、メインフレーム61、RISC(最小命令セットコンピュータ)アーキテクチャベースサーバ62、サーバ63、ブレードサーバ64、ストレージデバイス65、ならびに、ネットワークおよびネットワーキングコンポーネント66を含む。いくつかの実施形態では、ソフトウェアコンポーネントは、ネットワークアプリケーションサーバソフトウェア67およびデータベースソフトウェア68を含む。
【0100】
仮想化層70は、抽象化層を提供し、ここから、以下の例の仮想エンティティ、すなわち、仮想サーバ71、仮想ストレージ72、仮想プライベートネットワークを含む仮想ネットワーク73、仮想アプリケーションおよびオペレーティングシステム74、ならびに仮想クライアント75が提供され得る。
【0101】
一例では、管理層80は、以下に説明される機能を提供し得る。リソースプロビジョニング81は、コンピューティングリソース、および、クラウドコンピューティング環境内でタスクを実行するために利用される他のリソースの動的な調達を提供する。測定および価格設定82は、リソースがクラウドコンピューティング環境内で利用される際のコスト追跡およびこれらのリソースの消費に対する課金または請求書送付を提供する。一例では、これらのリソースは、アプリケーションソフトウェアライセンスを含み得る。セキュリティは、クラウドコンシューマの本人確認およびタスクならびにデータおよび他のリソースのための保護を提供する。ユーザポータル83は、コンシューマおよびシステム管理者に対し、クラウドコンピューティング環境へのアクセスを提供する。サービスレベル管理84は、要求されるサービスレベルが満たされるように、クラウドコンピューティングリソース割り当ておよび管理を提供する。サービスレベルアグリーメント(SLA)プランニングおよび実行85は、SLAに従い将来の要件が予期されるクラウドコンピューティングリソースに対する事前取り決めおよび調達を提供する。
【0102】
ワークロード層90は、クラウドコンピューティング環境が利用され得る機能性の例を提供する。この層から提供され得るワークロードおよび機能の例は、マッピングおよびナビゲーション91、ソフトウェア開発およびライフサイクル管理92、仮想クラスルーム教育配信93、データ分析処理94、トランザクション処理95、および、圧縮埋め込みを用いた垂直連合学習のためのシステム96の少なくとも一部(例えば、そのサーバ101)を含む。
【0103】
本発明の1つまたは複数の実施形態、またはその要素は、メモリと、そのメモリに連結されて例示的な方法ステップを実行するよう動作可能である少なくとも1つのプロセッサとを含む装置の形態で実装することができる。図9は、本発明の1つまたは複数の態様、もしくはその要素、またはその両方の実装において有用であり得、また、本発明の一実施形態によるクラウドコンピューティングノードを表している、コンピュータシステムを示す。ここで図9を参照すると、クラウドコンピューティングノード10は、好適なクラウドコンピューティングノードの単なる一例であり、本明細書で説明される本発明の実施形態の使用または機能性の範囲に関していかなる制限を提示するようにも意図されていない。とにかく、クラウドコンピューティングノード10は、本明細書で上述の機能性のあらゆるものを実装もしくは実行またはその両方を行うことができる。
【0104】
クラウドコンピューティングノード10には、多くの他の汎用または専用の、コンピューティングシステム環境または構成で動作可能である、コンピュータシステム/サーバ12が存在する。コンピュータシステム/サーバ12での使用に好適であり得る、良く知られているコンピューティングシステム、環境、もしくは構成、またはその組み合わせの例は、パーソナルコンピュータシステム、サーバコンピュータシステム、シンクライアント、シッククライアント、ハンドヘルドまたはラップトップのデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラマブル消費者向け電子機器、ネットワークPC、ミニコンピュータシステム、メインフレームコンピュータシステム、および上記システムまたはデバイスのいずれかを含む分散型クラウドコンピューティング環境などを含むが、これらに限定されない。
【0105】
コンピュータシステム/サーバ12は、コンピュータシステムによって実行される、プログラムモジュールなどのコンピュータシステム実行可能命令の一般的な文脈で説明され得る。一般に、プログラムモジュールは、特定のタスクを実行するか、または特定の抽象的なデータタイプを実装する、ルーチン、プログラム、オブジェクト、コンポーネント、ロジック、データ構造などを含むことができる。コンピュータシステム/サーバ12は、タスクが通信ネットワークを通じてリンクされたリモート処理デバイスによって実行される分散クラウドコンピューティング環境において実践することができる。分散クラウドコンピューティング環境において、プログラムモジュールは、メモリストレージデバイスを含むローカルおよびリモートの両方のコンピュータシステム記憶媒体に配置することができる。
【0106】
図9に示されるように、クラウドコンピューティングノード10におけるコンピュータシステム/サーバ12は、汎用コンピューティングデバイスの形態で示されている。コンピュータシステム/サーバ12のコンポーネントは、1つまたは複数のプロセッサまたは処理ユニット16、システムメモリ28、およびシステムメモリ28を含む様々なシステムコンポーネントをプロセッサ16に連結するバス18を含むことができるが、これらに限定されない。
【0107】
バス18は、バス構造のいくつかのタイプのうちの任意の1つまたは複数を表しており、メモリバスまたはメモリコントローラ、周辺バス、アクセラレーテッドグラフィックスポート、およびプロセッサまたは多様なバスアーキテクチャの任意のものを使用するローカルバスを含む。限定ではなく例として、そのようなアーキテクチャは、業界標準アーキテクチャ(ISA)バス、マイクロチャネルアーキテクチャ(MCA)バス、エンハンストISA(EISA)バス、Video Electronics Standards Association(VESA)ローカルバス、および周辺コンポーネントインターコネクト(PCI)バスを含む。
【0108】
コンピュータシステム/サーバ12は、典型的には、多様なコンピュータシステム可読媒体を含む。そのような媒体は、コンピュータシステム/サーバ12によってアクセス可能な任意の利用可能な媒体であってよく、そのような媒体は、揮発性媒体および不揮発性媒体、取り外し可能媒体および取り外し不可能な媒体のどちらも含む。
【0109】
システムメモリ28は、ランダムアクセスメモリ(RAM)30もしくはキャッシュメモリ32、またはその組み合わせなどの揮発性メモリの形態のコンピュータシステム可読媒体を含むことができる。コンピュータシステム/サーバ12は、他の取り外し可能/取り外し不可能、揮発性/不揮発性コンピュータシステム記憶媒体をさらに含んでよい。単に例として、ストレージシステム34は、取り外し不可能な不揮発性磁気媒体(図示せず、典型的には「ハードドライブ」と呼ばれる)に対して読み出しおよび書き込みを行うために設けることができる。図示していないが、取り外し可能な不揮発性磁気ディスク(例えば、「フロッピーディスク」)に対して読み出しおよび書き込みを行うための磁気ディスクドライブと、CD-ROM、DVD-ROMまたは他の光学媒体などの取り外し可能な不揮発性光ディスクに対して読み出し、もしくは書き込みを行うための光学ディスクドライブとを設けることができる。そのような例では、各々が1つまたは複数のデータ媒体インタフェースによりバス18へ接続され得る。以下でさらに図示および説明されるように、メモリ28は、本発明の実施形態の機能を実行するように構成されているプログラムモジュールのセット(例えば、少なくとも1つ)を含む少なくとも1つのプログラム製品を備えてよい。
【0110】
オペレーティングシステム、1つまたは複数のアプリケーションプログラム、他のプログラムモジュール、およびプログラムデータだけでなく、プログラムモジュール42のセット(少なくとも1つ)を含むプログラム/ユーティリティ40が、限定ではなく例としてメモリ28に記憶されてよい。オペレーティングシステム、1つまたは複数のアプリケーションプログラム、他のプログラムモジュール、およびプログラムデータの各々、またはそれらのいくつかの組み合わせは、ネットワーク環境の実装を含んでよい。プログラムモジュール42は、概して、本明細書に記載される本発明の実施形態の機能もしくは方法またはその組み合わせを実行する。
【0111】
コンピュータシステム/サーバ12は、キーボード、ポインティングデバイス、ディスプレイ24などのような1つまたは複数の外部デバイス14、ユーザがコンピュータシステム/サーバ12とインタラクトできるようにする1つまたは複数のデバイス、もしくは、コンピュータシステム/サーバ12が1つまたは複数の他のコンピューティングデバイスと通信できるようにする任意のデバイス(例えば、ネットワークカード、モデムなど)またはその組み合わせと通信してもよい。そのような通信は、入力/出力(I/O)インタフェース22を介して、生じ得る。またさらに、コンピュータシステム/サーバ12は、ネットワークアダプタ20を介して、ローカルエリアネットワーク(LAN)、一般的なワイドエリアネットワーク(WAN)、もしくはパブリックネットワーク(例えば、インターネット)、またはその組み合わせなどの1つまたは複数のネットワークと通信することができる。図示のように、ネットワークアダプタ20は、バス18を介して、コンピュータシステム/サーバ12の他のコンポーネントと通信する。図示していないが、他のハードウェアもしくはソフトウェアコンポーネントまたはその組み合わせをコンピュータシステム/サーバ12と共に使用できることを理解されたい。例としては、限定されるものではないが、マイクロコード、デバイスドライバ、冗長処理ユニット、外部ディスクドライブアレイ、RAIDシステム、テープドライブ、データアーカイブストレージシステムなどが挙げられる。
【0112】
したがって、1つまたは複数の実施形態は、汎用コンピュータまたはワークステーションで実行中のソフトウェアを利用することができる。図9を参照すると、そのような実装形態は、例えばプロセッサ16、メモリ28、ならびに、ディスプレイ24、およびキーボードまたはポインティングデバイスなどの外部デバイス14への入力/出力インタフェース22を用いる場合がある。本明細書で使用される際、用語「プロセッサ」は、例えばCPU(中央処理装置)もしくは他の形態の処理回路またはその両方を含むデバイスなどの、あらゆる処理デバイスを含むよう意図される。さらには、用語「プロセッサ」は、2つ以上の個別のプロセッサを指す場合がある。用語「メモリ」は、例えばRAM(ランダムアクセスメモリ)30、ROM(リードオンリメモリ)、固定メモリデバイス(例えば、ハードドライブ34)、取り外し可能なメモリデバイス(例えば、ディスケット)、フラッシュメモリなどの、プロセッサまたはCPUに関連付けられるメモリを含むよう意図される。加えて、本明細書において使用される場合、「入力/出力インタフェース」という語句は、例えば処理ユニットへのデータを入力するための1つまたは複数のメカニズム(例えば、マウス)、および処理ユニットに関連付けられる結果を提供するための1つまたは複数のメカニズム(例えば、プリンタ)へのインタフェースを想定するよう意図される。プロセッサ16、メモリ28、および入力/出力インタフェース22は、例えば、データ処理ユニット12の一部としてのバス18を介して相互接続することが可能である。例えばバス18を介する好適な相互接続は、コンピュータネットワークとインタフェースするように提供され得るネットワークカードなどのネットワークインタフェース20に対して、また好適な媒体とインタフェースするように提供され得るディスケットまたはCD-ROMドライブなどの媒体インタフェースに対しても設けることができる。
【0113】
したがって、本発明の方法を実行するための命令またはコードを含むコンピュータソフトウェアは、本明細書において説明されるように、関連するメモリデバイス(例えば、ROM、固定または取り外し可能なメモリ)のうちの1つまたは複数に記憶することができ、利用される用意ができると、部分的または全体的に(例えば、RAMに)ロードされ、CPUによって実装することができる。そのようなソフトウェアとしては、ファームウェア、常駐ソフトウェア、マイクロコードなどが含まれる可能性あるが、それに限定されない。
【0114】
プログラムコードを記憶するもしくは実行する、またはその両方に好適なデータ処理システムは、直接的にまたは間接的にシステムバス18を介してメモリ要素28に連結される少なくとも1つのプロセッサ16を含む。メモリ要素は、プログラムコードの実際の実装の間に用いられるローカルメモリ、バルクストレージ、および実装中にコードがバルクストレージから取得されなければならない回数を低減するために、少なくともいくつかのプログラムコードの一時的なストレージを提供するキャッシュメモリ32を含むことができる。
【0115】
入力/出力またはI/Oデバイス(キーボード、ディスプレイ、ポインティングデバイスなどを含むがそれに限定されない)は、直接的に、または仲介的なI/Oコントローラを通じてのいずれかで、システムに連結することができる。
【0116】
データ処理システムが仲介的なプライベートまたはパブリックネットワークを通じて他のデータ処理システムまたは遠隔のプリンタもしくはストレージデバイスに連結することができるようにするために、ネットワークアダプタ20をシステムに連結することもできる。現在利用可能なタイプのネットワークアダプタとしてはモデム、ケーブルモデム、およびイーサネット(登録商標)カードなどが挙げられる。
【0117】
特許請求の範囲を含め、本明細書において使用される場合、「サーバ」には、サーバプログラムを実行中の物理的なデータ処理システム(例えば、図9に示されるようなシステム12)が含まれる。そのような物理的なサーバは、ディスプレイおよびキーボードを含んでもよいし、含んでいなくてもよいことを理解されたい。
【0118】
1つまたは複数の実施形態は、クラウドまたは仮想マシン環境の文脈で少なくとも部分的に実装され得るが、これは例示的であり非限定的である。再び図7~8および付随する文を参照されたい。
【0119】
本明細書において説明される方法のいずれかは、コンピュータ可読記憶媒体において具現化される別個のソフトウェアモジュールを含むシステムを提供する追加的な段階を含むことができること、モジュールは、例えばブロック図で示されるか、または本明細書において説明されるか、あるいはその両方の適切な要素のうちのいずれかまたは全て、限定ではなく例として、説明されるモジュール/ブロックおよび/またはサブモジュール/サブブロックのいずれか1つ、いくつか、または全てを含むことができることに留意されたい。次に、方法ステップは、16などの1つまたは複数のハードウェアプロセッサで実行される、上記のようなシステムの別個のソフトウェアモジュールもしくはサブモジュールまたはその両方を使用して実行することができる。さらには、コンピュータプログラム製品は、別個のソフトウェアモジュールを有するシステムの提供を含む、本明細書において説明される1つまたは複数の方法ステップを実行するために実装されるように適合されたコードを有するコンピュータ可読記憶媒体を含むことができる。
【0120】
いくつかのケースにおいて用いられ得るユーザインタフェースの一例は、サーバなどによってユーザのコンピューティングデバイスのブラウザにサービングされるハイパーテキストマークアップ言語(HTML)コードである。HTMLは、ユーザのコンピューティングデバイス上のブラウザによって解析され、グラフィカルユーザインタフェース(GUI)を作成する。
【0121】
例示的なシステムおよび製品の詳細
【0122】
本発明は、統合のあらゆる可能な技術的詳細レベルにおける、システム、方法、もしくはコンピュータプログラム製品、またはその組み合わせであってもよい。コンピュータプログラム製品は、プロセッサに本発明の態様を遂行させるためのコンピュータ可読プログラム命令を有するコンピュータ可読記憶媒体を含むことができる。
【0123】
コンピュータ可読記憶媒体は、命令実行デバイスによる使用のための命令を保持および記憶することができる有形のデバイスであり得る。コンピュータ可読記憶媒体は、例えば、電子ストレージデバイス、磁気ストレージデバイス、光学ストレージデバイス、電磁ストレージデバイス、半導体ストレージデバイスまたは前述のあらゆる好適な組み合わせであってもよいが、それに限定はしない。コンピュータ可読記憶媒体のより具体的な例の非網羅的なリストには、以下の、ポータブルコンピュータディスケット、ハードディスク、ランダムアクセスメモリ(RAM)、リードオンリメモリ(ROM)、消去可能プログラマブルリードオンリメモリ(EPROMまたはフラッシュメモリ)、スタティックランダムアクセスメモリ(SRAM)、ポータブルコンパクトディスクリードオンリメモリ(CD-ROM)、デジタル多用途ディスク(DVD)、メモリスティック、フロッピーディスク、命令を記録したパンチカードまたは溝に刻まれた構造などの機械的にエンコードされたデバイス、および前述のあらゆる好適な組み合わせが含まれる。本明細書において使用される場合、コンピュータ可読記憶媒体は、電波または他の自由に伝搬する電磁波、導波路もしくは他の伝送媒体を介して伝搬する電磁波(例えば、光ファイバケーブルを通過する光パルス)、または電線を介して伝送される電気信号など、一過性の信号そのものであると解釈されてはならない。
【0124】
本明細書において説明されるコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体から、それぞれのコンピューティング/処理デバイスに、あるいは、例えばインターネット、ローカルエリアネットワーク、ワイドエリアネットワークもしくは無線ネットワークまたはその組み合わせなどのネットワークを介して、外部のコンピュータまたは外部のストレージデバイスに、ダウンロードすることができる。ネットワークは、銅製伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイコンピュータもしくはエッジサーバまたはその組み合わせを備えることができる。それぞれのコンピューティング/処理デバイスのネットワークアダプタカードまたはネットワークインタフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、個別のコンピューティング/処理デバイス内のコンピュータ可読記憶媒体に記憶するためにコンピュータ可読プログラム命令を転送する。
【0125】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路のための構成データ、あるいはSmalltalk(登録商標)、C++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語などの手続き型プログラミング言語もしくは同様のプログラミング言語、を含む1つまたは複数のプログラミング言語のあらゆる組み合わせで記述された、ソースコードまたはオブジェクトコードのいずれかであってもよい。コンピュータ可読プログラム命令は、全てユーザのコンピュータ上で、一部はユーザのコンピュータ上でスタンドアロンのソフトウェアパッケージとして、一部はユーザのコンピュータ上かつ一部は遠隔のコンピュータ上で、または全て遠隔のコンピュータ上もしくはサーバ上で、実行することができる。後者のシナリオにおいて、遠隔のコンピュータは、ローカルエリアネットワーク(LAN)もしくはワイドエリアネットワーク(WAN)を含むあらゆるタイプのネットワークを介してユーザのコンピュータに接続することができ、または接続は外部のコンピュータ(例えば、インターネットサービスプロバイダを使用するインターネットを介して)に対してなされてもよい。いくつかの実施形態では、例えば、プログラマブルロジック回路、フィールドプログラマブルゲートアレイ(FPGA)、またはプログラマブルロジックアレイ(PLA)を含む電子回路は、本発明の態様を実施するために、コンピュータ可読プログラム命令の状態情報を利用することによって、コンピュータ可読プログラム命令を実行して電子回路を個別化することができる。
【0126】
本発明の態様は本発明の実施形態による方法、装置(システム)、およびコンピュータプログラム製品のフローチャート図および/またはブロック図を参照しながら本明細書において説明される。フローチャート図および/またはブロック図の各ブロック、およびフローチャート図および/またはブロック図におけるブロックの組み合わせは、コンピュータ可読プログラム命令によって実装され得ることが理解されよう。
【0127】
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラマブルデータ処理装置のプロセッサを介して実行される命令が、フローチャートおよび/またはブロック図の1つまたは複数のブロックに指定される機能/作用を実装する手段を作成すべく、汎用コンピュータ、専用コンピュータ、または他のプログラマブルデータ処理装置のプロセッサに提供されて機械を作るものであってよい。これらのコンピュータ可読プログラム命令はまた、命令が記憶されているコンピュータ可読記憶媒体が、フローチャートおよび/またはブロック図の1つまたは複数のブロックに指定される機能/作用の態様を実装するための命令を含む製造物品を備えるべく、コンピュータ、プログラマブルデータ処理装置、または他のデバイスあるいはその組み合わせに特定のやり方で機能するように指示することができるコンピュータ可読記憶媒体に記憶されてもよい。
【0128】
コンピュータ可読プログラム命令はまた、コンピュータ、他のプログラマブル装置、または他のデバイスで実行される命令が、フローチャートおよび/またはブロック図の1つまたは複数のブロックに指定される機能/作用を実装するべく、コンピュータ実装処理を作るために、コンピュータ、他のプログラマブルデータ処理装置、または他のデバイス上にロードされ、コンピュータ、他のプログラマブル装置、または他のデバイス上で一連の動作段階を実施させるものであってもよい。
【0129】
図面中のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータプログラム製品の可能な実装形態の、アーキテクチャ、機能性、および動作を図示している。この点において、フローチャートまたはブロック図の各ブロックは、指定される論理機能を実装するための1つまたは複数の実行可能な命令を含む、命令のモジュール、セグメント、または部分を表現することができる。一部の代替的な実装形態において、ブロックにおいて示した機能は図面で示した順序とは異なって生じてもよい。例えば、連続して示される2つのブロックは、実際には実質的に同時に実行されてもよく、またはブロックは関与する機能性によっては、時に逆の順序で実行されてもよい。ブロック図および/またはフローチャート図の各ブロック、およびブロック図および/またはフローチャート図のブロックの組み合わせは、指定される機能もしくは動作を実施する、または専用ハードウェアおよびコンピュータ命令の組み合わせを実行する、専用ハードウェアベースのシステムによって実装され得ることにも留意されたい。
【0130】
例示を目的として本発明の様々な実施形態の説明を提示してきたが、網羅的であること、または開示された実施形態に限定することは意図されていない。説明された実施形態の範囲および趣旨から逸脱することなく、多くの修正形態および変形形態が当業者にとって明らかとなろう。本明細書において使用される専門用語は、実施形態の原理、実践的な用途もしくは市場で見られる技術に対する技術的な改善を最良に説明するため、または当業者の他の者が本明細書において開示される実施形態を理解できるように選ばれたものである。
図1
図2
図3
図4
図5
図6
図7
図8
図9