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

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

▶ エヌイーシー ラボラトリーズ アメリカ インクの特許一覧

<>
  • 特表-動的マイクロサービス相互通信構成 図1
  • 特表-動的マイクロサービス相互通信構成 図2
  • 特表-動的マイクロサービス相互通信構成 図3
  • 特表-動的マイクロサービス相互通信構成 図4
  • 特表-動的マイクロサービス相互通信構成 図5
  • 特表-動的マイクロサービス相互通信構成 図6
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-04-02
(54)【発明の名称】動的マイクロサービス相互通信構成
(51)【国際特許分類】
   G06F 9/46 20060101AFI20240326BHJP
   G06F 9/54 20060101ALI20240326BHJP
   G06N 3/092 20230101ALN20240326BHJP
【FI】
G06F9/46 420A
G06F9/54 Z
G06N3/092
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2023562849
(86)(22)【出願日】2022-04-15
(85)【翻訳文提出日】2023-11-16
(86)【国際出願番号】 US2022024979
(87)【国際公開番号】W WO2022221638
(87)【国際公開日】2022-10-20
(31)【優先権主張番号】63/175,066
(32)【優先日】2021-04-15
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】17/720,776
(32)【優先日】2022-04-14
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】504080663
【氏名又は名称】エヌイーシー ラボラトリーズ アメリカ インク
【氏名又は名称原語表記】NEC Laboratories America, Inc.
(74)【代理人】
【識別番号】100123788
【弁理士】
【氏名又は名称】宮崎 昭夫
(74)【代理人】
【識別番号】100127454
【弁理士】
【氏名又は名称】緒方 雅昭
(72)【発明者】
【氏名】コヴィエロ、 ジュゼッペ
(72)【発明者】
【氏名】ラオ、 クナル
(72)【発明者】
【氏名】シン、 ワン-ピン
(72)【発明者】
【氏名】ポ、 オリバー
(72)【発明者】
【氏名】チャクラッダー、 スリマット
(57)【要約】
通信を管理するための方法およびシステムは、第2のマイクロサービスと通信する第1のマイクロサービスを含む分散演算システムにおけるシステム状態を特定する(406)ことを含む。通信方法をシステム状態に関連付ける強化学習モデルを使用して、特定されたシステム状態に応答する通信方法が特定される(408)。特定された通信方法は、第1のマイクロサービスと第2のマイクロサービスとの間の通信のために実施され(410)、第1のマイクロサービスと第2のマイクロサービスは、特定された通信方法を使用してデータを送信する。
【選択図】図4
【特許請求の範囲】
【請求項1】
通信を管理するための、コンピュータに実装された方法であって、
第2のマイクロサービスと通信する第1のマイクロサービスを含む分散演算システムにおけるシステム状態を特定する(406)ことと、
通信方法をシステム状態に関連付ける強化学習モデルを用いて、前記特定されたシステム状態に応答する通信方法を特定する(408)ことと、
前記第1のマイクロサービスと前記第2のマイクロサービスとの間の通信において、前記第1のマイクロサービスおよび前記第2のマイクロサービスが前記特定された通信方法を用いてデータを送信するために、前記特定された通信方法を実施する(410)こととを含む方法。
【請求項2】
前記特定された通信方法を実施した後、更新されたシステム統計を収集し、前記更新されたシステム統計を用いて、システム状態を特定するステップと、通信方法を特定するステップと、前記特定された通信方法を実施するステップとを繰り返すことをさらに含む、請求項1に記載の方法。
【請求項3】
前記通信方法を特定することは、前記強化学習モデルによって指示される最適な方法とランダムな方法との間で選択することを含む、請求項1に記載の方法。
【請求項4】
前記最適な方法と前記ランダムな方法との間で選択することは、ランダムな値と学習パラメータとを比較することを含む、請求項3に記載の方法。
【請求項5】
前記強化学習モデルの値の閾値の割合が探索された後に、前記最適な方法が選択される可能性を高めるために、前記学習パラメータを更新することをさらに含む、請求項4に記載の方法。
【請求項6】
前記特定された通信方法は、m個サーバ対n個クライアント処理、ブローカベースのプロセス、バス、および共有メモリからなる群から選択される、請求項1に記載の方法。
【請求項7】
前記第1のマイクロサービスおよび前記第2のマイクロサービスは、ビデオ処理ワークロードにおいてそれぞれのタスクを実行する、請求項1に記載の方法。
【請求項8】
前記ビデオ処理ワークロードによって処理されるビデオストリーム中の顔を検出することと、前記顔の検出に応答してセキュリティアクションを実行することとをさらに含む、請求項7に記載の方法。
【請求項9】
前記特定された通信方法を実施した後に収集された性能統計を使用して、前記特定された通信方法に対応する前記強化学習モデルの報酬値を更新することをさらに含む、請求項1に記載の方法。
【請求項10】
前記システム状態を特定することは、データパケット関連統計と、前記第1のマイクロサービスおよび前記第2のマイクロサービスがどのゾーンおよびマシン上で実行されているかに関する情報とのうちの少なくとも1つを含む通信統計を測定することを含む、請求項1に記載の方法。
【請求項11】
顔検出のための、コンピュータに実装された方法であって、
ビデオ処理ワークロードにおいて、第2のマイクロサービスと通信する第1のマイクロサービスを含む分散演算システムにおけるシステム状態を特定する(406)ことと、
通信方法をシステム状態に関連付ける強化学習モデルを用いて、前記特定されたシステム状態に応答する通信方法を特定する(408)ことと、
前記第1のマイクロサービスと前記第2のマイクロサービスとの間の通信において、前記第1のマイクロサービスおよび前記第2のマイクロサービスが前記特定された通信方法を用いてデータを送信するために、前記特定された通信方法を実施する(410)ことと、
前記ビデオ処理ワークロードによって処理されるビデオストリーム内の顔を検出する(308)ことと、
前記顔の検出に応答してセキュリティアクションを実行する(312)こととを含む方法。
【請求項12】
通信を管理するシステムであって
ハードウェアプロセッサ(610)と、
コンピュータプログラムを含むメモリ(640)とを有し、
前記コンピュータプログラムは、前記ハードウェアプロセッサによって実行されると、前記ハードウェアプロセッサに、
第2のマイクロサービスと通信する第1のマイクロサービスを含む分散演算システムにおけるシステム状態を特定する(406)手順と、
通信方法をシステム状態に関連付ける強化学習モデルを用いて、前記特定されたシステム状態に応答する通信方法を特定する(408)手順と、
前記第1のマイクロサービスと前記第2のマイクロサービスとの間の通信において、前記第1のマイクロサービスおよび前記第2のマイクロサービスが前記特定された通信方法を用いてデータを送信するために、前記特定された通信方法を実施する(410)手順とを実行させるシステム。
【請求項13】
前記コンピュータプログラムは、前記ハードウェアプロセッサにさらに、前記特定された通信方法を実施した後、更新されたシステム統計を収集し、前記更新されたシステム統計を用いて、システム状態を特定するステップと、通信方法を特定するステップと、前記特定された通信方法を実施するステップとを繰り返す手順を実行させる、請求項12に記載のシステム。
【請求項14】
前記コンピュータプログラムは、前記ハードウェアプロセッサにさらに、前記強化学習モデルによって指示される最適な方法と、ランダムな方法とのいずれかを選択する手順を実行させる、請求項12に記載のシステム。
【請求項15】
前記コンピュータプログラムは、前記ハードウェアプロセッサにさらに、どの通信方法を使用するかを決定するために、ランダムな値と学習パラメータとを比較する手順を実行させる、請求項14に記載のシステム。
【請求項16】
前記コンピュータプログラムは、前記ハードウェアプロセッサにさらに、前記強化学習モデルの値の閾値の割合が探索された後に、前記最適な方法が選択される可能性を高めるために、前記学習パラメータを更新する手順を実行させる、請求項15に記載のシステム。
【請求項17】
前記特定された通信方法は、m個サーバ対n個クライアント処理、ブローカベースのプロセス、バス、および共有メモリからなる群から選択される、請求項12に記載のシステム。
【請求項18】
前記第1のマイクロサービスおよび前記第2のマイクロサービスは、ビデオ処理ワークロードにおいてそれぞれのタスクを実行する、請求項12に記載のシステム。
【請求項19】
前記コンピュータプログラムは、前記ハードウェアプロセッサにさらに、前記特定された通信方法を実施した後に収集された性能統計を使用して、前記特定された通信方法に対応する前記強化学習モデルの報酬値を更新する手順を実行させる、請求項12に記載のシステム。
【請求項20】
前記コンピュータプログラムは、前記ハードウェアプロセッサにさらに、データパケット関連統計と、前記第1のマイクロサービスおよび前記第2のマイクロサービスがどのゾーンおよびマシン上で実行されているかに関する情報との少なくとも1つを含む通信統計を測定する手順を実行させる、請求項12に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願情報
本出願は、2021年4月15日に出願された米国特許出願第63/175,066号および2022年4月14日に出願された米国特許出願第17/720,776号の優先権を主張し、その全体が参照により本明細書に組み込まれる。
【背景技術】
【0002】
技術分野
本発明は、分散演算に関し、より詳細には、マイクロサービス間の通信に関する。
【0003】
関連技術の説明
マイクロサービスは、自動化されたデプロイメカニズムを持つ、独立してデプロイ可能なサービスであり、大規模なシステム内の各サービスは独立して更新、置換、拡張が可能である。マイクロサービスの相互接続は、様々な通信形態のいずれかを使用することができ、特定の通信形態は他の通信形態よりも特定の条件に適している。
【発明の概要】
【0004】
通信を管理する方法は、第2のマイクロサービスと通信する第1のマイクロサービスを含む分散演算システムにおけるシステム状態を特定することを含む。通信方法をシステム状態に関連付ける強化学習モデルを用いて、特定されたシステム状態に応答する通信方法が特定される。第1のマイクロサービスと第2のマイクロサービスとの間の通信において、第1のマイクロサービスおよび第2のマイクロサービスが特定された通信方法を用いてデータを送信するために、特定された通信方法が実施される。
【0005】
顔検出のための方法は、ビデオ処理ワークロードにおいて、第2のマイクロサービスと通信する第1のマイクロサービスを含む分散演算システムにおけるシステム状態を特定することを含む。通信方法をシステム状態に関連付ける強化学習モデルを用いて、特定されたシステム状態に応答する通信方法が特定される。第1のマイクロサービスと第2のマイクロサービスとの間の通信において、第1のマイクロサービスおよび第2のマイクロサービスが特定された通信方法を用いてデータを送信するために、特定された通信方法が実施される。ビデオ処理ワークロードによって処理されるビデオストリーム内にて顔が検出される。顔の検出に応答してセキュリティアクションが実行される。
【0006】
通信を管理するシステムは、ハードウェアプロセッサと、コンピュータプログラムを含むメモリとを有する。ハードウェアプロセッサによって実行されると、コンピュータプログラムはハードウェアプロセッサに、第2のマイクロサービスと通信する第1のマイクロサービスを含む分散演算システムにおけるシステム状態を特定する手順と、通信方法をシステム状態に関連付ける強化学習モデルを用いて、特定されたシステム状態に応答する通信方法を特定する手順と、第1のマイクロサービスと第2のマイクロサービスとの間の通信において、第1のマイクロサービスおよび第2のマイクロサービスが特定された通信方法を用いてデータを送信するために、特定された通信方法を実施する手順とを実行させる。
【0007】
これらおよび他の特徴および利点は、添付図面と関連して読まれる、その例示的実施形態の以下の詳細な説明から明らかになるであろう。
【図面の簡単な説明】
【0008】
本開示は、以下の図を参照して、好ましい実施形態の以下の説明において詳細を提供する。
【0009】
図1】本発明の実施形態による、例示的な分散演算システムを示すブロック図である。
【0010】
図2】本発明の一実施形態による、分散演算システムにおける処理ノードのブロック図である。
【0011】
図3】本発明の実施形態による、ビデオ処理および顔照合ワークロードにおけるマイクロサービスのセットのブロック/フロー図である。
【0012】
図4】本発明の一実施形態による、分散演算システムにおけるマイクロサービス間の最適な通信方法を選択する方法のブロック/フロー図である。
【0013】
図5】本発明の一実施形態による、強化学習モデルに基づいて通信方法を選択する方法のブロック/フロー図である。
【0014】
図6】本発明の一実施形態による、分散演算システムを管理することができる演算システムであり、特にマイクロサービス間で使用する通信方法を選択する演算システムのブロック図である。
【発明を実施するための形態】
【0015】
アプリケーションは、第1のマイクロサービスの出力が第2のマイクロサービスの入力になるように、複数のマイクロサービスの相互接続によって形成されても良い。このように相互接続された複数のマイクロサービスは、アプリケーションの機能を生成するチェーンを形成することができる。この相互接続はマイクロサービス間のデータ通信を利用し、通信のタイプとしては、ポイントツーポイント通信、m個サーバ対n個クライアント通信、ブローカベース通信、共有メモリベース通信などが例示される。
【0016】
各コミュニケーション方法は、それぞれ異なる条件のセットに最適である。分散演算システムの現状を把握し、実行中のアプリケーションのサービス間通信を動的に設定することができる。分散演算プラットフォームの中には、静的な方法で通信方法を指定できるものもあるが、これらのシステムでは、状況の変化に応じて指定された通信方法を変更する機能が提供されていない場合がある。
【0017】
したがって、通信コントローラは、個々のマイクロサービスから性能と通信関連の統計情報とを収集することができる。これらの統計は、マイクロサービスのペア間で使用される最適な通信方法を特定するために、強化学習を用いて処理されることがある。最適な通信方法は、実行時にアプリケーション全体の効率を向上させるために動的に適用することができる。状態-アクション-報酬-状態-アクション(SARSA)強化学習は、特に状況の変化に適応するために使用されても良い。
【0018】
次に図1を参照すると、分散演算システム100の図が示されている。ユーザ102は、分散演算システム100でワークロードを実行することができる。このため、ユーザ102はマネージャシステム104と通信する。ユーザ102は、ワークロードの実行に必要となる処理ノード106の数と種類を含む、ワークロードに関する情報を提供する。
【0019】
マネージャシステム104に提供される情報には、例えば、処理ノード106の数、プロセッサタイプ、オペレーティングシステム、実行環境、ストレージ容量、ランダムアクセスメモリ容量、ネットワーク帯域幅、およびワークロードに必要となり得るその他の点が含まれる。ユーザ102はさらに、レジストリに保存するために、マネージャシステム104に画像またはコンテナを提供することができる。
【0020】
分散演算システム100は、何千もの処理ノード106を含むことができ、各ノード106は、任意の所与の時間に分散演算システム100によって実行されているワークロードに従って、アイドルまたはビジーであることができる。単一のマネージャシステム104が示されているが、分散演算システム100に分散された複数のレジストリを持つ、そのようなマネージャシステム104が複数存在しても良い。
【0021】
ワークロードの実行前および実行中に、マネージャシステム104は、対応するアプリケーションを構成するマイクロサービスを実装する処理ノード106を決定する。マネージャシステム104は、例えば、プロビジョニング時のノードおよびリソースの利用可能性に基づいて、処理ノード106を構成することができる。マイクロサービスは、完全に別々の処理ノード106上でホストされてもよいし、任意の数のマイクロサービスが同じ処理ノード106に併設されてもよい。マネージャシステム104および分散演算システム100は、複数の異なるユーザ102からの複数の異なるワークロードを処理することができ、特定のリソースの可用性は、分散演算システム100で一般的に何が起こっているかに依存する。
【0022】
本明細書で使用する「プロビジョニング」とは、分散演算システム100内のリソースがユーザ102に割り当てられ、実行の準備が整うプロセスを指す。このように、プロビジョニングには、どの処理要素106をワークロードに使用するかというマネージャシステム104による決定、ならびに画像の送信、およびワークロードの実行のために処理ノード106を準備するために必要なあらゆる構成ステップが含まれる。構成は、例えば、マイクロサービスによって使用される通信方法を特定することを含むことができる。
【0023】
次に図2を参照すると、処理ノード108の詳細が示されている。処理ノード106は、ハードウェアプロセッサ202、メモリ204、およびネットワークインタフェース206を含む。ネットワークインタフェース206は、必要に応じて、任意の適切な通信媒体およびプロトコルを使用して、マネージャシステム104と、ユーザ102と、および他の処理ノード106と通信するように構成することができる。処理ノード106はまた、いくつかの実施形態では、メモリ204に記憶され、ハードウェアプロセッサ202によって実行され得るソフトウェアとして実装され得る1つ以上の機能モジュールを含む。他の実施形態では、1つ以上の機能モジュールは、例えば、特定用途向け集積チップまたはフィールドプログラマブルゲートアレイの形態の1つ以上の離散ハードウェア構成要素として実装され得る。
【0024】
処理ノード106は、1つ以上のコンテナ208を含むことができる。各コンテナ208は、それぞれ異なる動作環境を表すことが特に意図されている。コンテナ208はそれぞれ、ソフトウェアアプリケーション、構成ファイル、ワークロードデータセット、および特定のワークロードを実行するために必要なその他の情報またはソフトウェアのセットを含む。これらのコンテナ208は、分散アプリケーションのための1つ以上のマイクロサービスを実装することができる。
【0025】
コンテナ208はメモリ204に格納され、必要に応じてコンテナオーケストレーションエンジン210によってインスタンス化およびデコミッショニングされる。一般論として、処理ノード106のオペレーティングシステムは、コンテナ208の外部に存在することを理解されたい。このように、各コンテナ208は同じオペレーティングシステムカーネルとインタフェースを取り、複数のコンテナを同時に実行するのに必要なオーバーヘッドを削減する。一方、コンテナ208は、決められた通信方法以外では互いに通信を行わないことができ、セキュリティ上の懸念を軽減することができる。
【0026】
次に図3を参照すると、相互接続されたマイクロサービスのセットを含む、例示的なアプリケーションが示されている。この例では、ビデオ解析アプリケーションは、ビデオストリームのリアルタイム監視を実行することができ、これには、特定の個人がそのエリアに入ったかどうかを判断するために、所定のエリアを監視することが含まれる。ビデオ解析アプリケーションは、このような人物の検出に対して、警告または自動応答を生成することができる。
【0027】
アプリケーションは、ビデオ取込み304、顔検出306、顔照合308、警告マネージャ310、および生体認証マネージャ312などの例示的なマイクロサービスを含むことができる。カメラ302は、ビデオストリームを構成する画像ストリームなどの視覚データを生成する。ビデオ取込み304は、この視覚データを処理し、適切なフィルタリングまたはフォーマットを実行して、下流のマイクロサービスによって考慮され得るフレームを生成する。
【0028】
顔検出306は、ビデオストリームのフレーム内の顔を識別する。この識別は、画像内の顔の存在を示すためにフレームにラベル付けすることを含み、画像内の顔のバウンディングボックスの座標をさらに含むことができる。その後、顔照合308は、顔画像と画像に写っている人物の情報を結びつけることができる。この照合は、生体認証マネージャ312からの情報を利用する場合があり、生体認証マネージャ312は、関心のある人々のプロファイルを保存していても良い。プロファイルには、顔画像との照合に使用される顔の特徴などの生体認証情報や、その人の名前や役割などの識別情報が含まれても良い。
【0029】
セキュリティシステムの場合、人の役割にはアクセス許可に関する情報が含まれても良い。例えば、人は制限区域に入ることを許可されている場合もあれば、制限区域に入ることを特別に禁止されている場合もある。警告マネージャ310は、顔照合308による人物の検出に応じて警告を生成することができる。例えば、警告は、許可された人物がその区域にいること、禁止された人物がその区域にいること、または未知の人物がその区域にいることを示しても良い。
【0030】
セキュリティシステム312は、警告に自動的に応答しても良い。この応答には、ドアやその他のアクセスポイントを自動的に施錠または解錠する、視覚的および/または可聴アラームを鳴らす、セキュリティ要員を呼び出す、検出された人物にさらなる認証を要求するなどのセキュリティ応答が含まれても良い。
【0031】
分散演算システムでは、複数のビデオストリームを一度に処理することができる。例えば、複数のカメラ302がそれぞれのビデオストリームを生成し、ビデオ取込み304、顔検出306、および顔照合308のそれぞれのマイクロサービスインスタンスが存在しても良い。マイクロサービス間の検出された顔の通信は、m個サーバ対n個クライアント処理、ブローカベースのプロセス、または共有メモリなど、さまざまな異なる通信方法のいずれかを使用して処理しても良い。例えば、ポイントツーポイント通信方式は、すべてのカメラ302にわたる顔の数が同程度でバランスが取れている場合に最適であるが、ブローカベースの通信方式は、特定のカメラアングル(例えば、スタジアムの入口)で観察される顔が多い場合に最適である。
【0032】
様々なマイクロサービスは、処理ノード206内のコンテナ208として実装することができる。場合によっては、複数のマイクロサービスは、例えば、異なるそれぞれのコンテナ208を使用して、または単一のコンテナ208内に複数のマイクロサービスを実装することによって、単一の処理ノード206上に実装され得る。場合によっては、マイクロサービスは、複数の異なる処理ノード106を使用して実装することができ、異なる処理ノード106のコンテナ208間の通信は、適切なネットワークを介して処理される。
【0033】
様々なマイクロサービスから性能や通信関連の統計を収集する通信コントローラ。この通信コントローラは、別のソフトウェアモジュールまたはマイクロサービスとして実装されても良いし、マネージャシステム102で実装されても良い。収集した統計を用いて、通信コントローラは、SARSA強化学習を使用して、マイクロサービス間の通信の特性と、異なる条件に対する最適な通信方法を学習することができる。通信コントローラは、2つのマイクロサービス間で使用される通信方法を動的に変更することができる。
【0034】
次に図4を参照すると、ワークロードの実行中にマイクロサービス通信を動的に適合させる方法が示されている。ブロック402は、分散演算システムにマイクロサービスをデプロイし、構成する。この構成は、マイクロサービス間のそれぞれの接続のための通信方法の初期選択を含んでも良い。
【0035】
ブロック404は、分散演算システムを使用してワークロードを実行する。ワークロードの実行中、ブロック406は、通信統計と、マイクロサービスのその他の性能および運用パラメータを監視する。ブロック408は、収集した統計を用いて、現在の運用状況に最適な通信方法を決定する。その後、ブロック410は、例えば、現在の通信方法がまだ最適であればそれを維持し、新たな通信方法が最適であると決定された場合には、新たな通信方法を使用するようにマイクロサービスを再構成することによって、最適な通信方法を実施する。その後、処理はブロック406に戻り、そこで新たな統計が収集される。この更新プロセスには、設定可能なパラメータに従って遅延を導入することができる。例えば、5分遅らせることで、新たな通信方法がより最適かどうかの判断を改善するために、十分な新たな統計を収集することができる。
【0036】
通信統計の種類には、スライディングウィンドウ内のマイクロサービスのペア間のメッセージの最小サイズ、最大サイズ、平均サイズ、標準偏差、頻度/レートなどのデータパケット関連の統計が含まれる。通信統計はさらに、マイクロサービスの通信ペアのリスト(時間とともに変化する可能性がある)、およびマイクロサービスが実行されているゾーンとマシンとに関する情報を含んでも良い。これらの通信統計は、強化学習モデルの状態を決定する可能性がある。また、強化学習モデルの報酬を決定するために、処理率などの性能統計を収集しても良い。
【0037】
ブロック408の判定では、強化学習を利用する。SARSA強化学習では、エージェントは現在の状況を観察する(例えば、収集した統計を考慮する)。次に、エージェントはポリシーを使ってアクションを選択する。ポリシーは現在の状況を入力とし、ある報酬を最大化するように計算されたアクションを生成する。アクションが実行され、結果が観察される。例えば、報酬やペナルティーが与えられる。このフィードバックに基づいて、エージェントはより良い結果を提供するためにポリシーを更新する。このプロセスを繰り返すうちに、エージェントは環境を学習し、どのようなアクションが最大の報酬をもたらすかを学ぶ。エージェントは、システムの動作を導くために、新たな入力で学習されたポリシーを使用することができる。
【0038】
マイクロサービス間の通信を最適化するという文脈では、環境は以下の量を含むベクトルとして定義されても良い。
【0039】
スライディングウィンドウ内でマイクロサービスのペア間で交換されるデータパケットの最小サイズ。
【0040】
スライディングウィンドウ内でマイクロサービスのペア間で交換されるデータパケットの最大サイズ。
【0041】
スライディングウィンドウ内でマイクロサービスのペア間で交換されるデータパケットのサイズの標準偏差。
【0042】
スライディングウィンドウ内のマイクロサービス間のデータパケットの頻度。
【0043】
マイクロサービスが実行されているゾーンと処理ノード。
【0044】
エージェントが取ることのできるアクションには、利用可能な通信方法のいずれかが含まれる。例えば、エージェントがとるアクションには次のようなものが含まれる。
【0045】
ポインツーポイント通信を使用する。
【0046】
m個サーバ対n個クライアント通信を使用する。
【0047】
ユーザーブローカーベースの通信を使用する。
【0048】
共有メモリベースの通信を使用する。
【0049】
何もしない(現在の連絡方法を維持する)。
【0050】
報酬は、マイクロサービスの処理速度の変化として決定されても良い。これは、以前の処理速度と、新たな処理速度と以前の処理速度との差の比率として計算することができる。
【数1】
【0051】
エージェントは、アクションに対してすぐに得られる報酬に加えて、現在のアクションによって将来得られるかもしれない報酬も考慮する。したがって、Q値は状態とアクションとのペアごとに定義することができる。例えば、Q(s,a)は、状態sのときにアクションaをとることの利益の推定値である。Q(s,a)の見積もりは、aというアクションをとることによって発生する可能性のある将来の報酬を考慮に入れている。
Q(s,a)←Q(s,a)+α[r+γ・Q(s’,a’)-Q(s,a)]
ここで、αは、以前に学習したQ値と比較して、新たな情報にどれだけの重みを与えるかを制御する学習率であり、γは、将来の報酬の重要性を決定する割引係数である。α=0は学習を停止し、α=1は最新の情報のみを使用する。この値は、初期導入時や異なるハードウェアプラットフォームに移行する際に、モデルが新たな環境で行われたアクションの結果を迅速に同化できるように、高い値(例えばα=0.9)のパラメータとして設定することができる。初期学習フェーズの後、Q行列が実質的に探索されたとき、新たに同化された情報の利用を促進するために、値を下げることができる(例えば、α=0.1)。
【0052】
γがゼロの場合、エージェントは将来の報酬を無視し、目先の報酬を最適化しようとする。γを1に設定すると、エージェントは長期的な報酬を高く評価する。オペレータが、入力コンテンツの後続フレームに高い変動性があると予想する場合、オペレータは、γに低い値(例えば、γ=0.1)を割り当てることによってこの情報を符号化しても良く、一方、変動性が低い状況には高い値を使用することができる。
【0053】
次に図5を参照すると、強化学習モデルを使用してアクションを決定する様子が示されている。ブロック501は、初期の状態sとアクションaとを設定する。アクションを選択するための例示的なプロセスについて、以下により詳細に説明する。ブロック502は、選択されたアクションaを実行し、状態をsから新たな状態s’に変更する。ブロック504は、新たな状態s’に基づいて報酬値rを決定する。
【0054】
ブロック506は、新たな状態s’を観察し、ブロック508は、新たなアクションa’を選択する。新たな状態s’において、エージェントはアクションa’がQ(s’,a’)のQ値をもたらすと仮定する。累積報酬Q(s,a)は、上述のように推定することができる。ブロック510は、前の状態およびアクション(s,a)と新たな状態およびアクション(s’,a’)とに従って累積報酬を更新する。
【0055】
学習プロセスは、システムの運用を通じて継続される。エージェントが状態を訪問し、再訪することで、Q行列の値を更新し、現在の性能測定を反映させることができる。操作の初期段階で、状態空間のランダムな探索を促すための学習パラメータが設定される。その後、Q行列がほぼ埋まった時点で、学習パラメータを最適な状態の選択を促すように設定しても良いが、その一方で、行列の値を更新するための学習はある程度可能にしておく。
【0056】
このプロセスは、アクションaを選択するための方針を定義するものではない。その代わりに、すべての状態とアクションとのペアがエージェントによって訪問されることを保証するポリシーが存在することが仮定される。これを満たす1つの方法は、学習パラメータεを定義することである。確率εで、ポリシーは状態に最適なアクションを提案し、確率1-εで、エージェントはランダムなアクションを選択する。学習中、状態空間を探索するために、値εに小さな値(例えばε=0.1)を割り当てることができる。Q値の大部分が正確に推定された場合、例えば所定の閾値よりも大きな値の割合が設定された場合、エージェントが学習したモデルを利用するように、より高いε値を使用することができる。学習中にアクションをランダムに選択することで、性能が悪いことが知られている状態でも、ときどき再訪問されることに注意する。これにより、性能が向上した場合、エージェントは報酬値を更新することができる。
【0057】
これらのQ値は、与えられた状態にあるときに特定のアクションをとった場合の報酬を決定する一環として、エージェントによって推定される。この決定は、エージェントが行列の各要素の報酬を更新している間に行われることがある。このように、システムがある状態を占めると、その状態に移行するための報酬を決定するために、処理速度などの性能統計を収集することができる。これらの値は、例えば、エージェントが以前に訪問した状態に戻り、性能統計が以前に収集されたものと著しく異なることを発見した場合など、状況の変化を反映するために更新されても良い。
【0058】
Qモデルは二次元の行列として実装することができ、1つの次元は離散化された状態を表し、もう1つの次元はアクションを表す。行列の各要素i.jには、システムが状態jにある間にアクションiを取った場合の期待報酬が格納される。
【0059】
ブロック501または508などでアクションを選択する際、0と1の間の乱数が生成され、εと比較されることがある。乱数がεより大きいか等しい場合、環境をさらに探索するためにランダムなアクションが選択されても良い。選択したアクションに対する期待報酬がマイナスの場合、エージェントは選択したアクションを元に戻すことができる。そうでなければ、エージェントは現在の状態で報酬を最大化するために次のアクションを選択する。しかし、選択されたアクションを実行することによって予測される報酬が、以前のアクションによって得られた報酬よりも小さい場合、ポリシーは以前のアクションを再度推奨する。
【0060】
通信方法の選択という文脈では、“アクション”はマイクロサービスのペア間でどの通信方法を使用するかを決定する。エージェントが、以前の通信方法が最良の結果をもたらすと判断した場合、エージェントはその通信方法を使い続ける。しかし、新たな通信方法がより良い期待報酬をもたらすように状態が変化した場合、エージェントは新たな通信方法を実行することができる。
【0061】
さまざまな条件によって、ある通信方法が他の通信方法よりも優先されることがある。マイクロサービスの出力が他の多くのマイクロサービスによって入力として使用される場合、各ソースマイクロサービスインスタンスと各デスティネーションマイクロサービスインスタンスとの間に個別の接続を形成するのを避けるために、メッセージバスが望まれるかもしれない。必要なメッセージング速度が均一でなくなり始めた場合、例えば、宛先Aが1秒間に5メッセージを処理し、宛先マイクロサービスBが1秒間に30メッセージを処理する場合、ポイントツーポイントのメッセージングを使用する方が効率的かもしれない。
【0062】
次に図6を参照すると、本発明の実施形態による、例示的な演算装置500が示されている。演算装置500は、分類器の強化を実行するように構成されている。
【0063】
演算装置500は、限定されないが、コンピュータ、サーバ、ラックベースのサーバ、ブレードサーバ、ワークステーション、デスクトップコンピュータ、ラップトップコンピュータ、ノートブックコンピュータ、タブレットコンピュータ、モバイル演算装置、ウェアラブル演算装置、ネットワーク機器、ウェブ機器、分散演算システム、プロセッサベースのシステム、および/または利用者電子装置など、本書に記載される機能を実行できる任意のタイプの計算またはコンピュータ装置として具現化することができる。さらにまたは代替的に、演算装置500は、1つまたは複数のコンピュートスレッド、メモリスレッド、または他のラック、スレッド、演算シャーシ、または物理的に分解された演算装置の他の構成要素として具現化されてもよい。
【0064】
図6に示すように、演算装置600は、例示的に、プロセッサ610、入力/出力サブシステム620、メモリ630、データ記憶装置640、および通信サブシステム650、および/またはサーバまたは同様の演算装置に一般的に見られる他の構成要素およびデバイスを含んでいる。もちろん、演算装置600は、他の実施形態において、サーバコンピュータに一般的に見られるような他のまたは追加の構成要素(例えば、様々な入力/出力デバイス)を含んでもよい。さらに、いくつかの実施形態では、例示的な構成要素の1つ以上が、別の構成要素に組み込まれるか、さもなければ、別の構成要素の一部を形成することができる。例えば、メモリ630、またはその一部は、いくつかの実施形態において、プロセッサ610に組み込まれてもよい。
【0065】
プロセッサ610は、本明細書に記載された機能を実行することができる任意のタイプのプロセッサとして具現化することができる。プロセッサ610は、シングルプロセッサ、マルチプロセッサ、中央処理ユニット(CPU)、グラフィック処理ユニット(GPU)、シングルまたはマルチコアプロセッサ、デジタル信号プロセッサ、マイクロコントローラ、またはその他のプロセッサやプロセスシング/制御回路として具現化されてもよい。
【0066】
メモリ630は、本明細書に記載された機能を実行することができる任意のタイプの揮発性または不揮発性メモリまたははデータストレージとして具現化され得る。動作中、メモリ630は、オペレーティングシステム、アプリケーション、プログラム、ライブラリ、およびドライバなど、演算装置600の動作中に使用される様々なデータおよびソフトウェアを格納することができる。メモリ630は、I/Oサブシステム620を介してプロセッサ610と通信可能に結合され、プロセッサ610、メモリ630、および演算装置600の他の構成要素との入出力動作を容易にするための回路および/または構成要素として具現化され得る。例えば、I/Oサブシステム620は、メモリコントローラハブ、入力/出力制御ハブ、プラットフォームコントローラハブ、集積制御回路、ファームウェアデバイス、通信リンク(例えば、ポイントツーポイントリンク、バスリンク、ワイヤ、ケーブル、ライトガイド、プリント回路基板トレースなど)および/または、入力/出力操作を容易にするための他の構成要素およびサブシステムとして具現化されてもよく、さもなければ、これらを含んでいても良い。いくつかの実施形態では、I/Oサブシステム620は、システムオンチップ(SOC)の一部を形成し、プロセッサ610、メモリ630、および演算装置600の他の構成要素と共に、単一の集積回路チップに組み込まれてもよい。
【0067】
データ記憶装置640は、例えば、メモリ装置および回路、メモリカード、ハードディスクドライブ、ソリッドステートドライブ、または他のデータ記憶装置など、データの短期または長期記憶用に構成された任意のタイプの装置またはデバイスとして具現化することができる。データ記憶装置640は、コンテナオーケストレーションのためのプログラムコード640Aと分散型演算システム内の通信方法を管理するためのプログラムコード640Bとを格納することができる。演算装置600の通信サブシステム650は、ネットワークを介して演算装置600と他のリモート装置との間の通信を可能にすることができる、任意のネットワークインタフェースコントローラまたは他の通信回路、装置、またはその集合体として具現されることができる。通信サブシステム650は、任意の1つ以上の通信技術(例えば、有線または無線通信)および関連するプロトコル(例えば、イーサネット、InfiniBand(登録商標)、Bluetooth(登録商標)、Wi-Fi(登録商標)、WiMAX(登録商標)など)を使用してそのような通信を実現するように構成され得る。
【0068】
図示のように、演算装置600は、1つ以上の周辺装置660も含むことができる。周辺装置660は、任意の数の追加の入出力装置、インタフェース装置、および/または他の周辺装置を含んでもよい。例えば、いくつかの実施形態では、周辺装置660は、ディスプレイ、タッチスクリーン、グラフィック回路、キーボード、マウス、スピーカシステム、マイク、ネットワークインタフェース、および/または他の入力/出力装置、インタフェース装置、および/または周辺装置を含むことができる。
【0069】
もちろん、演算装置600は、当業者が容易に思いつくように、他の要素(図示せず)を含むこともでき、また、特定の要素を省略することもできる。例えば、様々な他のセンサ、入力装置および/または出力装置は、当業者によって容易に理解されるように、同じものの特定の実装に依存して、演算装置600に含まれることが可能である。例えば、様々なタイプの無線および/または有線の入力および/または出力装置を使用することができる。さらに、プロセッサ、コントローラ、メモリなどを追加して、様々な構成で利用することも可能である。処理システム600のこれらおよび他の変形例は、本明細書に提供される本発明の教示を考慮すれば、当業者によって容易に企図されるものである。
【0070】
本明細書に記載する実施形態は、完全にハードウェアであってもよく、完全にソフトウェアであってもよく、または、ハードウェア要素とソフトウェア要素との両方を含むものであってもよい。好ましい実施形態では、本発明は、ファームウェア、常駐ソフトウェア、マイクロコードなどを含むがこれらに限定されないソフトウェアで実施される。
【0071】
実施形態は、コンピュータまたは任意の命令実行システムによって、またはそれに関連して使用するためのプログラムコードを提供する、コンピュータ使用可能またはコンピュータ可読媒体からアクセス可能なコンピュータプログラム製品を含むことができる。コンピュータ使用可能媒体またはコンピュータ可読媒体は、命令実行システム、装置、またはデバイスによって、またはそれに関連して使用するためのプログラムを格納、通信、伝搬、またはトランスポートする任意の装置を含むことができる。媒体は、磁気、光学、電子、電磁気、赤外線、または半導体システム(または装置またはデバイス)、または伝搬媒体とすることができる。媒体は、半導体または固体ステートメモリ、磁気テープ、リムーバブルコンピュータディスケット、ランダムアクセスメモリ(RAM)、リードオンリーメモリ(ROM)、リジッド磁気ディスクおよび光ディスクなどのコンピュータ読み取り可能な記憶媒体を含むことができる。
【0072】
各コンピュータプログラムは、本明細書に記載する手順を実行するために、記憶媒体または装置がコンピュータによって読み取られるときに、コンピュータの操作を構成し制御するために、汎用または特殊目的のプログラム可能コンピュータによって読み取り可能な、機械読み取り可能な記憶媒体または装置(例えば、プログラムメモリまたは磁気ディスク)に実体的に記憶することができる。本発明のシステムはまた、コンピュータプログラムで構成された、コンピュータ読み取り可能な記憶媒体で実施されるものと考えることができ、その場合、構成された記憶媒体は、コンピュータを特定の所定の方法で動作させて、本明細書に記載する機能を実行させる。
【0073】
プログラムコードを記憶および/または実行するのに適したデータ処理システムは、システムバスを介してメモリ要素に直接的または間接的に結合された少なくとも1つのプロセッサを含んでもよい。メモリ要素は、プログラムコードの実際の実行中に採用されるローカルメモリ、バルクストレージ、および実行中にバルクストレージからコードが検索される回数を減らすために少なくとも何らかのプログラムコードの一時記憶を提供するキャッシュメモリを含むことができる。入力/出力またはI/O装置(キーボード、ディスプレイ、ポインティング装置などを含むが、これらに限定されない)は、直接または介在するI/Oコントローラを介してシステムに結合され得る。
【0074】
ネットワークアダプタは、データ処理システムが、介在するプライベートまたはパブリックネットワークを介して他のデータ処理システムまたはリモートプリンタまたはストレージデバイスに結合されるようになることを可能にするために、システムに結合されることもできる。モデム、ケーブルモデム、イーサネットカードは、現在利用可能なネットワークアダプタの種類のほんの一部に過ぎない。
【0075】
本明細書で採用されるように、「ハードウェアプロセッササブシステム」または「ハードウェアプロセッサ」という用語は、1つ以上の特定のタスクを実行するために協働するプロセッサ、メモリ、ソフトウェアまたはそれらの組み合わせを指すことができる。有用な実施形態では、ハードウェアプロセッササブシステムは、1つまたは複数のデータ処理要素(例えば、論理回路、処理回路、命令実行デバイスなど)を含むことができる。1つまたは複数のデータ処理要素は、中央処理ユニット、画像処理ユニットおよび/または別個のプロセッサまたはコンピューティング要素ベースのコントローラ(たとえば、論理ゲートなど)に含めることができる。ハードウェアプロセッササブシステムは、1つ以上のオンボードメモリ(例えば、キャッシュ、専用メモリアレイ、読み出し専用メモリなど)を含むことができる。いくつかの実施形態では、ハードウェアプロセッササブシステムは、オンボードまたはオフボードにすることができるか、またはハードウェアプロセッササブシステム(例えば、ROM、RAM、基本入出力システム(BIOS)など)によって使用するために専用にすることができる1つ以上のメモリを含むことができる。
【0076】
ある実施形態では、ハードウェアプロセッササブシステムは、1つ以上のソフトウェア要素を含むことができ、実行することができる。1つ以上のソフトウェア要素は、特定の結果を達成するために、オペレーティングシステムおよび/または1つ以上のアプリケーションおよび/または特定のコードを含むことができる。
【0077】
他の実施形態では、ハードウェアプロセッササブシステムは、指定された結果を達成するために1つまたは複数の電子処理機能を実行する専用の専用回路を含むことができる。そのような回路は、1つまたは複数のアプリケーション専用集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、および/またはプログラマブルロジックアレイ(PLA)を含むことができる。
【0078】
ハードウェアプロセッササブシステムのこれらおよび他の変形もまた、本発明の実施形態に従って企図される。
【0079】
明細書において、本発明の「一実施形態」または「一実施形態」、およびその他の変形例への言及は、実施形態に関連して説明した特定の特徴、構造、特性などが、本発明の少なくとも一実施形態に含まれることを意味する。したがって、本明細書中の各所に現れる「一実施形態において」または「一実施形態において」という表現、および他の任意の変形は、必ずしもすべてが同じ実施形態を指すとは限らない。しかしながら、本明細書で提供される本発明の教示を考慮して、1つ以上の実施形態の特徴を組み合わせることができることは理解されるであろう。
【0080】
例えば「A/B」の場合、「Aおよび/またはB」、「AとBとの少なくとも1つ」のような、以下の「/」、「および/または」、「少なくとも1つ」のいずれかの使用は、第1のリストされた選択肢(A)のみの選択、または第2のリストされた選択肢(B)のみの選択、または両方の選択肢(AおよびB)の選択を包含すると意図していると理解されよう。さらなる例として、「A、B、および/またはC」および「A、B、およびCの少なくとも1つ」の場合、かかる表現は、第1のリストされた選択肢(A)のみの選択、または第2のリストされた選択肢(B)のみの選択、または第3のリストされた選択肢(C)のみの選択、または第1および第2のリストされた選択肢(AおよびB)のみの選択、第1および第3のリストされた選択肢(AおよびC)のみの選択、第2および第3のリストされた選択肢(BおよびC)のみの選択、または3つすべての選択肢(AおよびBおよびC)の選択を包含すると意図されている。このことは、記載された項目の数だけ拡張することができる。
【0081】
上記は、あらゆる点で例示的かつ例示的であるが、制限的なものではないと理解され、ここに開示された発明の範囲は、詳細な説明からではなく、特許法によって許される全幅に従って解釈された請求項から決定されるものである。本明細書に示され説明された実施形態は、本発明の例示に過ぎず、当業者は、本発明の範囲及び精神から逸脱することなく、様々な修正を実施することができることを理解されたい。当業者であれば、本発明の範囲と精神から逸脱することなく、様々な他の特徴の組み合わせを実施することができる。このように、特許法が要求する詳細さと特殊性をもって本発明の側面を説明したが、特許状によって請求され、保護されることを望むものは、添付の特許請求の範囲に記載されているとおりである。
図1
図2
図3
図4
図5
図6
【国際調査報告】