(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-09-10
(54)【発明の名称】垂直および水平AIの統合のための連合学習エンジンを実装するシステムおよび方法
(51)【国際特許分類】
G06N 3/098 20230101AFI20240903BHJP
G06N 20/00 20190101ALI20240903BHJP
【FI】
G06N3/098
G06N20/00
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2024508479
(86)(22)【出願日】2022-06-21
(85)【翻訳文提出日】2024-03-26
(86)【国際出願番号】 US2022034223
(87)【国際公開番号】W WO2023018479
(87)【国際公開日】2023-02-16
(32)【優先日】2021-08-11
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】502303739
【氏名又は名称】オラクル・インターナショナル・コーポレイション
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】ボース,ラジャルシ
(72)【発明者】
【氏名】レザ,シャヒード
(72)【発明者】
【氏名】ジェイン,シッダント
(57)【要約】
垂直および水平AIを統合するための連合学習エンジンを実装するためのシステムおよび方法が本明細書に開示される。方法は、複数のユーザ環境と通信可能に結合される中央アグリゲータから複数の層を含むグローバルモデルを受信することを含むことができる。この方法は、ユーザ環境内で収集されるデータを用いてグローバルモデルの上で最小モデルをトレーニングすること、最小モデルの少なくとも一部を中央アグリゲータにアップロードすること、複数の最小モデルを受信すること、および受信される複数の最小モデルに基づいて融合モデルを作成することを含むことができる。
【特許請求の範囲】
【請求項1】
複数のユーザ環境と通信可能に接続されている中央アグリゲータから、複数の層を含むグローバルモデルを受信することと、
前記ユーザ環境内で収集されるデータを用いて、前記グローバルモデルの上で最小モデルをトレーニングすることと、
前記最小モデルの少なくとも一部を前記中央アグリゲータにアップロードすることと、
複数の最小モデルを受信することと、
前記受信される複数の最小モデルに基づいて融合モデルを作成することと、を含む、方法。
【請求項2】
前記複数のユーザ環境は、クラウドコンピューティングネットワーク内の複数のテナンシを含む、請求項1に記載の方法。
【請求項3】
前記グローバルモデルは、深層学習モデルを含む、請求項1に記載の方法。
【請求項4】
前記深層学習モデルは、トランスフォーマを含む、請求項3に記載の方法。
【請求項5】
前記深層学習モデルは、トランスフォーマによる双方向エンコード表現(BERT)モデルを含む、請求項3に記載の方法。
【請求項6】
前記最小モデルは、前記グローバルモデルの出力を取り込むように構成されている、請求項1に記載の方法。
【請求項7】
前記グローバルモデルの前記出力は、前記グローバルモデルの前記層の少なくともいくつかの層出力を含む、請求項6に記載の方法。
【請求項8】
前記中央アグリゲータに前記最小モデルをアップロードすることは、前記最小モデルから分類子ヘッドを取り除くことを含む、請求項1に記載の方法。
【請求項9】
前記中央アグリゲータに前記最小モデルをアップロードすることは、前記最小モデルのバイナリをアップロードすることを含む、請求項8に記載の方法。
【請求項10】
前記複数の最小モデルは、前記中央アグリゲータから受信される、請求項1に記載の方法。
【請求項11】
前記受信される複数の最小モデルに基づいて前記融合モデルを作成することは、前記受信される最小モデルの上で前記融合モデルをトレーニングすることを含む、請求項1に記載の方法。
【請求項12】
前記受信される複数の最小モデルに基づいて前記融合モデルを作成することは、前記複数の最小モデルの各々からの層および重みを表すデータを組み合わせることを含む、請求項1に記載の方法。
【請求項13】
前記受信される複数の最小モデルに基づいて前記融合モデルを作成することは、分類子ヘッドを生成することと、前記分類子ヘッドを前記融合モデルの層に適用することと、を含む、請求項1に記載の方法。
【請求項14】
機械学習モデル出力の生成に使用するデータを受信することと、
前記ユーザ環境で前記グローバルモデルを用いて前記データを取り込むことと、
前記グローバルモデルの中間出力を収集することと、
前記融合モデルを用いて前記中間出力を取り込むことと、
前記融合モデルを使用して予測を出力することと、
をさらに含む、請求項1に記載の方法。
【請求項15】
機械学習モデル出力の生成に使用するデータを受信することと、
前記ユーザ環境で前記グローバルモデルを用いて前記データを取り込むことと、
前記グローバルモデルの第1の中間出力を収集することと、
前記複数の最小モデルの少なくともいくつかを用いて前記グローバルモデルの前記第1の中間出力を取り込むことと、
前記複数の最小モデルのうちの前記少なくともいくつかの第2の中間出力を収集することと、
前記融合モデルを用いて前記中間出力を取り込むことと、
前記融合モデルを用いて予測を出力することと、
をさらに含む、請求項1に記載の方法。
【請求項16】
メモリと、
少なくとも1つのプロセッサと、を含み、前記プロセッサは、
複数のユーザ環境と通信可能に接続されている中央アグリゲータから、複数の層を含むグローバルモデルを受信し、
前記ユーザ環境内で収集されるデータを用いて、前記グローバルモデルの上で最小モデルをトレーニングし、
前記最小モデルの少なくとも一部を前記中央アグリゲータにアップロードし、
複数の最小モデルを受信し、
前記受信される複数の最小モデルに基づいて融合モデルを作成するように構成されている、システム。
【請求項17】
前記最小モデルの前記少なくとも一部を前記中央アグリゲータにアップロードすることは、前記最小モデルから分類子ヘッドを取り除くことを含む、請求項16に記載のシステム。
【請求項18】
前記受信される複数の最小モデルに基づいて前記融合モデルを作成することは、前記受信される最小モデルの上で前記融合モデルをトレーニングすることを含む、請求項16に記載のシステム。
【請求項19】
1つまたは複数のプロセッサによって実行可能な複数の命令を記憶する非一時的なコンピュータ可読記憶媒体であって、前記複数の命令は、前記1つまたは複数のプロセッサによって実行されると、前記1つまたは複数のプロセッサに、
複数のユーザ環境と通信可能に接続されている中央アグリゲータから、複数の層を含むグローバルモデルを受信させ、
前記ユーザ環境内で収集されるデータを用いて、前記グローバルモデルの上で最小モデルをトレーニングさせ、
前記最小モデルの少なくとも一部を前記中央アグリゲータにアップロードさせ、
複数の最小モデルを受信させ、
前記受信される複数の最小モデルに基づいて融合モデルを作成させる、非一時的なコンピュータ可読記憶媒体。
【請求項20】
前記最小モデルの前記少なくとも一部を前記中央アグリゲータにアップロードすることは、前記最小モデルから分類子ヘッドを取り除くことを含み、前記受信される複数の最小モデルに基づいて前記融合モデルを作成することは、前記受信される最小モデルの上で前記融合モデルをトレーニングすることを含む、前記1つまたは複数のプロセッサによって実行可能な前記複数の命令を記憶する非一時的なコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本出願は、2021年8月11日に出願され、「垂直および水平AIの統合のための連合学習エンジンを実装するためのシステムおよび方法」と題されている米国特許出願第17/399,911号の利益および優先権を主張するものであり、その特許出願は、参照によりその全体が本明細書に組み込まれる。
【背景技術】
【0002】
背景
本出願は、分散機械学習および連合学習に関する。
【発明の概要】
【課題を解決するための手段】
【0003】
簡単な概要
本開示の一態様は方法に関する。この方法は、複数のユーザ環境と通信可能に接続されている中央アグリゲータから、複数の層を含むグローバルモデルを受信することと、ユーザ環境内で収集されるデータを用いてグローバルモデルの上で最小モデルをトレーニングすることと、最小モデルの少なくとも一部を中央アグリゲータにアップロードすることと、複数の最小モデルを受信することと、受信される複数の最小モデルに基づいて融合モデルを作成することと、を含む。
【0004】
いくつかの実施形態では、複数のユーザ環境は、クラウドコンピューティングネットワーク内の複数のテナンシを含む。いくつかの実施形態では、グローバルモデルは深層学習モデルであり得る。いくつかの実施形態では、深層学習モデルはトランスフォーマであり得る。いくつかの実施形態では、深層学習モデルは、トランスフォーマによる双方向エンコード表現(BERT)モデルであり得る。
【0005】
いくつかの実施形態では、最小モデルは、グローバルモデルの出力を取り込むことができる。いくつかの実施形態では、グローバルモデルの出力は、グローバルモデルの層の少なくともいくつかの層出力を含む。いくつかの実施形態では、最小モデルを中央アグリゲータにアップロードすることは、最小モデルから分類子ヘッドを取り除くことを含む。いくつかの実施形態では、最小モデルを中央アグリゲータにアップロードすることは、最小モデルのバイナリをアップロードすることを含む。
【0006】
いくつかの実施形態では、複数の最小モデルが中央アグリゲータから受信される。いくつかの実施形態では、受信される複数の最小モデルに基づいて融合モデルを作成することは、受信される最小モデルの上で融合モデルをトレーニングすることを含む。いくつかの実施形態では、受信される複数の最小モデルに基づいて融合モデルを作成することは、複数の最小モデルの各々からの層および重みを表すデータを結合することを含む。
【0007】
いくつかの実施形態では、受信される複数の最小モデルに基づいて融合モデルを作成することは、分類子ヘッドを生成することと、分類子ヘッドを融合モデルの層に適用することとを含む。いくつかの実施形態では、方法は、機械学習モデル出力の生成に使用するデータを受信することと、ユーザ環境でグローバルモデルを用いてデータを取り込むことと、グローバルモデルの中間出力を収集すること、融合モデルを用いて中間出力を取り込むことと、融合モデルを用いて予測を出力すること、を含む。いくつかの実施形態では、方法は、機械学習モデル出力の生成に使用するためのデータを受信すること、ユーザ環境でグローバルモデルを用いてデータを取り込むこと、グローバルモデルの第1の中間出力を収集すること、複数の最小モデルの少なくともいくつかを用いてグローバルモデルの第1の中間出力を取り込むことと、複数の最小モデルの少なくともいくつかの第2の中間出力を収集することと、融合モデルを使用して中間出力を取り込むことと、融合モデルを用いて予測を出力することと、を含む。
【0008】
本開示の一態様は、メモリおよび少なくとも1つのプロセッサを含むシステムに関する。少なくとも1つのプロセッサは、複数のユーザ環境と通信可能に接続されている中央アグリゲータからグローバルモデルを受信することができ、グローバルモデルは複数の層を含み、ユーザ環境内で収集されるデータを用いてグローバルモデルの上で最小モデルをトレーニングし、最小モデルの少なくとも一部を中央アグリゲータにアップロードし、複数の最小モデルを受信し、受信される複数の最小モデルに基づいて融合モデルを作成できる。
【0009】
いくつかの実施形態では、最小モデルの少なくとも一部を中央アグリゲータにアップロードすることは、最小モデルから分類子ヘッドを取り除くことを含む。いくつかの実施形態では、受信される複数の最小モデルに基づいて融合モデルを作成することは、受信される最小モデルの上で融合モデルをトレーニングすることを含む。
【0010】
本開示の一態様は、1つまたは複数のプロセッサによって実行可能な複数の命令を記憶する非一時的なコンピュータ可読記憶媒体に関する。1つまたは複数のプロセッサによって実行されると、複数の命令は、1つまたは複数のプロセッサに、複数のユーザ環境と通信可能に接続されている中央アグリゲータから、複数の層を含むグローバルモデルを受信させ、ユーザ環境内で収集されるデータを用いて、グローバルモデルの上で最小モデルをトレーニングし、最小モデルの少なくとも一部を中央アグリゲータにアップロードし、複数の最小モデルを受信し、受信される複数の最小モデルに基づいて融合モデルを作成させる。
【0011】
いくつかの実施形態では、最小モデルの少なくとも一部を中央アグリゲータにアップロードすることは、最小モデルから分類子ヘッドを取り除くことを含む。いくつかの実施形態では、受信される複数の最小モデルに基づいて融合モデルを作成することは、受信される最小モデルの上で融合モデルをトレーニングすることを含む。
【図面の簡単な説明】
【0012】
【
図2】連合学習システムの一実施形態の概略図である。
【
図3】連合学習システムの一実施形態の詳細な概略図である。
【
図4】融合モデル出力を生成するためのプロセスの一実施形態の概略図である。
【
図5】融合モデルを生成するプロセスの一実施形態を示すフローチャートである。
【
図6】融合モデルを生成するために顧客環境で実行されるプロセスの一実施形態を示すフローチャートである。
【
図7】融合モデルを用いて出力を生成するプロセスの一実施形態を示すフローチャートである。
【
図8】少なくとも1つの実施形態による、サービスシステムとしてのクラウドインフラストラクチャを実装するための1つのパターンを示すブロック図である。
【
図9】少なくとも1つの実施形態による、サービスシステムとしてのクラウドインフラストラクチャを実装するための別のパターンを示すブロック図である。
【
図10】少なくとも1つの実施形態による、サービスシステムとしてのクラウドインフラストラクチャを実装するための別のパターンを示すブロック図である。
【
図11】少なくとも1つの実施形態による、サービスシステムとしてのクラウドインフラストラクチャを実装するための別のパターンを示すブロック図である。
【
図12】少なくとも1つの実施形態による例示的なコンピュータシステムを示すブロック図である。
【発明を実施するための形態】
【0013】
詳細な説明
以下の説明では、説明の目的で、特定の実施形態の完全な理解を提供するために特定の詳細が記載される。しかし、これらの特定の詳細がなくても、さまざまな実施形態を実施できることは明らかであろう。図および説明は、限定することを意図したものではない。「例示的な」という言葉は、本明細書では「実施例、例、または実例として機能する」という意味で使用される。本明細書で「例示的」として説明される任意の実施形態または設計は、必ずしも他の実施形態または設計よりも好ましいまたは有利であると解釈されるべきではない。
【0014】
インテリジェンスシステム
ここで
図1を参照すると、インテリジェンスシステム151の態様の一実施形態の概略図が示されている。インテリジェンスシステム151は、データソース150、データ処理152、企業IT158、AIサービス160、インテリジェントアプリ/洞察モジュール168、および企業ソリューション顧客170またはサービス顧客172の間の接続を示す。いくつかの実施形態では、インテリジェンスシステム151の態様は、データを収集し、モデルをトレーニングし、モデルおよび/またはそのモデルの出力を1人または何人かの顧客に提供することができる。
【0015】
インテリジェンスシステム151は、データソース150を含む。データソースには、インテリジェンスシステム151によって使用されるデータソースが含まれ得る。これらには、例えば、モノのインターネット装置、ソーシャルメディア、モバイルアプリ、スマートウォッチ、健康アプリ、またはその他のデータソースが含まれ得る。
【0016】
データソース150から収集されるデータは、データ処理モジュール152に提供され得る。これには、例えば、リアルタイムおよび/またはバッチ取り込みを、データガバナンスモジュール156に提供することができる取り込みサブモジュール154を含めることができる。ガバナンスモジュール156は、データカタログ化、データオーケストレーション、および/またはデータ統合を提供することができる。
【0017】
データ処理モジュール152は、記録システム、企業リスク管理、人的資本管理、顧客関係管理などを提供できる企業IP158に接続することができる。企業IT158は、1つまたはいくつかのサービスを含むサービスモジュール162を含むことができるAIサービス160に接続することができる。これらの1つまたはいくつかのサービスは各々、AI機能を表す。これらには、例えば、コンピュータビジョン、音声翻訳、異常検出、言語サービス、予測サービス、連合AIサービスなどが含まれ得る。
【0018】
サービスモジュール162内のサービスは各々、顧客が、AIサービス160を介して提供される事前トレーニングモデルインテリジェンスとカスタムモデルインテリジェンスの両方を使用できるようにする顧客エンドポイントであり得る。サービスモジュール162は、上で識別されるサービスを含むことができ、より新しいサービスが開発され、生産されるにつれて、より新しいサービスを含むことができる。
【0019】
AIサービス160は、AIおよびデータサイエンスプラットフォーム164を含むことができる。AIおよびデータサイエンスプラットフォーム164は、機械学習およびデータワークロードの実行をサポートするためのインフラストラクチャおよび機能を提供することができる。これには、例えば、モデルのトレーニングのサポート、推論のサポートなどが含まれ得る。いくつかの実施形態では、プラットフォーム164は、AIサービス論理内での消費および管理を容易にするために、MLインフラ層とサービス層の両方をそれらの層の複雑さおよび特異性からカプセル化する機能の集合であり得るオーケストレーション層を含むことができる。この層には、例えば、資産マネージャ、トレーニングマネージャ、展開マネージャ、および/またはオーケストレーションマネージャを含めることができる。
【0020】
ネットワークサービス166は、複数のAIサービス顧客にわたる個々のAIサービスによって使用できる、または複数のAIサービス顧客にわたる複数のAIサービスによって共有できるインフラストラクチャリソースを提供することができる。そのようなセキュリティとプライバシーの分離がAIサービス顧客によって要求される場合、複数のAIサービスは、特定のAIサービス顧客向けの専用MLインフラストラクチャリソースを共有できる。必要な共通インフラストラクチャは、コンピューティング(CPU/GPU)、ネットワーク、記憶装置である。
【0021】
システム151は、インテリジェントアプリ/洞察モジュール168をさらに含む。このモジュールのアプリは、例えば、ビジネス洞察までの時間の短縮、プロセスの加速、市場投入までの時間の延長、および顧客エクスペリエンスの向上を可能にする。いくつかの実施形態では、これらはコストをさらに削減し、生産性を向上させることができる。いくつかの実施形態では、これは、データサイエンティストまたはITを使用せずに達成することができる。
【0022】
システム151は、AIサービス160を介して直接、またはインテリジェントアプリ/洞察モジュール168を介して、顧客170、172と対話することができる。
【0023】
連合学習エンジン
多くの機械学習アプローチは、集中化されるトレーニングデータを利用する。このトレーニングデータは、例えば、データセンター内または1台もしくはいくつかの機械内で集中化できる。このようなデータの集中化は効果的であることが証明されているが、このような集中化にはいくつかの欠点がある可能性がある。これらの欠点には、個人情報、保護情報、および/または機密情報を含むデータの収集および/または管理から生じる問題が含まれる。さらに、大量のデータを集約するには、大量のハードウェアとそのようなハードウェアに関連するコストが必要になり得る。最後に、壊滅的な忘却に関連する問題により、トレーニングデータの集合体が大きく成長しても、機械学習モデルの性能が向上しない可能性がある。
【0024】
この問題は、複数の異なる市場に対して人工知能モデルを使用する場合に特に困難となる。例えば、単一のAIモデルは、医療市場とホスピタリティ市場の両方で効果的に機能するのが難しい場合がある。このようなモデルが両方の市場で同様にうまく機能するには、モデルに市場固有のトレーニングを含めることはできない。これは、他の市場に関連するトレーニングを壊滅的に忘れてしまうことになる可能性があるためである。したがって、そのようなモデルの多くは、高レベルの性能を提供するために必要な特別なトレーニングが不足している。
【0025】
例えば、水平AIモデルは、1つまたはいくつかの業界ドメインに固有ではない可能性がある。この水平AIモデルは、多くの異なる業界にわたる広範な問題を解決することができ、いくつかの実施形態では、ユースケースにとらわれないプログラムを提供することができる。いくつかの実施形態では、水平AIを使用して、顧客リードに優先順位を付け、どの採用が最も成功するかを予測し、製品を推奨し、または広告を標的にすることができる。垂直AIは、インダストリバーティカルに固有のものであり、特定の業界の特定の問題に適用でき、例えば、その業界向けに高度に最適化できる。垂直AIアプリケーションでは、標的業界からの業界固有のタイプのデータを利用してモデルをトレーニングできる。いくつかの実施形態では、垂直AIからの推論は、独自の改善される予測および/または洞察を提供することができる。
【0026】
いくつかの実施形態では、本明細書に開示される水平AIと垂直AIの組み合わせは、広範囲の問題の解決を可能にすることができ、いくつかの実施形態では、顧客がAI垂直を構築するためのデータを選択するのを助けることができる。いくつかの実施形態では、本開示は、複数のソースからの非常に異質なデータを使用して、AIモデルを迅速にトレーニングし、生成し、および/または生産に移すことを容易にすることができる。本明細書に開示される実施形態は、例えば、特定の産業ドメインにおける垂直差別化を伴う業界特有のモデルのラピッドプロトタイピングを加速することができる。本明細書に開示される実施形態は、モデル学習の使用を可能にして、モデルのトレーニングおよび展開のためのインフラストラクチャコストを最適化することができる。
【0027】
本明細書に開示される特定の一実施形態では、初期グローバルモデルの形態の水平AIを、1つまたはいくつかの最小モデルおよび/または融合モデルの形態の垂直AIと組み合わせて使用することができる。本明細書に開示される水平AIと垂直AIの組み合わせを介して、いくつかの実施形態では、水平AIと垂直AIの両方の利点を同時に達成することができる。いくつかの実施形態では、グローバルモデルは、時間の経過とともに、最小モデルに基づいて、および/または融合モデルに基づいて更新することができ、したがって、時間の経過とともに、グローバルモデルは、これらの更新により垂直AIになることができる。次いで、この標的を絞った垂直モデルを記憶して利用し、さらなる連合学習を行わずに垂直固有のAIを提供できる。
【0028】
さらに、本開示は、連合学習のシステムおよび方法に関する。このようなシステムおよび方法では、グローバルモデルが集中的にトレーニングされ、本明細書ではユーザとも呼ばれる異なる顧客に提供される。これらのユーザは、このグローバルモデルをインストールして利用することができ、これらのユーザが収集したデータに基づいて、本明細書では最小モデルとも呼ばれる補足的な機械学習モデルをトレーニングできる。この補足的な機械学習モデルは、いくつかの実施形態では、グローバルモデルの1つまたはいくつかの出力、例えばグローバルモデルの層間出力を入力として受信することができる。グローバルモデルからのこれらの入力および/または他の入力に基づいて、補足モデルは出力を生成できる。
【0029】
そのような補足モデルは、これらの補足モデルを記憶できる中央サーバに提供することができる。これらの補足モデルは、最初に分類子ヘッドを取り除き、次に取り除いた補足モデルを中央サーバに送信することによって中央サーバに提供できる。いくつかの実施形態では、補足モデルはバイナリ形式で中央サーバに送信することができ、このバイナリは、補足モデルの層および/またはノード、ならびに補足モデルの層および/またはノードに関連付けられる重みを識別することができる。
【0030】
これらの補足モデルは、グローバルモデルが提供された何人かのユーザから受信することができ、アグリゲータにおいて補足モデルのライブラリを作成することができる。ユーザは1つまたはいくつかの補足モデルを要求したり、および/または1つまたはいくつかの補足モデルを提供したりできる。これら1つまたはいくつかの補足モデルの一部またはすべてを融合モデルの作成に使用できる。いくつかの実施形態では、融合モデルは補足モデルの組み合わせから作成することができ、および/または融合モデルは補足モデルの上でトレーニングすることができる。いくつかの実施形態では、融合モデルは、最小モデルからのデータを組み込むことができ、具体的には、最小モデルからの層および/またはノード、ならびにそれらに関連する重みを含むことができる。
【0031】
最小モデルと組み合わせた事前トレーニングされるグローバルモデルを使用することによって、ユーザは、変更および/または更新を迅速に組み込むことができ、ユーザは、例えば壊滅的な忘れのリスクを伴うことなく、特定のアプリケーション向けにモデルをカスタマイズすることができる。さらに、ユーザは融合モデルに含める最小モデルを選択できる。これらの最小モデルは、最小モデルに関連する情報に基づいて選択することができ、その情報には、最小モデルに関連するメタデータを含めることができる。いくつかの実施形態では、このメタデータは、最小モデルのソース、最小モデルの信頼レベルおよび/もしくは精度、ならびに/または最小モデルに関連する他の情報を示すことができる。ユーザは、この情報に基づいて、最小モデルを信頼するかどうかを決定したり、および/または融合モデルに含める1つまたはいくつかの最小モデルを選択したりできる。
【0032】
動作中、ユーザが融合モデルを用いて予測を行いたい場合、ユーザは、特徴データなどのデータを受信および/または選択することができる。このデータは、ユーザ環境のグローバルモデルによって取り込むことができる。グローバルモデルの中間出力(出力には層間出力が含まれ得る)は、ユーザが収集できる。グローバルモデルのこれらの中間出力は、次の機械学習モデルに取り込むための特徴とすることができる。いくつかの実施形態では、この次の機械学習モデルは、融合モデルが作成される最小モデルとすることができる。このような実施形態では、最小モデルの中間出力(その出力は層間出力を含むことができる)をユーザが収集することができる。最小モデルのこれらの中間出力は、融合モデルに取り込むための特徴とすることができる。
【0033】
融合モデルが作成されるグローバルモデルおよび/または最小モデルの特徴の一部またはすべては、融合モデルによって取り込まれることができる。分類子ヘッドを含むことができる融合モデルは、最終出力となり得る出力を生成することができる。この出力は、予測、分類などであり得る。
【0034】
次に
図2を参照すると、連合学習システム200の一実施形態の概略図が示されている。連合学習システム200は、アグリゲータ202および1つまたはいくつかの顧客環境212を含むことができる。アグリゲータ202および1つまたはいくつかの顧客環境212の各々は、ハードウェアを備えることも、仮想インスタンスを備えることもできる。したがって、いくつかの実施形態では、アグリゲータ202および1つまたはいくつかの顧客環境212の各々は、1つまたはいくつかのプロセッサ、サーバ、コンピュータなどを備えることができ、あるいは仮想コンピューティングインスタンスを備えることができる。いくつかの実施形態では、アグリゲータ202および1つまたはいくつかの顧客環境212のすべては、例えば仮想クラウドネットワーク上のような仮想インスタンスを備えることができる。いくつかの実施形態では、アグリゲータおよび1つまたはいくつかの顧客環境212は、クラウドネットワーク内で別個のテナンシとして実行することができる。いくつかの実施形態では、1つまたはいくつかの顧客環境212の各々は、関連する顧客のプライベートデータにアクセスできるが、いくつかの実施形態では、アグリゲータ202は、この顧客のプライベートデータにアクセスできない。
【0035】
アグリゲータ202および顧客環境の各々は、いくつかの実施形態では、通信ネットワーク210を介して通信可能にリンクされ得る。通信ネットワーク210は、アグリゲータ202と1つまたはいくつかの顧客環境212との間の通信および/またはデータ転送を可能にすることができる。いくつかの実施形態では、通信ネットワーク210は、有線または無線ネットワーク、ローカルエリアネットワーク、ワイドエリアネットワーク、パブリックネットワーク、プライベートネットワークなどを含むことができる。
【0036】
アグリゲータ202は、情報を収集し、管理することができる。これには、例えば1人または何人かの顧客を識別する情報、処理の現在の状態、情報の記録および監視などが含まれ得る。いくつかの実施形態では、アグリゲータ202は情報を管理し、それによって最小モデルの収集、平均化、および分散を容易にする。いくつかの実施形態では、アグリゲータ202は、グローバルモデルのトレーニングをさらにトレーニングおよび/または更新することができる。
【0037】
アグリゲータ202は、連合サーバ204を含むことができる。連合サーバ204は、ハードウェアまたはソフトウェアで実現することができる。連合サーバ204は、グローバルモデルを生成および/またはトレーニングすることができ、そのグローバルモデルを1つまたはいくつかの顧客環境212に提供することができ、1つまたはいくつかの顧客環境212から最小モデルを受信することができ、最小モデルの記憶および追跡を管理することができ、最小モデルに関連するメタデータを生成および/または収集することができ、1つまたはいくつかの最小モデルを1つまたはいくつかの顧客環境212に提供することができる。連合サーバ204は、ハードウェアまたはソフトウェアで実現することができる。いくつかの実施形態では、連合サーバ204は、仮想クラウドネットワークの一部として提供される仮想コンピューティングインスタンスおよび/またはサービスを備えることができる。
【0038】
アグリゲータは、グローバルモデルストア206を含むことができる。グローバルモデルストア206は、グローバルモデルを記憶することができる。いくつかの実施形態では、これには、グローバルモデルに関連するメタデータを記憶することが含まれ得る。このメタデータには、例えば、バージョン、トレーニングデータなどを含めることができる。グローバルモデルストア206は、データベースおよび/またはメモリを備えることができる。このメモリには、メモリの割り当てられる部分を含めることも、1つまたはいくつかの個別のメモリ装置を含めることもできる。
【0039】
グローバルモデルは、ベースモデルであり得る。グローバルモデルは、例えば、ニューラルネットワーク、デシジョンツリー、線形分類子/回帰、深層学習モデル、深層強化学習モデルを含み得、例えば、深層決定論的ポリシー勾配(DDPG)または深層Qネットワーク(DQN)などである。いくつかの実施形態では、グローバルモデルは、例えば、トランスフォーマによる双方向エンコード表現(BERT)モデルなどのトランスフォーマを備えることができる。グローバルモデルは、アグリゲータ、具体的には連合サーバによってトレーニングできる。いくつかの実施形態では、グローバルモデルは、特徴抽出のためにトレーニングされ得る。いくつかの実施形態では、例えば、グローバルモデルは、所与のテキストからの特徴抽出のためにトレーニングされ得る。これらの特徴には、例えば、言語的特徴および/または文脈的特徴が含まれ得る。いくつかの実施形態では、グローバルモデルは、グローバルモデルストア206内のトレーニングデータを含む、アグリゲータ202によってアクセス可能なデータを使用してトレーニングすることができる。
【0040】
アグリゲータは、本明細書では補足モデルストア208またはローカルモデルストア208とも呼ばれる最小モデルストア208を含むことができる。最小モデルストア208は、1つまたはいくつかの最小モデルを記憶することができる。最小モデルストア208は、最小モデルのバイナリを記憶することができ、そのバイナリは、最小モデルの層、ノード、および/または重みを表すことができる。最小モデルストア208は、いくつかの実施形態では、最小モデルに関連するメタデータを記憶することができる。このメタデータには、例えば、最小モデルのソースの識別、妥当性モデルの信頼性を確立および/または評価するための情報、妥当性モデルのトレーニングに関する情報などが含まれ得る。いくつかの実施形態では、妥当性モデルのトレーニングに関連する情報は、妥当性モデルがトレーニングされたタスク、および/または妥当性モデルがトレーニングされた特定の垂直を識別することができる。最小モデルストア208は、データベースおよび/またはメモリを備えることができる。このメモリには、メモリの割り当てられる部分を含めることも、1つまたはいくつかの個別のメモリ装置を含めることもできる。
【0041】
顧客環境212の各々は、融合サーバ214を含むことができる。融合サーバ214は、アグリゲータ202からグローバルモデルを受信することができ、グローバルモデルを記憶することができ、グローバルモデルの上で最小モデルを生成することができ、最小モデルストア208に記憶するためにグローバルモデルをアグリゲータ202に送信することができ、アグリゲータ202から1つまたはいくつかの最小モデルおよび/またはアップデートを受信することができ、アグリゲータ202から受信されるこれらの1つまたはいくつかの最小モデルおよび/または更新に基づいて融合モデルをトレーニングおよび/または構築することができ、最小モデルおよび/またはグローバルモデルを使用して1つまたはいくつかの出力および/または予測を生成することができる。融合サーバ214は、ハードウェアまたはソフトウェアで実現することができる。いくつかの実施形態では、融合サーバ214は、仮想クラウドネットワークの一部として提供される仮想コンピューティングインスタンスおよび/またはサービスを備えることができる。
【0042】
顧客環境212は、データストア216を含むことができる。データストア216は、顧客環境に関連付けられる顧客の顧客情報を記憶することができる。いくつかの実施形態では、この顧客情報は非公開とすることができ、この顧客情報がアグリゲータ202および/または他の顧客環境212によってアクセスできないように記憶することができる。データストア216内の顧客情報は、最小モデルのトレーニングおよび融合モデルのトレーニングに使用することができる。データストア216は、データベースおよび/またはメモリを備えることができる。このメモリには、メモリの割り当てられる部分を含めることも、1つまたはいくつかの個別のメモリ装置を含めることもできる。
【0043】
顧客環境212は、モデルストア218を含むことができる。モデルストア218は、いくつかの実施形態では、顧客環境212によってトレーニングされる最小モデルをグローバルモデルの上に記憶することができ、いくつかの実施形態では、顧客環境212によって生成および/またはトレーニングされる融合モデルを、受信される最小モデルの上に記憶することができる。モデルストア218は、いくつかの実施形態では、アグリゲータ202から顧客環境212によって受信されるグローバルモデルをさらに記憶することができる。モデルストア218は、データベースおよび/またはメモリを備えることができる。このメモリには、メモリの割り当てられる部分を含めることも、1つまたはいくつかの個別のメモリ装置を含めることもできる。
【0044】
次に
図3を参照すると、システム200の一実施形態の詳細な概略図が示されている。いくつかの実施形態では、システム200は、連合学習のためのフレームワークを提供することができる。このシステムには、アグリゲータ202と1つの顧客環境212とが含まれる。
図2に示されるように、システム200は、複数の追加の顧客環境212を含むことができるが、アグリゲータ202および顧客環境212の各々の構成要素および/またはモジュールについてより詳細を提供する目的で、単一の顧客環境212のみが示されている。
【0045】
アグリゲータ202は、融合マネージャ302、プロトコルマネージャ304、およびFL接続マネージャ306を含むことができる。これらのモジュールは、連合サーバ204内のモジュール、ならびに/または連合サーバ204によってアクセス可能および/もしくは制御可能なモジュールであり得る。融合マネージャ302は、モデルストア、具体的にはグローバルモデルストア206およびローカルモデルストア208と結合することができる。
【0046】
図3に見られるように、ローカルモデルストア208は、本明細書では補足モデル308またはローカルモデル308とも呼ばれる、複数の最小モデル308を含むことができる。これらには、例えば
図2に示す顧客環境A212-Aなどの第1の顧客環境212から受信される第1の最小モデル308-A、および、例えば、
図2と3に示す顧客環境B212-Bなどの第2の顧客環境212から受信される第2の最小モデル308-Bを含めることができる。ローカルモデルストア208は、ローカルモデルストア208に含まれる最小モデル308の各々に対するバイナリを含むことができ、そのバイナリは、最小モデルが作成されたモデルの層、ノード、および/または重み付け値を識別することができる。
【0047】
さらに
図3に見られるように、グローバルモデルストア206はグローバルモデル310を含むことができる。グローバルモデル310は、アグリゲータ202によって、具体的にはいくつかの実施形態では融合マネージャ302によってトレーニングおよび/または生成され得る。
【0048】
融合マネージャ302は、モデルストア206、208のうちの1つから特定のモデルを選択することができる。いくつかの実施形態では、融合マネージャ302は、モデルストア206、208に情報を提供し、および/またはモデルストア206、208から情報を取得することができる。これには、グローバルモデル310をグローバルモデルストア206に提供すること、および/または最小モデル308のうちの1つもしくはいくつかを最小モデルストア208に提供することが含まれ得る。いくつかの実施形態では、融合マネージャ302は、モデルストア206、208からモデルを取得することができる。これには、グローバルモデルストア206からグローバルモデル310を取得して、顧客環境212のうちの1つまたは複数にグローバルモデルを提供できるようにすることが含まれ得る。いくつかの実施形態では、これには、最小モデルストア208から最小モデル308のうちの1つまたはいくつかを取得することが含まれ得る。これらの最小モデル308は、次いで、1つまたは複数の顧客環境212に提供できる。いくつかの実施形態では、融合マネージャ302は、モデル性能に関する情報を取得および/または提供することができる。したがって、いくつかの実施形態では、融合マネージャ302は、モデルストア206、208のうちの1つに記憶されるモデルに関連付けられるメタデータにアクセスすることができる。融合マネージャは、ハードウェアまたはソフトウェアで実現することができ、いくつかの実施形態では、連合サーバ204の一部とすることができる。
【0049】
プロトコルマネージャ304は、アグリゲータ202および/または連合サーバ204と、顧客環境212のうちの1つまたはいくつかとの間の通信を容易にする。プロトコルマネージャ304はさらに、顧客環境212とアグリゲータ202および/または連合学習サーバとの間のメッセージ交換、例えば学習プロトコルにわたるガバナンスを提供することができる。これらのメッセージには、例えば、クエリ、モデルの更新、FL構成の確立、新規顧客の登録などが含まれ得る。
【0050】
FL接続マネージャ306は、アグリゲータ202と顧客環境212との間の接続インターフェースとして機能することができる。いくつかの実施形態では、FL接続マネージャ306は、システム200の動作に必要なさまざまな構成要素間のネットワーキングを確立および管理することができる。具体的には、FL接続マネージャは、アグリゲータ202と1つまたはいくつかの顧客環境212との間の通信および/またはネットワークを確立および管理することができる。いくつかの実施形態では、FL接続マネージャは、OSI/TCP-IPスタックからの低レベルAPIをサポートすることができる。
【0051】
顧客環境212は、ローカルトレーニングマネージャ312、プロトコルマネージャ314、およびFL接続マネージャ316を含むことができる。これらのモジュールは、連合サーバ204内のモジュール、ならびに/または連合サーバ204によってアクセス可能および/もしくは制御可能なモジュールであり得る。
【0052】
ローカルトレーニングマネージャ312は、顧客環境212において機械学習モデルをトレーニングすることができる。これには、グローバルモデル上での最小モデルのトレーニング、ならびに/または融合モデルのトレーニングおよび/もしくは構築が含まれ得る。ローカルトレーニングマネージャ312は、ローカルデータマネージャ318およびモデルストア218と通信可能に結合することができる。ローカルデータマネージャ318は、データストア216と通信可能に結合することができる。ローカルデータマネージャ318は、データストア216内のデータにアクセスし、データへのアクセスを提供することができる。顧客環境212のデータストア216内のこのデータは、いくつかの実施形態では、それが含まれる特定の顧客環境212に対して分離することができる。
【0053】
データストア216内のデータにアクセスすることにより、ローカルトレーニングマネージャ318は、機械学習モデルをトレーニング、生成、および/または構築することができる。具体的には、ローカルトレーニングマネージャ318は、最小モデルおよび/または融合モデルをトレーニング、生成、および/または構築することができる。これらのモデルはモデルストア218に記憶することができる。
【0054】
アグリゲータ202と同様に、顧客環境212は、プロトコルマネージャ314およびFL接続マネージャ316を含むことができる。プロトコルマネージャ314は、顧客環境212とアグリゲータ202との間の通信を容易にする。いくつかの実施形態では、プロトコルマネージャ314は、他の顧客環境212との通信をさらに容易にすることができる。プロトコルマネージャ314はさらに、顧客環境212間、ならびに/または顧客環境とアグリゲータ202および/もしくは連合学習サーバ204との間のメッセージ交換にわたるガバナンスを提供することができる。これらのメッセージには、例えば、クエリ、モデルの更新、FL構成の確立、新規顧客の登録などが含まれ得る。
【0055】
FL接続マネージャ316は、顧客環境212とアグリゲータ202の間、および/またはセットの顧客環境212の間の接続インターフェースとして機能することができる。いくつかの実施形態では、FL接続マネージャ316は、システム200の動作に必要なさまざまな構成要素間のネットワーキングを確立および管理することができる。具体的には、FL接続マネージャは、顧客環境212とアグリゲータ202との間、および/またはセットの顧客環境212の間で通信および/またはネットワークを確立および管理することができる。いくつかの実施形態では、FL接続マネージャは、OSI/TCP-IPスタックからの低レベルAPIをサポートすることができる。
【0056】
次に
図4を参照すると、予測を生成する際に顧客環境によって実行されるプロセス400の一実施形態の概略図が示されている。
図4に見られるように、いくつかの実施形態では、複数のモデルを利用して予測を行うことができる。これらのモデルは顧客環境212に記憶できる。ユーザ入力401はモデルに取り込まれる。いくつかの実施形態では、これには、ユーザ入力401をグローバルモデル402に取り込むことが含まれ得る。グローバルモデル402は、複数の層404-A~404-Nを備えることができる。いくつかの実施形態では、グローバルモデル402は、特徴抽出器として動作することができ、グローバルモデル402は、複数の出力406を提供することができる。これらの出力は後続のモデルによって特徴として使用されるため、本明細書ではこれらの出力を中間出力と呼ぶ。
【0057】
いくつかの実施形態では、グローバルモデル402は、層の一部またはすべてによる分類および/または処理の後に出力を提供することができる。したがって、例えば、グローバルモーダル402は、層404-Nの処理および/または分類後のN番目の出力まで、層404-Aの処理および/または分類の後に第1の出力、層404-Bの処理および/または分類後の第2の出力、層404-Cの処理および/または分類後の第3の出力などを提供することができる。
【0058】
これらの中間出力406は、最小モデルまたは融合モデルなどの後続のモデルによって取り込まれることができる。いくつかの実施形態では、最小モデルおよび融合モデルは、グローバルモデルの出力を取り込むように構成され、その出力は、グローバルモデルの層の少なくともいくつかの層出力を含むことができる。いくつかの実施形態では、これらの中間出力406は、顧客環境212のモデルストア218に記憶される1つまたはいくつかの最小モデル408によって取り込むことができ、いくつかの実施形態では、これらの中間出力406は、融合モデル414によって取り込むことができる。
【0059】
特に
図4を参照すると、グローバルモデル402からの中間出力は、顧客環境212のモデルストア218内の複数の最小モデル408によって取り込まれることができる。これらの最小モデル408の各々は、特徴抽出器として動作することができ、いくつかの実施形態では、複数の出力を提供することができる。これらの出力は後続のモデルによって特徴として使用されるため、本明細書ではこれらの出力を中間出力と呼ぶ。
【0060】
いくつかの実施形態では、最小モデル408は、層の一部またはすべてによる分類および/または処理の後に出力412を提供することができる。具体的には、いくつかの実施形態では、出力412は、層の一部またはすべての各々が完了した後に提供することができる。したがって、いくつかの実施形態では、最小モデルは、その最小モデル内の層の数と同じ数までの出力412を提供することができる。
【0061】
これらの出力は受信され、融合モデル414に取り込まれることができ、融合モデルは複数の層416および分類子ヘッド418を備えることができる。融合モデル414、具体的には分類子ヘッドは、所望のタスク出力420の形で最終出力を提供することができる。
【0062】
次に
図5を参照すると、融合モデルを生成するためのプロセス500の一実施形態を示すフローチャートが示されている。プロセス500は、連合学習システム200のすべてまたは一部によって実行することができる。プロセス500はブロック502で始まり、アグリゲータ202、具体的には連合サーバ204がグローバルトレーニングデータを受信および/または取得する。いくつかの実施形態では、これには、グローバルモデルストア206からグローバルトレーニングデータを受信および/または取得することが含まれ得る。
【0063】
ブロック504で、グローバルモデルがトレーニングされる。いくつかの実施形態では、グローバルモデルは、アグリゲータ202によって、具体的には連合サーバ204および/または融合マネージャ302によってトレーニングされ得る。グローバルモデルは、グローバルトレーニングデータを使用してトレーニングできる。グローバルモデルがトレーニングされた後、グローバルモデルはグローバルモデルストア206に記憶され得る。
【0064】
ブロック506で、グローバルモデルが顧客環境212に提供される。グローバルモデルは、アグリゲータ202によって連合サーバ204を介して、具体的にはFL接続マネージャ306およびプロトコルマネージャ304を介して顧客環境に提供することができる。いくつかの実施形態では、アグリゲータ202は、アグリゲータが接続されている顧客環境212の一部またはすべてにグローバルモデルを送信することができる。グローバルモデルは顧客環境212によって受信され、顧客環境212はグローバルモデルをそのモデルストア218に記憶する。
【0065】
ブロック508で、ローカルデータが顧客環境212の各々で収集される。顧客環境212によって収集されるローカルデータは、その顧客環境212のデータストア216に記憶することができる。ローカルデータは、顧客環境212のローカルデータマネージャ318によってデータストア216に記憶することができる。
【0066】
ブロック510で、グローバルモデルを受信した顧客環境212の一部またはすべては、最小モデルをトレーニングすることができる。いくつかの実施形態では、これには、グローバルモデル上の最小モデルのトレーニングが含まれ得る。
【0067】
顧客環境212によってトレーニングされる最小モデルは、その顧客環境212のローカルトレーニングマネージャ312によってトレーニングすることができる。顧客環境212の最小モデルは、その顧客環境212のローカルデータを使用してトレーニングすることができる。このローカルデータは、その顧客環境212のローカルデータマネージャ318によってその顧客環境212のデータストア216から取得することができる。複数の顧客環境212によるブロック510のステップの実行は、複数の最小モデルの作成をもたらすことができ、その最小モデルの各々は、最小モデルがトレーニングされる顧客環境212のローカルデータを用いてトレーニングされ得る。顧客環境212によって生成される最小モデルは、その顧客環境212のモデルストア218に記憶することができる。
【0068】
ブロック512で、顧客環境は、トレーニングされる最小モデルからヘッド層を除去して、取り除かれる最小モデルを作成する。これには、顧客環境212が、その顧客環境212の最小モデルの分類子ヘッドを削除することを含むことができる。いくつかの実施形態では、この取り除かれる最小モデルは、最小モデルのバイナリを含むことができ、このバイナリは、例えば、補足モデルの層および/またはノード、ならびに補足モデルの層および/またはノードに関連付けられる重みを識別することができる。
【0069】
最小モデルのヘッド層が除去された後、取り除かれる最小モデルは、顧客環境によってアグリゲータ202にアップロードされ得る、すなわち、最小モデルのバイナリがアップロードされ得る。これには、取り除かれる最小モデルをアグリゲータ202の接続マネージャ306および/またはプロトコルマネージャ304に通信する、顧客環境212のプロトコルマネージャ314および/またはFL接続マネージャ316が含まれ得る。アグリゲータ202は、顧客環境212から取り除かれる最小モデルを受信することができ、取り除かれる最小モデルをグローバルモデルストア206に記憶することができる。
【0070】
ブロック514で、受信される取り除かれる最小モデルがアグリゲータ202によって評価される。アグリゲータ202は、最小モデルスコアを生成することができ、最小モデルをその最小モデルストアに関連付けることができる。これらの最小モデルスコアは、最小モデルの1つまたはいくつかの属性、最小モデルのトレーニング、最小モデルをトレーニングした顧客環境212などを特徴付けることができる。いくつかの実施形態では、これらの最小モデルスコアは、例えば、関連する最小モデルの信頼性を反映することができる。いくつかの実施形態では、最小モデルの最小モデルスコアは、その最小モデルに関連付けられるメタデータに基づいて生成され得る。
【0071】
ブロック516で、顧客環境は、アグリゲータから1つまたはいくつかの取り除かれる最小モデルを選択、フェッチ、要求、および/または受信する。いくつかの実施形態では、顧客は、顧客環境を介して、1つまたはいくつかの取り除かれる最小モデルを特徴付ける情報を要求することができる。この情報には、例えば、最小モデルのスコア、最小モデルに関連付けられるメタデータなどを含めることができる。いくつかの実施形態では、顧客は、顧客環境を介して、1つまたはいくつかの最小モデルを選択および/または要求することができる。いくつかの実施形態では、これらの1つまたはいくつかの最小モデルは、1つまたはいくつかの取り除かれる最小モデルを特徴付けるこの情報に基づいて選択され得る。例えば、顧客は、要求される1つまたはいくつかの最小モデルが、例えば十分に高い信頼性、1つまたはいくつかの所望のタスクに対する最小モデルのトレーニングなど、1つまたはいくつかの所望の属性を示す情報を有する場合、1つまたはいくつかの最小モデルを選択および/または要求することができる。いくつかの実施形態では、顧客は、所定の閾値に基づいて最小モデルを選択することができ、いくつかの実施形態では、顧客は、受信される最小モデルの比較に基づいて最小モデルを選択することができる。したがって、いくつかの実施形態では、例えば、顧客は最高のスコアを有する最小モデルを選択することができる。
【0072】
アグリゲータ202は、取り除かれる最小モデルの選択および/または要求を受信することができ、要求されるおよび/または選択される最小モデルを顧客環境212に提供することができる。取り除かれる最小モデルは、プロトコルマネージャ304および/またはFL接続マネージャ306を介して顧客環境に提供され得る。顧客環境212は、選択される取り除かれる最小モデルをアグリゲータ202から受信することができ、取り除かれる最小モデルをモデルストア218に記憶することができる。いくつかの実施形態では、顧客環境212は、FL接続マネージャ316および/またはプロトコルマネージャ314を介して、取り除かれる最小モデルを受信することができる。
【0073】
ブロック518で、顧客環境212は融合モデルをトレーニングする。いくつかの実施形態では、顧客環境212は、受信される取り除かれる最小モデルの上で融合モデルをトレーニングすることができる。融合モデルは、ローカルトレーニングマネージャ312によってトレーニングすることができる。いくつかの実施形態では、融合モデルのトレーニングは、最小モデルを融合モデルに融合することを含むことができる。いくつかの実施形態では、融合モデルは、例えば、FedAVG(例えば、Gradient Average、Fed+、FedPox)のようなニューラルネットワーク、ID3融合などのデシジョンツリー、反復平均やFedAvgなどの強化学習、反復平均などの線形分類子、および/または差分プライバシーとのナイーブベイズ融合などのナイーブベイズを含むことができる。
【0074】
いくつかの実施形態では、融合モデルのトレーニングは、受信される最小モデルの各々からのバイナリの結合を含むことができる。この融合トレーニングは、いくつかの実施形態では、融合モデルの作成を容易にし、簡単にすることができる。
【0075】
ブロック520で、タスク固有のヘッド、具体的にはタスク固有の分類子ヘッドが生成され、融合モデルに適用される。このタスク固有の分類子ヘッドは、顧客環境によって生成することができ、具体的には、ローカルトレーニングマネージャ312によって生成することができる。融合モデルは、融合モデルがトレーニングおよび/または生成された顧客環境のモデルストア218に記憶することができる。
【0076】
次に
図6を参照すると、融合モデルを生成するためのプロセス600の一実施形態を示すフローチャートが示されている。プロセス600は、顧客環境212によって実行することができる。プロセス600はブロック602で始まり、顧客環境212がグローバルモデルを受信して実装する。グローバルモデルは、顧客環境212によってアグリゲータから受信され得る。顧客環境212は、グローバルモデルを顧客環境のモデルストア218に記憶することができる。
【0077】
ブロック604で、顧客環境212でデータが収集される。このデータには、顧客環境によって生成されるローカルデータ、または顧客環境に関連して生成されるローカルデータが含まれ得る。例えば、顧客環境212は病院に関連付けることができる。ローカルデータは、その病院によって生成される、またはその病院に関連して生成されるデータの一部またはすべてであり得る。いくつかの実施形態では、このデータは顧客環境に提供されるか、顧客環境によってアクセスされることができる。顧客環境212で収集されるローカルデータは、ローカルデータマネージャ318によってその顧客環境212のデータストア216に記憶することができる。
【0078】
ブロック606で、最小モデルが顧客環境212によってトレーニングされる。いくつかの実施形態では、最小モデルはグローバルモデルの上でトレーニングされる。顧客環境212によってトレーニングされる最小モデルは、具体的には、その顧客環境212のローカルトレーニングマネージャ312によってトレーニングすることができる。
【0079】
顧客環境212の最小モデルは、その顧客環境212のローカルデータを用いてトレーニングすることができる。このローカルデータは、その顧客環境212のローカルデータマネージャ318によってその顧客環境212のデータストア216から取得することができる。したがって、いくつかの実施形態では、最小モデルのトレーニングは、例えばローカルデータマネージャ318を介してデータストア216からローカルデータを取得することを含むことができる。
【0080】
ブロック608で、最小モデルヘッド層が顧客環境212によって取り除かれ、取り除かれる最小モデル、換言すれば、最小モデルバイナリがアグリゲータに送信および/または提供される。いくつかの実施形態では、これは、トレーニングされる最小モデルからのヘッド層の識別および除去を含むことができ、そのヘッド層は分類子ヘッドを含むことができる。いくつかの実施形態では、この取り除かれる最小モデルは、最小モデルのバイナリを含むことができ、このバイナリは、例えば、補足モデルの層および/またはノード、ならびに補足モデルの層および/またはノードに関連付けられる重みを識別することができる。
【0081】
最小モデルのヘッド層が除去された後、取り除かれる最小モデルは、顧客環境によってアグリゲータ202にアップロードされ得る、すなわち、最小モデルのバイナリがアップロードされ得る。これには、取り除かれる最小モデルをアグリゲータ202の接続マネージャ306および/またはプロトコルマネージャ304に通信する、顧客環境212のプロトコルマネージャ314および/またはFL接続マネージャ316が含まれ得る。アグリゲータ202は、顧客環境212から取り除かれる最小モデルを受信することができ、取り除かれる最小モデルをグローバルモデルストア206に記憶することができる。
【0082】
ブロック610で、顧客環境は、アグリゲータから1つまたはいくつかの取り除かれる最小モデルを選択、フェッチ、要求、および/または受信する。いくつかの実施形態では、取り除かれる最小モデルの分散は、プッシュ機構またはプル機構に従って行うことができる。いくつかの実施形態では、例えば、1つまたはいくつかの最小モデルおよび/またはアップデートをアグリゲータ202によって顧客環境212にプッシュすることができる。他の実施形態では、顧客環境212は、1つまたはいくつかの最小モデルを選択および/または要求することができる。
【0083】
最小モデルが顧客環境にプッシュされる実施形態では、アグリゲータ202は、受信される最小モデルの数、およびグローバルモデルと比較した最小モデルの変化を追跡することができる。いくつかの実施形態では、例えば、所定の期間が経過したとき、または変更の閾値が満たされるときに、アグリゲータによって更新をプッシュすることができる。
【0084】
最小モデルが顧客環境212にプルされる実施形態では、顧客は顧客環境を介して、1つまたはいくつかの取り除かれる最小モデルを特徴付ける情報を要求することができる。この情報には、例えば、最小モデルのスコア、最小モデルに関連付けられるメタデータなどを含めることができる。いくつかの実施形態では、顧客は、顧客環境を介して、1つまたはいくつかの最小モデルを選択および/または要求することができる。いくつかの実施形態では、これらの1つまたはいくつかの最小モデルは、1つまたはいくつかの取り除かれる最小モデルを特徴付けるこの情報に基づいて選択され得る。例えば、顧客は、要求される1つまたはいくつかの最小モデルが、例えば十分に高い信頼性、1つまたはいくつかの所望のタスクに対する最小モデルのトレーニングなど、1つまたはいくつかの所望の属性を示す情報を有する場合、1つまたはいくつかの最小モデルを選択および/または要求することができる。いくつかの実施形態では、顧客は、所定の閾値に基づいて最小モデルを選択することができ、いくつかの実施形態では、顧客は、受信される最小モデルの比較に基づいて最小モデルを選択することができる。したがって、いくつかの実施形態では、例えば、顧客は最高のスコアを有する最小モデルを選択することができる。
【0085】
アグリゲータ202は、取り除かれる最小モデルの選択および/または要求を受信することができ、要求されるおよび/または選択される最小モデルを顧客環境212に提供することができる。取り除かれる最小モデルは、プロトコルマネージャ304および/またはFL接続マネージャ306を介して顧客環境に提供され得る。顧客環境212は、選択される取り除かれる最小モデルをアグリゲータ202から受信することができ、取り除かれる最小モデルをモデルストア218に記憶することができる。いくつかの実施形態では、顧客環境212は、FL接続マネージャ316および/またはプロトコルマネージャ314を介して、取り除かれる最小モデルを受信することができる。
【0086】
ブロック612で、受信される取り除かれる最小モデルの信頼性が検証される。いくつかの実施形態では、この信頼性の検証は、顧客環境212によって実行することができる。いくつかの実施形態では、信頼性の検証は、外部の信頼確立システムを利用して実行することができる。これには、例えば、ブロックチェーンの利用が含まれ得る。いくつかの実施形態では、外部信頼確立システムは、例えば、分散型コンセンサスを介して、受信される最小モデルの信頼性を検証することができる。
【0087】
ブロック614で、受信される最小モデルおよび/またはアップデートは、顧客環境212によって記憶される。いくつかの実施形態では、これには、受信される最小モデルおよび/または更新をモデルストア218に記憶することが含まれ得る。
【0088】
ブロック616で、受信される最小モデルの上に融合モデルが構築される。いくつかの実施形態では、融合モデルは補足モデルの組み合わせから作成することができ、および/または融合モデルは補足モデルの上でトレーニングすることができる。融合モデルは、ローカルトレーニングマネージャ312によってトレーニングすることができる。いくつかの実施形態では、受信される取り除かれる最小モデルに基づいて融合モデルを作成することは、複数の最小モデルの各々からの層および重みを表す、取り除かれる最小モデルのバイナリなどのデータを結合することを含むことができる。
【0089】
いくつかの実施形態では、融合モデルのトレーニングは、最小モデルを融合モデルに融合することを含むことができる。いくつかの実施形態では、融合モデルは、例えば、FedAVG(、Gradient Average、Fed+、FedPox);ID3融合などのデシジョンツリー、反復平均やFedAvgなどの強化学習、反復平均などの線形分類子、および/または差分プライバシーとのナイーブベイズ融合などのナイーブベイズなどのニューラルネットワークを含むことができる。
【0090】
ブロック618で、タスク固有のヘッド、具体的にはタスク固有の分類子ヘッドが生成され、融合モデルに適用される。このタスク固有の分類子ヘッドは、顧客環境によって生成することができ、具体的には、ローカルトレーニングマネージャ312によって生成することができる。融合モデルは、融合モデルがトレーニングおよび/または生成された顧客環境のモデルストア218に記憶することができる。
【0091】
ブロック620で、融合モデルが記憶される。融合モデルは、融合モデルがトレーニングおよび/または生成された顧客環境のモデルストア218に記憶することができる。
【0092】
次に
図7を参照すると、融合モデルを用いて出力を生成するためのプロセス700の一実施形態を示すフローチャートが示されている。プロセス700は、顧客環境212によって実行することができる。プロセス700はブロック702で始まり、機械学習モデルの出力を生成する際に使用するためのデータ、具体的には融合モデルを用いて出力を生成するためのデータが受信される。ブロック704で、このデータがグローバルモデルに取り込まれる。グローバルモデルは、例えば1つまたはいくつかの層出力など、本明細書では第1の中間出力とも呼ばれる複数の中間出力を生成することができる。ブロック706に示すように、グローバルモデルのこれらの中間出力を受信および/または収集することができる。
【0093】
ブロック708で、グローバルモデルの中間出力が、融合モデルが生成された複数の最小モデルに取り込まれる。これらの最小モデルの各々は、本明細書では第2の中間出力とも呼ばれる1つまたはいくつかの中間出力を生成することができ、ブロック710に示すように受信および/または収集することができる。
【0094】
最小モデルから中間出力が受信および/または収集された後、プロセス700はブロック712に進み、最小モデルおよび/またはグローバルモデルの中間出力が融合モデルに取り込まれる。最小モデルの出力が望ましくないいくつかの実施形態では、ステップ708および710をスキップすることができ、プロセスはブロック706からブロック712に直接進むことができ、そこでグローバルモデルの中間出力が融合モデルに取り込まれる。いくつかの実施形態では、融合モデルへの中間出力の取り込みに加えて、ブロック702で受信されるデータの一部またはすべてを融合モデルに取り込むことができる。
【0095】
ブロック714で、融合モデルの分類子ヘッドは、融合モデルへ取り込まれた入力に基づいて、融合モデルの層から受信される入力に基づいて出力を生成し、および/または予測を行う。これは、融合モデルによって出力できる。
【0096】
実装例
図8は、少なくとも1つの実施形態による、IaaSアーキテクチャのパターン例を示すブロック
図800である。サービスオペレータ802は、仮想クラウドネットワーク(VCN)806およびセキュアホストサブネット808を含むことができるセキュアホストテナンシ804に通信可能に結合することができる。いくつかの例では、サービスオペレータ802は、1つまたは複数のクライアントコンピューティング装置を使用することができ、これは、ポータブルハンドヘルド装置(例えば、iPhone(登録商標)、携帯電話、iPad(登録商標)、コンピューティングタブレット、携帯情報端末(PDA))もしくはウェアラブル装置(例えば、Google Glass(登録商標)ヘッドマウントディスプレイ)、Microsoft(登録商標) Windows Mobile(登録商標)などの実行ソフトウェア、および/またはiOS、WindowsPhone、Android、BlackBerry8、PalmOSなどのさまざまなモバイルオペレーティングシステム、ならびにインターネット、電子メール、ショートメッセージサービス(SMS)、Blackberry(登録商標)、または有効な他の通信プロトコルであり得る。あるいは、クライアントコンピューティング装置は、例えば、さまざまなバージョンのMicrosoft Windows(登録商標)、Apple Macintosh(登録商標)、および/またはLinux(登録商標)オペレーティングシステムを実行するパーソナルコンピュータおよび/またはラップトップコンピュータを含む汎用パーソナルコンピュータであってもよい。クライアントコンピューティング装置は、例えばGoogle Chrome OSなどのさまざまなGNU/Linuxオペレーティングシステムを含むがこれらに限定されない、さまざまな市販のUNIX(登録商標)またはUNIX類似のオペレーティングシステムのいずれかを実行するワークステーションコンピュータであり得る。代替として、または追加として、クライアントコンピューティング装置は任意の他の電子装置であってもよく、シンクライアントコンピュータ、インターネット対応ゲームシステム(例えば、Kinect(登録商標)ジェスチャ入力装置有り、または無しのMicrosoft Xboxゲームコンソール)、および/またはVCN806および/またはインターネットにアクセスできるネットワークを介して通信できるパーソナルメッセージング装置などである。
【0097】
VCN806は、SSHVCN812に含まれるLPG810を介してセキュアシェル(SSH)VCN812に通信可能に結合することができるローカルピアリングゲートウェイ(LPG)810を含むことができる。SSHVCN812は、SSHサブネット814を含むことができ、SSHVCN812は、制御プレーンVCN816に含まれるLPG810を介して制御プレーンVCN816に通信可能に結合することができる。また、SSHVCN812は、LPG810を介してデータプレーンVCN818に通信可能に結合することができる。制御プレーンVCN816およびデータプレーンVCN818は、IaaSプロバイダが所有および/または動作できるサービステナンシ819に含めることができる。
【0098】
制御プレーンVCN816は、境界ネットワーク(例えば、企業イントラネットと外部ネットワークとの間の企業ネットワークの一部)として機能する制御プレーン非武装地帯(DMZ)層820を含むことができる。DMZベースのサーバは責任が制限されており、セキュリティ侵害を阻止するのに役立ち得る。さらに、DMZ層820は、1つまたは複数のロードバランサ(LB)サブネット822、アプリサブネット826を含むことができる制御プレーンアプリ層824、データベース(DB)サブネット830(例えば、フロントエンドDBサブネットおよび/またはバックエンドDBサブネット)を含むことができる制御プレーンデータ層828を含み得る。制御プレーンDMZ層820に含まれるLBサブネット822は、制御プレーンアプリ層824に含まれるアプリサブネット826と、制御プレーンVCN816に含まれ得るインターネットゲートウェイ834とに通信可能に結合することができ、アプリサブネット826は、制御プレーンデータ層828に含まれるDBサブネット830、ならびにサービスゲートウェイ836およびネットワークアドレス変換(NAT)ゲートウェイ838に通信可能に結合することができる。制御プレーンVCN816は、サービスゲートウェイ836およびNATゲートウェイ838を含むことができる。
【0099】
制御プレーンVCN816は、アプリサブネット826を含むことができるデータプレーンミラーアプリ層840を含むことができる。データプレーンミラーアプリ層840に含まれるアプリサブネット826は、コンピューティングインスタンス844を実行できる仮想ネットワークインターフェースコントローラ(VNIC)842を含むことができる。コンピューティングインスタンス844は、データプレーンミラーアプリ層840のアプリサブネット826を、データプレーンアプリ層846に含めることができるアプリサブネット826に通信可能に結合することができる。
【0100】
データプレーンVCN818は、データプレーンアプリ層846、データプレーンDMZ層848、およびデータプレーンデータ層850を含むことができる。データプレーンDMZ層848は、データプレーンアプリ層846のアプリサブネット826およびデータプレーンVCN818のインターネットゲートウェイ834に通信可能に結合され得るLBサブネット822を含むことができる。アプリサブネット826は、データプレーンVCN818のサービスゲートウェイ836およびデータプレーンVCN818のNATゲートウェイ838に通信可能に結合することができる。データプレーンデータ層850は、データプレーンアプリ層846のアプリサブネット826に通信可能に結合できるDBサブネット830を含むこともできる。
【0101】
制御プレーンVCN816およびデータプレーンVCN818のインターネットゲートウェイ834は、パブリックインターネット854に通信可能に結合され得るメタデータ管理サービス852に通信可能に結合され得る。パブリックインターネット854は、制御プレーンVCN816およびデータプレーンVCN818のNATゲートウェイ838に通信可能に結合することができる。制御プレーンVCN816およびデータプレーンVCN818のサービスゲートウェイ836は、クラウドサービス856に通信可能に結合することができる。
【0102】
いくつかの例では、制御プレーンVCN816またはデータプランVCN818のサービスゲートウェイ836は、パブリックインターネット854を経由せずに、クラウドサービス856へのアプリケーションプログラミングインターフェース(API)呼び出しを行うことができる。サービスゲートウェイ836からクラウドサービス856へのAPI呼び出しは一方向であり得る:サービスゲートウェイ836はクラウドサービス856へのAPI呼び出しを行うことができ、クラウドサービス856は要求されるデータをサービスゲートウェイ836に送信することができる。しかし、クラウドサービス856は、サービスゲートウェイ836へのAPI呼び出しを開始できない場合がある。
【0103】
いくつかの例では、セキュアホストテナンシ804は、サービステナンシ819に直接接続することができ、そうでなければ分離され得る。セキュアホストサブネット808は、LPG810を介してSSHサブネット814と通信することができ、LPG810は、そうでなければ分離されるシステムを介した双方向通信を可能にすることができる。セキュアホストサブネット808をSSHサブネット814に接続すると、セキュアホストサブネット808にサービステナンシ819内の他のエンティティへのアクセスを与えることができる。
【0104】
制御プレーンVCN816は、サービステナンシ819のユーザが所望のリソースをセットアップまたはプロビジョニングできるようにすることができる。制御プレーンVCN816内にプロビジョニングされる所望のリソースは、データプレーンVCN818内に展開または使用され得る。いくつかの例では、制御プレーンVCN816はデータプレーンVCN818から分離することができ、制御プレーンVCN816のデータプレーンミラーアプリ層840は、データプレーンミラーアプリ層840およびデータプレーンアプリ層846に含まれることができるVNIC842を介して、データプレーンVCN818のデータプレーンアプリ層846と通信することができる。
【0105】
いくつかの例では、システムのユーザまたは顧客は、要求をメタデータ管理サービス852に通信することができるパブリックインターネット854を介して、例えば、作成、読み取り、更新、または削除(CRUD)動作などの要求を行うことができる。メタデータ管理サービス852は、インターネットゲートウェイ834を介して要求を制御プレーンVCN816に通信することができる。この要求は、制御プレーンDMZ層820に含まれるLBサブネット822によって受信され得る。LBサブネット822は、要求が有効であると決定することができ、この決定に応答して、LBサブネット822は、制御プレーンアプリ層824に含まれるアプリサブネット826に要求を送信することができる。要求が検証され、パブリックインターネット854への呼び出しが必要な場合、パブリックインターネット854への呼び出しは、パブリックインターネット854への呼び出しを行うことができるNATゲートウェイ838に送信され得る。要求によって記憶されることが望ましい場合があるメモリは、DBサブネット830に記憶できる。
【0106】
いくつかの例では、データプレーンミラーアプリ層840は、制御プレーンVCN816とデータプレーンVCN818との間の直接通信を容易にすることができる。例えば、構成に対する変更、更新、または他の適切な修正を、データプレーンVCN818に含まれるリソースに適用することが望ましい場合がある。VNIC842を介して、制御プレーンVCN816は、データプレーンVCN818に含まれるリソースと直接通信することができ、それにより、データプレーンVCN818に含まれるリソースに対する構成の変更、更新、または他の適切な修正を実行することができる。
【0107】
いくつかの実施形態では、制御プレーンVCN816およびデータプレーンVCN818は、サービステナンシ819に含めることができる。この場合、システムのユーザまたは顧客は、制御プレーンVCN816またはデータプレーンVCN818のいずれも所有または動作できない。代わりに、IaaSプロバイダは、制御プレーンVCN816およびデータプレーンVCN818を所有または動作することができ、これらは両方ともサービステナンシ819に含まれることができる。この実施形態は、ユーザまたは顧客が他のユーザまたは他の顧客のリソースと対話することを防止し得るネットワークの分離を可能にすることができる。また、この実施形態により、システムのユーザまたは顧客は、記憶のために所望のセキュリティレベルを持たない可能性があるパブリックインターネット854に依存する必要なく、データベースをプライベートに記憶することができる。
【0108】
他の実施形態では、制御プレーンVCN816に含まれるLBサブネット822は、サービスゲートウェイ836から信号を受信するように構成され得る。この実施形態では、制御プレーンVCN816およびデータプレーンVCN818は、パブリックインターネット854を呼び出すことなく、IaaSプロバイダの顧客によって呼び出されるように構成され得る。顧客が使用するデータベースはIaaSプロバイダによって制御され、パブリックインターネット854から分離され得るサービステナンシ819に記憶され得るため、IaaSプロバイダの顧客は、この実施形態を望む可能性がある。
【0109】
図9は、少なくとも1つの実施形態による、IaaSアーキテクチャの別のパターン例を示すブロック
図900である。サービスオペレータ902(例えば、
図8のサービスオペレータ802)は、セキュアホストテナンシ904(例えば、
図8のセキュアホストテナンシ804)に通信可能に結合することができ、これは、仮想クラウドネットワーク(VCN)906(例えば、
図8のVCN806)およびセキュアホストサブネット908(例えば、
図8のセキュアホストサブネット808)を含むことができる。VCN906は、ローカルピアリングゲートウェイ(LPG)910(例えば、
図8のLPG810)を含むことができ、これはSSH VCN912に含まれるLPG810を介して、セキュアシェル(SSH)VCN912(例えば、
図8のSSH VCN812)に通信可能に結合することができる。SSHVCN912は、SSHサブネット914(例えば、
図8のSSHサブネット814)を含むことができ、SSHVCN912は、制御プレーンVCN916(例えば、
図8の制御プレーンVCN816)に含まれるLPG910を介して制御プレーンVCN916に通信可能に結合することができる。制御プレーンVCN916は、サービステナンシ919(例えば、
図8のサービステナンシ819)に含まれることができ、データプレーンVCN918(例えば、
図8のデータプレーンVCN818)は、顧客テナンシ921に含まれることができ、これはシステムのユーザまたは顧客によって所有または動作され得る。
【0110】
制御プレーンVCN916は、LBサブネット922(例えば、
図8のLBサブネット822)を含むことができる制御プレーンDMZ層920(例えば、
図8の制御プレーンDMZ層820)、アプリサブネット926(例えば、
図8のアプリサブネット826)を含むことができる制御プレーンアプリ層924(例えば、
図8の制御プレーンアプリ層824)、データベース(DB)サブネット930(例えば、
図8のDBサブネット830と同様)を含むことができる制御プレーンデータ層928(例えば、
図8の制御プレーンデータ層828)を含むことができる。制御プレーンDMZ層920に含まれるLBサブネット922は、制御プレーンアプリ層924に含まれるアプリサブネット926と、制御プレーンVCN916に含まれ得るインターネットゲートウェイ934(例えば、
図8のインターネットゲートウェイ834)とに通信可能に結合され得、アプリサブネット926は、制御プレーンデータ層928に含まれるDBサブネット930、サービスゲートウェイ936(例えば、
図8のサービスゲートウェイ)およびネットワークアドレス変換(NAT)ゲートウェイ938(例えば、
図8のNATゲートウェイ838)に通信可能に結合することができる。制御プレーンVCN916は、サービスゲートウェイ936およびNATゲートウェイ938を含むことができる。
【0111】
制御プレーンVCN916は、アプリサブネット926を含むことができるデータプレーンミラーアプリ層940(例えば、
図8のデータプレーンミラーアプリ層840)を含むことができる。データプレーンミラーアプリ層940に含まれるアプリサブネット926は、コンピューティングインスタンス944(例えば、
図8のコンピューティングインスタンス844と同様)を実行できる仮想ネットワークインターフェースコントローラ(VNIC)942(例えば、842のVNIC)を含むことができる。コンピューティングインスタンス944は、データプレーンミラーアプリ層940に含まれるVNIC942とデータプランアプリ層946に含まれるVNIC942を介して、データプレーンミラーアプリ層940のアプリサブネット926と、データプレーンアプリ層946(例えば、
図8のデータプレーンアプリ層846)に含めることができるアプリサブネット926との間の通信を容易にすることができる。
【0112】
制御プレーンVCN916に含まれるインターネットゲートウェイ934は、メタデータ管理サービス952(例えば、
図8のメタデータ管理サービス852)に通信可能に結合することができ、メタデータ管理サービス952は、パブリックインターネット954(例えば、
図8のパブリックインターネット854)に通信可能に結合することができる。パブリックインターネット954は、制御プレーンVCN916に含まれるNATゲートウェイ938に通信可能に結合することができる。制御プレーンVCN916に含まれるサービスゲートウェイ936は、クラウドサービス956(例えば、
図8のクラウドサービス856)に通信可能に結合することができる。
【0113】
いくつかの例では、データプレーンVCN918は顧客テナンシ921に含まれることができる。この場合、IaaSプロバイダは、各顧客に対して制御プレーンVCN916を提供することができ、IaaSプロバイダは、各顧客に対して、サービステナンシ919に含まれる一意のコンピューティングインスタンス944をセットアップすることができる。各コンピューティングインスタンス944は、サービステナンシ919に含まれる制御プレーンVCN916と、顧客テナンシ921に含まれるデータプレーンVCN918との間の通信を可能にすることができる。コンピューティングインスタンス944は、サービステナンシ919に含まれる制御プレーンVCN916内にプロビジョニングされるリソースが、顧客テナンシ921に含まれるデータプレーンVCN918内に展開されるか、さもなければ使用されることを可能にし得る。
【0114】
他の例では、IaaSプロバイダの顧客は、顧客テナンシ921内に存在するデータベースを有し得る。この例では、制御プレーンVCN916は、アプリサブネット926を含むことができるデータプレーンミラーアプリ層940を含むことができる。データプレーンミラーアプリ層940はデータプレーンVCN918内に存在することができるが、データプレーンミラーアプリ層940はデータプレーンVCN918内に存在しなくてもよい。つまり、データプレーンミラーアプリ層940は、顧客テナンシ921にアクセスできるが、データプレーンミラーアプリ層940は、データプレーンVCN918に存在しないか、IaaSプロバイダの顧客によって所有または動作されない可能性がある。データプレーンミラーアプリ層940は、データプレーンVCN918への呼び出しを行うように構成されてもよいが、制御プレーンVCN916に含まれる任意のエンティティへの呼び出しを行うように構成されなくてもよい。顧客は、制御プレーンVCN916内にプロビジョニングされるデータプレーンVCN918内のリソースを展開または使用することを望む場合があり、データプレーンミラーアプリ層940は、リソースの顧客の所望の展開または他の使用を容易にすることができる。
【0115】
いくつかの実施形態では、IaaSプロバイダの顧客は、データプレーンVCN918にフィルタを適用することができる。この実施形態では、顧客はデータプレーンVCN918が何にアクセスできるかを決定することができ、顧客はデータプレーンVCN918からパブリックインターネット954へのアクセスを制限することができる。IaaSプロバイダは、フィルタを適用したり、外部ネットワークまたはデータベースへのデータプレーンVCN918のアクセスを制御したりできない場合がある。顧客によるフィルタおよび制御を顧客テナンシ921に含まれるデータプレーンVCN918に適用すると、データプレーンVCN918を他の顧客およびパブリックインターネット954から分離するのに役立ち得る。
【0116】
いくつかの実施形態では、クラウドサービス956は、パブリックインターネット954上、制御プレーンVCN916上、またはデータプレーンVCN918上に存在しない可能性があるサービスにアクセスするために、サービスゲートウェイ936によって呼び出すことができる。クラウドサービス956と制御プレーンVCN916またはデータプレーンVCN918との間の接続は、存在しないまたは継続的ではない可能性がある。クラウドサービス956は、IaaSプロバイダが所有または運営する別のネットワーク上に存在し得る。クラウドサービス956は、サービスゲートウェイ936から呼び出しを受信するように構成されてもよいし、パブリックインターネット954から呼び出しを受信しないように構成されてもよい。一部のクラウドサービス956は、他のクラウドサービス956から分離されてもよく、制御プレーンVCN916は、制御プレーンVCN916と同じ領域になくてもよいクラウドサービス956から分離されてもよい。例えば、制御プレーンVCN916は「リージョン1」に配置され、クラウドサービス「展開11」はリージョン1と「リージョン2」に配置され得る。展開11への呼び出しが、リージョン1にある制御プレーンVCN916に含まれるサービスゲートウェイ936によって行われた場合、その呼び出しはリージョン1の展開11に送信され得る。この例では、制御プレーンVCN916、またはリージョン1の展開11は、リージョン2の展開11に通信可能に結合されていない、または通信していない可能性がある。
【0117】
図10は、少なくとも1つの実施形態による、IaaSアーキテクチャの別のパターン例を示すブロック
図1000である。サービスオペレータ1002(例えば、
図8のサービスオペレータ802)は、セキュアホストテナンシ1004(例えば、
図8のセキュアホストテナンシ804)に通信可能に結合することができ、これは、仮想クラウドネットワーク(VCN)1006(例えば、
図8のVCN806)およびセキュアホストサブネット1008(例えば、
図8のセキュアホストサブネット808)を含むことができる。VCN1006は、SSHVCN1012に含まれるLPG1010を介してSSHVCN1011(例えば、
図8のSSHVCN812)に通信可能に結合され得るLPG1010(例えば、
図8のLPG810)を含むことができる。SSHVCN1012は、SSHサブネット1014(例えば、
図8のSSHサブネット814)を含むことができ、SSHVCN1012は、制御プレーンVCN1016(例えば、
図8の制御プレーンVCN816)に含まれるLPG1010を介して、制御プレーンVCN1016に通信可能に結合することができ、データプレーンVCN1018(例えば、
図8のデータプレーン818)に含まれるLPG1010を介して、データプレーンVCN1018に通信可能に結合することができる。制御プレーンVCN1016およびデータプレーンVCN1018は、サービステナンシ1019(例えば、
図8のサービステナンシ819)に含めることができる。
【0118】
制御プレーンVCN1016は、ロードバランサ(LB)サブネット1022(例えば、
図8のLBサブネット822)を含むことができる制御プレーンDMZ層1020(例えば、
図8の制御プレーンDMZ層820)、アプリサブネット1026(例えば、
図8のアプリサブネット826と同様)を含むことができる制御プレーンアプリ層1024(例えば、
図8の制御プレーンアプリ層824)、DBサブネット1030を含むことができる制御プレーンデータ層1028(例えば、
図8の制御プレーンデータ層828)を含むことができる。制御プレーンDMZ層1020に含まれるLBサブネット1022は、制御プレーンアプリ層1024に含まれるアプリサブネット1026に通信可能に結合することができ、制御プレーンVCN1016に含めることができるインターネットゲートウェイ1034(例えば、
図8のインターネットゲートウェイ834)に通信可能に結合することができ、アプリサブネット1026は、制御プレーンデータ層1028に含まれるDBサブネット1030に通信可能に結合することができ、サービスゲートウェイ1036(例えば、
図8のサービスゲートウェイ)およびネットワークアドレス変換(NAT)ゲートウェイ1038(例えば、
図8のNATゲートウェイ838)に通信可能に結合することができる。制御プレーンVCN1016は、サービスゲートウェイ1036およびNATゲートウェイ1038を含むことができる。
【0119】
データプレーンVCN1018は、データプレーンアプリ層1046(例えば、
図8のデータプレーンアプリ層846)、データプレーンDMZ層1048(例えば、
図8のデータプレーンDMZ層848)、およびデータプレーンデータ層1050(例えば、
図8のデータプレーンデータ層850)を含むことができる。データプレーンDMZ層1048は、LBサブネット1022を含むことができ、それは、信頼できるアプリサブネット1060に通信可能に結合され得、データプレーンアプリ層1046の信頼できないアプリサブネット1062およびデータプレーンVCN1018に含まれるインターネットゲートウェイ1034に通信可能に結合することができる。信頼できるアプリサブネット1060は、データプレーンVCN1018に含まれるサービスゲートウェイ1036に通信可能に結合することができ、データプレーンVCN1018に含まれるNATゲートウェイ1038、およびデータプレーンデータ層1050に含まれるDBサブネット1030に通信可能に結合することができる。信頼できないアプリサブネット1062は、データプレーンVCN1018に含まれるサービスゲートウェイ1036およびデータプレーンデータ層1050に含まれるDBサブネット1030に通信可能に接続することができる。データプレーンデータ層1050は、データプレーンVCN1018に含まれるサービスゲートウェイ1036に通信可能に結合できるDBサブネット1030を含むことができる。
【0120】
信頼できないアプリサブネット1062は、テナンシ仮想機械(VM)1066(1)~(N)に通信可能に結合できる1つまたは複数の1次VNIC1064(1)~(N)を含むことができる。各テナンシVM1066(1)~(N)は、それぞれの顧客テナンシ1070(1)~(N)に含めることができるそれぞれのコンテナ出口VCN1068(1)~(N)に含めることができるそれぞれのアプリサブネット1067(1)~(N)に通信可能に結合することができる。それぞれの2次VNIC1072(1)~(N)は、データプレーンVCN1018に含まれる信頼できないアプリサブネット1062と、コンテナ出口VCN1068(1)~(N)に含まれるアプリサブネットとの間の通信を容易にすることができる。各コンテナ出口VCN1068(1)~(N)は、パブリックインターネット1054(例えば、
図8のパブリックインターネット854)に通信可能に結合できるNATゲートウェイ1038を含むことができる。
【0121】
制御プレーンVCN1016に含まれ、データプレーンVCN1018に含まれるインターネットゲートウェイ1034は、パブリックインターネット1054に通信可能に結合できるメタデータ管理サービス1052(例えば、
図8のメタデータ管理システム852)に通信可能に結合することができる。パブリックインターネット1054は、制御プレーンVCN1016に含まれ、データプレーンVCN1018に含まれるNATゲートウェイ1038に通信可能に結合することができる。制御プレーンVCN1016に含まれ、データプレーンVCN1018に含まれるサービスゲートウェイ1036は、クラウドサービス1056に通信可能に結合することができる。
【0122】
いくつかの実施形態では、データプレーンVCN1018は、顧客テナンシ1070と統合することができる。この統合は、コード実行時のサポートが望ましい場合など、IaaSプロバイダの顧客にとって有益または望ましい場合がある。顧客は、破壊的な可能性があるコード、他の顧客リソースと通信する可能性のあるコード、またはその他の望ましくない影響を引き起こす可能性のあるコードの実行を提供し得る。これに応じて、IaaSプロバイダは、顧客からIaaSプロバイダに提供されるコードを実行するかどうかを決定できる。
【0123】
いくつかの例では、IaaSプロバイダの顧客は、IaaSプロバイダへの一時的なネットワークアクセスを許可し、データプレーン層アプリ1046に付加される機能を要求することができる。機能を実行するコードは、VM1066(1)~(N)で実行されてもよく、コードは、データプレーンVCN1018上の他の場所で実行されるように構成されなくてもよい。各VM1066(1)~(N)は、1つの顧客テナンシ1070に接続され得る。VM1066(1)~(N)に含まれるそれぞれのコンテナ1071(1)~(N)は、コードを実行するように構成され得る。この場合、二重分離が存在し得(例えば、コンテナ1071(1)~(N)のコード実行、コンテナ1071(1)~(N)は、信頼できないアプリサブネット1062に含まれる少なくともVM1066(1)~(N)に含まれ得る)、これは、間違ったコードや望ましくないコードがIaaSプロバイダのネットワークに損害を与えたり、別の顧客のネットワークに損害を与えたりすることを防ぐのに役立ち得る。コンテナ1071(1)~(N)は、顧客テナンシ1070に通信可能に結合されてもよく、顧客テナンシ1070からデータを送信または受信するように構成されてもよい。コンテナ1071(1)~(N)は、データプレーンVCN1018内の他の任意のエンティティからデータを送信または受信するように構成されていない可能性がある。コードの実行が完了すると、IaaSプロバイダは、コンテナ1071(1)~(N)を強制終了するか、その他の方法で廃棄することができる。
【0124】
いくつかの実施形態では、信頼できるアプリサブネット1060は、IaaSプロバイダによって所有または動作され得るコードを実行し得る。この実施形態では、信頼できるアプリサブネット1060は、DBサブネット1030に通信可能に結合され、DBサブネット1030においてCRUD動作を実行するように構成され得る。信頼できないアプリサブネット1062は、DBサブネット1030に通信可能に結合され得るが、この実施形態では、信頼できないアプリサブネットは、DBサブネット1030において読み取り動作を実行するように構成され得る。各顧客のVM1066(1)~(N)に含めることができ、顧客からのコードを実行することができるコンテナ1071(1)~(N)は、DBサブネット1030と通信可能に結合されなくてもよい。
【0125】
他の実施形態では、制御プレーンVCN1016とデータプレーンVCN1018は、直接通信可能に結合されていなくてもよい。この実施形態では、制御プレーンVCN1016とデータプレーンVCN1018との間に直接通信はなくてもよい。しかし、通信は少なくとも1つの方法を通じて間接的に行うことができる。LPG1010は、制御プレーンVCN1016とデータプレーンVCN1018との間の通信を容易にすることができるIaaSプロバイダによって確立され得る。別の例では、制御プレーンVCN1016またはデータプレーンVCN1018は、サービスゲートウェイ1036を介してクラウドサービス1056への呼び出しを行うことができる。例えば、制御プレーンVCN1016からクラウドサービス1056への呼び出しは、データプレーンVCN1018と通信できるサービスに対する要求を含むことができる。
【0126】
図11は、少なくとも1つの実施形態による、IaaSアーキテクチャの別の例示的なパターンを示すブロック
図1100である。サービスオペレータ1102(例えば、
図8のサービスオペレータ802)は、仮想クラウドネットワーク(VCN)1106(例えば、
図8のVCN806)を含むことができるセキュアホストテナンシ1104(例えば、
図8のセキュアホストテナンシ804)およびセキュアホストサブネット1108(例えば、
図8のセキュアホストサブネット808)に通信可能に結合することができる。VCN1106は、SSH VCN1112に含まれるLPG1110を介してSSH VCN1112(例えば、
図8のSSH VCN812)に通信可能に結合され得るLPG1110(例えば、
図8のLPG810)を含むことができる。SSH VCN1112は、SSHサブネット1114(例えば、
図8のSSHサブネット814)を含むことができ、SSH VCN1112は、制御プレーンVCN1116に含まれるLPG1110を介して、制御プレーンVCN1116(例えば、
図8の制御プレーンVCN816)およびデータプレーンVCN1118に含まれるLPG1110を介して、データプレーンVCN1118(例えば、
図8のデータプレーン818)に通信可能に結合することができる。制御プレーンVCN1116およびデータプレーンVCN1118は、サービステナンシ1119(例えば、
図8のサービステナンシ819)に含めることができる。
【0127】
制御プレーンVCN1116は、LBサブネット1122(例えば、
図8のLBサブネット822)を含むことができる制御プレーンDMZ層1120(例えば、
図8の制御プレーンDMZ層820)、アプリサブネット1126(例えば、
図8のアプリサブネット826)を含むことができる制御プレーンアプリ層1124(例えば、
図8の制御プレーンアプリ層824)、DBサブネット1130(例えば、
図10のDBサブネット1030)を含むことができる制御プレーンデータ層1128(例えば、
図8の制御プレーンデータ層828)を含むことができる。制御プレーンDMZ層1120に含まれるLBサブネット1122は、制御プレーンアプリ層1124に含まれるアプリサブネット1126、および制御プレーンVCN1116に含めることができるインターネットゲートウェイ1134(例えば、
図8のインターネットゲートウェイ834)に通信可能に結合することができ、アプリサブネット1126は、制御プレーンデータ層1128に含まれるDBサブネット1130およびサービスゲートウェイ1136(例えば、
図8のサービスゲートウェイ)およびネットワークアドレス変換(NAT)ゲートウェイ1138(例えば、
図8のNATゲートウェイ838)に通信可能に結合することができる。制御プレーンVCN1116は、サービスゲートウェイ1136およびNATゲートウェイ1138を含むことができる。
【0128】
データプレーンVCN1118は、データプレーンアプリ層1146(例えば、
図8のデータプレーンアプリ層846)、データプレーンDMZ層1148(例えば、
図8のデータプレーンDMZ層848)、およびデータプレーンデータ層1150(例えば、
図8のデータプレーンデータ層850)を含むことができる。データプレーンDMZ層1148は、信頼できるアプリサブネット1160(例えば、
図10の信頼できるアプリサブネット1060)およびデータプレーンVCN1118に含まれるデータプレーンアプリ層1146およびインターネットゲートウェイ1134の信頼できないアプリサブネット1162(例えば、
図10の信頼できないアプリサブネット1062)に通信可能に結合できるLBサブネット1122を含むことができる。信頼できるアプリサブネット1160は、データプレーンVCN1118に含まれるサービスゲートウェイ1136およびデータプレーンVCN1118に含まれるNATゲートウェイ1138、およびデータプレーンデータ層1150に含まれるDBサブネット1130に通信可能に結合することができる。信頼できないアプリサブネット1162は、データプレーンVCN1118に含まれるサービスゲートウェイ1136およびデータプレーンデータ層1150に含まれるDBサブネット1130に通信可能に結合することができる。データプレーンデータ層1150は、データプレーンVCN1118に含まれるサービスゲートウェイ1136に通信可能に結合できるDBサブネット1130を含むことができる。
【0129】
信頼できないアプリサブネット1162は、信頼できないアプリサブネット1162内に載置するテナンシ仮想機械(VM)1166(1)~(N)に通信可能に結合できる1次VNIC1164(1)~(N)を含むことができる。各テナンシVM1166(1)~(N)は、それぞれのコンテナ1167(1)~(N)内でコードを実行することができ、コンテナ出口VCN1168に含まれることができるデータプレーンアプリ層1146に含まれることができるアプリサブネット1126に通信可能に結合され得る。それぞれの2次VNIC1172(1)~(N)は、データプレーンVCN1118に含まれる信頼できないアプリサブネット1162とコンテナ出口VCN1168に含まれるアプリサブネットとの間の通信を容易にすることができる。コンテナ出口VCNは、パブリックインターネット1154(例えば、
図8のパブリックインターネット854)に通信可能に結合できるNATゲートウェイ1138を含むことができる。
【0130】
制御プレーンVCN1116に含まれ、データプレーンVCN1118に含まれるインターネットゲートウェイ1134は、パブリックインターネット1154に通信可能に結合できるメタデータ管理サービス1152(例えば、
図8のメタデータ管理システム852)に通信可能に結合することができる。パブリックインターネット1154は、制御プレーンVCN1116に含まれるNATゲートウェイ1138およびデータプレーンVCN1118に含まれるNATゲートウェイ1138に通信可能に結合することができる。制御プレーンVCN1116に含まれ、データプレーンVCN1118に含まれるサービスゲートウェイ1136は、クラウドサービス1156に通信可能に結合することができる。
【0131】
いくつかの例では、
図11のブロック
図1100のアーキテクチャによって示されるパターンは、
図10のブロック
図1000のアーキテクチャによって示されるパターンの例外であると考えられ、IaaSプロバイダが顧客と直接通信できない場合(例えば、切断されている領域)、IaaSプロバイダの顧客にとっては望ましい場合がある。各顧客のVM1166(1)~(N)に含まれるそれぞれのコンテナ1167(1)~(N)は、顧客によってリアルタイムでアクセス可能である。コンテナ1167(1)~(N)は、コンテナ出口VCN1168に含まれることができるデータプレーンアプリ層1146のアプリサブネット1126に含まれるそれぞれの2次VNIC1172(1)~(N)への呼び出しを行うように構成され得る。2次VNIC1172(1)~(N)は、呼び出しをパブリックインターネット1154に送信することができるNATゲートウェイ1138に呼び出しを送信することができる。この例では、顧客がリアルタイムでアクセスできるコンテナ1167(1)~(N)は、制御プレーンVCN1116から分離することができ、データプレーンVCN1118に含まれる他のエンティティから分離することができる。コンテナ1167(1)~(N)は、他の顧客からのリソースから隔離されてもよい。
【0132】
他の例では、顧客は、コンテナ1167(1)~(N)を使用して、クラウドサービス1156を呼び出すことができる。この例では、顧客は、クラウドサービス1156からサービスを要求するコードをコンテナ1167(1)~(N)内で実行することができる。コンテナ1167(1)~(N)は、この要求を2次VNIC1172(1)~(N)に送信することができ、2次VNIC1172(1)~(N)は、要求をパブリックインターネット1154に送信することができるNATゲートウェイに要求を送信することができる。パブリックインターネット1154は、インターネットゲートウェイ1134を介して、制御プレーンVCN1116に含まれるLBサブネット1122に要求を送信することができる。要求が有効であるとの決定に応答して、LBサブネットは、サービスゲートウェイ1136を介してクラウドサービス1156に要求を送信できるアプリサブネット1126に要求を送信することができる。
【0133】
図に示されているIaaSアーキテクチャ800、900、1000、1100は、示されているもの以外の構成要素を有し得ることを理解されたい。さらに、図に示される実施形態は、本開示の実施形態を組み込むことができるクラウドインフラストラクチャシステムのいくつかの例にすぎない。他のいくつかの実施形態では、IaaSシステムは、図示されているよりも多いもしくは少ない構成要素を有してもよく、2つ以上の構成要素を組み合わせてもよく、または構成要素の異なる構成もしくは配置を有してもよい。
【0134】
特定の実施形態では、本明細書で説明されるIaaSシステムは、セルフサービス、サブスクリプションベース、弾力的に拡張可能、信頼性が高く、可用性が高く、安全な方法で顧客に提供されるアプリケーション、ミドルウェア、およびデータベースサービス製品のスイートを含むことができる。このようなIaaSシステムの一例として、本譲受人が提供するOracle Cloud Infrastructure(OCI)がある。
【0135】
図12は、本開示のさまざまな実施形態が実装され得る例示的なコンピュータシステム1200を示す。システム1200は、上述のコンピュータシステムのいずれかを実装するために使用することができる。図に示すように、コンピュータシステム1200は、バスサブシステム1202を介して多くの周辺サブシステムと通信する処理装置1204を含む。これらの周辺サブシステムは、処理加速装置1206、I/Oサブシステム1208、記憶サブシステム1218、および通信サブシステム1224を含み得る。記憶サブシステム1218は、有形のコンピュータ可読記憶媒体1222およびシステムメモリ1210を含む。
【0136】
バスサブシステム1202は、コンピュータシステム1200のさまざまな構成要素およびサブシステムが意図したとおりに相互に通信できるようにする機構を提供する。バスサブシステム1202は単一のバスとして概略的に示されているが、バスサブシステムの代替実施形態では複数のバスを利用することができる。バスサブシステム1202は、さまざまなバスアーキテクチャのいずれかを使用するメモリバスまたはメモリコントローラ、周辺バス、およびローカルバスを含むいくつかのタイプのバス構造のいずれであってもよい。例えば、そのようなアーキテクチャには、Industry Standard Architecture(ISA)バス、Micro Channel Architecture(MCA)バス、Enhanced ISA(EISA)バス、Video Electronics Standards Association(VESA)ローカルバス、およびPeripheral Component Interconnect(PCI)バスが含まれ得る。これは、IEEEP1386.1標準に従って製造されるメザニンバスとして実装できる。
【0137】
処理装置1204は、1つまたは複数の集積回路(例えば、従来のマイクロプロセッサまたはマイクロコントローラ)として実装することができ、コンピュータシステム1200の動作を制御する。1つまたは複数のプロセッサが処理装置1204に含まれてもよい。これらのプロセッサには、単一コアプロセッサまたはマルチコアプロセッサが含まれ得る。特定の実施形態では、処理装置1204は、各処理装置に含まれる単一コアプロセッサまたはマルチコアプロセッサを有する1つまたは複数の独立した処理装置1232および/または1234として実装され得る。他の実施形態では、処理装置1204は、2つのデュアルコアプロセッサを単一のチップに統合することによって形成されるクアッドコア処理装置として実装されてもよい。
【0138】
さまざまな実施形態において、処理装置1204は、プログラムコードに応答してさまざまなプログラムを実行することができ、複数の同時実行プログラムまたはプロセスを維持することができる。いつでも、実行されるプログラムコードの一部またはすべては、プロセッサ1204および/または記憶サブシステム1218に存在することができる。適切なプログラミングを通じて、プロセッサ1204は、上述のさまざまな機能を提供することができる。コンピュータシステム1200は、デジタルシグナルプロセッサ(DSP)、専用プロセッサ等を含むことができる処理加速装置1206をさらに含むことができる。
【0139】
I/Oサブシステム1208は、ユーザインターフェース入力装置およびユーザインターフェース出力装置を含むことができる。ユーザインターフェース入力装置にはキーボード、マウスやトラックボールなどのポインティング装置、ディスプレイに組み込まれたタッチパッドやタッチスクリーン、スクロールホイール、クリックホイール、ダイヤル、ボタン、スイッチ、キーパッド、音声コマンド認識システムを備えたオーディオ入力装置、マイク、および他のタイプの入力装置が含まれ得る。ユーザインターフェース入力装置には、例えば、Microsoft Kinect(登録商標)モーションセンサーなどのモーションセンシングおよび/またはジェスチャ認識装置が含まれ得、ユーザは、ジェスチャや音声コマンドを使用した自然なユーザインターフェースを通じて、Microsoft Xbox(登録商標)360ゲームコントローラなどの入力装置を制御し、対話できるようになる。ユーザインターフェース入力装置には、ユーザからの目の活動(例えば、写真撮影中および/またはメニュー選択中の「瞬き」)を検出し、目のジェスチャを入力装置(例えば、Google Glass(登録商標))への入力として変換するGoogle Glass(登録商標)瞬き検出器などのアイジェスチャ認識装置も含まれ得る。さらに、ユーザインターフェース入力装置は、ユーザが音声コマンドを通じて音声認識システム(例えば、Siri(登録商標)ナビゲータ)と対話できるようにする音声認識センシング装置を含んでもよい。
【0140】
ユーザインターフェース入力装置には、限定されないが、3次元(3D)マウス、ジョイスティックまたはポインティングスティック、ゲームパッドおよびグラフィックタブレット、ならびにスピーカ、デジタルカメラ、デジタルビデオカメラなどのオーディオ/ビジュアル装置、ポータブルメディアプレーヤ、ウェブカメラ、イメージスキャナ、指紋スキャナ、バーコードリーダ3Dスキャナ、3Dプリンタ、レーザ距離計、および視線追跡装置なども含まれ得る。さらに、ユーザインターフェース入力装置には、例えば、コンピュータ断層撮影法、磁気共鳴画像法、位置放射断層撮影法、医療用超音波検査装置などの医療用画像入力装置が含まれてもよい。ユーザインターフェース入力装置には、例えば、MIDIキーボード、デジタル楽器などのオーディオ入力装置も含まれ得る。
【0141】
ユーザインターフェース出力装置には、ディスプレイサブシステム、インジケータライト、またはオーディオ出力装置などの非視覚的ディスプレイが含まれてもよい。ディスプレイサブシステムは、陰極線管(CRT)、液晶ディスプレイ(LCD)またはプラズマディスプレイを使用するものなどのフラットパネル装置、投影装置、タッチスクリーンなどであってもよい。一般に、「出力装置」という用語の使用は、コンピュータシステム1200からユーザまたは他のコンピュータに情報を出力するためのあらゆる可能なタイプの装置および機構を含むことを意図している。例えば、ユーザインターフェース出力装置には、モニタ、プリンタ、スピーカ、ヘッドフォン、自動車ナビゲーションシステム、プロッタ、音声出力装置、およびモデムなど、テキスト、グラフィックス、およびオーディオ/ビデオ情報を視覚的に伝達するさまざまな表示装置が含まれるが、これらに限定されない。
【0142】
コンピュータシステム1200は、システムメモリ1210内に現在配置されているように示されるソフトウェア要素を備える記憶サブシステム1218を備えることができる。システムメモリ1210は、処理装置1204上でロード可能および実行可能なプログラム命令、ならびにこれらのプログラムの実行中に生成されるデータを記憶することができる。
【0143】
コンピュータシステム1200の構成および種類に応じて、システムメモリ1210は、揮発性(ランダムアクセスメモリ(RAM)など)および/または不揮発性(読み取り専用メモリ(ROM)、フラッシュメモリなど)の場合がある。RAMは通常、処理装置1204に即座にアクセス可能な、ならびに/または処理装置1204によって現在動作および実行されているデータおよび/またはプログラムモジュールを含む。いくつかの実装形態では、システムメモリ1210は、スタティックランダムアクセスメモリ(SRAM)またはダイナミックランダムアクセスメモリ(DRAM)などの複数の異なるタイプのメモリを含み得る。いくつかの実装形態では、起動中など、コンピュータシステム1200内の要素間で情報を転送するのに役立つ基本ルーチンを含む基本入出力システム(BIOS)は、通常、ROMに記憶され得る。限定ではなく一例として、システムメモリ1210は、クライアントアプリケーション、ウェブブラウザ、中間層アプリケーション、リレーショナルデータベース管理システム(RDBMS)などを含み得るアプリケーションプログラム1212、プログラムデータ1214、およびオペレーティングシステム1216も示す。一例として、オペレーティングシステム1216には、さまざまなバージョンのMicrosoft Windows(登録商標)、Apple Macintosh(登録商標)、および/またはLinuxオペレーティングシステム、さまざまな市販のUNIX(登録商標)もしくはUNIX系オペレーティングシステム(さまざまなGNU/Linuxオペレーティングシステム、Google Chrome(登録商標)OSなどを含むがこれらに限定されない)、ならびに/またはiOS、Windows(登録商標)Phone、Android(登録商標)OS、BlackBerry(登録商標)15OS、およびPalm(登録商標)OSオペレーティングシステムなどのモバイルオペレーティングシステムが含まれ得る。
【0144】
記憶サブシステム1218はまた、いくつかの実施形態の機能を提供する基本的なプログラミングおよびデータ構造を記憶するための有形のコンピュータ可読記憶媒体を提供することもできる。プロセッサによって実行されると、上述の機能を提供するソフトウェア(プログラム、コードモジュール、命令)は、記憶サブシステム1218に記憶され得る。これらのソフトウェアモジュールまたは命令は、処理装置1204によって実行され得る。記憶サブシステム1218はまた、本開示に従って使用されるデータを記憶するためのリポジトリを提供することもできる。
【0145】
記憶サブシステム1200はまた、コンピュータ可読記憶媒体1222にさらに接続できるコンピュータ可読記憶媒体リーダ1220を含んでもよい。一緒に、そして任意でシステムメモリ1210と組み合わせて、コンピュータ可読記憶媒体1222は、リモート、ローカル、固定、および/または取り外し可能な記憶装置に加えて、コンピュータ可読情報を一時的および/またはより永続的に収容、記憶、送信、および取得するための記憶媒体を包括的に表すことができる。
【0146】
コードまたはコードの一部を含むコンピュータ可読記憶媒体1222には、当技術分野で既知または使用されている任意の適切な媒体を含めることもでき、これには、情報の記憶および/または送信のための任意の方法または技術で実装される揮発性および不揮発性、取り外し可能なおよび取り外し不可能な媒体などの記憶媒体および通信媒体が含まれるが、これらに限定されない。これには、RAM、ROM、電子的に消去可能なプログラマブルROM(EEPROM)、フラッシュメモリもしくはその他のメモリテクノロジ、CD-ROM、デジタルバーサタイルディスク(DVD)などの有形のコンピュータ可読記憶媒体、または他の光学記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置もしくは他の磁気記憶装置、または他の有形のコンピュータ可読媒体が含まれ得る。これには、データ信号、データ送信、または所望の情報を送信するために使用でき、コンピューティングシステム1200によってアクセスできる任意の他の媒体などの、無形のコンピュータ可読媒体も含まれ得る。
【0147】
一例として、コンピュータ可読記憶媒体1222は、取り外し不可能な不揮発性磁気媒体に対して読み取りまたは書き込みを行うハードディスクドライブ、取り外し可能な不揮発性磁気ディスクに対して読み取りまたは書き込みを行う磁気ディスクドライブ、およびCDROM、DVD、Blu-Ray(登録商標)ディスクなどの取り外し可能な不揮発性光ディスク、またはその他の光媒体に対して読み取りまたは書き込みを行う光ディスクドライブを含むことができる。コンピュータ可読記憶媒体1222には、Zip(登録商標)ドライブ、フラッシュメモリカード、ユニバーサルシリアルバス(USB)フラッシュドライブ、セキュアデジタル(SD)カード、DVDディスク、デジタルビデオテープなどが含まれてもよいが、これらに限定されない。コンピュータ可読記憶媒体1222には、フラッシュメモリベースのSSDなどの不揮発性メモリに基づくソリッドステートドライブ(SSD)、エンタープライズフラッシュドライブ、ソリッドステートROMなど、ソリッドステートRAM、ダイナミックRAM、スタティックRAMなどの揮発性メモリをベースにしたSSD、DRAMベースのSSD、磁気抵抗RAM(MRAM)SSD、およびDRAMとフラッシュメモリベースのSSDを組み合わせて使用するハイブリッドSSDも含まれ得る。ディスクドライブおよびそれらに関連するコンピュータ可読媒体は、コンピュータシステム1200のためのコンピュータ可読命令、データ構造、プログラムモジュール、および他のデータの不揮発性記憶を提供し得る。
【0148】
通信サブシステム1224は、他のコンピュータシステムおよびネットワークへのインターフェースを提供する。通信サブシステム1224は、コンピュータシステム1200から他のシステムとの間でデータを送受信するためのインターフェースとして機能する。例えば、通信サブシステム1224は、コンピュータシステム1200がインターネットを介して1つまたは複数の装置に接続できるようにすることができる。いくつかの実施形態では、通信サブシステム1224は、無線音声および/またはデータネットワークにアクセスするための無線周波数(RF)トランシーバ構成要素を含めることができる(例えば、携帯電話技術、3G、4G、またはEDGE(地球規模の進化のための強化されるデータレート)などの高度なデータネットワーク技術を使用する)、WiFi(IEEE802.11ファミリ標準、または他のモバイル通信技術、またはそれらの任意の組み合わせ)、全地球測位システム(GPS)受信機構成要素、および/または他の構成要素を含むことができる。いくつかの実施形態では、通信サブシステム1224は、無線インターフェースに加えて、またはその代わりに、有線ネットワーク接続(例えば、イーサネット(登録商標))を提供することができる。
【0149】
いくつかの実施形態では、通信サブシステム1224は、コンピュータシステム1200を使用することができる1人または複数のユーザに代わって、構造化および/または非構造化データフィード1226、イベントストリーム1228、イベント更新1230などの形式で入力通信を受信することもできる。
【0150】
一例として、通信サブシステム1224は、ソーシャルネットワーク、および/もしくはTwitter(登録商標)フィード、Facebook(登録商標)更新、リッチサイトサマリー(RSS)フィードなどのWebフィードなどのその他の通信サービス、ならびに/または1つもしくは複数のサードパーティ情報ソースからのリアルタイム更新のユーザからリアルタイムでデータフィード1226を受信するように構成され得る。
【0151】
さらに、通信サブシステム1224は、連続データストリームの形式でデータを受信するように構成されてもよく、これには、リアルタイムイベントおよび/またはイベント更新1230のイベントストリーム1228が含まれ得、これらは、連続的または明示的な終わりのない本質的に無制限であり得る。連続データを生成するアプリケーションの例には、例えば、センサーデータアプリケーション、金融ティッカ、ネットワーク性能測定ツール(例えば、ネットワーク監視およびトラフィック管理アプリケーション)、クリックストリーム分析ツール、自動車交通監視などが含まれ得る。
【0152】
通信サブシステム1224はまた、構造化および/または非構造化データフィード1226、イベントストリーム1228、イベント更新1230などを、コンピュータシステム1200に結合される1つまたは複数のストリーミングデータソースコンピュータと通信することができる1つまたは複数のデータベースに出力するように構成することもできる。
【0153】
コンピュータシステム1200は、ハンドヘルドポータブル装置(例えば、iPhone(登録商標)携帯電話、iPad(登録商標)コンピューティングタブレット、PDA)、ウェアラブル装置(例えば、Google Glass(登録商標)ヘッドマウントディスプレイ)、PC、ワークステーション、メインフレーム、キオスク、サーバラック、またはその他のデータ処理システムを含むさまざまなタイプのうちの1つであり得る。
【0154】
コンピュータおよびネットワークの絶え間なく変化する性質のため、図に示されるコンピュータシステム1200の説明は、特定の例としてのみ意図されている。図に示されているシステムよりも多くの、または少ない構成要素を備えた他の多くの構成が可能である。例えば、カスタマイズされているハードウェアも使用されたり、特定の要素がハードウェア、ファームウェア、ソフトウェア(アプレットを含む)、またはその組み合わせで実装されたりし得る。さらに、ネットワーク入出力装置などの他のコンピューティング装置への接続が使用されてもよい。本明細書で提供される開示および教示に基づいて、当業者であれば、さまざまな実施形態を実装するための他の手法および/または方法を理解するであろう。
【国際調査報告】