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

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

▶ キューピーアイクラウド テクノロジーズ プライベート リミテッドの特許一覧

特許7168753ヘッドルームに基づくエッジデバイスのためのプロファイリングおよびアプリケーション監視
<>
  • 特許-ヘッドルームに基づくエッジデバイスのためのプロファイリングおよびアプリケーション監視 図1
  • 特許-ヘッドルームに基づくエッジデバイスのためのプロファイリングおよびアプリケーション監視 図2
  • 特許-ヘッドルームに基づくエッジデバイスのためのプロファイリングおよびアプリケーション監視 図3
  • 特許-ヘッドルームに基づくエッジデバイスのためのプロファイリングおよびアプリケーション監視 図4
  • 特許-ヘッドルームに基づくエッジデバイスのためのプロファイリングおよびアプリケーション監視 図5
  • 特許-ヘッドルームに基づくエッジデバイスのためのプロファイリングおよびアプリケーション監視 図6A
  • 特許-ヘッドルームに基づくエッジデバイスのためのプロファイリングおよびアプリケーション監視 図6B
  • 特許-ヘッドルームに基づくエッジデバイスのためのプロファイリングおよびアプリケーション監視 図7
  • 特許-ヘッドルームに基づくエッジデバイスのためのプロファイリングおよびアプリケーション監視 図8
  • 特許-ヘッドルームに基づくエッジデバイスのためのプロファイリングおよびアプリケーション監視 図9
  • 特許-ヘッドルームに基づくエッジデバイスのためのプロファイリングおよびアプリケーション監視 図10
  • 特許-ヘッドルームに基づくエッジデバイスのためのプロファイリングおよびアプリケーション監視 図11
  • 特許-ヘッドルームに基づくエッジデバイスのためのプロファイリングおよびアプリケーション監視 図12
  • 特許-ヘッドルームに基づくエッジデバイスのためのプロファイリングおよびアプリケーション監視 図13
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-10-31
(45)【発行日】2022-11-09
(54)【発明の名称】ヘッドルームに基づくエッジデバイスのためのプロファイリングおよびアプリケーション監視
(51)【国際特許分類】
   G06N 3/08 20060101AFI20221101BHJP
   G06N 20/00 20190101ALI20221101BHJP
   G06F 9/50 20060101ALI20221101BHJP
【FI】
G06N3/08
G06N20/00 130
G06F9/50 150C
G06F9/50 150D
【請求項の数】 20
【外国語出願】
(21)【出願番号】P 2021199027
(22)【出願日】2021-12-08
(65)【公開番号】P2022091727
(43)【公開日】2022-06-21
【審査請求日】2022-02-16
(31)【優先権主張番号】17/116,384
(32)【優先日】2020-12-09
(33)【優先権主張国・地域又は機関】US
【早期審査対象出願】
(73)【特許権者】
【識別番号】521537357
【氏名又は名称】キューピーアイクラウド テクノロジーズ プライベート リミテッド
(74)【代理人】
【識別番号】100094569
【弁理士】
【氏名又は名称】田中 伸一郎
(74)【代理人】
【識別番号】100103610
【弁理士】
【氏名又は名称】▲吉▼田 和彦
(74)【代理人】
【識別番号】100109070
【弁理士】
【氏名又は名称】須田 洋之
(74)【代理人】
【識別番号】100067013
【弁理士】
【氏名又は名称】大塚 文昭
(74)【代理人】
【識別番号】100086771
【弁理士】
【氏名又は名称】西島 孝喜
(74)【代理人】
【識別番号】100109335
【弁理士】
【氏名又は名称】上杉 浩
(74)【代理人】
【識別番号】100120525
【弁理士】
【氏名又は名称】近藤 直樹
(74)【代理人】
【識別番号】100139712
【弁理士】
【氏名又は名称】那須 威夫
(74)【代理人】
【識別番号】100176418
【弁理士】
【氏名又は名称】工藤 嘉晃
(72)【発明者】
【氏名】ナゲンドラ ナーガラージャ
(72)【発明者】
【氏名】アビナンド バラチャンドラン
【審査官】杉浦 孝光
(56)【参考文献】
【文献】米国特許出願公開第2015/0058265(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/00-99/00
G06F 8/60- 8/658
G06F 9/50
(57)【特許請求の範囲】
【請求項1】
メモリに格納されたコンピュータ可読命令を実行するプロセッサによって、エッジデバイスのリソースヘッドルームデータを受信するステップと、
前記プロセッサによって複数のアプリケーションのリソース利用状況データを受信するステップと、
前記プロセッサによって、前記エッジデバイスの前記リソースヘッドルームに基づいて、前記エッジデバイスへのインストールのための前記複数のアプリケーションからアプリケーションのグループを選択するステップと、
前記プロセッサによって、前記エッジデバイスのためのアプリケーションの前記選択されたグループの適性に基づいて適合性スコアを計算するステップと、
前記プロセッサによって、前記適合性スコアに基づいて報酬を生成するステップと、
前記プロセッサによって、記グループの前記選択を洗練するために前記報酬を使用するステップと
を含む、方法。
【請求項2】
前記プロセッサが、深層強化学習アルゴリズムに基づいてアプリケーションの前記グループを選択するための前記コンピュータ可読命令を実行する、請求項1に記載の方法。
【請求項3】
前記深層強化学習アルゴリズムが、決定論的深層ポリシ勾配アルゴリズムを備える、請求項2に記載の方法。
【請求項4】
前記深層強化学習アルゴリズムが、前記報酬に基づいてアプリケーションの前記グループの前記選択を調節するエージェントを備える、請求項2に記載の方法。
【請求項5】
前記プロセッサが、深層学習アルゴリズムに基づいて前記適合性スコアを決定するための前記コンピュータ可読命令を実行する、請求項1に記載の方法。
【請求項6】
前記深層学習アルゴリズムが、畳み込みニューラルネットワークを備える、請求項5に記載の方法。
【請求項7】
前記プロセッサによって、前記エッジデバイスにインストールするためのアプリケーションの前記グループの少なくとも1つを選択するステップをさらに含む、請求項1に記載の方法。
【請求項8】
前記適合性スコアが、アプリケーションの前記グループが前記エッジデバイスの前記リソースヘッドルームに適合する場合、第1の確率スコアを、また、アプリケーションの前記グループが前記エッジデバイスの前記リソースヘッドルームに適合しない場合、前記第1の確率スコアとは異なる第2の確率スコアを備える、請求項1に記載の方法。
【請求項9】
前記報酬が、前記エッジデバイスのためのアプリケーションの前記選択されたグループの高い適性を前記適合性スコアが示すと正の値を、また、前記エッジデバイスのためのアプリケーションの前記選択されたグループの低い適性を前記適合性スコアが示すとゼロまたは負の値を備える、請求項1に記載の方法。
【請求項10】
前記リソースヘッドルームデータが、多変量時系列データとして表される、請求項1に記載の方法。
【請求項11】
前記リソースヘッドルームが、中央処理装置利用状況、メモリ容量、ネットワーク帯域幅、メモリ帯域幅、新しいロジックをプログラムするためのフィールドプログラマブルゲートアレイ(FPGA)データ、または温度の少なくとも1つのリソース利用情報を含む、請求項1に記載の方法。
【請求項12】
前記エッジデバイスが、前記エッジデバイスの前記リソース利用状況データに基づいて前記リソースヘッドルームデータを計算するためのエージェントを備える、請求項1に記載の方法。
【請求項13】
前記プロセッサによって、前記エッジデバイスへのインストールのために、ユーザによる選択のためのダッシュボード上にアプリケーションの前記グループを提示するステップをさらに含む、請求項1に記載の方法。
【請求項14】
システムであって、
コンピュータ可読命令を格納したメモリと、
プロセッサであって、
エッジデバイスのリソースヘッドルームデータを受信すること、
複数のアプリケーションのリソース利用状況データを受信すること、
前記エッジデバイスの前記リソースヘッドルームに基づいて、前記エッジデバイスへのインストールのための前記複数のアプリケーションからアプリケーションのグループを選択すること、
前記エッジデバイスのためのアプリケーションの前記選択されたグループの適性に基づいて適合性スコアを計算すること、
前記適合性スコアに基づいて報酬を生成すること、および
記グループの前記選択を洗練するために前記報酬を使用すること
を行うために前記コンピュータ可読命令を実行するプロセッサと
を備える、システム。
【請求項15】
前記プロセッサが、深層強化学習アルゴリズムに基づいてアプリケーションの前記グループを選択すること、および深層学習アルゴリズムに基づいて前記適合性スコアを決定することを行うために、前記コンピュータ可読命令を実行する、請求項14に記載のシステム。
【請求項16】
前記リソースヘッドルームが、中央処理装置利用状況、メモリ容量、ネットワーク帯域幅、メモリ帯域幅、新しいロジックをプログラムするためのフィールドプログラマブルゲートアレイ(FPGA)データ、または温度の少なくとも1つのリソース利用情報を含み、前記リソースヘッドルームデータが、多変量時系列データとして表される、請求項14に記載のシステム。
【請求項17】
前記報酬が、前記エッジデバイスのためのアプリケーションの前記選択されたグループの高い適性を前記適合性スコアが示すと正の値を、また、前記エッジデバイスのためのアプリケーションの前記選択されたグループの低い適性を前記適合性スコアが示すとゼロまたは負の値を備える、請求項14に記載のシステム。
【請求項18】
非一時的コンピュータ可読媒体であって、プロセッサによって実行されると、
エッジデバイスのリソースヘッドルームデータを受信することと、
複数のアプリケーションのリソース利用状況データを受信することと、
前記エッジデバイスの前記リソースヘッドルームに基づいて、前記エッジデバイスへのインストールのための前記複数のアプリケーションからアプリケーションのグループを選択することと、
前記エッジデバイスのためのアプリケーションの前記選択されたグループの適性に基づいて適合性スコアを計算することと、
前記適合性スコアに基づいて報酬を生成することと、
記グループの前記選択を洗練するために前記報酬を使用することと
を含む処理を前記プロセッサに実施させる、前記非一時的コンピュータ可読媒体に格納されたコンピュータ可読命令を含む、非一時的コンピュータ可読媒体。
【請求項19】
前記エッジデバイスが、前記エッジデバイスの前記リソース利用状況データに基づいて前記リソースヘッドルームデータを計算するためのエージェントを備える、請求項18に記載の非一時的コンピュータ可読媒体。
【請求項20】
前記報酬が、前記エッジデバイスのためのアプリケーションの前記選択されたグループの高い適性を前記適合性スコアが示すと正の値を、また、前記エッジデバイスのためのアプリケーションの前記選択されたグループの低い適性を前記適合性スコアが示すとゼロまたは負の値を備える、請求項18に記載の非一時的コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【0001】
以下の説明は、読者の理解を助けるために提供される。提供される情報または引用される参照はどれも、従来技術と認められていない。
【発明の概要】
【発明が解決しようとする課題】
【0002】
多くのアプリケーションは、1つまたは複数のコンピューティングデバイスを使用して様々な動作を実施する。これらのコンピューティングデバイスは、コンピューティングデバイスにインストールされた1つまたは複数のアプリケーションを有し得る。1つまたは複数のアプリケーションは、様々な動作を実施するために、計算能力、メモリ、ネットワーク帯域幅等のリソースを配分され得る。いくつかの事例では、新しいアプリケーションは、コンピューティングデバイスの1つまたは複数にインストールされる必要があり得る。それでも、コンピューティングデバイスのどれに新しいアプリケーションをインストールするべきかを決める現在のメカニズムは、コンピューティングデバイスが構成される方式、およびコンピューティングデバイスが動作する方法に制限される。
【課題を解決するための手段】
【0003】
本開示のいくつかの態様によれば、方法が開示される。方法は、メモリに格納されたコンピュータ可読命令を実行するプロセッサによって、エッジデバイスのリソースヘッドルームデータを受信することと、プロセッサによって複数のアプリケーションのリソース利用状況データを受信することと、プロセッサによって、エッジデバイスのリソースヘッドルームに基づいて、エッジデバイスへのインストールのための複数のアプリケーションからアプリケーションのグループを選択することとを含む。また、方法は、プロセッサによって、エッジデバイスのためのアプリケーションの選択されたグループの適性に基づいて適合性スコアを計算することと、プロセッサによって、適合性スコアに基づいて報酬を生成することと、プロセッサによって、その後の繰返しにおける選択のグループの選択を洗練するために報酬を使用することとを含む。
【0004】
本開示の他のいくつかの態様によれば、システムが開示される。システムは、コンピュータ可読命令を格納したメモリと、プロセッサであって、エッジデバイスのリソースヘッドルームデータを受信すること、複数のアプリケーションのリソース利用状況データを受信すること、およびエッジデバイスのリソースヘッドルームに基づいて、エッジデバイスへのインストールのための複数のアプリケーションからアプリケーションのグループを選択することを行うためにコンピュータ可読命令を実行するプロセッサとを含む。また、プロセッサは、エッジデバイスのためのアプリケーションの選択されたグループの適性に基づいて適合性スコアを計算すること、適合性スコアに基づいて報酬を生成すること、およびその後の繰返しにおける選択のグループの選択を洗練するために報酬を使用することを行うためにコンピュータ可読命令を実行する。
【0005】
本開示の他のいくつかの態様によれば、コンピュータ可読命令を格納した非一時的コンピュータ可読媒体が開示される。コンピュータ可読命令は、プロセッサによって実行されると、エッジデバイスのリソースヘッドルームデータを受信することと、複数のアプリケーションのリソース利用状況データを受信することと、エッジデバイスのリソースヘッドルームに基づいて、エッジデバイスへのインストールのための複数のアプリケーションからアプリケーションのグループを選択することとを含む処理をプロセッサに実施させる。また、コンピュータ可読命令は、プロセッサによって実行されると、エッジデバイスのためのアプリケーションの選択されたグループの適性に基づいて適合性スコアを計算すること、適合性スコアに基づいて報酬を生成すること、およびその後の繰返しにおける選択のグループの選択を洗練するために報酬を使用することを含む処理をプロセッサに実施させる。
【0006】
前述の概要は例証に過ぎず、何らかの方式で限定することを意図するものではない。上記で説明された例証的態様、実施形態、および特徴の他に、さらなる態様、実施形態、および特徴が、以下の図面および詳細な説明を参照することによって明らかになるであろう。
【図面の簡単な説明】
【0007】
図1】本開示のいくつかの実施形態による、アプリケーションプロファイリングシステムの実例のブロック図である。
図2】本開示のいくつかの実施形態による、エッジデバイスのリソースヘッドルームの実例の時系列の図である。
図3】本開示のいくつかの実施形態による、図1のアプリケーションプロファイリングシステムのバックエンドサーバの実例のブロック図である。
図4】本開示のいくつかの実施形態による、図3のバックエンドサーバによって実施されるディープリソースラーニング(DRL:Deep Resource Learning)アルゴリズムの実例の状態図である。
図5】本開示のいくつかの実施形態による、図4のさらなる詳細を示す図である。
図6A】本開示のいくつかの実施形態による、DRLアルゴリズムの1つのタイプの実例のブロック図である。
図6B】本開示のいくつかの実施形態による、DRLアルゴリズムの1つのタイプの実例のブロック図である。
図7】本開示のいくつかの実施形態による、図3のバックエンドサーバによって実施される畳み込みニューラルネットワーク(CNN:Convolutional Neural Network)実例のブロック図である。
図8】本開示のいくつかの実施形態による、図3のバックエンドサーバによって実施される深層学習アルゴリズムの実例のブロック図である。
図9】本開示のいくつかの実施形態による、エッジデバイスにインストールするために図3のバックエンドサーバによってアプリケーションのグループを選択するための処理の動作を概説する実例のフローチャートである。
図10】本開示のいくつかの実施形態による、図7および図8のDLアルゴリズムによる適合性スコアを生成するための処理の動作を概説する実例のフローチャートである。
図11】本開示のいくつかの実施形態による、図4図6のDRLアルゴリズムに対する報酬を決定するための処理の動作を概説する実例のフローチャートである。
図12】本開示のいくつかの実施形態による、ダッシュボードの実例のスクリーンショットである。
図13】本開示のいくつかの実施形態による、コンピューティングデバイスの実例のブロック図である。
【発明を実施するための形態】
【0008】
本開示の前述および他の特徴は、添付の図面と共に利用される以下の説明および添付の特許請求の範囲から明らかになるであろう。これらの図面が本開示によるいくつかの実施形態しか描写しないこと、およびしたがって、本開示の範囲を限定するものとみなされるべきではないことを理解しながら、本開示は、添付の図面を使用してさらに具体的かつ詳細に説明される。
【0009】
以下の詳細な説明では、本明細書の一部を形成する添付の図面を参照する。図面において、同様の記号は通常、別途文脈が指示しない限り同様の構成要素を識別する。詳細な説明、図面、および特許請求の範囲に記述される例証的実施形態は、限定することを意図するものではない。本明細書で提示される主題の精神または範囲から逸脱することなく、他の実施形態が利用され得、他の変更が行われ得る。本明細書で全体的に説明され、図に示されるような本開示の態様は、多種多様な種々の構成で配置、代用、結合、およびデザイン可能であり、これらの全てが明確に想定され、本開示の一部となることが容易に理解されよう。
【0010】
図1を参照すると、本開示のいくつかの実施形態による、実例のアプリケーションプロファイリングシステム100が示されている。アプリケーションプロファイリングシステム100は、複数のデバイスのリアルタイム監視のために使用され得る。したがって、アプリケーションプロファイリングシステム100は、例えば、監視されているエッジデバイス110A、110B、110C、および110Dを含む、複数のエッジデバイス105を含む。エッジデバイスは、本明細書では「エッジボックス」とも呼ばれる。本明細書には4つのエッジデバイス(例えばエッジデバイス110A~110D)が示されているが、他の実施形態では、4つより多くのまたは少ないエッジデバイスが、アプリケーションプロファイリングシステム100内に提供され得る。複数のエッジデバイス105のそれぞれは、コンピューティングデバイスと関連付けられたデバイス、装置、機械、またはシステムでよい。例えば、いくつかの実施形態では、複数のエッジデバイス105の少なくとも1つは、(処理ユニット、メモリ、およびオペレーティングシステムを有する)プリント回路基板ベースコントローラでよい。いくつかの実施形態では、複数のエッジデバイス105の少なくとも1つは、工場の生産現場の構成要素でよい。例えば、いくつかの実施形態では、複数のエッジデバイス105の少なくとも1つは、熱交換器、検知デバイス、機械設備、ロボット、または、コンピューティングデバイス(例えば、コントローラ、処理ユニット、メモリ、オペレーティングシステム)に関連付けられるか、別途接続された他の任意のデバイスまたは構成要素でよい。
【0011】
さらに、複数のエッジデバイス105のそれぞれは、エージェントと関連付けられ得る。例えば、エッジデバイス110Aは、エージェント115Aと関連付けられてもよく(例えば、エージェント115Aをインストールしていてもよく)、エッジデバイス110Bは、エージェント115Bと関連付けられてもよく(例えば、エージェント115Bをインストールしていてもよく)、エッジデバイス110Cは、エージェント115Cと関連付けられてもよく(例えば、エージェント115Cをインストールしていてもよく)、エッジデバイス110Dは、エージェント115Dと関連付けられてもよい(例えば、エージェント115Dをインストールしていてもよい)。エージェント115A~115Dは、本明細書ではまとめてエージェント115と呼ばれる。エージェント115のそれぞれは、1つまたは複数の特定の動作および承認済動作を実施するように構成された自律的ソフトウェアプログラムでよい。いくつかの実施形態では、エージェント115は、また、1つまたは複数の特定の動作および承認済動作を実施するためのハードウェア、ファームウェア、または、その組合せと関連付けられてもよい。例えば、いくつかの実施形態では、エージェント115は、これらのエージェントが意図されたように動作可能にするリソース(例えばCPU、メモリ等)と関連付けられてもよい。いくつかの実施形態では、エージェント115は、1つまたは複数の特定の動作および承認済動作を実施するために複数のエッジデバイス105の特定の1つにインストールされ得る。他の実施形態では、エージェント115は、1つまたは複数の特定の動作および承認済動作を実施するために、別のデバイスにインストールされ、複数のエッジデバイスの特定の1つに動作接続され得る。
【0012】
いくつかの実施形態では、エージェント115は、エージェント115の関連付けられたエッジデバイスからデータを収集するように構成されたデータ収集エージェントでよい。いくつかの実施形態では、エージェント115は、複数のエッジデバイス105のうちの関連付けられた1つを定期的に(例えば10秒毎に)ポーリングしてデータを収集し得る、エージェント115上で動く処理を有し得る。いくつかの実施形態では、エージェント115は、アプリケーションプログラミングインターフェース(API)をコールすることによって複数のエッジデバイス105をポーリングし得る。他の実施形態では、エージェント115は、他のメカニズムを使用して複数のエッジデバイス105をポーリングし得る。また、他の実施形態では、エージェント115は、ポーリング以外の、またはポーリングに加えて、他のメカニズムを使用して複数のエッジデバイス105からデータを収集し得る。さらに、いくつかの実施形態では、エージェント115は、複数のエッジデバイス105からリソース利用状況データを収集し得る。リソース利用状況データは、CPU(中央処理装置)利用状況データ、メモリ容量データ、ネットワーク帯域幅データ、新しいロジックをプログラミングするためのフィールドプログラマブルゲートアレイ(FPGA)データ、温度等を含み得る。他の実施形態では、エージェント115は、リソース利用状況データの他のタイプまたは追加のタイプを集めるように構成され得る。また、エージェント115は、リソース利用状況データ以外の、またはリソース利用状況データに加えて、データを集めるように構成され得る。例えば、いくつかの実施形態では、エージェント115は、システムレベル基準値およびアプリケーションレベル基準値、アプリケーションディスカバリおよびプロファイリングに関するデータ(例えば、どのアプリケーションがそれぞれのエッジボックスにインストールされるかを決定すること)等を集めるように構成され得る。
【0013】
いくつかの実施形態では、エージェント115のそれぞれは、複数のタイプのリソース利用状況データを集めるように構成され得る。他の実施形態では、エージェント115のそれぞれは、単一のタイプのリソース利用状況データを集めるように構成され得る。したがって、いくつかの実施形態では、複数のエッジデバイス105のそれぞれは、集められることになるリソース利用状況データのタイプに応じて、複数のエージェントと関連付けられ得る。いくつかの実施形態では、エージェント115の1つまたは複数は、複数のエッジデバイス105のうちの単一のエッジデバイスからデータを集めるように構成され得る。他の実施形態では、エージェント115の1つまたは複数は、複数のエッジデバイス105のうちの複数のエッジデバイスからデータを集めるように構成され得る。したがって、エージェント115は、複数のエッジデバイス105からデータ(例えばリソース利用状況データ)を集めるように様々な方式で構成され得る。エージェント115は、特定のエージェントが収集しなければならないリソース利用状況データのタイプ、および、このエージェントがリソース利用状況データを収集しなければならない複数のエッジデバイス105のアイデンティティを用いてプログラムされ得る。
【0014】
さらに、いくつかの実施形態では、エージェント115は、また、収集データを他のエンティティに転送するように構成され得る。いくつかの実施形態では、エージェント115は、収集データをバッファし、収集データをバッチで周期的に送信するように構成され得る。他の実施形態では、エージェント115は、データが収集されると同時にデータを即座に(または実質的に即座に)送信するように構成され得る。いくつかの実施形態では、および特にエージェント115が伝送前にデータをバッファしている実施形態では、エージェントは、バッファデータを削除する前に、成功した伝送についての通知を受信するように構成され得る。他の実施形態では、エージェント115は、成功した伝送通知を待たずに、データを送信すると同時にバッファデータを削除するように構成され得る。したがって、エージェント115は、様々な方式でデータを伝送するように構成され得る。
【0015】
さらに、いくつかの実施形態では、エージェント115は、複数のエッジデバイス105から集められた未加工データを送信するように構成され得る。他の実施形態では、エージェント115は、送信前にデータを処理するように構成され得る。例えば、いくつかの実施形態では、エージェント115は、送信前にデータのソート、フィルタ、圧縮、および/または暗号化を行い得る。他の実施形態では、エージェント115は、データを送信する前にデータに対して他の処理動作を実施し得る。いくつかの実施形態では、エージェント115は、未加工データの代わりに、または未加工データに加えて、ヘッドルームを計算し、ヘッドルームデータを伝送し得る。ヘッドルームは、エッジデバイスに配分されたリソースの量と、特定の瞬間にこのエッジデバイスによって使用されているこのリソースの量との差である。したがって、ヘッドルームは、エッジデバイスにおける特定の瞬間におけるリソースの残りの量であるとみなされ得る。例えば、エッジデバイス110Aがメモリのうちの10ギガバイトを配分され、このエッジデバイスが時間tにおいてメモリのうちの6ギガバイトを消費している場合、時間tにおけるこのエッジデバイスのメモリのヘッドルームは、(10-6)=4ギガバイトである。したがって、時間tにおいて、エッジデバイス110Aは、メモリのうちのさらに4ギガバイトを消費することができる。ヘッドルームは、複数のエッジデバイス105に配分された、および/または、エージェント115によってデータが収集された、各リソースについて計算され得る。したがって、いくつかの実施形態では、複数のエッジデバイス105のそれぞれについて、複数のヘッドルームデータ(各タイプのリソースに対して1つ)が計算され得る。
【0016】
いくつかの実施形態では、エージェント115は、ヘッドルームを計算するように構成され得る。このような実施形態では、エージェント115は、特定のエージェントがリソース利用状況データを収集するように構成された複数のエッジデバイス105に配分された特定のリソースの量(「配分量」)を知るように構成され得る。したがって、複数のエッジデバイス105のうちの特定のエッジデバイスから実際のリソース利用状況データ(「実際量」)を収集すると、この特定のエッジデバイスと関連付けられたエージェント(例えばエージェント115)は、配分量と実際量との差を計算して、特定のリソースのヘッドルームを決定し得る。他の実施形態では、アプリケーションプロファイリングシステム100の別のエンティティが、ヘッドルームを計算するように構成され得る。
【0017】
ヘッドルームを計算することに加えて、いくつかの実施形態では、エージェント115は、実際のリソース利用状況およびヘッドルームの時系列マップを作成し得る。時系列マップの例が図2に示されている。他の実施形態では、アプリケーションプロファイリングシステム100の別のエンティティが、時系列マップを計算し得る。したがって、各タイプのリソース利用状況について、エージェント115は、未加工データ、処理後データ、ヘッドルームデータ、および/または時系列データ(本明細書ではまとめて「伝送データ」と呼ばれる)を伝送し得る。エージェント115は、ストリーミングフレームワーク120を利用して伝送データを送信し得る。いくつかの実施形態では、ストリーミングフレームワーク120は、ネットワークを含み得る。例えば、いくつかの実施形態では、ストリーミングフレームワーク120は、アプリケーションプロファイリングシステム100内での使用に適し得る様々な有線またはワイヤレスネットワークチャネルのいずれかを含み得る。例えば、いくつかの実施形態では、ストリーミングフレームワーク120は、イーサネット接続、1つまたは複数のツイストペアワイヤ、同軸ケーブル、光ファイバケーブル等の有線接続を含み得る。他の実施形態では、ストリーミングフレームワーク120は、マイクロ波、赤外線波、電波、Bluetooth、Z-Wave、スペクトラム拡散技術、衛星等のワイヤレス接続を含み得る。また、ストリーミングフレームワーク120は、セルラーネットワーク、ローカルエリアネットワーク、ワイドエリアネットワーク、インターネット等を使用して、アプリケーションプロファイリングシステム100内の他のデバイス/システムと通信するように構成され得る。いくつかの実施形態では、ストリーミングフレームワーク120は、有線通信とワイヤレス通信の組合せを含み得る。また、ストリーミングフレームワーク120は、ネットワークインターフェース、スイッチ、ルータ、ネットワークカード、ならびに/または、アプリケーションプロファイリング100内の相互通信を容易にする際に有する必要があるか、望ましいと考えられる他のハードウェア、ソフトウェア、および/もしくはファームウェア構成要素を含むか、これらと関連付けられ得る。
【0018】
ストリーミングフレームワーク120を使用して、エージェント115は、サーバ125(本明細書ではバックエンドサーバ125とも呼ばれる)、および1つまたは複数のクライアントマシン130にデータを伝送し得る。他の実施形態では、ストリーミングフレームワーク120を使用して、エージェント115は、アプリケーションプロファイリングシステム100の他の所望の構成要素にもデータを伝送し得る。いくつかの実施形態では、サーバ125は、Dell、Inc.、Lenovo Group Ltd.、またはLenovo PC International、Cisco Systems,Inc.等からのサーバコンピュータなどの、ハードウェアデバイスでよい。他の実施形態では、サーバ125は、パーソナルコンピュータ、入出力もしくは周辺機器ユニット(プリンタなど)、または、本明細書で説明される機能の実施に適した任意のタイプのデバイスなどの別のタイプのハードウェアデバイスを含むか、これらと関連付けられ得る。
【0019】
サーバ125は、命令を実行するように構成された1つまたは複数のプロセッサ135と関連付けられ得るか、これらを含み得る。命令は、専用コンピュータ、論理回路、またはサーバ125のハードウェア回路によって実行され得る。プロセッサ135は、ハードウェア、ファームウェア、ソフトウェア、またはこれらの任意の組合せに提供され得る。用語「実行」は、例えば、アプリケーションを動かす処理、または、命令によって指示される動作の実行である。命令は、1つまたは複数のプログラミング言語、スクリプト言語、アセンブリ言語等を使用して書かれ得る。したがって、プロセッサ135は、この命令によって指示される動作を実施することを意図する命令を実行する。プロセッサ135は、情報の受信、送信、および処理のため、ならびに、エージェント115の動作の制御のために、メモリデバイス140に動作連結され得る。プロセッサ135は、リードオンリメモリ(「ROM」)デバイスのような永久メモリデバイスからなど、メモリデバイス140から命令のセットを取り出し、一般的にランダムアクセスメモリ(「RAM」)のいくつかの形式である一時メモリデバイスに、実行可能形式の命令をコピーし得る。いくつかの実施形態では、プロセッサ135は、RAMに命令を最初にコピーせずに命令を実行し得る。さらに、プロセッサ135は、単一のスタンドアロンプロセッサ、または、同じもしくは異なる処理技術を使用する複数のプロセッサを含み得る。
【0020】
メモリデバイス140は、アプリケーションプロファイリングシステム100に適したストレージデバイスの様々なタイプを含み得る。例えば、いくつかの実施形態では、メモリデバイス140は、任意のタイプのRAM、ROM、フラッシュメモリ、磁気ストレージデバイス(例えばハードディスク、フロッピーディスク、磁気帯等)、光ディスク(例えばコンパクトディスク(「CD」)、デジタルバーサタイルディスク(「DVD」)等)、スマートカード、ソリッドステートデバイス等を含み得るがこれらに限定されない。いくつかの実施形態では、メモリデバイス140は、アプリケーションプロファイリングシステム100内での使用に適し、ストリーミングフレームワーク120を介してアクセス可能な、様々なネットワークアクセシブルストレージのいずれかを含み得る。メモリデバイス140は、ストリーミングフレームワーク120を介して複数のエッジデバイス105およびエージェント115のそれぞれによってアクセスされるように構成された分散ストレージシステムを形成し得る。いくつかの実施形態では、メモリデバイス140はクラウドストレージを含み得る。メモリデバイス140は、エージェント115から受信された伝送データを格納するように構成され得る。したがって、メモリデバイス140は、エージェント115から受信されたデータを格納する1つまたは複数のデータベース145を含み得る。また、メモリデバイス140は、本明細書で説明される機能を実施するために、プロセッサ135によって実行され得る1つまたは複数のアルゴリズムまたはコンピュータ可読命令を格納するように構成され得る。
【0021】
いくつかの実施形態では、サーバ125は、エージェント115から受信されたリソース利用状況のヘッドルームデータおよび時系列マップに基づいて、複数のエッジデバイス105にインストールされ得るアプリケーションのタイプおよび数を決定するように構成され得る。いくつかの実施形態では、サーバ125は、複数のエッジデバイス105へのインストールに最も適したアプリケーションのグループを選ぶための深層強化学習アルゴリズムを実施し得る。サーバ125のさらなる詳細は下記で論じられる。
【0022】
図1をさらに参照すると、エージェント115は、また、1つまたは複数のクライアントマシン130にデータを伝送し得る。1つまたは複数のクライアントマシン130のそれぞれは、複数のエッジデバイス105の1つまたは複数にインストールするための、サーバ125から受信された情報に基づくアプリケーションをユーザが選択し得るユーザインターフェース(例えばダッシュボードであり、この例は、下記の図12に示されている)を含み得る。また、1つまたは複数のクライアントマシン130のそれぞれは、プロセッサ(例えばプロセッサ135と同様)およびメモリを含み得る。
【0023】
アプリケーションプロファイリングシステム100の特定の構成要素および特徴だけが本明細書で示され、説明されることを再び理解されたい。それでも、本明細書で説明される機能を実施することが必要とされるか、望まれ得る他の構成要素および特徴が、本開示の範囲内であると想定され、みなされる。上記で説明されたアプリケーションプロファイリングシステム100の様々な構成要素の構成は例に過ぎず、何らかの方式で限定することを意図するものではないことも理解されたい。むしろ、これらの構成要素の構成は、本明細書で説明される機能を実施するために変化し得る。
【0024】
図2に移ると、本開示のいくつかの実施形態による、実例の時系列マップ200が示されている。時系列マップ200は、Y軸上のリソースの利用状況に対してX軸上に時間をプロットしている。具体的には、時系列マップ200は、ネットワーク、およびメモリのリソース利用状況、ならびにCPU利用状況を同じプロット上にプロットしている。したがって、時系列マップ200は単一プロット上に複数のリソース利用状況を組み合わせ、マルチ時系列と呼ばれ得る。他の実施形態では、別個の時系列マップが、これらのリソースのそれぞれのために作成され得る。さらに、ネットワーク、メモリ、およびCPU利用状況だけが時系列マップ200に示されているが、他の実施形態では、他または追加のリソースのリソース利用状況が同様にプロットされ得る。時系列マップ200上の各リソースは、このリソースの配分量、特定の時間におけるこのリソースの消費量、およびヘッドルームを描写する。
【0025】
例えば、時系列マップ200は、ネットワークリソースが範囲205によって描写された配分されたネットワーク量を有すること、メモリリソースが範囲210によって描写された配分されたメモリ量を有すること、およびCPUリソースが範囲215によって描写された配分されたCPU量を有することを示す。ネットワーク、メモリ、およびCPUリソースの実際のリソース利用状況が、プロット220、225、および230によってそれぞれ示されている。配分量および実際のリソース利用状況に基づいて、リソースのヘッドルームが、時系列マップ200から計算され得る。例えば、時系列マップ200は、範囲215の上端とプロット230によって示された実際のリソース利用状況の平均量との差としてCPUのリソースヘッドルーム235を示す。同様に、時系列マップ200に示されていないが、リソースヘッドルームは、メモリおよびネットワークリソースのために計算され得る。このリソースヘッドルーム情報は、複数のエッジデバイス105のうちの特定のエッジデバイスにインストールされることになるアプリケーションのグループを選択するためにサーバ125によって使用され得る。用語ヘッドルーム、リソースヘッドルーム等は本明細書では区別なく使用されることを理解されたい。
【0026】
図3に移ると、本開示のいくつかの実施形態による、サーバ300の実例のブロック図が示されている。サーバ300は、図1のサーバ125に似ている。したがって、図示されていないが、サーバ300は、メモリなどの非一時的コンピュータ可読媒体に格納されたコンピュータ可読命令を実行するプロセッサを含む。サーバ300は、このエッジデバイス上のリソースヘッドルームに基づいて、エッジデバイスにインストールするための1つまたは複数のアプリケーションを選択するために使用され得る。複数のエッジデバイス105にインストールされ得る「アプリケーション」は、ソフトウェアアプリケーションを含み得る。具体的には、アプリケーションは、これらのアプリケーションがインストールされる複数のエッジデバイス105の様々な態様を制御するために、計算能力を使用するもの(例えば、CPU利用を要求し、外部および内部メモリと関連付けられ得るもの)を含み得る。例えば、アプリケーションは、機械の回転速度を制御すること、温度を制御すること、センサおよびアプリケーションから他の構成要素(例えばエージェント115)、グラフィックスおよびディスプレイドライバに関連したアプリケーション等にデータ(例えば基準値データ等)を転送することを行い得るものを含み得る。いくつかの実施形態では、アプリケーションは、市販タイプのアプリケーションでよい。他の実施形態では、アプリケーションは、特定の機能(例えば、機械データ、センサデータ、温度データを使用すること、通信データに対して作用するようにプログラムすること、等)を実現するようにプログラムされたカスタムアプリケーションでよい。いくつかの実施形態では、アプリケーションは、特定の機械学習モデルを含み得る。
【0027】
いくつかの実施形態では、サーバ300は、人工知能/機械学習ベースアルゴリズムを実施し得る。アルゴリズムは、複数のエッジデバイス105にインストールされ得る各アプリケーションに要求されるリソース利用を適用することによって訓練され得る。アルゴリズムの目的は、人工知能/機械学習を使用したアプリケーションのインテリジェント配置によって、複数のエッジデバイス105のリソースヘッドルームを効率的に管理することである。いくつかの実施形態では、サーバ300は、複数のエッジデバイス105のリソースヘッドルームがわかると、深層学習と深層強化学習技法の組合せを実施し得る。具体的には、アプリケーションのグループを選択するために、複数のエッジデバイス105にインストールされる可能性があり得る各アプリケーションのリソース利用状況データが収集され、深層強化学習(DRL)アルゴリズム(例えば決定論的深層ポリシ勾配(Deep Deterministic Policy Gradient))に供給され得、次に、リソース利用状況データは、特定の時点における複数のエッジデバイス105のリソースヘッドルームについての、アプリケーションの選ばれたグループの適合性スコアを出力するために深層学習ベースアルゴリズムによって確認され得る。DRLアルゴリズムの報酬信号は、経時的に複数のエッジデバイス105に導入されるべき正しいアプリケーションを選択するアルゴリズムを生じる散発的手法でDRLアルゴリズムに漸進的に学習させるために、複数のエッジデバイス105のリソースヘッドルームについての適合性スコアを正確に描写するようにデザインされ得る。
【0028】
したがって、サーバ300は、意思決定構成要素305およびヘッドルーム適合性測定構成要素310という2つの主要構成要素を有するものと考えられ得る。意思決定構成要素305は、アプリケーション320A~320Nのリスト(本明細書ではまとめてアプリケーション320と呼ばれる)からアプリケーションのグループを選択するように構成され得るDRLアルゴリズム315を実施し得る。アプリケーション320のそれぞれは、アプリケーションによって消費される所望のまたは適切なリソースの時系列マップを有し得る。例えば、アプリケーション320Aは、このアプリケーションによって消費される1つまたは複数のリソース(例えば、CPU、メモリ、ネットワーク等)の時系列データをマッピングする時系列マップ325Aを有し得る。アプリケーション320Aのリソース全てに対して単一の時系列マップ(例えば時系列マップ325A)が示されているが、いくつかの実施形態では、時系列データが望まれる各リソースが、別個の時系列マップを有し得る。同様に、アプリケーション320Bは時系列マップ325Bを有し得、アプリケーション320Nは時系列マップ325Nを有し得る。時系列マップ325A~325Nは、本明細書ではまとめて時系列マップ325と呼ばれる。アプリケーション320の時系列マップ325は、DRLアルゴリズム315に入力され得る。また、DRLアルゴリズム315は、アプリケーションのグループが選択されるべきエッジデバイスのリソースヘッドルームを受信し得る。DRLアルゴリズム315は、下記でさらに詳細に説明される。
【0029】
DRLアルゴリズム315は、アプリケーション320からアプリケーションのグループ330を選択し、アプリケーションのグループを深層学習(DL)アルゴリズム335に送信する。DRLアルゴリズム315は、報酬信号340で示された報酬を最大化するようにアプリケーションのグループ330を選択し得る。報酬信号340は、DLアルゴリズム335から受信された適合性スコア350に基づいて、報酬生成器345によって生成され得る。DLアルゴリズム335は、アプリケーションのグループが選択されたエッジボックス360のリソースヘッドルーム355に対するアプリケーションのグループ330の適性に基づいて、適合性スコア350を生成する。例えば、DLアルゴリズム335は、エッジデバイス360のリソースヘッドルーム355に適合するアプリケーションの正しいグループ(例えばアプリケーションのグループ330)をDRLアルゴリズムが成功裏に選択するたびに、DRLアルゴリズム315の正の報酬を示す適合性スコア350を報酬生成器345に出力し得る。同様に、DLアルゴリズム335は、エッジデバイス360のリソースヘッドルーム355内に適合しないアプリケーションのグループをDRLアルゴリズム315が選択するたびに、DRLアルゴリズム315の負の報酬を示す適合性スコア350を報酬生成器345に出力し得る。したがって、報酬信号340は、アプリケーションのグループ330がエッジボックスのリソースヘッドルームにどれだけよく適合するかを示す性質をもつフィードバック信号でよい。
【0030】
具体的には、エッジデバイス360のリソースヘッドルーム355は、消費に利用可能なエッジデバイス360に配分されるリソースの量を示し得る。DRLアルゴリズム315は、エッジデバイス360の利用可能なリソースを最もよく消費するアプリケーションのグループ330を識別するためのものである。アプリケーション320のうちの種々のアプリケーションは、種々のリソース利用状況を有し得る。例えば、言わば、アプリケーション320Aは、1秒あたり10メガバイト(MBps)のネットワーク帯域幅において30%のCPUのCPU利用状況でメモリの1ギガバイト(GB)を消費し、アプリケーション320Bは、20MBpsのネットワーク帯域幅において45%のCPU利用状況でメモリの2GBを消費し、アプリケーション320Nは、5MBpsのネットワーク帯域幅において10%のCPU利用状況でメモリの1.5GBを消費する。また、例として、言わば、エッジデバイス360のリソースヘッドルーム355は、エッジデバイスが45%のCPU利用状況のヘッドルーム、1GBのメモリヘッドルーム、および7MBpsのネットワーク帯域幅のヘッドルームを有することを示す。
【0031】
エッジデバイスの上記のリソースヘッドルームに基づき、CPU消費量(45%のエッジデバイスのCPUヘッドルームより小さい30%のCPUをアプリケーションが消費するので)、および、メモリ消費量(1GBのエッジデバイスメモリヘッドルームに等しいメモリの1GBをアプリケーションが消費するので)に基づいて、アプリケーション320Aがエッジデバイスにとってよい適合になり得るとしても、アプリケーション320Aは、ネットワーク帯域幅(エッジデバイスが利用可能な7MBpsより多い10MBpsのネットワーク帯域幅をアプリケーションが要求するので)に基づいて、よい適合でなくなり得る。同様に、20MBpsのネットワーク帯域幅において45%のCPU利用状況でメモリの2GBを消費するアプリケーション320Bは、エッジデバイスがルームを有するより多くのメモリおよびネットワーク帯域幅をアプリケーションが要求し得るエッジデバイスにとっては、CPU利用状況の観点では、よい適合になり得る。同様に、他のアプリケーションが、エッジデバイスの別のリソースヘッドルームではなく、エッジデバイス上の特定のリソースのヘッドルームに適合し得る。
【0032】
DRLアルゴリズムは、様々なアプリケーション(例えばアプリケーション320)のリソース利用状況の様々な並べ替えおよび組合せを決定し、エッジデバイス360上で利用可能なリソース(例えばリソースヘッドルーム355)をリソース利用状況が最も良く使用するアプリケーションのグループを選択する。選択するべきアプリケーション320の数が増加すると、並べ替えおよび組合せの数も増加する。エッジデバイス360のリソースヘッドルーム355に適したアプリケーションのグループを決定すると、エッジデバイスにインストールされた各アプリケーションが最適な容量で動作していることを保証し得る。エッジデバイス360にインストールされたアプリケーションが、エッジデバイスがルームを有するより多くのCPU利用状況を必要とする場合、アプリケーションが低速で動くだけでなく、このアプリケーションが、このエッジデバイスにインストールされた他のアプリケーションの動作に影響を与え得る。したがって、エッジデバイス360のリソースヘッドルーム355に基づいてアプリケーションの正しいグループを選択することがエッジデバイスの最適な動作を保証し得る一方で、エッジデバイスの配分されたリソースが全容量で使用されることも保証する。これは、より少ない数のエッジデバイスを使用して、より多くのアプリケーションを動かすことを可能にし得、エッジデバイスの調達および維持におけるコスト節約をもたらす。
【0033】
DRLアルゴリズム315からアプリケーションのグループ330を受信することに加えて、DLアルゴリズム335とDRLアルゴリズム315の両方は、複数のエッジデバイス105のそれぞれのリソースヘッドルーム(またはアプリケーションのグループの1つまたは複数がインストールされ得るエッジデバイスの少なくともヘッドルーム)を受信し得る。例えば、DLアルゴリズム335は、エッジデバイス360のリソースヘッドルーム355を受信し得る。リソースヘッドルーム355は、エッジデバイス360の様々なリソースのリソース消費量およびリソース可用性を示す(例えば時系列マップ200と同様の)マルチ時系列マップとして表され得る。エッジデバイス360と同様に、DLアルゴリズム335は、他のエッジデバイス(例えば複数のエッジデバイス105)の(例えば時系列マップ325と同様の)ヘッドルーム情報を受信し得る。エッジデバイス360のリソースヘッドルーム355と、アプリケーションのグループ330とに基づいて、DLアルゴリズム335は、アプリケーションのグループがエッジデバイス360のリソースヘッドルーム355にどれだけ適しているかを示す適合性スコアを決定する。言い換えれば、DLアルゴリズム335は、アプリケーションのグループ330がエッジデバイス360のリソースヘッドルーム355をどれだけ最善に消費するかを決定する。例えば、アプリケーションのグループ330の合計のCPU利用状況が、エッジデバイス360のCPUヘッドルームを特定の閾値だけ超過するとDLアルゴリズム335が決定すると、DLアルゴリズムは、アプリケーションのグループがエッジデバイス360に適した適合でないと決定し得る。DLアルゴリズム335は、アプリケーションのグループがエッジデバイス360の利用可能なリソースを最適に消費するかどうかを決定するために、アプリケーションのグループ330の合計のリソース利用状況の様々な並べ替えおよび組合せに視線を向け得る。DLアルゴリズム335は、下記でより詳細にさらに論じられる。
【0034】
図4に移ると、本開示のいくつかの実施形態による、DRLアルゴリズム315の状態機械400の実例の図が示されている。DRLアルゴリズム315は、エージェント405および環境410という2つの主な構成要素を含む。エージェント405はアルゴリズムであり、アプリケーションのグループ330を選択するために、問題設定(problem setting)である環境410と相互作用する。具体的には、エージェント405は、アクションを行うこと(例えば、アプリケーションのセットを選ぶこと)によって環境410と相互作用し得る。アクションは、報酬信号340に基づいて、エージェント405が環境410に直接影響を及ぼすことを可能にする。したがって、エージェント405の目的は、状態機械400の複数の繰返しによって、エージェントがアプリケーションの正しいグループ330を経時的に選択し、最適に近いポリシを見つけた後、累積報酬を最大化することである。
【0035】
状態機械400の強化学習(RL)プロセスは、複数の繰返しを含むループとしてモデル化され得る。例えば、第1の繰返しにおいて、エージェント405は、環境410から状態415(例えば状態S0)を受信し得る。状態415は、様々なアプリケーション320のリソース利用状況を示し得る。状態415は、エッジデバイス360のリソースヘッドルーム355も含み得る。第1の繰返しにおいて、状態は、環境の初回観察(例えば、アプリケーション320の時系列マップ325)を含み得る。状態415(例えば状態S0)に基づいて、エージェント405は、アクション420(例えばアクションA0)を行う。アクション420は、アプリケーションのグループ(例えば、アプリケーションのグループ330)を出力し得る。第1の繰返しの完了後、状態機械400は次の繰返しに遷移し得る。次の繰返しにおいて、環境410は、状態415の新しい状態(例えば状態S1)に遷移し得る。いくつかの実施形態では、状態変化または遷移は、アプリケーション320の少なくとも1つのリソースヘッドルーム/利用状況の変化(例えば、時系列マップ325の変化)が検出されたときに発生し得る。状態変化が発生すると、環境410は、新しい時系列マップ325をエージェント405に送信し得、新しい時系列マップ325に基づいて、エージェントは、アプリケーションの新しいグループを出力し得る。上記のループは、環境410が最終状態をエージェント405に送信するまで続き得る。
【0036】
状態415に加えて、環境410は、報酬信号340を介して受信された報酬Rもエージェント405に送信し得る。報酬は、前の繰返しにおいてエージェント405によって選ばれたアプリケーションのグループ330が、エッジデバイス360のリソースヘッドルーム355に適した適合だった場合、正の報酬になり得る。そうでない場合、報酬は、負の報酬になり得る。状態415および報酬に基づいて、次に、エージェント405は、アプリケーションの新しいグループを選択し、アプリケーションの更新後のグループをDLアルゴリズム335に送信する。具体的には、エージェント405の目的は、期待される累積報酬を最大化することである。強化学習は報酬仮説の考えに基づくので、期待される累積報酬の最大化によって、全ての目的が説明され得る。したがって、最善の行動を行うために、期待される累積報酬はエージェント405によって最大化される。
【0037】
したがって、状態機械400は、アクションを行った後、およびアプリケーション320のリソース利用状況の変化が検出されたとき、次の状態に遷移する連続遷移ループとみなされ得る。状態機械400は、一連の状態、アクション、および報酬を出力する。いくつかの実施形態では、状態機械400を実施するDRLアルゴリズム315の例は、連続アクション空間内でよく機能し得る決定論的深層ポリシ勾配でよい。この場合、アクション空間は、選ばれ得るアプリケーションの数が固定される必要がなく、むしろそこから選ぶのに利用可能なアプリケーションの総数に基づいて限定されるので、連続的になり得る。
【0038】
したがって、環境410は、RLアルゴリズムを使用して、エージェント405が作用する状態を提供する。環境410は、第1の繰返しにおいて、状態(例えば、アプリケーションのリソース利用状況データ、およびエッジボックスのリソースヘッドルーム)をエージェント405に送信することによってスタートする。受信された状態に基づいて、エージェント405は、エッジボックスにインストールするためのアプリケーションのグループを選択するというアクションを行い得る。その後の繰返しにおいて、環境410は、次の状態と報酬のペアをエージェント405に送り返し得る。エージェント405は、環境によって返された報酬、およびエージェントの最後のアクションに基づいて、エージェント405のアクションを更新し得る。環境410から状態および報酬情報を受信し、エージェント405がそのアクションを更新するというループは、環境がループを終わらせる最終状態を送信するまで続く。
【0039】
図5に移ると、実例のブロック図は、本開示のいくつかの実施形態による、DRLアルゴリズム315のさらなる詳細を示す。具体的には、ブロック図は、DRLアルゴリズムのエージェント500と環境505との間のさらなる相互作用を示す。エージェント500はエージェント405に似ており、環境505は環境410に似ている。環境505は、1つまたは複数のアプリケーション515A~515N(本明細書ではまとめてアプリケーション515と呼ばれる)から、多変量時系列データ(multi-variate time series data)を受信する。アプリケーション515はアプリケーション320に似ている。具体的には、環境505は、アプリケーション515のリソース利用状況データを受信する。いくつかの実施形態では、環境505は、アプリケーションのグループが選択されることになるエッジデバイス(例えばエッジデバイス360)のリソースヘッドルーム520(例えばリソースヘッドルーム355)も受信し得る。リソースヘッドルーム520、およびアプリケーション515のリソース利用状況データは、環境の状態525を表し得る。したがって、環境の「状態空間」は、リソースヘッドルーム520、およびアプリケーション515のリソース利用状況データからの、データのペアによって表され得る。
【0040】
いくつかの実施形態では、「状態空間」は、エージェント500によって観察可能になり得る「観察空間」と関連付けられ得る。例えば、エージェント500は、任意の瞬間tにおける「状態空間」全体を「観察すること」が可能になり得る。瞬間tにおける全てのアプリケーション要件のベクトル(例えば、アプリケーション515の時系列データ)、およびリソースヘッドルーム520は、瞬間tにおいてエージェント500に入力され得、これは、環境510の現在の状態と同じになり得る。「状態空間」および「観察空間」内のデータに基づいて、エージェント500の目的は、リソースヘッドルーム520と関連付けられたエッジデバイスにインストールするために、アプリケーション515からアプリケーションのグループを選択することである。したがって、エージェント500は、エージェントがアプリケーション515からアプリケーションのグループを選択し得るアクション530を、行い得る。エージェント500によって行われるアクションは、「アクション空間」の一部とみなされ得る。いつでも、エージェント500が選ぶことになるN個のアプリケーション515があり得る。エージェント500が選ぶアプリケーションのグループの数は、N個以下になるように変化し得る。したがって、例えば、エージェント500は、1~Nまでの任意の数のアプリケーションを選択し得る。
【0041】
さらに、エージェント500は、環境510から報酬535も受信し得る。いくつかの実施形態では、報酬535は、報酬生成器345によって最近送信された報酬信号340に基づき得る(例えば報酬信号340と同じになり得る)。他の実施形態では、報酬535は、これまでにエージェントによって収集された累積報酬でよい。報酬535は、「報酬空間」の一部になり得る。報酬535は、エージェント500の行動を変化させるように変更され得る。エージェント500の主な目的は、その配分リソースをより良く利用するためにエッジボックスのヘッドルームを最小化することである。したがって、エッジボックスのヘッドルームに適合しないアプリケーションのグループをエージェント500が以前に選択した場合、報酬535はゼロ報酬または負の報酬(例えば、-100)になり得る。エッジボックスのヘッドルーム内に適合するアプリケーションのグループをエージェント500が以前に選択した場合、報酬535は正の報酬(例えば、+100)になり得る。エージェント500は累積報酬を最大化しようとし、これにより、エッジボックスのリソースヘッドルームに最もよく適合するアプリケーションの選択の最適化を経時的に実現する。
【0042】
このように、各繰返しにおいて、エージェント500は、環境の現在の状態(例えば状態525)、および報酬535を受信し得る。現在の状態は、アプリケーション515の時系列データ、および、アプリケーションがインストールされることになるエッジボックスのリソースヘッドルーム520を含み得る。エージェント500は、エージェント500に利用可能な環境510の以前の状態も有し得る。現在の状態および以前の状態、ならびに報酬に基づいて、エージェント500は、エージェントの累積報酬を最大化するような方式で、エッジボックスへのインストールのためにアプリケーション515から1つまたは複数のアプリケーションを選択する。アプリケーション515から1つまたは複数のアプリケーションを選択するために、エージェント500は訓練され得る。エージェント500の訓練は、下記の図6で論じられる。
【0043】
したがって、図6に移ると、本開示のいくつかの実施形態による、決定論的深層ポリシ勾配(DDPG:Deep Deterministic Policy Gradient)アルゴリズム600の実例のブロック図が示されている。DDPGは、DRLアルゴリズム315の1つのタイプとみなされ得る。上述のように、いくつかの実施形態では、エージェント500は、アプリケーション515から1つまたは複数のアプリケーションを選択するために、DDPGアルゴリズムを実施し得る。エージェント500の訓練を始める前に、問題設定を表すための(例えば、環境510と同様の)シミュレーション環境がセットアップされ得る。シミュレーション環境の各状態において、エージェント500は、環境に直接影響を与え、次の状態に遷移するために、環境を知覚し、アクションを行うことが可能になり得る。このようなシミュレーション環境では、ディープニューラルネットワークエージェント(例えばエージェント500)は、エピソード的手法で訓練され得る。各エピソードにおいて、特定の数のアプリケーション(例えばアプリケーション515)が到着し、エージェント500は決定を行う(例えば、エッジボックスのための1つまたは複数のアプリケーションを選択する)。アプリケーション全てが1つまたは複数のエッジボックスに割り当てられると、エピソードは終わりになる。
【0044】
1つのエピソードにおいて、任意の瞬間に、環境状態siおよび報酬riがエージェント500によって知覚され得、これに基づいて、エージェントがアクションaiを行う。エピソードの状態si、報酬ri、およびアクションaiは軌道[s1,a1,r1,...,sL,aL,rL]を形成し得、ここで、Lは、エピソードにおいてエージェント500によって行われる決定の数である。一般的な意思決定ポリシを訓練するために、エッジボックスの様々なリソース利用状況時系列データおよび様々な実例のリソースヘッドルームデータを有するいくつかのアプリケーションシーケンスが生成され得、シーケンスのそれぞれは、いくつかの繰返しを通じてエージェント500を訓練するために使用され得る。また、各繰返しにおいて、N個のシミュレーションが、N個の軌道を取得するためにエージェント500において実施され得る。エージェント500の目的は、期待されるリターン(累積的な割引された報酬)を最大化するポリシ(制御戦略)πを学習することである。
【0045】
以前に論じられたように、DDPGアルゴリズムは、この設定でよく機能し得る。具体的には、DDPGは、Q関数(例えば、Q(a)およびQ(a’))とポリシを同時に学習するアルゴリズムである。DDPGはオフポリシデータとベルマン方程式を使用してQ関数を学習し、Q関数を使用してポリシを学習する。元のディープQネットワーク(DQN:deep Q-network)は、個別のアクション空間を伴うタスクで使用され得る。DQNを連続的制御に拡張するために、DDPGは、アクター-クリティック型(actor-critic)強化学習法によるディープニューラルネットワークを使用し得、ここで、強化学習のポリシと値の両方が、階層式ネットワークを通じて表される。DDPGのネットワークフレームワークが、図6Aおよび図6Bに示されている。DDPGアルゴリズムは、状態sを特定のアクションaに決定論的にマッピングすることによって現在のポリシを指定するパラメータで表示されたアクター関数μ(s|θμ)を維持する。アクター関数パラメータは、以下の等式を使用することによって更新され得る。
【0046】
【数1】
【0047】
上記の等式において、s=状態、a=アクション、st=時間ステップtにおける状態、at=時間ステップtにおけるアクション、μ=ポリシ、Q=Q値、およびρβ=状態訪問分布(state visitation distribution)である。
【0048】
上記の等式内のクリティックQ(s,a)は、Qラーニングにおけるようなベルマン方程式を使用して学習され得る。ターゲットネットワークはアクターおよびクリティックネットワークのコピーであり、その役割は学習の安定性を改善することである。DDPGアルゴリズムは、4つの個々のニューラルネットワークを使用する。
【0049】
θμ - メインネットワーク610のメインポリシネットワーク(アクター)605
【0050】
θQ - メインネットワーク610のメインQネットワーク(クリティック)615
【0051】
θ’μ - ターゲットネットワーク625のターゲットポリシネットワーク(アクター)620
【0052】
θ’Q - ターゲットネットワーク625のターゲットQネットワーク(クリティック)630
【0053】
メインポリシネットワーク(アクター)605は、状態をアクションに直接マッピングする。メインQネットワーク(クリティック)615は、メインポリシネットワーク(アクター)605によって行われるアクションのQ値を推定する(このアクションを行うために考えうる将来のリターンを考慮に入れた、状態sであるためのアクションをどれだけうまく行うことになるかについての尺度)。Qネットワークは、DQNと同じ方式を正確に学習する。メインポリシネットワーク(アクター)605は、図6Bにより詳細に示されているように、学習されたポリシのリターンを本質的に最大化するために、開始の分布からチェーンルールを適用することによって、ポリシ勾配635を使用して、クリティックパラメータについて更新され得る。ターゲットポリシネットワーク(アクター)620およびターゲットQネットワーク(クリティック)630は、メインネットワーク(メインポリシネットワーク(アクター)605およびメインQネットワーク(クリティック)615)のクローンであるが、すぐ次の状態のQ値を同様に計算することをクリティックが含むので、安定した学習を保証するために使用され、同じネットワーク上で2つのフォワードパスを実施すること、および、誤差を逆伝搬させることが、不安定な行動につながる同じ方向に、状態SおよびS’のQs、をプッシュすることができる。したがって、ネットワークのクローンのコピーが、近い将来のQsを計算するために維持され得る。
【0054】
メインネットワーク(例えば、メインポリシネットワーク(アクター)605およびメインQネットワーク(クリティック)615)のパラメータがθの場合、ターゲットネットワーク(例えば、ターゲットポリシネットワーク(アクター)620およびターゲットQネットワーク(クリティック)630)のパラメータはθ’になり得る。次にθ’は、τ<<1で更新され得る。
θ’←τθ+(1-τ)θ’
【0055】
Qラーニングとは異なり、DDPGにおける更新はソフトとみなされ得、ソフトは、メインネットワーク(例えば、メインポリシネットワーク(アクター)605およびメインQネットワーク(クリティック)615)の重みの小部分だけが、1未満のパラメータτによって支配されるターゲットネットワーク(例えば、ターゲットポリシネットワーク(アクター)620およびターゲットQネットワーク(クリティック)630)にコピーされることを意味する。したがって、τ<<1は、ターゲットネットワーク(例えば、ターゲットポリシネットワーク(アクター)620およびターゲットQネットワーク(クリティック)630)のパラメータθは、ゆっくり変化するように制限され(<<1)、これにより、安定性を改善する。
【0056】
さらに、ハードウェア最適化を効率的に使用するために、エージェント500は、オンラインではなく小さいバッチで訓練され得る。したがって、エージェント500は、各時間ステップ(例えば時間t)における状態、アクション、報酬、および次の状態情報を含み得るリプレイバッファと関連付けられ得る。オンラインネットワークおよびターゲットネットワークは、リプレイバッファからデータのミニバッチを一様にサンプリングすることによって更新され得る。
【0057】
したがって、DDPGでは、アクターはアクションを実施し、環境の行動ポリシを学習し得、アクターのアクションに基づいて、クリティックは、現在の状態、アクション、および期待される将来の報酬についての値の近似値を計算し得る。値の近似値に基づいて、メインネットワークが関連アクションを行うのに役立つポリシ勾配が、メインネットワークの重みを更新するために計算され得る。クリティックは、特定の状態であるための正確な累積報酬/リターンを取得するために、将来のリターンを同様に評価しなければならないので、1つの状態であるための正確な累積報酬を得る前に、アクションに従い、最終状態に達する必要がある。それでも、1つのアクター-クリティック型ネットワークがこれらのものを同時に行う場合、アクター-クリティック型ネットワークは、エージェントに不完全に実施させる不安定な行動につながり得る。したがって、メインネットワーク610のクローンは、ターゲットネットワーク625として維持され、固定された時間ステップにおいてソフトに更新され得る。メインおよびターゲットネットワークは、環境を解くために単一のエージェントとして一緒に機能する。
【0058】
エージェント(DDPG)が環境で訓練され、適度によく実施し始めると、環境でアクションを独立して実施するために使用されるターゲットネットワークをロードすることができる。したがって、エージェントからの出力があり、エージェントが環境に影響を及ぼすようにアクションを実施する。環境は、アクションの報酬をリターンして戻し、状態を変化させ、最終状態に達するまでエージェントが観察し、継続する。
【0059】
エージェント500がシミュレーションデータを使用して訓練されると、エージェントは、実際のデータを使用してアプリケーションのグループの選択を開始し得る。いくつかの実施形態では、エージェント500はそれ自体を訓練し続け、実際のデータを使用して進化し得る。エージェント500が生成し得る実例の出力が下記のテーブル1に示されている。
【0060】
【表1】

【0061】
上記のテーブルでは、各行は、特定の時点においてエージェント500によって行われた決定を表す。アプリケーションのグループは、(アプリケーション1、アプリケーション2、…アプリケーションNのように上記のテーブルの行に示された)アプリケーション515から選択され得る。行における各アプリケーションの選択は2進値(例えば0または1)で示され得、ここで、0は、アプリケーションがその瞬間に選ばれなかったことを示し、1は、アプリケーションがその瞬間に選ばれたことを示す。例えば、上記のテーブルでは、行2は、時間T=0において、アプリケーション1および2が選択されているものとして示され、一方でアプリケーションNが選択されていないものとして示されている。同様に、行3は、時間T=1において、アプリケーション1およびNが選択されておらず、アプリケーション2が選択されている。したがって、各アプリケーションは、各瞬間に選択されることもあれば、選択されないこともある。
【0062】
各行から選択されたアプリケーションのグループはアプリケーションのグループ330を構成し得、アプリケーションのグループ330はDLアルゴリズム335に入力され得る。DLアルゴリズム335は、結合されたアプリケーションのグループの全てに関する全ての考えうる利用状況を取得するために、アプリケーションレベルで合計され得る有限時系列としてアプリケーションのグループ330を表し得る。具体的には、DLアルゴリズム335は、適合性スコアを決定するために、アプリケーションのグループ330のそれぞれのリソース利用状況のそれぞれの値を結合させ得る。例えば、いくつかの実施形態では、アプリケーションのグループ330のそれぞれのCPU利用状況は、結合されたCPUリソース利用状況を取得するために結合され得る。同様に、アプリケーションのグループ330のそれぞれのメモリ利用状況は、結合されたメモリ利用状況を取得するために結合され得る、などである。結合された、または全般的なリソース利用状況は、次に、エッジボックス360のリソースヘッドルーム355に対する、アプリケーションのグループ330の類似性または適合性スコアを推定するために、DLアルゴリズム335によって使用され得る。言い換えれば、適合性または類似性スコアは、アプリケーションのグループ330がエッジデバイス360のリソースヘッドルーム355にどれだけ適しているかを決定し得る。類似性または適合性スコアが高くなると、アプリケーションのグループ330がエッジデバイス360によく適するようになる。DLアルゴリズム335は、適合性スコアを使用して、DRLアルゴリズム315のエージェントに対する報酬を決定し得る。一般的に、適合性スコアが高くなると、DRLアルゴリズム315に対する報酬が高くなる。したがって、DLアルゴリズム335は、報酬生成器345によって生成された報酬が、正の報酬または負もしくはゼロ報酬、および報酬の値(例えば、+100、-100等)になるかどうかを示す適合性スコア350を出力し得る。いくつかの実施形態では、DLアルゴリズム335は適合性スコアを決定し得、報酬生成器345は、適合性スコアに基づいて報酬(例えば、報酬が正もしくは負にならなればならないかどうか、および/または報酬の規模)を決定し得る。いくつかの実施形態では、DLアルゴリズム335と報酬生成器345は、単一の構成要素に結合され得る。
【0063】
いくつかの実施形態では、DLアルゴリズム335は、適合性スコアを決定するために、畳み込みニューラルネットワーク(CNN)ベースアプローチを実施し得る。CNNアプローチは、エッジデバイス360のリソースヘッドルーム355の履歴上の多変量時系列データを使用して、このエッジデバイスのために選択されたアプリケーションのグループ330の適合性スコアを決定する。具体的には、CNNベースニューラルネットワークは、リソースヘッドルーム355データの多変量時系列から学習し、アプリケーションのグループ330から計算された全般的な利用状況の適性を予測するために使用され得る。CNNベースニューラルネットワークは、リソースヘッドルーム355の時系列をベクトル空間に埋め込み、アプリケーションのグループ330の全般的なリソース利用状況と合成ベクトルを比較し、類似性に基づいて適合性スコアを示す性質をもつ確率を出力することによって、学習し得る。使用され得るCNNベースアルゴリズムの例が図7に示されている。
【0064】
CNNベースアルゴリズムは、入力から適切な結果を学習するために使用され得る。CNNの低い方の層は、時系列データの低い方のレベルの詳細を学習させられ得、CNNの深い方の層は、このデータの形状パターンまたは傾向を学習し得る。マックスプーリング(Max-pooling)は、より良い特徴抽出および入力におけるノイズの低減に役立ち得る。ノイズ除去またはダウンサンプリング層のように作用するマックスプーリングの後、出力が、平坦化の後の完全接続されたニューラルネットワーク層に供給され得る。ここで、類似性の埋込みが取得され得る。ソフトマックス層が訓練時に添付され得る。三重項損失(triplet loss)のような距離学習損失関数(metric learning loss function)が、訓練中に、埋込み空間内の同様のサンプルを一緒に明示的にプッシュし、互いから離れて異なるサンプルをプルし得る。次に、生み出された埋込みは、同じラベルを共有する時系列が、埋め込まれた空間内でどの程度近くにあるかを評価するために、K近傍法または1-N-Nを用いて評価され得る。いくつかの実施形態では、CNNアーキテクチャは、論じられるように、インセプションモジュールを使用することによってさらに改善され得る。コンピュータビジョンタスクにおけるインセプションネットワークの立証済みの能力は、ニューラルネットワークのスケーラビリティと共に、このタスクの大いなる候補になる。
【0065】
図8は、CNNベースアルゴリズムを実施するDLアルゴリズム335の実例のブロック図800を示す。具体的には、ブロック図800は、複数のフェーズ(訓練フェーズ805、推測フェーズ810、データ収集フェーズ815、およびニューラルネットワークフェーズ820)に分割され得る。訓練フェーズ805は、ニューラルネットワークフェーズ820においてニューラルネットワーク(例えばCNNベースアルゴリズム)を訓練するために使用され得る。いくつかの実施形態では、ニューラルネットワークフェーズ820のニューラルネットワークは、他の深層学習ネットワークと同様だが、埋込み空間内の(例えばクラスについての)同様の時系列を一緒に明示的にプッシュし、訓練中に互いから離れて異なる時系列をプルする異なる損失関数を用いて訓練され得る。訓練中の任意の時点tにおいて、訓練データセットからのデータがニューラルネットワークフェーズ820のニューラルネットワークに供給され得、このデータは、埋込み空間にマッピングされ得る。損失関数を使用したこれらのマッピングに対する計算ペナルティが計算され得、ニューラルネットワークのネットワークの重みは、適切な最適化技法(例えば、Adamまたは確率的勾配下降法)を使用して調節され得る。
【0066】
推測フェーズ810は、ニューラルネットワークフェーズ820のニューラルネットワークが、ヘッドルームに適合可能な時系列と、ヘッドルームに適合しない時系列を区別できるようにするために、埋込み層から特徴を抽出し、近傍法サーチを実施して、これらのクラス(適合/不適合)について同様の時系列を識別するために使用され得る。出力は、0と1の間の確率スコアになり得る。データフェーズ815は、時系列データ、ヘッドルームデータ、および、ニューラルネットワークフェーズ820のニューラルネットワークによる類似性スコアを生成するためにDLアルゴリズム335によって必要とされ得る他の任意の入力データを得ることを含み得る。ニューラルネットワークフェーズ820はデータフェーズ815からデータを受信し、DRLアルゴリズム315によって選択されたアプリケーションのグループ330がエッジデバイス360にとってよい適合か否かを示す類似性スコアを生成し得る。例えば、いくつかの実施形態では、アプリケーションのグループ330がよい適合の場合、ニューラルネットワークフェーズ820のニューラルネットワークは、よい適合を示す1の類似性または適合性スコアを生成し得る。いくつかの実施形態では、アプリケーションのグループ330がエッジボックス360にとってよい適合でない場合、ニューラルネットワークフェーズ820のニューラルネットワークは、0の類似性または適合性スコアを生成し得る。いくつかの実施形態では、ニューラルネットワークフェーズ820のニューラルネットワークは、アプリケーションのグループ330がエッジボックス360にとってどれだけよい適合であるか示す、低い閾値(例えば0)から高い閾値(例えば1)までの類似性または適合性スコアのスライディングスケールを生成するように構成され得る。したがって、類似性または適合性スコアに基づいて、報酬生成器345は、DRLアルゴリズム315のエージェントに対する報酬を生成し得る。
【0067】
このように、ニューラルネットワークフェーズ820のニューラルネットワークは、確率の観点からの類似性または適合性スコアを出力し得る。類似性または適合性スコアに基づいて、報酬生成器345は報酬を生成し、この報酬を、報酬信号340を介してDRLアルゴリズムに送信し得る。いくつかの実施形態では、類似性または適合性スコアは、閾値(例えば、低い閾値、高い閾値、中間の閾値等)に分けられ得、閾値に基づいて、報酬生成器345が報酬の量を決定し得る。例えば、いくつかの実施形態では、類似性または適合性スコアが高い閾値(例えば高い類似性スコア)を示す場合、報酬生成器345は正の報酬を生成し得る。他の実施形態では、類似性または適合性スコアが低い閾値(例えば低い類似性スコア)を示す場合、報酬生成器345はゼロの報酬または負の報酬を生成し得る。
【0068】
図9に移ると、本開示のいくつかの実施形態による、処理900を概説する実例のフローチャートが示されている。処理900は、実施形態に応じて他または追加の動作を含み得る。処理900は、DRLアルゴリズム315によって、および特にサーバ125によって実施され得る。処理900は、アプリケーション320からアプリケーションのグループ330を選択するために使用され得る。したがって、動作905で開始すると、DRLアルゴリズム315は、1つまたは複数のエッジボックスの多変量時系列データ(例えばリソースヘッドルームデータ520)を受信し、動作910および915において、1つまたは複数のエッジボックスに適したアプリケーションのグループが選択されることになる。また、DRLアルゴリズム315は、アプリケーション320のリソース利用状況データ325を受信する。動作920において、DRLアルゴリズム315は、動作910および915において時系列データが受信されたエッジボックスのそれぞれのためのアプリケーションのグループ330を出力する。DRLアルゴリズム315によって選択されたアプリケーションのグループ330は、動作925において、アプリケーションのグループ330の1つまたは複数を、これらのアプリケーションが選択された対応するエッジボックスにインストールするために、ディスパッチャによって使用され得る。インストールすると、動作930において、ユーザは、ユーザインターフェースを使用してエッジボックスを監視し続け得る。ユーザインターフェースの例が、下記の図11に示されている。処理900は動作935で終了する。
【0069】
図10に移ると、本開示のいくつかの実施形態による、処理1000の動作を概説する別の実例のフローチャートが示されている。処理1000は、実施形態に応じて他または追加の動作を含み得る。処理1000は、類似性または適合性スコアを決定するために、DLアルゴリズム335、および特にサーバ125によって実施され得る。したがって、動作1005で開始すると、DLアルゴリズム335は、動作1010において、エッジボックス360のリソースヘッドルーム355を受信する。動作1015において、DLアルゴリズム335は、DRLアルゴリズム315からアプリケーションのグループ330も受信する。動作1010および1015の入力に基づいて、DLアルゴリズム335は、動作1020において類似性または適合性スコアを計算する。上述のように、DLアルゴリズム335は、類似性または適合性スコアを計算するために、CNNベースアルゴリズムまたは他の適切なアルゴリズムを実施し得る。動作1025において、DLアルゴリズム335は、類似性または適合性スコアを報酬生成器345に送信する。処理1000は動作1030で終了する。
【0070】
図11に移ると、本開示のいくつかの実施形態による、処理1100の動作を概説する別の実例のフローチャートが示されている。処理1100は、実施形態に応じて他または追加の動作を含み得る。処理1100は、DRLアルゴリズム315に対する報酬を決定するために報酬生成器345、および特にサーバ125によって実施され得る。したがって、動作1105で開始すると、報酬生成器345は、動作1110において、DLアルゴリズム335から類似性または適合性スコアを受信する。動作1115において、報酬生成器345は、類似性または適合性スコアに基づいて、DRLアルゴリズム315に対する報酬を計算する。高い類似性を示すスコアに対して報酬生成器345は、正の報酬を生成し得、低い類似性を示すスコアに対して報酬生成器は、ゼロまたは負の報酬を生成し得る。いくつかの実施形態では、報酬生成器345は、DLアルゴリズム335によって生成された類似性または適合性スコアの各値に対する報酬値を示す探索テーブルとして実施され得る。他の実施形態では、報酬生成器345は、報酬を生成するために他のメカニズムを実施し得る。動作1120において、報酬生成器345は、報酬信号340を介して報酬をDRLアルゴリズム315に送信する。処理1100は動作1125で終了する。
【0071】
図12を参照すると、本開示のいくつかの実施形態による、実例のユーザインターフェースまたはダッシュボード1200が示されている。ダッシュボード1200は、複数のエッジデバイス105の健康状態(例えばリソースヘッドルーム)を監視するためにユーザによって使用され得る。また、ダッシュボード1200は、エッジデバイス105にインストールするための、複数のエッジデバイス105の特定の1つに適したアプリケーションのグループ330を考察するためにユーザによって使用され得る。また、ダッシュボード1200は、エッジボックス105の特定の1つにインストールするための、アプリケーションのグループ330から1つまたは複数のアプリケーションをユーザが選択することを可能にし得る。例えば、ダッシュボード1200は、エッジデバイスのリスト1205(例えば複数のエッジデバイス105)を示す。ユーザは、この選択されたエッジデバイスへのインストールに適したアプリケーションのグループ1210を考察するために、エッジデバイスのリスト1205からエッジデバイスを選択し得る。ユーザは、選択されたエッジデバイスにインストールするためのアプリケーションのグループ1210の1つを選択し得る。
【0072】
ダッシュボード1200の特徴は例に過ぎず、何らかの方式で限定することを意図するものではないことが理解されよう。ダッシュボード1200の形状、サイズ、方向、位置設定、および他の特徴は、他の実施形態では、図示のものから変化し得る。したがって、ダッシュボード1200は、ユーザとバックエンドサーバ125との間の人間-コンピュータ間対話を容易にするユーザインターフェースを提供する。ダッシュボード1200は、グラフィカルユーザインターフェース(「GUI」:graphical user interface)を介してユーザからユーザ入力を受信し、これらのユーザ入力をバックエンドサーバ125に伝送するように構成される。また、ダッシュボード1200は、バックエンドサーバ125からの出力/情報を受信し、GUIを介してこれらの出力/情報をユーザに提示するように構成される。GUIは、様々なグラフィカルアイコン、ウィンドウ、視覚指標、メニュー、視覚ウィジェット、および、ユーザ対話を容易にするための他のしるしを提示し得る。他の実施形態では、ダッシュボード1200は、例えばテキストベースユーザインターフェースおよび他のマンマシンインターフェースを含む、他のタイプのユーザインターフェースとして構成され得る。したがって、ダッシュボード1200は、様々な方式で構成され得る。
【0073】
さらに、ダッシュボード1200は、様々な方式でユーザ入力を受信するように構成され得る。例えば、ダッシュボード1200は、ユーザなどの外部ソースが情報を入力することを可能にする(キーボード、スタイラスおよび/またはタッチスクリーン、マウス、トラックボール、キーパッド、マイクロフォン、音声認識、運動認識、リモートコントローラ、入力ポート、1つまたは複数のボタン、ダイヤル、ジョイスティック等を含むがこれらに限定されない)入力技術を使用して、ユーザ入力を受信するように構成され得る。また、ダッシュボード1200は、様々な方式で出力/情報をユーザに提示するように構成され得る。例えば、ダッシュボード1200は、ユーザ、メモリ、プリンタ、スピーカ等の外部システムに情報を提示するように構成され得る。したがって、図示されていないが、ダッシュボード1200は、様々なハードウェア、ソフトウェア、ファームウェア構成要素、またはその組合せと関連付けられ得る。一般的に言えば、ダッシュボード1200は、本明細書で説明される機能をバックエンドサーバ125が実施することを可能にする任意のタイプのハードウェア、ソフトウェア、および/またはファームウェア構成要素と関連付けられ得る。したがって、ダッシュボードは、ユーザからのユーザリクエスト(例えば入力)を受信し、このユーザリクエストをバックエンドサーバ125に伝送する。ユーザリクエストに応答して、バックエンドサーバ125は、1つまたは複数の動作を実施し得る(例えば、エッジボックスにアプリケーションをインストールし得る)。
【0074】
ここで図13を参照すると、本開示のいくつかの実施形態による、コンピューティングシステム1300の実例のブロック図が示されている。コンピューティングシステム1300は、バックエンドサーバ125の実例の実装形態を表し得る。したがって、コンピューティングシステム1300は、図1図12において上記で論じられた機能を実施するために使用され得る。コンピューティングシステム1300は、メモリデバイス1310と関連付けられたホストデバイス1305を含む。ホストデバイス1305は、1つまたは複数の入力デバイス1315から入力を受信し、出力を1つまたは複数の出力デバイス1320に提供するように構成され得る。ホストデバイス1305は、適切なインターフェース1325A、1325B、および1325Cを介してメモリデバイス1310、入力デバイス1315、および出力デバイス1320とそれぞれ通信するように構成され得る。コンピューティングシステム1300は、コンピュータ(例えば、デスクトップ、ラップトップ、サーバ、データセンタ等)、タブレット、パーソナルデジタルアシスタント、モバイルデバイス、他のハンドヘルドもしくは携帯型デバイス、または、ホストデバイス1305を使用したダム監視分析の実施に適した他の任意のコンピューティングユニットなどの様々なコンピューティングデバイスにおいて実施され得る。
【0075】
入力デバイス1315は、キーボード、スタイラス、タッチスクリーン、マウス、トラックボール、キーパッド、マイクロフォン、音声認識、運動認識、リモートコントローラ、入力ポート、1つまたは複数のボタン、ダイヤル、ジョイスティック、および、(ホストデバイス1305と関連付けられ、ユーザなどの外部ソースが情報(例えばデータ)をホストデバイスに入力し、命令をホストデバイスに送信することを可能にする)他の任意の入力周辺機器などの様々な入力技術のいずれかを含み得る。同様に、出力デバイス1320は、外部メモリ、プリンタ、スピーカ、ディスプレイ、マイクロフォン、発光ダイオード、ヘッドホン、ビデオデバイス、および、(ホストデバイス105から情報(例えばデータ)を受信するように構成された)他の任意の出力周辺機器などの様々な出力技術を含み得る。ホストデバイス1305に入力される「データ」、および/またはホストデバイスから出力される「データ」は、様々なテキストデータ、グラフィカルデータ、イメージ、その組合せ、または、コンピューティングシステム1300を使用した処理に適した他のタイプのアナログおよび/もしくはデジタルデータのいずれかを含み得る。
【0076】
ホストデバイス1305は、中央処理装置(「CPU」)コアまたはプロセッサ1330A~1330Nなどの、1つまたは複数の処理ユニット/プロセッサを含むか、これらと関連付けられる。CPUコア1330A~1330Nは、特定用途向け集積回路(「ASIC」)、フィールドプログラマブルゲートアレイ(「FPGA」)、または他の任意のタイプの処理ユニットとして提供され得る。CPUコア1330A~1330Nのそれぞれは、ホストデバイス1305の1つまたは複数のアプリケーションを動かすための命令を実行するように構成され得る。いくつかの実施形態では、1つまたは複数のアプリケーションを動かすのに必要な命令およびデータは、メモリデバイス1310に格納され得る。また、ホストデバイス1305は、1つまたは複数のアプリケーションの実行の結果をメモリデバイス1310に格納するように構成され得る。したがって、ホストデバイス1305は、様々な動作を実施するようにメモリデバイス1310にリクエストするように構成され得る。例えば、ホストデバイス1305は、データの読込み、データの書込み、データの更新もしくは削除、および/または管理または他の動作の実施をメモリデバイス1310にリクエストし得る。
【0077】
ホストデバイス1305が動かすように構成され得るこのような1つのアプリケーションは、プロファイリングアプリケーション1335でよい。プロファイリングアプリケーション1335は、上記で論じられた機能を実施するために、ホストデバイス1305のユーザによって使用され得るソフトウェアスイートまたはパッケージの一部でよい。いくつかの実施形態では、プロファイリングアプリケーション1335を実行するか動かすのに必要な命令は、メモリデバイス1310に格納され得る。プロファイリングアプリケーション1335は、メモリデバイス1310からのプロファイリングアプリケーションと関連付けられた命令を使用して、CPUコア1330A~1330Nの1つまたは複数によって実行され得る。さらに図13を参照すると、メモリデバイス1310は、メモリアレイ1345からデータを読み書きするように構成されたメモリコントローラ1340を含む。いくつかの実施形態では、メモリアレイ1345は、様々な揮発性および/または不揮発性メモリを含み得る。例えば、いくつかの実施形態では、メモリアレイ1345は、NANDフラッシュメモリコア、NORフラッシュメモリコア、スタティックランダムアクセスメモリ(SRAM)コア、ダイナミックランダムアクセスメモリ(DRAM)コア、磁気抵抗型ランダムアクセスメモリ(MRAM)コア、位相変化型メモリ(PCM)コア、抵抗変化型メモリ(ReRAM)コア、3D XPointメモリコア、強誘電体ランダムアクセスメモリ(FeRAM)コア、および、メモリアレイ内での使用に適した他のタイプのメモリコアを含み得る。一般的に言えば、メモリアレイ1345は、様々なランダムアクセスメモリ(RAM)、リードオンリメモリ(ROM)、プログラマブルROM(PROM)、消去可能PROM(EPROM)、電気的EPROM(EEPROM)、ハードディスクドライブ、フラッシュドライブ、メモリテープ、光学ドライブ、クラウドメモリ、または、本明細書で説明される動作の実施に適した1次および/もしくは2次メモリの任意の組合せのいずれかを含み得る。
【0078】
メモリアレイ1345内のメモリは、メモリコントローラ1340によって個別かつ独立して制御され得る。言い換えれば、メモリコントローラ1340は、メモリアレイ1345内の各メモリと個別かつ独立して通信するように構成され得る。メモリアレイ1345と通信することによって、メモリコントローラ1340は、ホストデバイス1305から受信された命令に応答して、メモリアレイからデータを読み書きするように構成され得る。メモリデバイス1310の一部として示されているが、いくつかの実施形態では、メモリコントローラ1340は、ホストデバイス1305の一部またはコンピューティングシステム1300の別の構成要素の一部でよく、メモリデバイスと関連付けられ得る。メモリコントローラ1340は、本明細書で説明される機能を実施するための、ソフトウェア、ハードウェア、ファームウェア、またはその組合せにおける論理回路として実施され得る。例えば、いくつかの実施形態では、メモリコントローラ1340は、ホストデバイス1305からリクエストを受信すると、メモリデバイス1310のメモリアレイ1345に格納されたプロファイリングアプリケーション1335と関連付けられた命令を検索するように構成され得る。
【0079】
コンピューティングシステム1300のいくつかの構成要素だけが図13に示され、説明されていることが理解されよう。それでも、コンピューティングシステム1300は、様々な電池および電源、ネットワーキングインターフェース、ルータ、スイッチ、外部メモリシステム、コントローラ等の他の構成要素を含み得る。一般的に言えば、コンピューティングシステム1300は、本明細書で説明される機能を実施する際に必要であるか、望ましいと考えられる様々なハードウェア、ソフトウェア、および/またはファームウェア構成要素のいずれかを含み得る。同様に、メモリコントローラ1340およびメモリアレイ1345を含むホストデバイス1305、入力デバイス1315、出力デバイス1320、およびメモリデバイス1310は、本明細書で説明される機能を実施する際に必要または望ましいと考えられる他のハードウェア、ソフトウェア、および/またはファームウェア構成要素をそれぞれ含み得る。
【0080】
DDPGがDRLアルゴリズム315の例として使用され、CNNがDLアルゴリズム335の例として使用されているが、他の実施形態では、他の適切な技法およびアルゴリズムが、DRLアルゴリズムおよびDLアルゴリズムのそれぞれのために使用され得る。さらに、上記で使用されるいずれかの例は説明のために過ぎず、何らかの方式で本開示の範囲を限定することを意図するものではないことが理解されよう。
【0081】
本明細書で説明される主題は、時には、他の種々の構成要素に収めた、または接続された種々の構成要素を示す。このような描写されたアーキテクチャは例示に過ぎず、実際には、同じ機能を実現する他の多くのアーキテクチャを実施できることが理解されよう。概念的な意味では、同じ機能を実現するための構成要素の任意の配置が、所望の機能が実現されるように効果的に「関連付けられる」。したがって、特定の機能を実現するために組み合わされた本明細書における任意の2つの構成要素は、アーキテクチャまたは中間構成要素に関わらず、所望の機能が実現されるように、互いに「関連付けられる」ものとみなすことができる。同様に、そのように関連付けられた任意の2つの構成要素は、また、所望の機能を実現するために互いに「動作接続される」または「動作連結される」ものとみなすことができ、そのように関連付けられることが可能な任意の2つの構成要素は、また、所望の機能を実現するために互いに「動作連結可能」とみなすることができる。動作連結可能の具体例は、物理的に接合可能なおよび/もしくは物理的に相互作用する構成要素、ならびに/または、ワイヤレスで相互作用可能なおよび/もしくはワイヤレスで相互作用する構成要素、ならびに/または、論理的に相互作用するおよび/もしくは論理的に相互作用可能な構成要素を含むがこれらに限定されない。
【0082】
本明細書における実質的に任意の複数形および/または単数形の用語の使用について、当業者は、文脈および/または用途に適切なように、複数形から単数形に、および/または単数形から複数形に変換することができる。様々な単数形/複数形の並べ替えは、明瞭さのために本明細書において明確に示され得る。
【0083】
一般的に、本明細書で、および特に添付の特許請求の範囲(例えば、添付の特許請求の範囲の本体)で使用される用語は、一般に、「オープンな」用語であることが意図される(例えば、用語「含む(including)」は「含むがこれらに限定されない」と解釈されるべきであり、用語「有する(having)」は「少なくとも有する」と解釈されるべきであり、用語「含む(includes)」は「含むがこれらに限定されない」と解釈されるべきである、等である)ことが当業者によって理解されよう。特定の数の導入される請求項の列挙が意図される場合、このような意図は特許請求の範囲に明示的に列挙されることになり、このような列挙がない場合、このような意図がないことが当業者によってさらに理解されよう。例えば、理解の補助として、以下の添付の特許請求の範囲は、請求項の列挙を導入するための導入句「少なくとも1つ」および「1つまたは複数」の使用を収め得る。それでも、このような句の使用は、同じ請求項が、導入句「1つまたは複数」または「少なくとも1つ」および「a」または「an」などの不定冠詞を含むときでも、不定冠詞「a」または「an」による請求項の列挙の導入が、このような導入される請求項の列挙を収めるいずれかの特定の請求項をただ1つのこのような列挙を収める発明に限定することを示唆するものと解釈されるべきではなく(例えば、「a」および/または「an」は典型的には、「少なくとも1つ」または「1つまたは複数」を意味するものと解釈されるべきである)、同じことが、請求項の列挙を導入するために使用される定冠詞の使用にも当てはまる。さらに、特定の数の導入される請求項の列挙が明示的に列挙される場合でも、このような列挙が典型的には、列挙される数を少なくとも意味するものと解釈されるべきであることを当業者は認識するであろう(例えば、他の修飾語のない「2つの列挙」の何もない列挙は典型的には、少なくとも2つの列挙、または2つ以上の列挙を意味する)。さらに、「A、B、およびCの少なくとも1つ、等」に似た慣例が使用される事例では、一般的に、このような構造は、当業者が慣例を理解するはずの意味で意図される(例えば、「A、B、およびCの少なくとも1つを有するシステム」は、Aを単独で、Bを単独で、Cを単独で、AとBを一緒に、AとCを一緒に、BとCを一緒に、ならびに/またはA、B、およびCを一緒に有する等のシステムを含むがこれらに限定されないはずである)。「A、B、またはCの少なくとも1つ、等」に似た慣例が使用される事例では、一般的に、このような構造は、当業者が慣例を理解するはずの意味で意図される(例えば、「A、B、またはCの少なくとも1つを有するシステム」は、Aを単独で、Bを単独で、Cを単独で、AとBを一緒に、AとCを一緒に、BとCを一緒に、ならびに/またはA、B、およびCを一緒に有する等のシステムを含むがこれらに限定されないはずである)。事実上、2つ以上の代替用語を提示する任意の離接語および/または句は、説明、請求項、または図面内であろうと、用語の1つ、用語のどちらか、または両方の用語を含む可能性を想定するものと理解されるべきであることが当業者によってさらに理解されよう。例えば、句「AまたはB」は、「A」または「B」または「AおよびB」の可能性を含むものと理解されよう。さらに、別途注釈のない限り、単語「およそ(approximate)」、「約(about)」、「およそ(around)」、「実質的に(substantially)」等の使用は、プラスマイナス10%を意味する。
【0084】
例証的実施形態の前記の記述は、例証および説明のために提示された。これは、網羅的であること、または開示された正確な形式で限定することを意図するものではなく、修正および変更が上記の教示の観点から可能であるか、または、開示の実施形態の実践から獲得され得る。本明細書に添付の特許請求の範囲、およびその同等物によって本発明の範囲が定義されることを意図するものである。
【符号の説明】
【0085】
100 アプリケーションプロファイリングシステム、アプリケーションプロファイリング
105 エッジデバイス、エッジボックス、ホストデバイス
110A エッジデバイス、アプリケーションが監視される必要があるエッジボックス
110B エッジデバイス、アプリケーションが監視される必要があるエッジボックス
110C エッジデバイス、アプリケーションが監視される必要があるエッジボックス
110D エッジデバイス、アプリケーションが監視される必要があるエッジボックス
115 エージェント
115A エージェント、エッジボックスにインストールされたデータ収集エージェント
115B エージェント、エッジボックスにインストールされたデータ収集エージェント
115C エージェント、エッジボックスにインストールされたデータ収集エージェント
115D エージェント、エッジボックスにインストールされたデータ収集エージェント
120 ストリーミングフレームワーク、Kafkaストリーミングフレームワーク
125 サーバ、バックエンドサーバ、エッジ健康監視および性能調整のためのバックエンドサーバ
130 クライアントマシン
135 プロセッサ
140 メモリデバイス
145 データベース、時系列データベース(Influx)
200 時系列マップ
205 範囲
210 範囲
215 範囲
220 プロット
225 プロット
230 プロット
235 CPUのリソースヘッドルーム
300 サーバ
305 意思決定構成要素、RL構成要素
310 ヘッドルーム適合性測定構成要素
315 DRLアルゴリズム、アプリケーションのグループを選択するためのDRLアルゴリズム
320 アプリケーション
320A アプリケーション、アプリケーション1
320B アプリケーション、アプリケーション2
320N アプリケーション、アプリケーションN
325 時系列マップ、リソース利用状況データ
325A 時系列マップ、時系列1
325B 時系列マップ、時系列2
325N 時系列マップ、時系列N
330 アプリケーションのグループ
335 深層学習(DL)アルゴリズム、深層学習ベース時系列類似性測定
340 報酬信号
345 報酬生成器
350 適合性スコア
355 リソースヘッドルーム
360 エッジボックス、エッジデバイス
400 状態機械
405 エージェント
410 環境
415 状態
420 アクション
500 DRLアルゴリズムのエージェント、エージェント、DRLエージェント
505 環境
515 アプリケーション
515A アプリケーション、アプリケーション1
515B アプリケーション、アプリケーション2
515N アプリケーション、アプリケーションN
520 リソースヘッドルーム、リソースヘッドルームデータ
525 環境の状態、状態、S1(現在の状態)
530 アクション、At(アクション)
535 報酬、Rt(報酬)
600 決定論的深層ポリシ勾配(DDPG)アルゴリズム
605 メインポリシネットワーク(アクター)、アクター
610 メインネットワーク
615 メインQネットワーク(クリティック)、クリティック
620 ターゲットポリシネットワーク(アクター)、アクター
625 ターゲットネットワーク
630 ターゲットQネットワーク(クリティック)、クリティック
635 ポリシ勾配
800 DLアルゴリズム335の実例のブロック図、ブロック図
805 訓練フェーズ
810 推測フェーズ
815 データ収集フェーズ、データフェーズ
820 ニューラルネットワークフェーズ
1200 ダッシュボード
1205 エッジデバイスのリスト
1210 アプリケーションのグループ
1300 コンピューティングシステム
1305 ホストデバイス
1310 メモリデバイス
1315 入力デバイス
1320 出力デバイス
1325A インターフェース
1325B インターフェース
1325C インターフェース
1330A プロセッサ、CPUコア
1330N プロセッサ、CPUコア
1335 プロファイリングアプリケーション、ダム監視アプリケーション
1340 メモリコントローラ
1345 メモリアレイ
図1
図2
図3
図4
図5
図6A
図6B
図7
図8
図9
図10
図11
図12
図13