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

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

▶ アマゾン テクノロジーズ インコーポレイテッドの特許一覧

特許7180907接続されたアクセラレータベースの推論サービス
<>
  • 特許-接続されたアクセラレータベースの推論サービス 図1
  • 特許-接続されたアクセラレータベースの推論サービス 図2
  • 特許-接続されたアクセラレータベースの推論サービス 図3
  • 特許-接続されたアクセラレータベースの推論サービス 図4
  • 特許-接続されたアクセラレータベースの推論サービス 図5
  • 特許-接続されたアクセラレータベースの推論サービス 図6
  • 特許-接続されたアクセラレータベースの推論サービス 図7
  • 特許-接続されたアクセラレータベースの推論サービス 図8
  • 特許-接続されたアクセラレータベースの推論サービス 図9
  • 特許-接続されたアクセラレータベースの推論サービス 図10
  • 特許-接続されたアクセラレータベースの推論サービス 図11
  • 特許-接続されたアクセラレータベースの推論サービス 図12
  • 特許-接続されたアクセラレータベースの推論サービス 図13
  • 特許-接続されたアクセラレータベースの推論サービス 図14
  • 特許-接続されたアクセラレータベースの推論サービス 図15
  • 特許-接続されたアクセラレータベースの推論サービス 図16
  • 特許-接続されたアクセラレータベースの推論サービス 図17
  • 特許-接続されたアクセラレータベースの推論サービス 図18
  • 特許-接続されたアクセラレータベースの推論サービス 図19
  • 特許-接続されたアクセラレータベースの推論サービス 図20
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-11-21
(45)【発行日】2022-11-30
(54)【発明の名称】接続されたアクセラレータベースの推論サービス
(51)【国際特許分類】
   G06F 9/50 20060101AFI20221122BHJP
   G06F 9/38 20060101ALI20221122BHJP
   G06F 9/455 20060101ALI20221122BHJP
   G06N 20/00 20190101ALI20221122BHJP
【FI】
G06F9/50 120Z
G06F9/38 370C
G06F9/455 150
G06F9/50 150A
G06N20/00
【請求項の数】 17
(21)【出願番号】P 2020569180
(86)(22)【出願日】2019-06-24
(65)【公表番号】
(43)【公表日】2021-10-21
(86)【国際出願番号】 US2019038670
(87)【国際公開番号】W WO2020005806
(87)【国際公開日】2020-01-02
【審査請求日】2021-02-02
(31)【優先権主張番号】16/020,776
(32)【優先日】2018-06-27
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】16/020,819
(32)【優先日】2018-06-27
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】16/020,810
(32)【優先日】2018-06-27
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】16/020,788
(32)【優先日】2018-06-27
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】506329306
【氏名又は名称】アマゾン テクノロジーズ インコーポレイテッド
(74)【代理人】
【識別番号】110000877
【氏名又は名称】弁理士法人RYUKA国際特許事務所
(72)【発明者】
【氏名】セングプタ、スディプタ
(72)【発明者】
【氏名】ペルマッラ、プールナ チャンド シュリニヴァス
(72)【発明者】
【氏名】ディヴァカルニ、ドミニク ラジーヴ
(72)【発明者】
【氏名】ブシャラ、ナフィア
(72)【発明者】
【氏名】ディラック、リオ パーカー
(72)【発明者】
【氏名】サハ、ブラティン
(72)【発明者】
【氏名】ウッド、マシュー ジェームズ
(72)【発明者】
【氏名】オルギアティ、アンドレア
(72)【発明者】
【氏名】シヴァスブラマニアン、スワミナタン
【審査官】坂東 博司
(56)【参考文献】
【文献】特表2011-524049(JP,A)
【文献】米国特許出願公開第2018/052709(US,A1)
【文献】米国特許出願公開第2017/195173(US,A1)
【文献】米国特許出願公開第2018/0276044(US,A1)
【文献】米国特許出願公開第2014/0282584(US,A1)
【文献】高野 了成,外4名,「異種AIエンジン統合クラウドの実現に向けたシステムソフトウェアFlow OSの構想」,情報処理学会 研究報告 システムソフトウェアとオペレーティング・システム(OS) 2017-OS-139 [online] ,情報処理学会,2017年02月22日,pp.1-7
【文献】@Vengineer,「最新人工知能テクロノジの研究・・・TensorFlowウォッチ2018」,Interface,CQ出版株式会社,2018年08月01日,第44巻,第8号,pp.152-158
【文献】高野 了成,外4名,「アクセラレータクラウドを実現するシステムソフトウェアFlowOSの提案」,情報処理学会 研究報告 ハイパフォーマンスコンピューティング(HPC) 2018-HPC-163 [online] ,情報処理学会,2018年02月21日,pp.1-7
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/50
G06F 9/38
G06F 9/455
G06N 20/00
(57)【特許請求の範囲】
【請求項1】
マルチテナントウェブサービスプロバイダにおいて、アプリケーションインスタンス構成を受信することであって、アプリケーションインスタンスのアプリケーションは、アクセラレータスロットの形式で接続されたアクセラレータのある部分を機械学習モデルの実行中に利用し、前記アプリケーションインスタンス構成は、
使用する中央処理装置(CPU)能力の指示、
使用する前記機械学習モデルの算術精度、
使用する前記アクセラレータの能力の指示、
前記アプリケーションの記憶場所、及び
使用するランダムアクセスメモリの量の指示
を含む、前記アプリケーションインスタンス構成を受信することと、
前記アプリケーションインスタンスと、前記アクセラレータスロットとをプロビジョニングすることであって、前記アプリケーションインスタンスは、第1のインスタンス位置の物理的計算インスタンスを使用して実施され、前記アクセラレータスロットは、第2の位置の物理アクセラレータを使用して実施され、前記物理アクセラレータは、ネットワークを介して前記物理的計算インスタンスにアクセス可能である、前記アプリケーションインスタンスと、前記アクセラレータスロットと、をプロビジョニングすることと、
前記アクセラレータスロットの部分を前記アプリケーションインスタンスに接続することと、
前記機械学習モデル前記アクセラレータスロットの前記接続された部分にロードすることと、
記アクセラレータスロットの前記接続された部分を使用して、前記アプリケーションの前記ロードされた機械学習モデルを使用する推論を実行することと、
を含み、
前記第2の位置は、前記マルチテナントウェブサービスプロバイダ内のリソースの位置の最適化を実行するための位置選択機能を使用して決定される、コンピュータ実装方法。
【請求項2】
前記推論を実行することは、推論要求を処理することを備え、
前記アプリケーションインスタンスで使用するための複数の前記アクセラレータスロットを構成することと、
前記アプリケーションインスタンスによって、前記推論要求を受信することと、
前記複数のアクセラレータスロットに前記推論要求に含まれる推論要求データを送信することと、
前記複数のアクセラレータスロットのうちの1つからの応答を受信することと、
前記複数のアクセラレータスロットのうち、接続されたアクセラレータスロットの接続を解除し、前記複数のアクセラレータスロットのうち、異なるアクセラレータスロットを接続するか否かを決定するために、前記応答のタイミングを追跡することと
を含む、請求項1に記載のコンピュータ実装方法。
【請求項3】
前記機械学習モデルは、訓練から得られた推論及び重みの計算グラフの記述を含む、請求項1または2に記載のコンピュータ実装方法。
【請求項4】
前記機械学習モデルは、テンソルフロー、MXNet、またはONNXフォーマットである、請求項1から3のいずれか一項に記載のコンピュータ実装方法。
【請求項5】
前記アプリケーションインスタンスと前記アクセラレータスロットの前記接続された部分とは、異なる仮想ネットワーク内にある、請求項1から4のいずれか一項に記載のコンピュータ実装方法。
【請求項6】
前記アクセラレータは、アクセラレータアプライアンスの複数のアクセラレータのうちの1つである、請求項1から5のいずれか一項に記載のコンピュータ実装方法。
【請求項7】
前記アクセラレータアプライアンスは、異なる能力のアクセラレータを含む、請求項に記載のコンピュータ実装方法。
【請求項8】
前記複数のアクセラレータの計算能力に応じて、前記複数のアクセラレータにより、前記アクセラレータアプライアンスの中央処理装置が共有される、請求項に記載のコンピュータ実装方法。
【請求項9】
前記アクセラレータスロットの前記接続された部分と、
前記アクセラレータスロットの前記接続された部分の接続を解除することと、
前記機械学習モデルを、前記接続されたアクセラレータの別のスロットに移行することと、
をさらに含む、請求項1から8のいずれか一項に記載のコンピュータ実装方法。
【請求項10】
前記アクセラレータスロットの前記接続された部分の接続を解除することと、
前記機械学習モデルを別のアクセラレータのアクセラレータスロットに移行することと、
をさらに含む、請求項1から8のいずれか一項に記載のコンピュータ実装方法。
【請求項11】
記アクセラレータスロットの前記接続された部分を使用して、前記アプリケーションの前記ロードされた機械学習モデルを使用する推論を実行する前に、前記ロードされた機械学習モデルに基づいて使用する推論エンジンを決定すること
をさらに含む、請求項1から10のいずれか一項に記載のコンピュータ実装方法。
【請求項12】
前記推論エンジンは、前記機械学習モデルのフォーマットのバージョンと互換性がある、請求項11に記載のコンピュータ実装方法。
【請求項13】
アプリケーションであって、機械学習モデルを含む前記アプリケーションを記憶するストレージと、第2の1つまたは複数の電子デバイスによって実装される弾力的推論サービスとを含むシステムであって、前記弾力的推論サービスは、マルチテナントウェブサービスプロバイダ内のリソースの位置の最適化を実行する位置選択機能、アプリケーションインスタンス及びアクセラレータアプライアンスを含み、
前記弾力的推論サービスは、
前記アプリケーションインスタンスの構成を受信することであって、前記アプリケーションインスタンスの前記アプリケーションは、前記アクセラレータアプライアンスのアクセラレータスロットの形式で接続されたアクセラレータのある部分を前記機械学習モデルの実行中に利用し、前記アプリケーションインスタンスの構成は、
使用する中央処理装置(CPU)能力の指示
使用する前記機械学習モデルの算術精度、
使用するアクセラレータの能力の指示、
前記アプリケーションの記憶場所、及び
使用するランダムアクセスメモリの量の指示
を含む、前記アプリケーションインスタンスの構成を受信することと、
前記アプリケーションインスタンスと前記アクセラレータスロットとをプロビジョニングすることであって、前記アプリケーションインスタンスは、第1のインスタンス位置の物理的計算インスタンスを使用して実施され、前記アクセラレータスロットは、第2の位置の物理アクセラレータを使用して実施され、前記物理アクセラレータは、ネットワークを介して前記物理的計算インスタンスにアクセス可能である、前記アプリケーションインスタンスと前記アクセラレータスロットとをプロビジョニングすることと、
前記アクセラレータスロットの部分を前記アプリケーションインスタンスに接続することと、
前記機械学習モデルを前記アクセラレータスロットの前記接続された部分にロードすることと、
記アクセラレータスロットの前記接続された部分を使用して、前記アプリケーションの前記ロードされた機械学習モデルを使用する推論を実行すること、
であり、
前記第2の位置は、前記位置選択機能を使用して決定される、システム。
【請求項14】
推論を実行するために、前記弾力的推論サービスは、
前記アプリケーションインスタンスで使用するための複数の前記アクセラレータスロットを構成し、
前記アプリケーションインスタンスによって、推論要求を受信し、
前記複数のアクセラレータスロットに、前記推論要求に含まれる推論要求データを送信し、
前記複数のアクセラレータスロットのうちの1つからの応答を受信し、
前記複数のアクセラレータスロットのうち、接続されたアクセラレータスロットの接続を解除し、前記複数のアクセラレータスロットのうち、異なるアクセラレータスロットを接続するか否かを決定するために、前記応答のタイミングを追跡する
請求項13に記載のシステム。
【請求項15】
前記弾力的推論サービスは、前記アクセラレータスロットの前記接続された部分の接続を解除し、前記機械学習モデルを前記接続されたアクセラレータの異なるスロットに移行する、請求項13または14に記載のシステム。
【請求項16】
前記弾力的推論サービスは、前記アクセラレータスロットの前記接続された部分の接続を解除し、前記機械学習モデルを別のアクセラレータのアクセラレータスロットに移行する、請求項13から15のいずれか一項に記載のシステム。
【請求項17】
前記機械学習モデルは、訓練から得られる推論と重みの計算グラフの記述を含む、請求項13から16のいずれか一項に記載のシステム。
【発明の詳細な説明】
【背景技術】
【0001】
深層学習が様々なアプリケーションで普及するにつれ、顧客は製造中での実行が困難で費用がかかると感じている。今日、顧客はGPUを使用して、干渉ワークロードを実行するパフォーマンスと効率を向上させているが、容量を過剰にプロビジョニングせずにそれを行うことは困難であり、無駄で費用がかかる場合がある。深層学習推論を実行するコストは、アプリケーションインフラストラクチャ全体のかなりの部分を占めており、これらのワークロードを大規模に実行する際の非効率性は、法外なコストになる可能性がある。
【0002】
本開示に従った様々な実施形態を、図面を参照して記載する。
【図面の簡単な説明】
【0003】
図1】弾力的推論サービスを利用するシステムの実施形態を示す。
図2】弾力的推論サービスの実施形態を示す。
図3】データプレーンの態様及び制御プレーンの態様を含む弾力的推論を可能にするシステムの実施形態を示す。
図4】アプライアンスプロビジョニングの方法の例をスイムレーン図として示す。
図5】アクセラレータアプライアンスプロビジョニングの実施形態を示す。
図6】アクセラレータアプライアンスの事前接続の実施形態を示す。
図7】アプライアンス接続の方法の例をスイムレーン図として示す。
図8】アクセラレータアプライアンス接続の実施形態を示す。
図9】アプライアンスの接続解除/リサイクルの方法の例をスイムレーン図として示す。
図10】アプリケーションインスタンスとアクセラレータアプライアンスの間のインタラクションを含む弾力的推論のためにアクセラレータを使用する方法のスイムレーン図の実施形態を示す。
図11】弾力的推論サービスを実施する際にウェブサービスプロバイダによって行われる方法の実施形態を示す。
図12】弾力的推論サービスを実施する際にウェブサービスプロバイダによって行われる方法の実施形態を示す。
図13】弾力的推論サービスを実施する際にウェブサービスプロバイダによって行われる方法の実施形態を示す。
図14】アクセラレータベースの推論サービスを使用するシステムの実施形態を示す。
図15】一部の実施形態によるプロバイダネットワーク環境の例を示す。
図16】一部の実施形態による、IPトンネリング技術を使用してネットワーク基板上にオーバーレイネットワークを実装するデータセンタの例を示す。
図17】一部の実施形態による、プロバイダネットワーク上の仮想ネットワークを少なくとも一部の顧客に提供するプロバイダネットワークの例を示す。
図18】一部の実施形態で使用され得るコンピュータシステムの例を示すブロック図である。
図19】様々な実施形態に従って利用できる例示的なコンピューティングデバイスの一般的なコンポーネントのセットの論理配置を示す。
図20】様々な実施形態による態様を実施するための環境の例を示す。
【発明を実施するための形態】
【0004】
弾力的機械学習サービスのための方法、装置、システム、及び非一時的コンピュータ可読記憶媒体の様々な実施形態を記載する。詳細には、アクセラレータのスロットは、推論アプリケーション(推論呼び出しを含むアプリケーション)に接続されてよく、より大きなアプリケーションのパイプラインの一部として使用されてよい。
【0005】
弾力的機械学習/推論(El)サービスは、計算インスタンスで実行されているアプリケーションにコスト効率の高いハードウェアアクセラレーションを提供する。接続及び使用は、アクセラレータを追加または除去することができ、精度及び/または速度の複数の選択肢があるという点で弾力的である。そのため、開発者は、完全なアクセラレータ(グラフィックス処理ユニット(GPU)全体など)を使用せずに、より多くの場所にハードウェアアクセラレーションを組み込むことができる。さらに、Elサービスは、ハードウェアに依存しないインタフェースを介して基盤となるハードウェアを覆い隠し、サービスプロバイダが、コストと能力に応じて、その下に異種ハードウェアを展開し、急速に移行する深層学習/人工知能ハードウェア状況に適応するのを可能にする。さらに、Elインタフェース(アクセラレータスロットの接続及び/またはアクセラレータスロットとアプリケーション間の通信を可能にするコマンド)を介して、単一のアクセラレータチップを複数の推論アプリケーション(顧客インスタンスなど)間で仮想化できる。
【0006】
異なる機械学習ワークロードが、コア機械学習(ML)機能の他に異なる量の前処理と後処理の要件を有すると、必要なCPU、DRAM、ハードウェアアクセラレーションリソースの量は各ワークロードに関して同じではない。記載のElサービスによって提供される機械学習の計算効率とアクセラレーションに必要なハードウェアリソースの分離により、開発者は計算インスタンスで中央処理ユニット(CPU)とメモリ(ダイナミックランダムアクセスメモリ(DRAM)など)のサイズを個別に設定できる。
【0007】
図1は、弾力的推論サービスを利用するシステムの実施形態を示す。この図では、弾力的推論サービス105は、ウェブサービスプロバイダ101によって提供されるサービスである。ウェブサービスプロバイダ101は、マルチテナントの計算能力及び/またはストレージ能力を提供する。
【0008】
一部の実施形態では、ウェブサービスプロバイダ101のフロントエンド103は、ウェブサービスプロバイダ101のユーザ(顧客など)がウェブサービスプロバイダ101の基礎となるサービスとインタラクトするための導管である。例えば、ユーザデバイス121は、フロントエンド103を介して弾力的推論サービス105とインタラクトする。このインタラクションは、弾力的推論サービス105の構成、及び弾力的推論サービス105からの結果の受信を含んでよい。インタラクションは、アプリケーションプログラミングインタフェース(API)呼び出し及び/またはコマンドラインインタフェースの使用を介してよい。一部の実施形態では、弾力的推論サービス105に直接、結合する。DescribeElasticInferenceAccelerators、RunInstances、StartInstances等、API呼び出しが、一部の実施形態で利用される。
【0009】
弾力的推論サービス105は、特定のソフトウェアコンポーネントのセットを実行してアクセラレータを提供するアクセラレータアプライアンスのプールを管理する。弾力的推論105を利用して、アクセラレータ上で実行されるコードの少なくとも一部(モデルなど)を含むアプリケーションを実行する。これらのアクセラレータアプライアンスは、サービスが所有する仮想ネットワークに存在する。内部的に、アクセラレータは、アクセラレータアプライアンスから計算リソースの一部を含むアクセラレータスロットにマッピングする。アクセラレータアプライアンスは、複数のアクセラレータスロットを含むアクセラレータをホストしてよい。アクセラレータアプライアンスでホストされるアクセラレータスロットの数は、アクセラレータの構成とアクセラレータアプライアンスの構成とに応じて決まる。
【0010】
ユーザは、アプリケーションインスタンスを起動し、ユーザが指定した構成に従ってアクセラレータを接続するように要求してよい(本明細書で例を詳しく記載する)。弾力的推論サービス105の制御プレーンは、少なくとも1つのアクセラレータスロットをプロビジョニングし、1つまたは複数のスロットをユーザのアプリケーションインスタンスに接続する要求を処理する。構成は、使用するアクセラレータスロット(複数可)の詳細を指示してよい、または弾力的推論サービス105がそれを行ってよい。接続後、アクセラレータスロット(複数可)は、ユーザの仮想ネットワークから、またはより直接的な接続(PCIe接続など)を介してアクセス可能である。
【0011】
上記のように、弾力的推論サービス105は、推論などの機械学習タスクのためのマルチテナンシアクセラレーションをサポートする。ストレージ113A及び/または113Bを使用して、弾力的推論サービス105で実行される1つまたは複数のモデルを含む1つまたは複数のアプリケーションを記憶する。アプリケーションは、弾力的推論サービス105によって、コンテナとしてホストされてよい、または仮想マシンの一部として実行されてよい。
【0012】
データソース(複数可)109A及び109Bは、弾力的推論サービス105によって実行されるアクセラレータによって処理されるスコアリングデータを提供する。
【0013】
一部の実施形態では、弾力的推論サービス105は、ウェブサービスプロバイダ101のオファリングの一部ではなく、ユーザデバイス121などのユーザデバイス上にあるが、簡潔にするために、以下の説明のほとんどは、ウェブサービスプロバイダを例として使用する。
【0014】
番号の付いたサークルは、例示的なフローを示す。サークル1において、ユーザデバイス121は、ウェブサービスプロバイダ101に、弾力的推論サービス105の構成を通信する。具体的には、ユーザデバイス121は、弾力的推論サービス105によって制御されるアクセラレータ上で実行するモデルを含むストレージ113Aからのアプリケーションをホストするように弾力的推論サービス105を構成する。
【0015】
サークル2において、この構成は、弾力的推論サービス105に提供され、弾力的推論サービス105は、サークル3でストレージ113Aに接続し、モデルにアクセス及びモデルをロードし、モデルが弾力的推論サービス105のアクセラレータ上で実行できるかどうかを決定する。一部の実施形態では、弾力的推論サービス105はまた、アクセラレータがモデルをどのように実行すべきかを決定する。
【0016】
サークル4Aまたは4Bでは、データソース109Aまたは109Bは、スコアリングデータをフロントエンド103に提供する。このスコアリングデータは、処理のために弾力的推論サービス105に転送され、結果は、サークル5でフロントエンド103に戻される。結果は、ストレージ113Aまたは113Bに記憶されてもよい。最後に、結果がユーザデバイス121に提供される(要求された場合)。
【0017】
図2は、弾力的推論サービス105の実施形態を示す。この弾力的推論サービス105は、ウェブサービスプロバイダオファリングの一部であってよい、またはユーザデバイス上のエンジンとしてであってよい(ただし、上記のように簡潔にするために、「サービス」を本出願書を通して使用する)。具体的には、図に示すものは、弾力的推論サービス105のデータプレーンと見なすことができる。図に示すように、データプレーンは、クライアントコンポーネント(アプリケーションインスタンス211の一部)及びサーバコンポーネント(アクセラレータアプライアンス221)を含む。クライアントコンポーネントは、アプリケーションインスタンス211にインストールされたクライアントライブラリ実装として配信される。クライアントライブラリは、アプリケーションインスタンス211からリモートに接続されたアクセラレータアプライアンス221に推論呼び出しを転送する。一部の実施形態では、アクセラレータアプライアンス221は、アプリケーションインスタンス211からテンソルを受け取り、テンソルを返す。
【0018】
アプリケーションインスタンス211は、アプリケーション213を実行するCPU212、メモリ、ストレージ、及びネットワーク容量の特定の構成を使用する仮想コンピューティング環境である。一部の実施形態では、構成はインスタンスタイプと呼ばれる。アプリケーションインスタンス(オペレーティングシステムを含む)のテンプレートは、マシンイメージと呼ばれる。アプリケーション213は、アプリケーション213の一部が少なくとも1つのアクセラレータスロットに対して推論呼び出しを行うことを強調するために、以下では「推論アプリケーション」と呼ばれてよい。しかしながら、アプリケーション213は通常、他のコードを含み、推論呼び出しは通常、アプリケーションパイプラインの1つの側面である。
【0019】
ユーザによって指定されたインスタンスタイプは、ウェブサービスプロバイダ101内のインスタンスに使用されるホストコンピュータのハードウェアを決定する。各インスタンスタイプは、異なる計算能力、メモリ能力、及びストレージ能力を提供し、これらの能力に基づいてインスタンスファミリにグループ化される。
【0020】
同様に、アクセラレータアプライアンス221(別の計算インスタンス)は、アプリケーション213の機械学習モデルを実行するCPU224、メモリ、ストレージ、及びネットワーク容量の特定の構成を使用する。アクセラレータアプライアンス221はさらに、1つまたは複数のアクセラレータ222へのアクセスを有する。各アクセラレータ222は、1つまたは複数のアクセラレータスロット223から構成される。具体的には、アクセラレータアプライアンス221の計算リソースは、マルチテナント環境での一貫した持続的なパフォーマンスのために、アクセラレータスロット223間で分割され、配分され、リソースが管理され、分離される。CPU224で実行されるコードは、オンボードアクセラレータを調整し、推論エンジンランタイムを実行し、アクセラレータ222に計算をオフロードする。競合する可能性のあるアクセラレータアプライアンス221のリソースは、CPU224、メモリ、アクセラレータ、アクセラレータメモリ、通信チャネル281(PCIeなどの直接接続またはネットワーク接続等)、ディスク、及びホストからインターコネクト(PCIeなど)の帯域幅を含む。アクセラレータスロット223は、アプリケーションインスタンス211の呼び出しを処理する。
【0021】
リソースの管理と分離は、アプライアンス管理コンポーネント241を使用して、アクセラレータスロット223全体へのリソースの静的パーティショニングによってアクセラレータスロット223全体で要求の干渉を低減/軽減してよい。静的パーティショニングは通常、アクセラレータアプライアンス221で、CPUコアとメモリ、アクセラレータ計算とメモリ、及びネットワーク帯域幅(少なくとも入力)のリソースタイプに使用される。しかしながら、一部の実施形態では、接続されていないスロット223がメモリなどのリソースを配分されないように、動的パーティショニングが利用される。
【0022】
一部の実施形態では、CPU224のリソース及びディスクは、制御グループ(cgroups)を使用して分離及び管理されてよく、アクセラレータリソースは、マルチプロセスサービス機能を使用して分離及び管理されてよく、ネットワーク帯域幅は、1つまたは複数のネットワークスケジューラを使用して分離及び管理(スロットルなど)されてよい。例えば、一部の実施形態では、CPUコアは、Cgroups内のcpusetメカニズムを使用してプロセス間で分割される。コアの小さなセットは、(アクセラレータごと、またはインスタンスに共通のいずれかである)管理/保守/健全性チェック/ログプロセス間で共有される。コアの残りの部分は、アクセラレータスロット間で分割される。
【0023】
アクセラレータリソース222の場合、アクセラレータスロット223のパーティショニングは、使用される基盤となるアクセラレータのタイプに依存する。例えば、一部の実施形態では、アクセラレータスロットへのカーネルの空間多重化が使用される。所与のアクセラレータスロット223の場合、カーネルは入手可能なハードウェアの一部を使用する。これを行う1つの方法は、分割をアクセラレータスロット223のTOPS(Tera operations per second)容量に比例させることである。シストリックアレイベースのアクセラレータの場合、時間多重化を使用して単一のテンソル処理ブロックをスロット化し、長時間実行されるカーネルのプリエンプトをサポートする。
【0024】
リモートに接続されたアクセラレータスロット223が、弾力的推論アクセラレータとしてユーザに提示され、インスタンスの起動時に顧客のアプリケーションインスタンス211に接続された一時的なデバイスが、インスタンスに推論アクセラレータ機能を提供する。ユーザは、1つまたは複数の弾力的推論アクセラレータをアプリケーションインスタンスに関連付けてよい。
【0025】
通信チャネル281の帯域幅の使用については、大きなテンソルが推論呼び出しの入力として送信される可能性があるため(例えば、視覚モデル)、入力帯域幅に懸念がある。n個の入力ブランチのそれぞれは、(n個のブランチネットワークインタフェースが全てアクティブでない場合でさえ)、インスタンス帯域幅のおおよそ1/nを使用しなければならない。アクセラレータアプライアンス221上のネットワークスケジューラ(図示せず)を使用してよい。アプリケーションインスタンス211とアクセラレータ221の間の通信は、複数のネットワーク接続上で行われ、各接続は、アプリケーションインスタンス211によって開始される。
【0026】
推論のためのElの計算容量は、様々な方法でスケールアップ及びスケールダウンできる。第1に、El接続は起動インスタンステンプレートの一部であるため、顧客インスタンスとEl接続は、自動スケーリングユニットであってよい。第2に、顧客は、精度とTOPSが異なる複数のElインタフェースを所与のインスタンスに接続し、それらに推論呼び出しを分散させることができる。
【0027】
多くのネットワークでは、正確さに大きな影響を与えることなく、8ビットの整数(INT8)計算を使用して推論を実行できる。現実の世界では、入力データは低精度(または低ダイナミックレンジ)で生成されることが多いため、低精度での計算は結果の正確さに影響を与えない。低精度の計算を使用すると、推論が、メモリ使用量を削減し、より高いスループットでデータを転送し、より大きなモデルを展開し、ワイドベクトル命令を介してOPSスループットを向上させることが可能になる。ただし、訓練では、より高精度の算術演算(例えば、FP32)を使用して、高精度の重みを使用するモデルを作成することが多い。したがって、訓練済みモデル(例えば、FP32)と推論のためのハードウェアの演算(例えば、INT8)の能力/モードの間の精度のこのギャップに対処する必要がある。
【0028】
一部の実施形態では、ハードウェアの精度能力はユーザに公開され、ユーザは各精度でモデルを提供する。他の実施形態では、高精度の訓練済みモデル(FP32)から低精度の推論モデルへの変換が行われる。入力テンソル/アクティベーション/重みの事前に計算された最小/最大限界を使用して効率的な方法で量子化を行うために、ユーザからのそのモデルのキャリブレーションデータセットを使用してよい。
【0029】
弾力的推論サービスは、FP32とFP16の少なくとも2つの算術精度を提供する。両方の場合において、一部の実施形態では、訓練済みモデルがFP32フォーマットで提供される。FP32モデルに対してFP16モードで推論を実行するには、単純な型変換(量子化ではない)を伴う。
【0030】
図3は、データプレーンの態様及び制御プレーンの態様を含む弾力的推論を可能にするシステムの実施形態を示す。一部の実施形態では、このシステムの態様は、弾力的推論サービスの一部である。上記のように、リモート接続されたアクセラレータ223は、ユーザの計算インスタンスに接続された弾力的推論アクセラレータ(EIA)(または単にアクセラレータ)として提示される。ユーザの計算インスタンスにはアプリケーションインスタンス(AI)211のラベルが付けられ、サービス側でEIAをホストする計算インスタンスにはアクセラレータアプライアンス(AA)221のラベルが付けられる。各EIAは、アクセラレータスロット(AS)にマッピングされ、アクセラレータスロット(AS)は、アクセラレータの一部であり、AA221によって管理される。
【0031】
AA221は、複数のEIA223をホストしてよく、マルチテナンシをサポートする(それにより、異なるユーザに属する異なるアプリケーションインスタンス211からの接続を可能にする)。各アクセラレータスロットは、任意の所与の時に1つのアプリケーションインスタンスにのみ接続できる。
【0032】
データプレーン301によって、ユーザは、1つまたは複数のリモート接続されたEIAを使用して深層学習推論アプリケーションを管理することができ、アプリケーションインスタンス211で実行している推論アプリケーションの健全性及びパフォーマンスメトリクスを監視でき、アクセラレータアプライアンス221上で実行しているサービスコンポーネントの健全性及びパフォーマンスメトリクスを監視でき、アプリケーションインスタンス211にインストールされたソフトウェアコンポーネントが、アクセラレータアプライアンス221にインストールされたものに対応していることを確認し、接続されたEIAの健全性、接続性、パフォーマンスについてユーザに通知でき、及び/または、EIAが(例えば、TOPSやメモリ使用量の点で)約束されたパフォーマンスを提供することを保証することができる。
【0033】
データプレーン301は、少なくとも1つのアプリケーションインスタンス211と少なくとも1つのアクセラレータアプライアンス221を含む。各アプリケーションインスタンス211は、アプリケーションインスタンス211上で実行するアプリケーションインスタンスマネージャ(AIM)317を含み、アプリケーションインスタンスマネージャ(AIM)317は、EIAのアプリケーションインスタンス211への接続を販売し、EIAとの接続をチェックし、アプリケーションインスタンス211にインストールされたソフトウェアコンポーネントがEIAにインストールされているものと対応していることを確認し、アプリケーションインスタンス211に固有の健全性情報をEIAにプッシュすることを担当している。
【0034】
AIM317はブート時に起動され、クラッシュや予期しないシャットダウンが発生した場合に再起動される。制御プレーン351がアクセラレータ223を接続すると、制御プレーン351は、アクセラレータ223に接触する方法に関する情報をアプリケーションインスタンス211のインスタンスメタデータサービス(IMDS)371に注入する(このインタラクションの詳細は、本明細書の他の部分で詳述する)。一部の実施形態では、AIM317は、IMDS371を使用して、アクセラレータが接続されているかどうかをチェックする。AI211にアクセラレータが接続されていない場合、IMDS371はアイドル状態のままで、新しいアクセラレータの接続を待つ。アクセラレータが接続されている場合、一部の実施形態では、AIM317は、アクセラレータスロットマネージャ(ASM)329への接続を試みる。一部の実施形態では、通信は、ASM329によって提供され、AIM317によって開始されるエンドポイントを介して行われる。接続に失敗した場合、または接続が後に切断された場合、数回の再試行の後、IMDS371は問題をエンドユーザに報告する。一部の実施形態では、IMDS371は、顧客が(例えば、顧客のインスタンス内から既知のエンドポイントをカーリングすることによって)使用して、顧客のインスタンスに関する特定のデータ(例えば、インスタンスID、接続されたネットワークインタフェースなど)をイントロスペクトすることができるhttpサーバである。
【0035】
接続が確立されると、AIM317はASM329とインタラクトして、インストールするソフトウェアのインベントリを取得する。ASのコンポーネントは、このハンドシェイク手順の最後に、最新のソフトウェアバージョンまたはAI211のコンポーネントと互換性のあるバージョンを実行していることが期待される。一部の実施形態では、実行されるモデルとソフトウェアの互換性があるように、この時点で最新のソフトウェアバージョンがロードされる。一部の実施形態では、マシンインスタンスがロックされ、AI211のコンポーネントがアクセラレータのコンポーネントと互換性がない場合、接続が切断され、報告される。
【0036】
アプリケーション213自体は、クライアントライブラリ315を使用して、アクセラレータ223の推論エンジン325に呼び出しを行う。一部の実施形態では、クライアントライブラリ315は、推論エンジン325へのリモートプロシージャコールのためにgRPCを使用する。
【0037】
一部の実施形態では、クライアントライブラリ315は、APIを実装する。このAPIには、次のコマンドの1つまたは複数が含まれてよい。
・EIA.initLibrary(eiaID):顧客のアプリケーションインスタンスに接続されたEIAに呼び出しを行う際に使用されるアプリケーションのEIAコンテキストを初期化する。複数のEIAのアプリケーションインスタンスが顧客のアプリケーションインスタンスに接続されている場合は、オプションの引数「eiaID」を渡すことができる。eiaIDが無効であるか、EIAが接続されていない場合、例外をスローする。
・eia.loadModel(name、model-config.xml、runtimeParameters):「model-config.xml」で与えられた構成でモデルをロードする。モデルに関連するフレームワーク、バージョン、位置、及びその他の詳細は、「model-config.xml」を使用して渡すことができる。最大バッチサイズなどのランタイムパラメータは、「runtimeParameters」を使用して提供できる。
・model.predict(inputTensor):EIAにロードされた「model」への同期推論API呼び出し。出力テンソルを返す。
・model.predictBatch(inputTessorArray):EIAにロードされた「モデル」への同期推論バッチAPI呼び出し。
・model.predictAsync(iTensor):EIAにロードされた「model」への非同期推論API呼び出し。結果を取得できる未来を返す。
・outputFuture.getResults():以前に発行された推論呼び出しの結果を読み出すためのブロックに戻る。
・model.predictBatchAsync(iTensorArray):EIAにロードされた「model」への非同期推論バッチAPI呼び出し。未来を返し、それを用いて結果を取得できる。
・oFuture.getResults():以前に発行された推論呼び出しの結果を読み出すためのブロックに戻る。
・eia.listModels():EIAにロードされたモデル「eia」を列挙する。
・eia.unloadModel(name):以前にロードされたモデル「name」をアンロードする。モデルが存在しない場合、例外がスローされる。
・eia.createTensor(shape、dtype): 指定された形状とタイプのEIAコンテキストのテンソルを作成/割り当てる。
・eia.copyTensor(source、target):テンソルを「source」から「target」にコピーする。
・deleteTensor(inputTensor):EIAコンテキストで以前に作成されたテンソルを削除/配分を解除する。
【0038】
一部の実施形態では、コマンドラインユーティリティ319を使用して、接続性の情報にアクセスしてよい、及び/または推論などのコマンドを生成してよい。
【0039】
AA221は、アクセラレータスロット(複数可)223、ディスク333、及びアプライアンス管理コンポーネント241を含む幾つかのコンポーネントを備える。AA221コンポーネントは、ブートストラップ、分離されたアクセラレータスロットのプロビジョニング、制御プレーン351からのイベント(アクセラレータスロットの接続/リサイクル等)の監視、制御プレーン351へのスロット及びアプライアンスステータス(健全性及びネットワーク接続性等)の更新、メトリクス/ログのアップロードを担当する。
【0040】
制御プレーン351は、アプリケーションインスタンス211の起動及び終了との統合、ならびにデバイスのクエリ及び管理のサポートを実行する幾つかのサービスコンポーネントを備える。したがって、制御プレーン351を介して、ユーザは、1つまたは複数のアクセラレータスロット223を弾力的アクセラレータとしてアプリケーションインスタンス211に接続することを要求するアプリケーションインスタンス211を起動してよく、弾力的推論アクセラレータが接続されているアプリケーションインスタンス211を終了してよい。
【0041】
一部の実施形態では、関連する弾力的推論アクセラレータを支援するアクセラレータアプライアンス221が損なわれるか、または保守が必要となる場合のアプリケーションインスタンス211の保守通知は、制御プレーン351を介してユーザにルーティングされる。さらに、一部の実施形態では、制御プレーン351は、アクセラレータアプライアンス221及びアプリケーションインスタンス211のメトリクスをユーザに提供する。
【0042】
上記のように、アクセラレータスロット223のコンポーネントはあらゆるアクセラレータスロットで実行される。アクセラレータスロット内の全てのコンポーネントは、CPU、RAM、GPU計算、GPUメモリ、ディスク、及びネットワークなどのリソースという観点では、分離されている。アクセラレータスロットコンポーネントは、そのアクセラレータスロット223に接続された顧客インスタンスにサービスを提供する。
【0043】
アクセラレータスロットマネージャ(ASM)329は、アプリケーションインスタンス211へのソフトウェアコンポーネントのインストールを担当する。ASM329は、アプリケーションインスタンス211からのハンドシェイク、ソフトウェア同期、及び健全性チェックを聞く。AIM317は、アプリケーションインスタンス211に存在するソフトウェアインベントリを使用してASM329に接続する。
【0044】
ASM329は、AIM317からの定期的な健全性チェックの受信も担当する。ASM329は、AIM317からの健全性チェックメッセージの受信に基づいて、アプリケーションインスタンス211の接続性を報告する。これは、ASM329によってディスクに書き込まれ、ストレージ361を介してAAMによって読み取られて制御プレーンに報告される。AIM317は接続性の情報を追跡する。これは、クライアントライブラリ315またはコマンドラインユーティリティ319によって提供されるユーティリティを使用して、アプリケーションインスタンス211で顧客によって読み出されてよい。
【0045】
推論エンジン(IE)325は、モデルのロード及び推論の実行を処理する。図に示すように、このエンジン325は、アクセラレータスロット223ごとに別個のプロセスである。IE325は、フロントエンドの受信機ライブラリを介して、顧客インスタンス上のクライアントライブラリ315から要求を受信する。IE325には、推論が機能するために必要なランタイムが含まれている。
【0046】
モデルバリデータ(MV)327は、ユーザ提供のモデルファイル構文の正確性及び妥当性をチェックする。一部の実施形態では、これは、推論エンジン223とは別のCPUプロセスとして行われるので、アクセラレータランタイムへのセキュリティ関連のリークはない。一部の実施形態では、MV327は、提供されたモデルを異なるフォーマットに変換する(MXNETをJSONにシリアル化するなど)。一部の実施形態では、MV327は、アプリケーション213(ライブラリ315を含む)が選択を行わなかったとき、使用する推論エンジン325を選択する。
【0047】
一部の実施形態では、アプリケーションメトリクスコレクタ331は、アプリケーションのメトリクスを送信、収集、及び集約するために使用されるツールのセットである。一部の実施形態では、アプリケーションメトリクスコレクタ331はStatsDである。収集されたメトリクスは、アプライアンス管理コンポーネント241によってアクセス可能なローカルディスク333に記憶される。
【0048】
アプライアンス管理コンポーネント241は、アクセラレータアプライアンスマネージャ(AAM)343、ストレージアップローダ345、並びにメトリクス及びログコレクタ347を含む。AAM343は、アクセラレータアプライアンス221をブートストラップし、ストレージ361の記憶されたオブジェクトの監視を通してアクセラレータスロット221をプロビジョニングし、アクセラレータスロットが不要になると、アクセラレータスロットのプロビジョニング/接続を解除し、将来使用するためにアクセラレータスロットをリサイクルする。AAM343はまた、アクセラレータスロット223の健全性及び占有率を監視し、ストレージアップローダ345によってストレージ361にアップロードされるオブジェクトを準備する。アクセラレータの監視と報告は、別のコンポーネントによって分離及び処理される場合があることに注意されたい。
【0049】
メトリクス及びログコレクタ347は、アクセラレータスロット223及びアクセラレータアプライアンス221からメトリクス及びログを収集し、制御プレーン351による消費のためにデータを適切に伝達する。
【0050】
ストレージアップローダ345は、(AAM343によって作成された)健全性及び占有率リポートと、メトリクス及びログとをアップロードする。
【0051】
クライアントライブラリ315を使用する推論アプリケーションは、AIM317と通信することによって、アクセラレータアプライアンス221の接続情報を取得する。
【0052】
AIM317はASM329にハートビートをプッシュして、AIM317のライブネスを通知する。この情報は、ASM329によって使用されて、接続されたアプリケーションインスタンス211の健全性に関して制御プレーン351に報告される。
【0053】
図示のシステムは、アプリケーションインスタンス211上で実行されるアクセラレータを使用するアプリケーション213と、アクセラレータスロット223上で実行される推論エンジン325との間のコンポーネントの数を最小化して、待ち時間及び故障率を最小限にする。さらに、推論サービスの制御プレーン351は、制御プレーン351の停止がアプリケーションインスタンス211またはアプリケーションインスタンス211が使用しているアクセラレータスロット223に影響を与えないように、(図示のように)データプレーン302から分離されている。
【0054】
Elインタフェース(EIAへのインタフェース)は、インスタンスの起動時に、アプリケーションインスタンスに接続することができる、または動的にライブインスタンスに接続/から接続を解除することができる。Elインタフェースには、クライアントライブラリ315を使用して直接アクセスできる、または、モデルフレームワーク(テンソルフローやMXNetフレームワークなど)を介してアクセスできる。典型的なユースケースでは、アプリケーションインスタンス211はより大きな機械学習パイプラインを実行し、そのうちアクセラレータアプライアンス221のバインドされた呼び出しのみがElインタフェースAPIを使用して送信され、残りはローカルで実行される。データ入力の前処理及び推論出力の後処理も、アプリケーションインスタンス211で行われる。アクセラレータを使用してインスタンスを起動するためのAPIコマンドの例は次のとおりである。
$ aws ec2 run-instances-region us-east-1-eia-specification type=fp16.eia.medium -instance-type t2.medium -image-id ami-e3bb7399
【0055】
Elインタフェースは、算術精度(FP32、FP16、INT8など)と計算能力(TOPS)を指定することによってサイズ設定される。ElインタフェースAPIは、モデルのロード、モデルに対する推論呼び出し(テンソルイン/テンソルアウト)、及びモデルのアンロードを可能にする。複数のモデルが、いつでもElインタフェースを介してロードできる。モデルは、(i)推論のための計算グラフ全体の記述、及び(ii)訓練から得られた重みで構成される。ロードするためのAPIコマンドの例は次のとおりである。
$ eia load-model -model-location"s3 location"-role"eiaRole" -model_name"my_model_1" -max_batch_size 16
【0056】
モデルには多くの異なるフォーマットがあり、本明細書に記載するサービスの実施形態は複数のフォーマットをサポートする。一部の実施形態では、テンソルフロー及びMXNetフレームワークからエクスポートされたモデルフォーマットと、ONNXのようなモデル交換フォーマットがサポートされる。特定のフォーマットがどのように扱われるかは異なってよい。通常、モデルは1つまたは複数のファイル及び/またはオブジェクトを介してアプリケーションインスタンスとアクセラレータにロードされる。例えば、モデルをストレージ(ストレージ361など)にロードし、その後、アプリケーションインスタンス及びアクセラレータで利用可能にすることができる。これらのファイル及び/またはオブジェクトは、テンソルフロー、Apache MXNet、ONNXなどのフォーマットの加重計算グラフとしてモデルを指定する。モデル定義は、各フレームワークまたは交換フォーマットで定義された組み込み演算子/層を使用する。モデルフォーマットのバージョンはモデルファイルで指定され、ファイルのエクスポートに使用された各フレームワークのバージョン番号である(例えば、テンソルフロー1.5、MXNet1.0、ONNX1.0)。一部の実施形態では、アクセラレータランタイム(モデルバリデータ327など)は、この情報を使用して、どの推論エンジン325を使用してモデルを提供するかを決定する。
【0057】
Elインタフェースの初期化中に、訓練済みモデル(計算グラフ)が入力として提供され、プロファイリングされ、その後、アプリケーション213は、アプリケーションインスタンス211上のクライアントライブラリ315を介して推論呼び出しを行う。このアプローチを実施する多くの方法がある。
【0058】
一部の実施形態では、事前(AOT)コンパイルが使用される。例えば、Elインタフェースでのモデルロード中に、訓練済みモデルがターゲット(ハードウェア)コードにコンパイルされる。これは2つのサブステップを伴う。第1に、フロントエンドコンパイラは、ターゲットに依存しない最適化と分析を取り入れながら、訓練済みモデルのファイルフォーマットから中間表現に変換する。第2に、バックエンドコンパイラは、ターゲットに依存する最適化と分析を使用して、中間表現からマシンコードに変換する。この「AOT」コンパイルにより、プログラム全体の分析が可能になる。ターゲットハードウェアは、CPUとアクセラレータアプライアンス221上のアクセラレータデバイスの組み合わせであり、コンパイルは、アクセラレータアプライアンス221上で行われる。出力には、ターゲットアーキテクチャに固有の推論用に最適化された実行プランが組み込まれる。コンパイル段階では、最大バッチサイズのような追加入力が必要になる場合がある。さらに、必要に応じて表現をストレージにシリアル化することもでき、同じモデル及びアクセラレータアプライアンス221ハードウェアに対する将来の推論をインスタンス化するためのコンパイル段階を回避できる。アクセラレータアプライアンス221上のランタイムは、これをメモリ内の「推論ランタイムオブジェクト」としてインスタンス化し、それを使用して、Elインタフェース上で将来の推論呼び出しを実行する。AOTコンパイルアプローチは、機械学習(ML)エンジンの依存性(のほとんど)を取り除くため、ランタイムのメモリフットプリントとCPUオーバーヘッドが低下する。これは、多くの場合、推論パフォーマンス向上につながり得る。
【0059】
一部の実施形態では、アクセラレータアプライアンス221上のMLエンジンが利用される。MLエンジンはモデルを入力として受け取り、推論中にモデルを実行する。MLエンジンはモデルグラフをトラバースし、演算子レベルのAPIを呼び出すため、アクセラレータアプライアンス221のメモリフットプリントとCPUオーバーヘッドが高くなる。
【0060】
一部の実施形態では、アプリケーションインスタンス211上のMLエンジンが利用される。一部のGPUベースのアクセラレーションでは、CPUはそれ自体とGPUの間で計算を分割し、インタフェースを呼び出してGPUに計算をオフロードする。これにより、MLエンジンを顧客インスタンスで実行し、ネットワークを介して、計算プリミティブの粒度でアクセラレータアプライアンス221に呼び出しを行うことができる。リモート呼び出しを集約し、それらをバッチでアクセラレータアプライアンス221に送信することによって、このアプローチの待ち時間を短縮することも可能である。クライアントライブラリ315は、フレームワークの下のアクセラレータアプライアンス221にモデルをロードし、続いてそれに対して推論呼び出しを行うために使用される。
【0061】
一部の実施形態では、広告されたTOPSは、アプリケーションインスタンス211を実行するCPUではなく、アクセラレーションハードウェアの計算能力に起因する。ほとんどの計算集約的な演算子はアクセラレータで実行される(例えば、MXNetはGPU実装を有する)が、制御フローでは、演算子はシリアル化されたモデルフォーマットで表現できない場合があり、CPUで実行される。アクセラレータアプライアンス221上の各アクセラレータスロットはまた、アプリケーションインスタンス211のCPUの割り当てを取得し、その割り当ては、プロビジョニングされたTOPSに比例する。
【0062】
一部の実施形態では、モデルの構文は、正確性及び各フレームワーク/バージョンへの適合性について検証されるので、顧客は、この形式を入力として使用して推論エンジン223の脆弱性を悪用することはできない。モデルバリデータは、各フレームワーク/フォーマットのモデル構文を検証する。この検証は、推論エンジン223とは別のプロセスとして行われるため、GPUランタイムへのセキュリティ関連のリークはない。
【0063】
図4は、アプライアンスプロビジョニングの方法の例をスイムレーン図として示す。この図は、制御プレーン351とデータプレーンコンポーネント(アクセラレータアプライアンスマネージャ343及びアクセラレータスロット223など)の間のアクション及び通信に焦点を当てている。上記のように、アプライアンスは、コントローラ(CPUなど)と、コントローラに結合された複数のアクセラレータ(GPU、ASIC、FPGAなど)を含む。アクセラレータアプライアンスマネージャ343は、アクセラレータの一部であるアクセラレータスロット223のプロビジョニング及び分離、アクセラレータスロットへのアプリケーションインスタンスの接続/接続解除、将来の接続のためのアクセラレータのクリーンアップとリサイクル、アクセラレータの健全性と接続性の収集及び報告、及び/またはアクセラレータソフトウェアのバージョンアップグレードの処理を担当している。ストレージ361は、オブジェクトストレージに使用される。
【0064】
サークル1で、制御プレーン351は、プロビジョニングデータをアクセラレータアプライアンスマネージャ343に送信する。このプロビジョニングデータは、アクセラレータアプライアンスの識別子の1つまたは複数、使用するアクセラレータの1つまたは複数の識別子、アクセラレータタイプの1つまたは複数の識別子、メタデータストレージの識別子もしくは位置、ログ(複数可)(健全性ログやダンプなど)ストレージの識別子もしくは位置、及び暗号化キー(もしくはその位置)を含む。選択されるアクセラレータアプライアンスは、ユーザのプロビジョニング要求のサイズと精度に合致する。
【0065】
アクセラレータアプライアンスマネージャ343は、サークル2で、使用する各アクセラレータスロット223の起動/構成を行う。一部の実施形態では、これは、コンテナ、または機械学習モデルのための仮想マシンの起動を含む。一部の実施形態では、ベアメタルが使用される。
【0066】
アクセラレータアプライアンスマネージャ343は、サークル3で、識別されたログストレージ361にログ情報を書き込む。例えば、健全性メトリクスファイルへの接続性の情報(空の構成)がこの時点で書き込まれてよい。健全性メトリクスの例には、アプライアンスのアイデンティティ、インスタンスのアイデンティティ、アプライアンスタイプの識別、健全性ステータスの指示(OK、障害、停止など)、及びログの時間が含まれるが、これらに限定されない。プロビジョニングが行われたばかりであるため、アクセラレータスロットに関するこの時点での接続性の情報は、通常は空であることに注意されたい。
【0067】
さらに、メトリクス情報が書き込まれてよい。例示的なメトリクスには、名前、単位、値、統計値(最大値、最小値、サンプルカウント、参照期間の値の合計)、及びタイムスタンプなどのメトリクスのデータ、インスタンス識別子、アクセラレータスロットの識別子、アクセラレータスロットタイプの識別子、インスタンスのソフトウェア構成の識別子などのメトリクスディメンション、並びに、アプリケーションインスタンス識別子などが含まれるが、これらに限定されない。
【0068】
この情報をストレージ361に記憶することにより、制御プレーン351が情報を利用することができる。各アクセラレータスロット223は、健全性及び接続性の情報を生成し、これをサークル4で、アクセラレータアプライアンスマネージャ343に提供し、アクセラレータアプライアンスマネージャ343は、次に、サークル5で、ストレージ361を更新する。一部の実施形態では、健全性及び接続性の情報は、毎分生成されるが、他の実施形態では、この情報は、オンデマンドで、異なるレートでなど、生成される。
【0069】
ある時点で、制御プレーン351は、サークル4で少なくとも健全性をポーリングする(健全性ファイルのポーリングなど)。ストレージ361は、サークル5で、健全性情報で応答し、制御プレーン351は、この健全性情報に基づいて、プロビジョニングが成功したかどうかを評価する。プロビジョニングが失敗する場合がある。例えば、スロットのプロビジョニングの失敗などのブートストラップの問題が発生したり、健全性、メトリクス、ログ、またはダンプ情報の書き込みの失敗などのストレージの問題が発生したりする場合がある。例えば、一部の実施形態では、アクセラレータスロットの健全性情報が全く生成されない場合、制御プレーン351は、アプライアンス全体を再プロビジョニングする。一部の実施形態では、データプレーンが健全性情報をストレージ361に記憶しない場合、制御プレーン351は、健全性情報が到着するまで待機し(そして、到着しない場合はある時点でタイムアウトし)、アプライアンスの再プロビジョニングが行われる。制御プレーン351は、ストレージ361に欠落しているデータがある場合、情報の再送信を(アクセラレータアプライアンスマネージャ343を介して)要求してよいことに注意されたい。
【0070】
図5は、アクセラレータアプライアンスプロビジョニングの実施形態を示す。図に示すように、アクセラレータアプライアンス221は、複数のアクセラレータスロット(AS1 223、AS2,...,ASn)を含む。ユーザプロビジョニングデータはAAM343によって受信され、AAM343は必要に応じて各アクセラレータスロットをセットアップする。この例では、AS1 223のみがセットアップされている。ただし、AAM343は他のアクセラレータスロットの使用状況を追跡する。例えば、AS2は、別のアプリケーションインスタンスに接続されてよく、AAM343は、それを認識し、それに応じてアクセラレータアプライアンス221のリソースの使用を管理する。
【0071】
図6は、アクセラレータアプライアンスの事前接続の実施形態を示す。図に示すように、アクセラレータアプライアンス221は、複数のアクセラレータスロット(AS1223、AS2,...,ASn)を含む。各アクセラレータスロットは、AAM343と(例えば、ローカルディスクを介して、または直接)健全性、メトリクス、及びログ情報を通信する。AAM343は、制御プレーンにアクセス可能な記憶場所(ストレージ361など)に、アクセラレータスロットごとに、JSON(JavaScript Object Notation)フォーマットで健全性及びメトリクス情報を通信する。アクセラレータスロットごとのログ及びダンプ情報も、制御プレーンにアクセスできる記憶場所で利用可能になる。一部の実施形態では、情報は定期的に送信される。周期性は、ユーザ定義またはウェブサービスプロバイダによって規定されてよい。他の実施形態では、情報は、情報が変化するときに送信される。例えば、健全性情報が変化する(アクセラレータスロットが不健全になる)と。
【0072】
図7は、アプライアンス接続の方法の例をスイムレーン図として示す。この図は、制御プレーン351とデータプレーンコンポーネント(アクセラレータアプライアンスマネージャ343及びアクセラレータスロット223)の間のアクション及び通信に焦点を当てている。
【0073】
サークル1で、制御プレーン351は、ストレージ361を介して接続性の情報をアクセラレータアプライアンスマネージャ343に送信する。この接続性データは、接続メタデータ、健全性/接続性データ、及びメトリクスデータの1つまたは複数を含む。一部の実施形態では、これらのうちの1つまたは複数は、別個のファイル(接続メタデータファイル、健全性/接続性ファイル等)として記憶される。
【0074】
接続メタデータは、顧客アカウント識別子、接続識別子、接続タイプ(アクセラレータスロット223のタイプ)、アプリケーションインスタンス識別子、ドメイン識別子、ネットワークインタフェースのVLAN識別子、ネットワークインタフェースのMAC、及びネットワークインタフェースのIPアドレスなどの接続情報を含み得るが、これらに限定されない。
【0075】
健全性/接続性データは、アプライアンスのアイデンティティ、インスタンスのアイデンティティ、アプライアンスタイプの識別、健全性ステータスの指示(OK、障害、停止など)、及びログの時間などの健全性データ、並びに、接続性ステータス(接続/切断)、接続識別子、接続タイプ(アクセラレータスロット223のタイプ)、アプリケーションインスタンス識別子、ドメイン識別子、及びタイムスタンプなどの接続性データを含み得るが、これらに限定されない。
【0076】
メトリクスデータは、名前、単位、値、統計値(最大値、最小値、サンプルカウント、参照期間の値の合計)、タイムスタンプなどのメトリクスのデータ、並びに、インスタンス識別子、アクセラレータスロット識別子、アクセラレータスロットタイプの識別子、インスタンスのソフトウェア構成の識別子、アプリケーションインスタンス識別子などのメトリクスディメンションを含み得るが、これらに限定されない。
【0077】
アクセラレータアプライアンスマネージャ343は、サークル2で、ストレージ361に接続性データ情報を要求する。接続性データ情報は、(入手可能な場合)サークル3で提供される。次に、アプライアンスアプリケーションマネージャ343は、この情報を使用して、1つまたは複数のアクセラレータスロット223(例えば、接続メタデータに詳述されているように)を接続し、アクセラレータスロット(複数可)223は、サークル4で、接続性の情報をアプライアンスアプリケーションマネージャ343に戻す。
【0078】
アクセラレータアプライアンスマネージャ343は、サークル5で、識別されたログストレージ361にログ情報を書き込む。例えば、健全性メトリクス情報に接続性の情報が書き込まれる。ただし、上記で詳述した健全性メトリクスの例は、この時点では空であってはならない。さらに、非健全性メトリクス情報が書き込まれてよい。例示的な非健全性メトリクスには、名前、単位、値、統計値(最大値、最小値、サンプルカウント、参照期間の値の合計)、及びタイムスタンプなどのメトリクスのデータ、インスタンス識別子、アクセラレータスロット識別子、アクセラレータスロットタイプ識別子、インスタンスのソフトウェア構成の識別子などのメトリクスディメンション、アプリケーションインスタンス識別子などが含まれ得るが、これらに限定されない。
【0079】
ある時点で、制御プレーン351は、サークル6で、少なくとも健全性情報をポーリングする。ストレージ361は、サークル7で、健全性情報で応答し、制御プレーン351は、サークル8で、この健全性情報に基づいて、接続が成功したかどうかを評価する。
【0080】
接続に失敗する場合があることに注意されたい。例えば、接続メタデータ情報の書き込みまたは読み取りの失敗、健全性、メトリクス、ログ、またはダンプ情報の書き込みまたは読み取りの失敗など、ストレージの問題が発生する場合がある。例えば、一部の実施形態では、制御プレーン351が接続メタデータを送信できない場合、データプレーンは、以前に動作していたのと同じように続行する。ただし、制御プレーン351は何が悪かったのかを把握する必要がある。一部の実施形態では、データプレーンが接続情報を読み取れない場合、接続メタデータによって参照されるアクセラレータスロット223は、アクセラレータスロットが接続されていることを知らず、制御プレーン351は、(アクセラレータスロット223によって健全性データで提供される)接続がなくなるまで接続が損なわれていると見なす。一部の実施形態では、データプレーンが健全性情報を送信できない場合、または制御プレーン351が健全性情報を読み取れない場合、制御プレーン351は、(アクセラレータスロット223によって健全性データで提供される)接続がなくなるまで接続が損なわれていると見なす。
【0081】
図8は、アクセラレータアプライアンス接続の実施形態を示す。具体的には、1つのアクセラレータスロットが接続されている。図に示すように、アクセラレータアプライアンス221は、複数のアクセラレータスロット(AS1 223、AS2,...,ASn)を含む。JSONメタデータファイルがAAM343に提供され、アクセラレータアプライアンスを使用するアプリケーションインスタンスにユーザアカウントが接続されたことを示す。AAM343は、健全性、メトリクス、ログ、及びダンプ情報を更新し、その情報を制御プレーンにアクセス可能なストレージが利用できるようにする。そのため、制御プレーンは、スロットが接続されていることを認識する。
【0082】
図9は、アプライアンスの接続解除/リサイクルの方法の例をスイムレーン図として示す。この図は、制御プレーン351とデータプレーンコンポーネント(アクセラレータアプライアンスマネージャ343及びアクセラレータスロット223)の間のアクション及び通信に焦点を当てている。ある時点で、アクセラレータスロット223が必要とされなくなる。制御プレーン351は、そのアクセラレータスロット223にこれを通知する。まず、制御プレーンは、サークル1でクリーニングが必要なターゲットアクセラレータスロットをマークする。
【0083】
制御プレーン351は、サークル2で、ストレージ361のメタデータ情報を更新して、全ての接続性の情報を空にし、クリーニングトークンを入れる。クリーニングトークンは、クリーニングプロセスが完了したことを確認するためにアクセラレータスロット223によって使用される。例えば、接続情報はクリーニングトークンのみを含む。
【0084】
アクセラレータアプライアンスマネージャ343は、サークル3で、ストレージ361から接続性データの1つまたは複数を要求する。接続性データは、(入手可能な場合)サークル4で提供される。次に、アプライアンスアプリケーションマネージャ343は、この情報を使用して、(例えば、接続メタデータに詳述されている)1つまたは複数のアクセラレータスロット223の接続を解除し、アクセラレータスロット(複数可)223は、サークル4でアプライアンスアプリケーションマネージャ343に接続性の情報を返す。
【0085】
アプライアンスアプリケーションマネージャ343は、サークル5で、アクセラレータスロット223にクリーンアップ/リサイクルするように通知する。アクセラレータスロット223は、アプリケーションによって使用されているリソース(メモリ、キャッシュ内のアドレス等)を解放し、サークル6で、クリーンアップ/リサイクルが完了したことをアプライアンスアプリケーションマネージャ343に通知する。
【0086】
アクセラレータアプライアンスマネージャ343は、サークル6で、空の接続性に対する通常の健全性情報に加えて、クリーニングトークンが含まれる更新された健全性情報をストレージ361に書き込む。
【0087】
ある時点で、制御プレーン351は、サークル8で、少なくとも健全性情報をポーリングする。ストレージ361は、サークル9で、健全性情報で応答し、制御プレーン351は、サークル10で、この健全性情報に基づいて、接続解除が成功したかどうかを評価する。接続解除に失敗する場合があることに注意されたい。例えば、更新接続メタデータ情報の書き込みまたは読み取りの失敗、または制御プレーン351によるクリーニングトークンの読み取りの失敗などのストレージの問題が発生する可能性がある。例えば、一部の実施形態では、制御プレーン351が更新された接続メタデータを送信できない場合、データプレーンは以前に動作していたように継続するが、制御プレーン351は、顧客インスタンスが停止されたために接続が損なわれたと見なす。ただし、制御プレーン351は何が悪かったのかを把握する必要がある。一部の実施形態では、データプレーンが更新されたメタデータ情報を読み取れない場合、接続メタデータによって参照されるアクセラレータスロット223は、アクセラレータスロット223の接続が解除されたことを知らず、制御プレーン351は、接続がクリーニング状態にあると見なす。クリーニング状態が解除されるまで、アクセラレータスロット223への新たな配置は起こらない。
【0088】
図10は、アプリケーションインスタンスとアクセラレータアプライアンスの間のインタラクションを含む、弾力的推論のためにアクセラレータを使用する方法のスイムレーン図の実施形態を示す。
【0089】
図に示すように、AIM317は、IMDSを読み取り、アクセラレータ222に接触する方法に関する情報を取得する。一部の実施形態では、IMDS情報は、特定のアクセラレータスロット223に接触する方法に関する情報を含む。
【0090】
アクセラレータスロット223のAIM317及びASM329は、互換性を決定するためにハンドシェイク動作を行う。互換性がある場合、アプリケーションインスタンス211の推論アプリケーション213は、AIM317からアクセラレータのアドレスを取得する。このようにして、推論アプリケーション213は、処理するスコアリングデータをどこにアドレス指定するかが分かる。
【0091】
アプリケーションインスタンスによって使用されるアクセラレータスロットのASM329は、接続性及び健全性の情報をアクセラレータアプライアンスのローカルディスク333で、または、通信チャネル281を使用して更新する。AAM343はこの情報を読み取り、制御プレーンによってアクセス可能なストレージ361に情報を配置する。このようにして、アプリケーションインスタンス及びアクセラレータスロットは相互に接続する方法を学習し、アクセラレータアプライアンスはその情報を制御プレーン351で利用できるようにした。制御プレーンがそのデータとどのようにインタラクトするかについては、他の箇所に詳しく記載する。
【0092】
推論アプリケーション213はまた、使用したい1つまたは複数のモデルをアクセラレータスロットにロードする。一部の実施形態では、このロードは、推論エンジン325に行われ、推論エンジン325は、次に、モデルバリデータ327を呼び出して、アップロードされたモデル(複数可)を検証する。その検証の成功または失敗は、推論エンジンに提供される。他の実施形態では、推論エンジン212からのロードは、モデルバリデータ327に行われ、モデルバリデータ327は、モデルを検証し、利用する推論エンジン325を選択し、検証済みモデルを選択した推論エンジン325に提供する。モデルのロードが成功したことを示すものが、推論アプリケーション213に提供される。
【0093】
推論アプリケーション213によって受信されたスコアリングデータは、推論エンジン325に向けられ、結果(複数可)が戻される。
【0094】
モデルが使用されなくなった場合、モデルは、コマンドを介して推論アプリケーション213からアクセラレータスロットにアンロードされる。具体的には、推論エンジン325は、もはや推論アプリケーション213からの要求を処理するようにプロビジョニングされていない。
【0095】
他の箇所で論じるように、アクセラレータスロット(具体的には、ASM329)は、AAM343が消費のためにストレージ361に提供するか、または通信チャネル281を介して送信する接続性の情報でローカルディスク333を更新することに注意されたい。制御プレーン351は、ストレージ361を介して接続性が無いと判断した場合(モデルのアンロード後または障害後など)、スロットは損なわれているとする。
【0096】
さらに、接続性の問題、コンポーネントの障害、コンポーネントの非互換性などが原因で、1つまたは複数のアクセラレータスロットを使用するときに障害が発生する可能性がある。障害の検出、根本原因の特定、及び必要な修正措置を講じるようにユーザに通知することは、弾力的推論サービス105が一部の実施形態で提供する機能である。上記のように、アクセラレータスロットは、接続の健全性及びスロットの健全性に関するメトリクスを発行し、これらは、制御プレーン351が消費するために、AAM343によってストレージ361にアップロードされる。接続の健全性は、接続済みと未接続の状態のいずれかになり得る。接続済みは、アプリケーションインスタンス211が「アプリケーションレベルのping」を介してアクセラレータスロット223に到達でき、アプリケーションインスタンス211のコンポーネントがアクセラレータスロット223のコンポーネントと互換性があることを示す。未接続は、アプリケーションインスタンス211がASM329に到達できなかったか、コンポーネントに互換性がないことを意味し得る。
【0097】
アクセラレータの健全性は、アクセラレータが正常であるかどうかを識別する。アクセラレータの健全性は、正常または正常でない、を含むがこれらに限定されず、これらの多くの状態の1つであってよい。アクセラレータスロット223の健全性は、推論エンジン325が推論要求に応答できるかどうかを含む様々な要因によって決まる。このチェックは、推論エンジン325にpingすることによってASM329によって行われる。
【0098】
ASM329は、アクセラレータごとにこれらの状態をローカルディスク333に対して発行し、これは次に、AAM343によって読み取られ、状態を制御プレーン351に転送する。制御プレーン351は、これらの状態を、OK、障害、及び不明の接続状態を反映する1つの状態に統合し、ユーザが利用できるようにする。
【0099】
図11は、弾力的推論サービスを実施する際にウェブサービスプロバイダによって行われる方法の実施形態を示す。1101で、ウェブサービスプロバイダのフロントエンドは、弾力的推論サービスによって使用されるアプリケーションインスタンス構成情報を受信する。例えば、フロントエンド103は、構成情報を受信し、それを少なくとも弾力的推論サービス105に提供する。構成情報は、マシンイメージの指示、アプリケーションインスタンスのインスタンスタイプの指示、アプリケーションインスタンスによって利用される仮想ネットワーク情報、推論に使用するアクセラレータタイプの指示、及び使用する1つまたは複数の記憶場所の指示(アプリケーションの位置、推論の結果を配置する位置、健全性及び接続性の情報の位置、自動スケーリング使用等)の1つまたは複数を含み得るが、これらに限定されない。
【0100】
一部の実施形態では、アプリケーションインスタンス及び/またはアクセラレータアプライアンスは、(手動でスケーリングするのではなく)弾力的推論サービス105による自動スケーリングの対象となる。自動スケーリングは、アプリケーションの新しいインスタンス及び/または最も少ないインスタンスを有するデバイスのアクセラレータスロット(複数可)を起動することにより、インスタンスを均等に分散しようとする。リバランス時に(アクセラレータスロットが異常になった後など)、自動スケーリングは古いインスタンスを終了する前に新しいインスタンスを起動するため、リバランスによってアプリケーションのパフォーマンスや可用性が損なわれることはない。通常、構成情報は、自動スケーリングが弾力的推論サービス105によって適用されるべきかどうかの指示を含む。
【0101】
アプリケーションインスタンスは、1103で受信した構成に従って、少なくとも1つのアクセラレータスロットとともにプロビジョニングされる。アクセラレータスロットをプロビジョニングする例は、図4と、それに関連するテキストによって記載している。
【0102】
一部の実施形態では、弾力的推論サービスは、ウェブサービスプロバイダ内のリソースの位置の最適化を実行する位置選択機能を含む。位置選択機能を使用して、アクセラレータスロットを実装する物理アクセラレータに対してアクセラレータ位置の特定の1つを選択してよい。アクセラレータスロットの位置は、1つまたは複数の配置基準に(少なくとも部分的に)基づいて選択されてよい。位置選択機能を使用して、(同じ物理マシン上などで)仮想計算インスタンスを実装する物理的計算インスタンスに対して、アクセラレータスロット位置の特定の1つを選択してよい。アプリケーションインスタンスの位置も、1つまたは複数の配置基準に(少なくとも部分的に)基づいて選択されてよい。
【0103】
アクセラレータスロットの位置を選択するために使用される配置基準は、アプリケーションインスタンスの位置を選択するために使用される配置基準と同じであっても、異なっていてもよい。一実施形態では、アプリケーションインスタンスの位置とGPUの位置の両方を、特定の仮想計算インスタンスとそれに接続された仮想GPUに対して最適化してよい。一実施形態では、特定の仮想アプリケーションインスタンス及び/またはアクセラレータスロットの配置を最適化するために使用される配置基準は、プロバイダネットワークのクライアントによって提供または承認される。一実施形態では、特定のアプリケーションインスタンス及び/またはアクセラレータスロットの配置を最適化するために使用される配置基準は、プロバイダネットワークの管理者によって提供または承認されてよい。一実施形態では、特定のアプリケーションインスタンス及び/またはアクセラレータスロットの配置を最適化するために使用される配置基準は、デフォルト設定を使用して決定されてよい。
【0104】
1つまたは複数の配置基準は、パフォーマンス(例えば、パフォーマンスを最大にするため)、リソース使用量(例えば、リソース使用量を最小限にするため)、コスト(例えば、コストを最小限にするため、または、リソースコストをクライアントが指定した予算内にするため)、エネルギー使用量(例えば、エネルギー使用量を最小限にするため、または「グリーン」エネルギーを優先するため)、ネットワークの局所性(例えば、2つ以上のリソース間のネットワークの近接性を最小限にするため)のメトリクス、及び/または任意の他の適切なメトリクスの最適化(例えば、改善)を含んでよい、または、それらに関連付けられてよい。配置基準として使用されるパフォーマンスメトリクスとコストメトリクスは、物理的計算インスタンスによる物理アクセラレータの使用に関連付けられていることが多い。パフォーマンスメトリクスは、プロバイダネットワーク内、及び/またはプロバイダネットワークとクライアントデバイス間で測定された、待ち時間や帯域幅などのネットワーク関連のメトリクスを含んでよい。パフォーマンスメトリクスは、プロセッサの使用、GPUの使用、メモリの使用、ストレージの使用などに関連する任意の他のメトリクスを含んでよい。例として、ネットワーク待ち時間及び/または帯域幅を最小限に抑えるために、物理的計算インスタンスのアプリケーションインスタンスの位置は、物理アクセラレータと同じラック内で選択されてよく、これにより、基盤となる物理的計算インスタンスと物理アクセラレータ間のネットワーク通信がラックのトップオブラックスイッチを超えないようになる。同じラック内の位置が利用できない場合は、物理アクセラレータの近くのインスタンス位置(例えば、同じデータセンタ内)を選択して、配置基準を最適化してよい。別の例として、クライアントデバイスに最も近いデータセンタ内のアクセラレータ位置を選択して、物理アクセラレータとクライアントデバイス間の待ち時間を最小限にしてよく、この場合、データセンタのクライアントデバイスへの近接性は、予測または過去の待ち時間及び/または地理的近接性に基づいて測定される。
【0105】
本明細書で使用される場合、プロビジョニングは一般に、クライアントの基盤となる物理的計算インスタンスのリソース(例えば、計算及びメモリリソース)を(例えば、利用可能な物理的計算インスタンス及び他のリソースのプールから)確保することと、必要なソフトウェア(例えば、オペレーティングシステム)をインストールまたは起動することと、クライアントが指定したタスクを実行するために仮想計算インスタンスをクライアントが利用できるようにすることとを含む。仮想計算インスタンスは、様々な機能を有する複数のインスタンスタイプから選択されてよい。
【0106】
ネットワークの局所性のための配置最適化は、ネットワーク内の近接性に(少なくとも部分的に)基づいて、複数のリソース(例えば、1つまたは複数の物理的計算インスタンスと1つまたは複数の物理アクセラレータ)のグループ化を試みる場合がある。ネットワークの局所性は、リソースが属するネットワーク内の1つまたは複数の位置、接続、関連付け、またはゾーンを指す場合がある。リソース自体が、ノードまたは特定のネットワーク位置(例えば、ネットワークアドレス)であってよく、したがってネットワークの局所性であってよい。ネットワークの局所性は、リソースが接続されているネットワークルータ、スイッチ、またはその他のネットワークデバイスもしくはインフラストラクチャ(ネットワークスパインなど)に基づいて決定されてよい。ネットワークの局所性は、一部の実施形態では、論理的に関連付けられたネットワークデバイスまたはリソースに従って論理的に決定されてよい。リソースは、特定のネットワークルータに接続されているなど、複数のネットワークの局所性に属している場合があり、このルータは、他のネットワークルータやネットワークデバイスにリンクされてよい。アプリケーションインスタンス位置及び/またはアクセラレータ位置は、ネットワークの局所性に(少なくとも部分的に)基づいて選択されてよい。
【0107】
1105で、クライアントライブラリが、プロビジョニングされたアプリケーションインスタンスにロードされる。一部の実施形態では、インスタンスマネージャも、ロード/インストールされる。これらのコンポーネントの機能については、他の箇所で詳しく記載した。
【0108】
アクセラレータスロットは、1107でアプリケーションインスタンスに接続される。
【0109】
アクセラレータスロットにモデルをロードする要求は、1109で受信される。例えば、ASM329がこの要求を受信する。通常、モデルをロードするこの要求には、モデルの位置が含まれる。この要求は、ユーザからであってよい、または、プロビジョニングされたアプリケーションインスタンスからであってよいことに注意されたい。
【0110】
1111で、ロードされるモデルが検証され、使用する推論エンジンが決定され、モデルがロードされる。モデルの検証と推論エンジンの選択の例については、前に詳しく記載した。
【0111】
1113で、アプリケーションの実行中にロードされたモデルを使用して推論が実行され、1115で、アプリケーションインスタンスのアプリケーションによって指示されたように結果が返信される。アクセラレータアプライアンスは、上記の間に管理されるリソースを含めて管理されることに注意されたい。
【0112】
図12は、弾力的推論サービスを実施する際にウェブサービスプロバイダによって行われる方法の実施形態を示す。特に、方法の実施形態は、推論要求の処理を記載する。
【0113】
1200で、複数のアクセラレータスロットがアプリケーションインスタンスで使用するために構成される。構成は、例えば、図11などの他の箇所で詳述するように、プロビジョニング、接続、選択、モデルのロードなどを含む。各アクセラレータスロットは個別にアドレス指定可能であり、アプリケーションが様々なアクセラレータスロットを呼び出して様々なアクションを実行し得ることに注意されたい。
【0114】
1201で、推論要求がアプリケーションインスタンスによって受信される。例えば、フロントエンド103は、スコアリングデータを受信し、このデータをアプリケーションインスタンス211に提供する。
【0115】
推論要求データ(スコアリングデータ)は、1203で、アプリケーションインスタンスに接続された複数のアクセラレータの結合された推論エンジンに転送される。例えば、クライアントライブラリ315が、このデータをアプリケーション213から複数の推論エンジン325に転送するために呼び出される。
【0116】
最初の応答は、1205で、アプリケーションによって複数のアクセラレータスロットのうちの1つから受信される。この応答は、使用する結果と見なされる。後続の応答が受信されると、それらは1207で処理される。一部の実施形態では、処理は、後続の応答のうちの1つまたは複数を捨てることを含む。一部の実施形態では、後続の応答がマージされる。アプリケーションは1209で、最初の応答を使用する。
【0117】
一部の実施形態では、応答のタイミングが追跡される。例えば、各応答が受信されると、応答にかかった時間が計算される。タイミングの追跡により、アプリケーション(またはアプリケーションユーザ)は、アクセラレータスロットの接続を解除して別のアクセラレータスロットを接続する必要があるかどうかを判断できる。1211で、1つまたは複数の応答のタイミングが閾値よりも大きいかどうかの判断が行われ、ユーザの1人または複数に移行の可能性について警告が行われる、及び/または、別のアクセラレータスロットへの実際の移行が行われる。そのため、アクセラレータアプライアンス221、またはアクセラレータアプライアンス221とアプリケーションインスタンス211を結合するネットワーク(複数可)のスピードが低下すると、アプリケーション及び/またはユーザは、調整することができる。アクセラレータアプライアンスは、上記の間に管理されるリソースを含めて管理されることに注意されたい。
【0118】
接続解除と新しい接続は、移行の形態である。そのため、アプリケーションインスタンスに関して1つまたは複数のアクセラレータスロットが1つまたは複数のアクセラレータスロットに置き換えられ、アプリケーションインスタンスの処理が1つまたは複数のアクセラレータスロットの第1のセットから1つまたは複数のアクセラレータスロットの第2のセットに移行され、1つまたは複数のアクセラレータスロットの第2のセットを使用したアプリケーションインスタンスのアプリケーションが実行される。一部の実施形態では、新しい1つまたは複数のアクセラレータスロットは、1つまたは複数のアクセラレータスロットの第1のセットと比較して異なるレベルの処理を提供する。一部の実施形態では、1つまたは複数のアクセラレータスロットの第1のセットを1つまたは複数のアクセラレータスロットの第2のセットで置き換えることは、1つまたは複数のアクセラレータスロットの第1のセットの代わりに1つまたは複数のアクセラレータスロットの第2のセットに動作を引き受けさせることを含む。
【0119】
図13は、弾力的推論サービスを実施する際にウェブサービスプロバイダによって行われる方法の実施形態を示す。特に、方法の実施形態は、アクセラレータスロットのプロビジョニングの処理を記載する。
【0120】
1301で、モデルのためにアクセラレータスロットをプロビジョニングし、接続する要求が受信される。要求は、使用するデータタイプ、モデル自体(またはその位置)、タイミング要件、コスト要件などの1つまたは複数を含んでよい。
【0121】
要求の要件を満たす利用可能なアクセラレータスロットが、1303で決定される。例えば、モデルのデータタイプが評価され、それらのタイプを処理できないアクセラレータスロットは要件を満たさないと見なされる。一部の実施形態では、この決定は、どのアクセラレータスロットが機能し、要件を満たすかを決定するためにモデルを実行することを含む。他の実施形態では、モデルは、弾力的推論サービスによって実行された他のモデルと比較され、同様のモデルの以前の実行が決定を知らせる。さらに、アクセラレータスロットの位置は、他の箇所で詳述されているように最適化されてよい。
【0122】
要求の要件を満たすと決定された少なくとも1つまたは複数のアクセラレータスロットが1305でプロビジョニングされる。プロビジョニングされた1つまたは複数のアクセラレータスロットは、1307でアプリケーションインスタンスに接続される。プロビジョニングと接続については、前に詳しく記載した。
【0123】
着信推論要求データ(スコアリングデータ)は、1309でアプリケーションインスタンスに接続された少なくとも1つまたは複数のアクセラレータスロットの結合された推論エンジン(複数可)に転送される。例えば、クライアントライブラリ315が、このデータをアプリケーション213から複数の推論エンジン325に転送するために呼び出される。
【0124】
応答(複数可)は、1311で追跡される。例えば、各応答が受信されると、応答にかかった時間が計算される及び/またはエラーがあれば、アクセラレータスロットによってスローされる。
【0125】
モデル及びアプリケーションの要件を満たしたアクセラレータスロットの評価は、一部の実施形態では1313で行われる。例えば、応答はタイムリーか、結果は正しいか、アクセラレータスロットは正常かなど。
【0126】
一部の実施形態では、1315で、接続されたアクセラレータスロットの1つまたは複数は、それらがもはや要件を満たさない場合、1315で接続を解除される。
【0127】
一部の実施形態では、スロット(複数可)が要件を満たしていない場合、要求の要件を満たす利用可能なアクセラレータスロットが別に決定される。これにより、スケーリングが可能になる。接続解除が常に発生するとは限らず、一部の実施形態では、より多くのスロットがスケーリングに配分されることに注意されたい。
【0128】
アクセラレータアプライアンスは、上記の間に管理されるリソースを含めて管理されることに注意されたい。
【0129】
図14は、アクセラレータベースの推論サービスを使用するシステムの実施形態を示す。この図は、そのようなシステムのネットワークの側面を強調している。アクセラレータベースの推論サービス仮想ネットワーク1401は、1つまたは複数のアクセラレータアプライアンス1421を含む。詳細に記載すると、各アクセラレータアプライアンスは、アクセラレータベースの推論サービス通信チャネル(ネットワークなど)1401の「トランキング」通信チャネル1403に結合された1つまたは複数のアクセラレータスロット1423を有する。トランク通信チャネル1403は、アクセラレータアプライアンス1421の各アクセラレータスロット1423の位置識別子を認識している。
【0130】
図に示すように、ユーザは異なる仮想ネットワーク(ユーザAの仮想ネットワーク1411及びユーザBの仮想ネットワーク1431)を有する。各仮想ネットワーク内には、少なくとも1つのネットワークインタフェース(通信チャネル1415及び通信チャネル1435など)及び少なくとも1つのアプリケーションインスタンス(アプリケーションインスタンス1413及びアプリケーションインスタンス1433など)がある。アプリケーションインスタンスは、そのネットワークインタフェースを介してユーザの仮想ネットワークでアクセラレータスロットと通信する。
【0131】
一部の実施形態では、ネットワーク名前空間を利用して、同じ物理アクセラレータアプライアンス上のアクセラレータスロット間でネットワークインタフェースを分離し、各アクセラレータスロットのネットワークインタフェースがそれ自体の名前空間に存在するようにする。アクセラレータスロットのネットワークインタフェースを自身の名前空間に移動すると、異なる仮想ネットワークが重複するIPアドレスを有することが可能になる。
【0132】
図15は、一部の実施形態による例示的なプロバイダネットワーク(または「サービスプロバイダシステム」)環境を示す。プロバイダネットワーク1500は、1つまたは複数の仮想化サービス1510を介して顧客にリソース仮想化を提供することができ、仮想化サービスにより、顧客は、1つまたは複数のデータセンタのプロバイダネットワーク(複数可)内のデバイスに実装された計算及びストレージリソースを含むがこれらに限定されない仮想リソースのインスタンス1512を購入、レンタル、または取得することが可能になる。ローカルインターネットプロトコル(IP)アドレス1516は、リソースインスタンス1512に関連付けられてよく、ローカルIPアドレスは、プロバイダネットワーク1500上のリソースインスタンス1512の内部ネットワークアドレスである。一部の実施形態では、プロバイダネットワーク1500はまた、パブリックIPアドレス1514及び/または顧客がプロバイダ1500から取得し得るパブリックIPアドレス範囲(例えば、インターネットプロトコルバージョン4(IPv4)またはインターネットプロトコルバージョン6(IPv6)アドレス)を提供してよい。
【0133】
従来、プロバイダネットワーク1500は、仮想化サービス1510を介して、サービスプロバイダの顧客(例えば、1つまたは複数の顧客デバイス(複数可)1552を含む1つまたは複数のクライアントネットワーク1550A~1550Cを運用する顧客)が、顧客に割り当てられたまたは配分された少なくとも一部のパブリックIPアドレス1514を、顧客に割り当てられた特定のリソースインスタンス151と動的に関連付けることを可能にし得る。プロバイダネットワーク1500はまた、顧客に配分された1つの仮想計算リソースインスタンス1512に以前にマッピングされたパブリックIPアドレス1514を、同じく顧客に配分された別の仮想計算リソースインスタンス1512に再マッピングすることを可能にし得る。サービスプロバイダによって提供される仮想計算リソースインスタンス1512及びパブリックIPアドレス1514を使用して、顧客ネットワーク(複数可)1550A~1550Cのオペレータなどのサービスプロバイダの顧客は、例えば、顧客固有のアプリケーションを実装し、インターネットなどの中間ネットワーク1540上に顧客のアプリケーションを提示する。次に、中間ネットワーク1540上の他のネットワークエンティティ1520は、顧客ネットワーク(複数可)1550A~1550Cによって公開された宛先パブリックIPアドレス1514へのトラフィックを生成してよく、トラフィックはサービスプロバイダデータセンタにルーティングされ、データセンタで、ネットワーク基板を介して、宛先パブリックIPアドレス1514に現在マップされている仮想計算リソースインスタンス1512のローカルIPアドレス1516にルーティングされる。同様に、仮想計算リソースインスタンス1512からの応答トラフィックは、ネットワーク基板を介して中間ネットワーク1540にルーティングされて、ソースエンティティ1520に戻されてよい。
【0134】
本明細書では、ローカルIPアドレスは、例えば、プロバイダネットワーク内のリソースインスタンスの内部のまたは「プライベートな」ネットワークアドレスを指す。ローカルIPアドレスは、インターネットエンジニアリングタスクフォース(IETF:Internet Engineering Task Force)リクエストフォーコメント(RFC:Request for Comments)1918によって確保されたアドレスブロック内にあってよい、及び/またはIETF RFC4193で指定されたアドレスフォーマットであってよく、プロバイダネットワーク内で変更可能であってよい。プロバイダネットワークの外部から発信されたネットワークトラフィックは、ローカルIPアドレスに直接ルーティングされず、代わりに、トラフィックはリソースインスタンスのローカルIPアドレスにマップされているパブリックIPアドレスを使用する。プロバイダネットワークは、パブリックIPアドレスからローカルIPアドレスへのマッピング(またはその逆)を実行するためのネットワークアドレス変換(NAT)または同様の機能を提供するネットワークデバイスまたはアプライアンスを含み得る。
【0135】
パブリックIPアドレスは、サービスプロバイダまたは顧客のいずれかによってリソースインスタンスに割り当てられるインターネット可変ネットワークアドレスである。パブリックIPアドレスにルーティングされたトラフィックは、例えば、1:1NATを介して変換され、リソースインスタンスの各ローカルIPアドレスに転送される。
【0136】
一部のパブリックIPアドレスは、プロバイダネットワークインフラストラクチャによって特定のリソースインスタンスに割り当てられてよく、これらのパブリックIPアドレスは、標準のパブリックIPアドレス、または単に標準IPアドレスと呼ばれてよい。一部の実施形態では、リソースインスタンスのローカルIPアドレスへの標準IPアドレスのマッピングは、全てのリソースインスタンスタイプのデフォルトの起動構成である。
【0137】
少なくとも一部のパブリックIPアドレスは、プロバイダネットワーク1500の顧客に配分されるか、または顧客によって取得されてよく、次に、顧客は、配分されたパブリックIPアドレスを、顧客に配分された特定のリソースインスタンスに割り当ててよい。これらのパブリックIPアドレスは、顧客パブリックIPアドレス、または単に顧客IPアドレスと呼ばれてよい。標準IPアドレスの場合のようにプロバイダネットワーク1500によってリソースインスタンスに割り当てられる代わりに、顧客IPアドレスは、例えば、サービスプロバイダによって提供されるAPIを介して、顧客によってリソースインスタンスに割り当てられてよい。標準IPアドレスとは異なり、顧客IPアドレスは顧客のアカウントに配分され、必要または所望に応じて、各顧客によって他のリソースインスタンスに再マッッピングすることができる。顧客IPアドレスは、特定のリソースインスタンスではなく、顧客のアカウントに関連付けられており、顧客が解放することを選択するまで、顧客がそのIPアドレスを制御する。従来の静的IPアドレスとは異なり、顧客IPアドレスは、顧客のパブリックIPアドレスを顧客のアカウントに関連付けられたリソースインスタンスに再マッピングすることで、リソースインスタンスまたはアベイラビリティーゾーンの障害を顧客がマスクするのを可能にする。例えば、顧客IPアドレスは、顧客IPアドレスを交換用のリソースインスタンスに再マッピングすることで、顧客が、顧客のリソースインスタンスまたはソフトウェアの問題を回避できるようにする。
【0138】
図16は、一部の実施形態による、IPトンネリング技術を使用してネットワーク基板上にオーバーレイネットワークを実装するデータセンタの例を示す。プロバイダデータセンタ1600は、ルータ、スイッチ、ネットワークアドレストランスレータ(NAT)などのネットワーキングノード1612を含むネットワーク基板を含んでよく、これらは、ソフトウェア、ハードウェア、またはそれらの組み合わせとして実装されてよい。一部の実施形態は、インターネットプロトコル(IP)トンネリング技術を使用して、オーバーレイネットワークを提供してよく、オーバーレイネットワークを介して、カプセル化されたパケットがトンネルを使用してネットワーク基板1610を通過してよい。IPトンネリング技術は、ネットワーク上にオーバーレイネットワーク(例えば、図16のデータセンタ1600内のローカルネットワーク)を作成するためのマッピング及びカプセル化システムを提供してよく、オーバーレイ層(パブリックIPアドレス)とネットワーク基板1610層(ローカルIPアドレス)に別個の名前空間を提供してよい。オーバーレイ層のパケットは、それらのトンネル基板ターゲット(ローカルIPアドレス)が何かを決定するために(例えば、マッピングサービス1630によって提供される)マッピングディレクトリに照らしてチェックされてよい。IPトンネリング技術は、仮想ネットワークトポロジ(オーバーレイネットワーク)を提供し、顧客に提示されるインタフェース(例えば、サービスAPI)はオーバーレイネットワークに接続されているため、顧客がパケットの送信先のIPアドレスを提供すると、IPオーバーレイアドレスがどこであるかを知っているマッピングサービス(例えば、マッピングサービス1630)と通信することでIPアドレスが仮想空間で実行される。
【0139】
一部の実施形態では、IPトンネリング技術は、IPオーバーレイアドレス(パブリックIPアドレス)を基板IPアドレス(ローカルIPアドレス)にマッピングしてよく、2つの名前空間の間のトンネルにパケットをカプセル化してよく、トンネルを介して正しいエンドポイントにパケットを配信してよく、ここで、カプセル化がパケットから取り除かれる。図16では、ホスト1620A上の仮想マシン(VM)1624A(VMM1622Aを介した、VM1624A1~1624A4)から中間ネットワーク1640上のデバイスへのオーバーレイネットワークトンネル1634Aの例と、ホスト1620A上のVM1624A(VMM1622Aを介した、VM1624A1~1624A4)とホスト1620B上のVM1624B(VMM1622Bを介した、VM1624B1~1624B4)の間のオーバーレイネットワークトンネル1634Bの例とが示されている。一部の実施形態では、パケットは、送信前にオーバーレイネットワークパケットフォーマットでカプセル化されてよく、オーバーレイネットワークパケットは、受信後に取り除かれてよい。他の実施形態では、オーバーレイネットワークパケットにパケットをカプセル化する代わりに、オーバーレイネットワークアドレス(パブリックIPアドレス)を、送信前にパケットの基板アドレス(ローカルIPアドレス)に埋め込み、受信時にパケットアドレスから取り除いてよい。例として、オーバーレイネットワークは、パブリックIPアドレスとして32ビットIPv4(インターネットプロトコルバージョン4)アドレスを使用して実装されてよく、IPv4アドレスは、基板ネットワーク上で使用される128ビットIPv6(インターネットプロトコルバージョン6)アドレスの一部としてローカルIPアドレスとして埋め込まれてよい。
【0140】
図16を参照すると、実施形態が実装され得る少なくとも一部のネットワークは、ハードウェア仮想化技術を含んでよく、ハードウェア仮想化技術によって、複数のオペレーティングシステムが、ホストコンピュータ(例えば、図16のホスト1620A及び1620B)上で、すなわち、ホスト1620上で仮想マシン(VM)1624として同時に実行することができる。VM1624は、例えば、ネットワークプロバイダの顧客に貸し出されるかまたはリースされるホスト1620上のスロットで実行されてよい。ホスト1620上のハイパーバイザ、または仮想マシンモニタ(VMM)1622は、仮想プラットフォームを有するホスト上にVM1624を提示し、VM1624の実行を監視する。各VM1624は、1つまたは複数のローカルIPアドレスを備えてよく、ホスト1620上のVMM1622は、ホスト上のVM1624のローカルIPアドレスを認識し得る。マッピングサービス1630は、(例えば、記憶されたマッピング情報1632によって)ルータまたは他のデバイスのネットワークIPプレフィックス及びIPアドレスを認識しており、ローカルネットワーク上でIPアドレスを提供し得る。これには、複数のVM1624にサービスを提供するVMM1622のIPアドレスが含まれる。マッピングサービス1630は、例えば、サーバシステム上に集中化されてよい、あるいは、ネットワーク上の2つ以上のサーバシステムまたは他のデバイス間に分散されてよい。ネットワークは、例えば、マッピングサービス技術及びIPトンネリング技術を使用して、例えば、データセンタ1600ネットワーク内の異なるホスト1620上のVM1624間でデータパケットをルーティングしてよく、内部ゲートウェイプロトコル(IGP:Interior Gateway Protocol)を使用して、このようなローカルネットワーク内でルーティング情報を交換してよいことに注意されたい。
【0141】
さらに、プロバイダデータセンタ1600ネットワーク(自律システム(AS)と呼ばれることもある)などのネットワークは、マッピングサービス技術、IPトンネリング技術、及びルーティングサービス技術を使用して、VM1624からインターネットの宛先、及びインターネットソースからVM1624にパケットをルーティングしてよい。外部ゲートウェイプロトコル(EGP)またはボーダーゲートウェイプロトコル(BGP)が通常、インターネット上のソースと宛先の間のインターネットルーティングに使用されることに注意されたい。図16は、一部の実施形態による、リソース仮想化技術を提供し、インターネットトランジットプロバイダに接続するエッジルータ(複数可)1614を介して完全なインターネットアクセスを提供するネットワークを実装するプロバイダデータセンタ1600の例を示す。プロバイダデータセンタ1600は、例えば、ハードウェア仮想化サービスを介して仮想コンピューティングシステム(VM1624)を実装する能力、及びストレージ仮想化サービスを介してストレージリソース1618A~1618Nに仮想データストア1616を実装する能力を顧客に提供してよい。
【0142】
データセンタ1600ネットワークは、仮想リソースとの間でトラフィックをルーティングするために、例えば、データセンタ1600内のホスト1620上のVM1624からインターネット宛先に、また、インターネットソースからVM1624にパケットをルーティングするために、IPトンネリング技術、マッピングサービス技術、及びルーティングサービス技術を実施してよい。インターネットソース及び宛先は、例えば、中間ネットワーク1640に接続されたコンピューティングシステム1670、及び、(例えば、ネットワーク1650をインターネットトランジットプロバイダに接続するエッジルータ(複数可)1614を介して)中間ネットワーク1640に接続するローカルネットワーク1650に接続されたコンピューティングシステム1652を含んでよい。プロバイダデータセンタ1600ネットワークはまた、データセンタ1600内のリソース間で、例えば、データセンタ1600内のホスト1620上のVM1624から、データセンタ1600内の同じホスト上または他のホスト1620上の他のVM1624にパケットをルーティングしてよい。
【0143】
データセンタ1600を備えるサービスプロバイダはまた、追加のデータセンタ(複数可)1660を備えてよく、データセンタ(複数可)1660は、データセンタ1600と同様のハードウェア仮想化技術を含み、また中間ネットワーク1640に接続されてよい。パケットは、データセンタ1600から他のデータセンタ1660に、例えば、データセンタ1600のホスト1620上のVM1624から、別の同様のデータセンタ1660内の別のホスト上の別のVMに、またはその逆に転送されてよい。
【0144】
上記では、複数のオペレーティングシステムをホスト上の仮想マシン(VM)としてホストコンピュータ上で同時に実行できるようにするハードウェア仮想化技術について記載したが、VMは、ネットワークプロバイダの顧客に貸し出されるかまたはリースされているホスト上のスロットでインスタンス化されてよく、ハードウェア仮想化技術を使用して、他の計算リソース、例えばストレージリソース1618A~1618Nを、同様の方法でネットワークプロバイダの顧客に仮想リソースとして提供してもよい。
【0145】
図17は、一部の実施形態による、プロバイダネットワーク上の仮想ネットワークを少なくとも一部の顧客に提供するプロバイダネットワークの例を示す。例えば、プロバイダネットワーク1700上の顧客の仮想ネットワーク1760は、顧客が、顧客ネットワーク1750上の既存のインフラストラクチャ(例えば、1つまたは複数の顧客デバイス1752)を、論理的に分離されたリソースインスタンスのセット(例えば、VM1724A、1724B、及びストレージ1718A、1718B)に接続することを可能にし、且つ、セキュリティサービス、ファイアウォール、侵入検出システムなどの管理機能をそれらのリソースインスタンスを含むように拡張することを可能にする。
【0146】
顧客の仮想ネットワーク1760は、プライベート通信チャネル1742を介して顧客ネットワーク1750に接続されてよい。プライベート通信チャネル1742は、例えば、ネットワークトンネリング技術または中間ネットワーク1740を介した他の技術に従って実装されたトンネルであってよい。中間ネットワークは、例えば、共有ネットワークまたはインターネットなどのパブリックネットワークであってよい。あるいは、プライベート通信チャネル1742は、仮想ネットワーク1760と顧客ネットワーク1750の間の直接の専用接続を介して実装されてよい。
【0147】
パブリックネットワークは、複数のエンティティへのオープンアクセスと複数のエンティティ間の相互接続性を提供するネットワークとして大まかに定義されてよい。インターネット、またはワールドワイドウェブ(WWW)は、パブリックネットワークの例である。共有ネットワークは、アクセスが一般に制限されていないパブリックネットワークとは対照的に、アクセスが2つ以上のエンティティに制限されているネットワークとして大まかに定義されてよい。共有ネットワークは、例えば、1つまたは複数のローカルエリアネットワーク(LAN)及び/またはデータセンタネットワーク、または相互接続されてワイドエリアネットワーク(WAN)を形成する2つ以上のLANまたはデータセンタネットワークを含んでよい。共有ネットワークの例は、会社ネットワーク及び他の企業ネットワークを含み得るが、これらに限定されない。共有ネットワークは、ローカルエリアをカバーするネットワークからグローバルネットワークの範囲のどこにあってもよい。共有ネットワークは、少なくとも一部のネットワークインフラストラクチャをパブリックネットワークと共有してよく、共有ネットワークは、パブリックネットワークを含み得る1つまたは複数の他のネットワークに結合されてよく、他のネットワーク(複数可)と共有ネットワークの間のアクセスは制御されていることに注意されたい。共有ネットワークは、インターネットなどのパブリックネットワークとは対照的に、プライベートネットワークと見なされてもよい。一部の実施形態では、共有ネットワークまたはパブリックネットワークのいずれかが、プロバイダネットワークと顧客ネットワークの間の中間ネットワークとして機能してよい。
【0148】
プロバイダネットワーク1700上の顧客のための仮想ネットワーク1760を確立するために、1つまたは複数のリソースインスタンス(例えば、VM1724A、1724B、及びストレージ1718A、1718B)を仮想ネットワーク1760に配分してよい。他のリソースインスタンス(例えば、ストレージ1718C及びVM1724C)は、他の顧客が使用するためにプロバイダネットワーク1700上で利用可能であってよいことに注意されたい。ある範囲のパブリックIPアドレスもまた、仮想ネットワーク1760に配分されてよい。さらに、プロバイダネットワーク1700の1つまたは複数のネットワークノード(例えば、ルータ、スイッチなど)が仮想ネットワーク1760に配分されてよい。プライベート通信チャネル1742は、仮想ネットワーク1760のプライベートゲートウェイ1762と顧客ネットワーク1750のゲートウェイ1756の間に確立されてよい。
【0149】
一部の実施形態では、パブリックゲートウェイ1762に加えて、またはその代わりに、仮想ネットワーク1760は、パブリックゲートウェイ1764を備えてよく、パブリックゲートウェイ1764は、プライベート通信チャネル1742に加えて、またはその代わりに、中間ネットワーク1740を介して、仮想ネットワーク1760内のリソースがエンティティ(例えば、ネットワークエンティティ1744)と(または、その逆)直接通信することを可能にする。
【0150】
仮想ネットワーク1760は、2つ以上のサブネットワーク、またはサブネット1770に細分されてよいが、必ずしも細分されなくてよい。例えば、プライベートゲートウェイ1762とパブリックゲートウェイ1764の両方を含む実施態様では、仮想ネットワーク1760は、プライベートゲートウェイ1762を介して到達可能なリソース(この例では、VM1724A及びストレージ1718A)を含むサブネット1770Aと、パブリックゲートウェイ1764を介して到達可能なリソース(この例では、VM1724B及びストレージ1718B)を含むサブネット1770Bに細分されてよい。
【0151】
顧客は、特定の顧客のパブリックIPアドレスを仮想ネットワーク1760の特定のリソースインスタンスに割り当ててよい。次に、中間ネットワーク1740上のネットワークエンティティ1744は、顧客によって公開されたパブリックIPアドレスにトラフィックを送信してよく、トラフィックは、プロバイダネットワーク1700によって、関連するリソースインスタンスにルーティングされる。リソースインスタンスからのリターントラフィックは、プロバイダネットワーク1700によって、中間ネットワーク1740を介してネットワークエンティティ1744に戻されるようにルーティングされる。リソースインスタンスとネットワークエンティティ1744の間のトラフィックのルーティングは、パブリックIPアドレスとリソースインスタンスのローカルIPアドレスの間で変換するためにネットワークアドレス変換を要し得ることに注意されたい。
【0152】
一部の実施形態は、図17に示されるように、顧客が顧客の仮想ネットワーク1760内のパブリックIPアドレスを顧客の外部ネットワーク1750上のデバイスに再マッピングすることを可能にし得る。パケットが(例えば、ネットワークエンティティ1744から)受信されると、ネットワーク1700は、パケットによって示される宛先IPアドレスが外部ネットワーク1750上のエンドポイントに再マッピングされたと判断し、プライベート通信チャネル1742または中間ネットワーク1740を介した各エンドポイントへのパケットのルーティングを処理してよい。応答トラフィックは、エンドポイントからプロバイダネットワーク1700を介してネットワークエンティティ1744にルーティングされてよい、あるいは、顧客ネットワーク1750によってネットワークエンティティ1744に直接ルーティングされてよい。ネットワークエンティティ1744の観点からは、ネットワークエンティティ1744がプロバイダネットワーク1700上の顧客のパブリックIPアドレスと通信しているように見える。しかしながら、ネットワークエンティティ1744は、実際には、顧客ネットワーク1750上のエンドポイントと通信している。
【0153】
図17は、プロバイダネットワーク1700の外部にある中間ネットワーク1740上のネットワークエンティティ1744を示しているが、ネットワークエンティティは、プロバイダネットワーク1700上のエンティティであってもよい。例えば、プロバイダネットワーク1700によって提供されるリソースインスタンスの1つは、顧客によって公開されたパブリックIPアドレスにトラフィックを送信するネットワークエンティティであってよい。
【0154】
一部の実施形態では、本明細書中に記載する技術の一部または全てを実装するシステムは、図18に示すコンピュータシステム1800など、1つまたは複数のコンピュータアクセス可能な媒体を含むまたはそれらにアクセスするように構成される汎用コンピュータシステムを含んでよい。図示の実施形態では、コンピュータシステム1800は、入力/出力(I/O)インタフェース1830を介してシステムメモリ1820に結合された1つまたは複数のプロセッサ1810を含む。コンピュータシステム1800は、I/Oインタフェース1830に結合されたネットワークインタフェース1840をさらに含む。図18は、コンピュータシステム1800を単一のコンピューティングデバイスとして示し、様々な実施形態では、コンピュータシステム1800は、1つのコンピューティングデバイス、または単一のコンピュータシステム1800として一緒に動作するように構成された任意の数のコンピューティングデバイスを含んでよい。
【0155】
様々な実施形態では、コンピュータシステム1800は、1つのプロセッサ1810を含むユニプロセッサシステム、または幾つかのプロセッサ1810(例えば、2つ、4つ、8つ、または別の適切な数)を含むマルチプロセッサシステムであってよい。プロセッサ1810は、命令を実行することができる任意の適切なプロセッサであってよい。例えば、様々な実施形態では、プロセッサ1810は、x86、ARM、PowerPC、SPARC、もしくはMIPS ISA、または任意の他の適切なISAなどの様々な命令セットアーキテクチャ(ISA)のうちのいずれかを実装する汎用または埋め込みプロセッサであってよい。マルチプロセッサシステムでは、プロセッサ1810はそれぞれ、同じISAを一般に実装し得るが、必ずしもそうでなくてもよい。
【0156】
システムメモリ1820は、プロセッサ(複数可)1810によってアクセス可能な命令及びデータを記憶してよい。様々な実施形態では、システムメモリ1820は、ランダムアクセスメモリ(RAM)、スタティックRAM(SRAM)、同期ダイナミックRAM(SDRAM)、不揮発性/フラッシュ型メモリ、または任意の他のタイプのメモリなどの任意の適切なメモリ技術を使用して実装されてよい。図示の実施形態では、上述の方法、技術及びデータなどの1つまたは複数の所望の機能を実施するプログラム命令及びデータは、システムメモリ1820内にコード1825及びデータ1826として記憶されていることが示されている。
【0157】
一実施形態では、I/Oインタフェース1830は、プロセッサ1810、システムメモリ1820、及び、ネットワークインタフェース1840または他の周辺インタフェースを含むデバイス内の任意の周辺デバイス間のI/Oトラフィックを調整するように構成されてよい。一部の実施形態では、I/Oインタフェース1830は、1つのコンポーネント(例えば、システムメモリ1820)からのデータ信号を、別のコンポーネント(例えば、プロセッサ1810)による使用に適切なフォーマットに変換するように、任意の必要なプロトコル、タイミング、または他のデータ変換を行ってよい。一部の実施形態では、I/Oインタフェース1830は、例えば、ペリフェラルコンポーネントインターコネクト(PCI)バス規格、またはユニバーサルシリアルバス(USB)規格の変形など、様々なタイプの周辺バスを通じて接続されるデバイスに対するサポートを含み得る。一部の実施形態では、I/Oインタフェース1830の機能は、例えば、ノースブリッジ及びサウスブリッジなどの2つ以上の別個のコンポーネントに分割されてよい。また、一部の実施形態では、システムメモリ1820へのインタフェースなどのI/Oインタフェース1830の機能の一部または全ては、プロセッサ1810内に直接組み込まれてよい。
【0158】
ネットワークインタフェース1840は、データが、コンピュータシステム1800と、例えば、図1に示すような他のコンピュータシステムまたはデバイスなどの、ネットワーク(1つまたは複数)1850に接続された他のデバイス1860との間でやりとりされることを可能にするように構成されてよい。様々な実施形態では、ネットワークインタフェース1840は、例えば、イーサネット(登録商標)ネットワークのタイプなどの任意の適切な有線または無線の一般データネットワークを介した通信をサポートしてよい。さらに、ネットワークインタフェース1840は、アナログ音声ネットワークまたはデジタルファイバ通信ネットワークなどの電気通信/テレフォニネットワークを介した、ファイバチャネルSANなどのストレージエリアネットワーク(SAN)を介した、または任意の他の適切なタイプのネットワーク及び/またはプロトコルを介した通信をサポートしてよい。
【0159】
一部の実施形態では、コンピュータシステム1800は、(1つまたは複数のプロセッサ1875を含み、場合によっては1つまたは複数のネットワークインタフェース1840を含む)1つまたは複数のオフロードカード1870を含み、オフロードカード1870は、I/Oインタフェース1830(例えば、ペリフェラルコンポーネントインターコネクトエクスプレス(PCI-E)規格のバージョン、またはクイックパスインターコネクト(QPI)やウルトラパスインターコネクト(UPI)などの別のインターコネクトを実装するバス)を用いて接続される。例えば、一部の実施形態では、コンピュータシステム1800は、計算インスタンスをホストする(例えば、ハードウェア仮想化サービスの一部として動作する)ホスト電子デバイスとして機能してよく、1つまたは複数のオフロードカード1870は、ホスト電子デバイスで実行される計算インスタンスを管理できる仮想化マネージャを実行する。一例として、一部の実施形態では、オフロードカード(複数可)1870は、計算インスタンスの一時停止及び/または一時停止の解除、計算インスタンスの起動及び/または終了、メモリ転送/コピー動作の実行などの計算インスタンス管理動作を行うことができる。これらの管理動作は、一部の実施形態では、コンピュータシステム1800の他のプロセッサ1810A~1810Nによって実行されるハイパーバイザと協調して(例えば、ハイパーバイザからの要求に応じて)オフロードカード(複数可)1870によって行われてよい。しかしながら、一部の実施形態では、オフロードカード(複数可)1870によって実装される仮想化マネージャは、他のエンティティからの(例えば、計算インスタンス自体からの)要求に対応でき、別個のハイパーバイザと協調(または、にサービス)しなくてよい。
【0160】
一部の実施形態では、システムメモリ1820は、上述のようなプログラム命令及びデータを記憶するように構成されたコンピュータアクセス可能な媒体の一実施形態であってよい。しかし、他の実施形態では、プログラム命令及び/またはデータは、異なるタイプのコンピュータアクセス可能な媒体上で、受信、送信、または記憶されてよい。一般的に言えば、コンピュータアクセス可能な媒体は、I/Oインタフェース1830を介してコンピュータシステム1800に結合されるディスクまたはDVD/CD等、磁気媒体または光媒体などの非一時的記憶媒体またはメモリ媒体を含み得る。非一時的コンピュータアクセス可能な記憶媒体はまた、システムメモリ1820または別のタイプのメモリとして、コンピュータシステム1800の一部の実施形態に含まれ得る、RAM(例えば、SDRAM、ダブルデータレート(DDR)SDRAM、SRAM等)、リードオンリメモリ(ROM)などの任意の揮発性または非揮発性媒体を含んでよい。さらに、コンピュータアクセス可能な媒体は、ネットワークインタフェース1840を介して実装され得るような、ネットワーク及び/または無線リンクなどの通信媒体を介して伝送される伝送媒体または電気信号、電磁信号、もしくはデジタル信号などの信号を含み得る。
【0161】
図19は、ウェブサービスプロバイダなどのコンピューティングデバイス1900の例の一般的なコンポーネントのセットの論理配置を示す。一般に、コンピューティングデバイス1900は、電子デバイスとも呼ぶことができる。図に示され、本明細書に記載する技術は、1つまたは複数の電子デバイス(例えば、クライアントエンドステーション及び/またはサーバエンドステーション)に記憶、及び、1つまたは複数の電子デバイスで実行されるコード及びデータを使用して実装することができる。このような電子デバイスは、非一時的なコンピュータ可読記憶媒体(例えば、磁気ディスク、光ディスク、ランダムアクセスメモリ(RAM)、リードオンリメモリ(ROM)、フラッシュメモリデバイス、位相変化メモリ)、及び、一時的コンピュータ可読通信媒体(例えば、搬送波、赤外線信号、デジタル信号などの、電気的、光学的、音響的、または他の形態の伝播信号)などのコンピュータ可読媒体を使用して、コード及びデータを(内部で、及び/またはネットワークを介して他の電子デバイスと)記憶または通信する。さらに、このような電子デバイスは、例えば、コード(例えば、命令1914)及び/またはデータを記憶する1つまたは複数の非一時的機械可読記憶媒体(例えば、メモリ1904)などの1つまたは複数の他のコンポーネントに結合された1つまたは複数のプロセッサ1902のセット(例えば、プロセッサは、マイクロプロセッサ、コントローラ、マイクロコントローラ、中央処理装置、デジタル信号プロセッサ、アプリケーション固有の集積回路、フィールドプログラマブルゲートアレイ、他の電子回路、これらの1つまたは複数の組み合わせ)と、典型的には、1つまたは複数のネットワーク(例えば、ローカルエリアネットワーク(LAN)、インターネット)を介して電子デバイスが他のコンピューティングデバイスとデータを送受信するのを可能にする1つまたは複数の有線または無線のネットワークインタフェース1908のセットなどのハードウェアを含む。プロセッサのセットと他のコンポーネントとの結合は通常、電子デバイス内の1つまたは複数の相互接続(例えば、バス及び場合によってはブリッジ)を介して行われる。したがって、所与の電子デバイスの非一時的な機械可読記憶媒体(例えば、メモリ1904)は通常、その電子デバイスの1つまたは複数のプロセッサ1902のセットで実行するためのコード(例えば、命令1914)を記憶する。様々な実施形態の1つまたは複数の部分は、ソフトウェア、ファームウェア、及び/またはハードウェアの異なる組み合わせを使用して実装されてよい。
【0162】
コンピューティングデバイス1900は、タッチスクリーンまたは液晶ディスプレイ(LCD)などの何らかのタイプの表示要素1906を含むことができるが、ポータブルメディアプレーヤなどの多くのデバイスは、オーディオスピーカなどの他の手段を介して情報を伝達してよく、サーバエンドステーションなどの他のタイプのデバイスは、表示要素1906が全くない場合がある。上記のように、一部の実施形態で使用される一部のコンピューティングデバイスは、ユーザからの入力を受信可能な少なくとも1つの入力及び/または出力コンポーネント(複数可)1912を含む。この入力コンポーネントは、例えば、プッシュボタン、タッチパッド、タッチスクリーン、ホイール、ジョイスティック、キーボード、マウス、キーパッド、または任意の他のこのようなデバイスもしくは要素を含むことができ、それによって、ユーザはコマンドをデバイスに入力することができる。一部の実施形態では、しかしながら、このようなデバイスは、ユーザが、デバイスと物理的に接触する必要なくデバイスを制御することができるように、視覚及び/または音声によるコマンドの組み合わせによって制御されてよく、また、マイクロフォン、カメラ、センサ等を利用してよい。
【0163】
上記のように、記載される実施形態に従って様々な環境で異なるアプローチを実施することができる。例えば、図20は、様々な実施形態に従って態様を実施するための環境2000の例を示す。例えば、一部の実施形態では、要求は、ウェブサーバ(例えば、ウェブサーバ2006)によって受信されるハイパーテキスト転送プロトコル(HTTP)要求であり、ユーザは、電子デバイスを介して、ウェブサーバ2006及びアプリケーションサーバ2008を介して提供されるウェブポータルを介してプロバイダネットワークとインタラクトしてよい。理解されるように、ウェブベースの環境が説明の目的で使用されるが、様々な実施形態を実施するために異なる環境が必要に応じて使用されてよい。システムは、電子クライアントデバイス2002を含み、電子クライアントデバイス2002は、クライアントデバイスとも呼ばれてよく、適切なネットワーク2004を介して要求、メッセージ、または情報を送受信し、デバイス2002のユーザに情報を返信するように動作可能な任意の適切なデバイスであってよい。このようなクライアントデバイスの例には、パーソナルコンピュータ(PC)、携帯電話、携帯型メッセージングデバイス、ラップトップコンピュータ、セットトップボックス、パーソナルデータアシスタント、電子ブックリーダ、ウェアラブル電子デバイス(例えば、眼鏡、リストバンド、モニタ)等が含まれる。1つまたは複数のネットワーク2004は、イントラネット、インターネット、セルラネットワーク、ローカルエリアネットワーク、もしくは任意の他のそのようなネットワーク、または、それらの組み合わせを含む、任意の適切なネットワークを含み得る。このようなシステムのために使用されるコンポーネントは、選択されるネットワーク及び/または環境のタイプに少なくとも部分的に依存し得る。このようなネットワークを介して通信するためのプロトコル及びコンポーネントは周知であり、本明細書において詳細に説明しない。ネットワークを介した通信は、有線または無線接続、及びそれらの組み合わせによって有効にされてよい。この例では、環境が、要求を受信し、要求に応えてコンテンツを供給するウェブサーバ2006を含むので、ネットワーク2004はインターネットを含むが、他のネットワークの場合、同様の目的を果たす代替のデバイスを使用できることは、当業者には明らかである。
【0164】
図示の環境は、少なくとも1つのアプリケーションサーバ2008及びデータストア2010を含む。幾つかのアプリケーションサーバ、層、または、他の要素、プロセス、もしくはコンポーネントがあってよく、これらは、チェーン接続もしくは別様で構成されてよく、適切なデータストアからデータを得る等のタスクを実行するためにインタラクトできることは理解されたい。本明細書で使用する場合、「データストア」という用語は、データを記憶、データにアクセス、及びデータを読み出すことができる任意のデバイスまたはデバイスの組み合わせを指し、これは、任意の標準、分散、またはクラスタ環境内の、データサーバ、データベース、データストレージデバイス、及びデータ記憶媒体の任意の組み合わせ及び任意の数を含んでよい。アプリケーションサーバ2008は、クライアントデバイス2002の1つまたは複数のアプリケーションの態様を実行するために必要に応じてデータストア2010と統合し、且つ、アプリケーションに関するデータアクセス及びビジネス論理の大半を処理するために、任意の適切なハードウェア及びソフトウェアを含み得る。アプリケーションサーバ2008は、データストア2010と協働してアクセス制御サービスを提供し、クライアントデバイス2002に転送されるテキスト、グラフィックス、オーディオ、ビデオ等のコンテンツを生成でき、この例では、コンテンツは、ハイパーテキストマークアップ言語(HTML)、拡張マークアップ言語(XML)、JSON(JavaScript Object Notation)または別の適切な非構造化言語または構造言語の形態で、ウェブサーバによってユーザに提供されてよい。全ての要求及び応答の処理、並びにクライアントデバイス2002とアプリケーションサーバ2008の間のコンテンツの配信は、ウェブサーバ2006によって処理することができる。本明細書に記載される構造コードは、本明細書の他の箇所に記載される任意の適切なデバイスまたはホストマシン上で実行することができるので、ウェブサーバ2006及びアプリケーションサーバ2008は、必要とされず、単にコンポーネントの例にすぎないことを理解されたい。
【0165】
データストア2010は、幾つかの別個のデータテーブル、データベースまたは他のデータ記憶機構、及び特定の側面に関するデータを記憶するための媒体を含み得る。例えば、図示のデータストアは、生産データ2012及びユーザ情報2016を記憶する機構を含み、この機構を使用して、生産側にコンテンツを供給することができる。データストア2010はまた、ログまたはセッションデータ2014を記憶するための機構を含むことも示される。ページ画像情報及びアクセス権情報等、データストアに記憶する必要があり得る多数の他の側面が存在する場合があり、これらは、必要に応じて上に列挙された機構のいずれか、またはデータストア2010内の追加の機構に記憶できることは理解されたい。データストア2010は、そこに関連付けられる論理を通して、アプリケーションサーバ2008から命令を受信して、それに応答してデータを得る、更新する、または別様でデータを処理するように動作可能である。一例では、ユーザは、特定の種類のアイテムの検索要求を提出する場合がある。この場合、データストア2010は、ユーザ情報2016にアクセスして、ユーザのアイデンティティを検証してよく、生産データ2012にアクセスして、その種類のアイテムについての情報を取得することができる。その後、情報は、ユーザがユーザデバイス2002のブラウザを介して視聴できるウェブページ上の結果のリスト等において、ユーザに返信することができる。関心のある特定のアイテムについての情報は、ブラウザの専用ページまたはウィンドウで閲覧できる。
【0166】
ウェブサーバ2006、アプリケーションサーバ2008、及び/またはデータストア2010は、1つまたは複数の電子デバイス2020によって実装されてよく、これらは、電子サーバデバイスまたはサーバエンドステーションとも呼ぶことができ、異なる地理的位置に配置されてもされなくてもよい。1つまたは複数の電子デバイス2020は、それぞれ、オペレーティングシステムを備えてよく、オペレーティングシステムは、そのデバイスの一般的な管理及び動作のための実行可能なプログラム命令を提供し、デバイスのプロセッサによって実行されるとデバイスが意図した機能を行うのを可能にする命令を記憶するコンピュータ可読媒体を通常含む。デバイスのオペレーティングシステム及び一般的な機能の適切な実施態様は、既知または商用的に入手可能であり、かつ、特に本明細書の開示を踏まえると当業者によって容易に実施される。
【0167】
一実施形態における環境は、1つまたは複数のコンピュータネットワークまたは直接接続を用いて通信リンクを介して相互接続された幾つかのコンピュータシステム及びコンポーネントを利用する分散型コンピューティング環境である。しかしながら、このようなシステムは、図20に示すよりも少ないまたは多いコンポーネントを有するシステムにおいても同等に良好に動作し得るということは、当業者に理解されるであろう。したがって、図20の環境2000の描写は、本質的に例示とみなされるべきであり、本開示の範囲を制限するものではない。
【0168】
上記で検討及び提案された様々な実施形態は、多様な動作環境で実施することができ、動作環境は、ある場合には、幾つかの数のアプリケーションのいずれかを動作するために使用し得る1つまたは複数のユーザコンピュータ、コンピューティングデバイス、または処理デバイスを含み得る。ユーザデバイスまたはクライアントデバイスは、標準オペレーティングシステムを実行するデスクトップコンピュータまたはラップトップコンピュータなどの幾つかの汎用パーソナルコンピュータのいずれか、並びにモバイルソフトウェアを実行し、幾つかのネットワーキングプロトコル及びメッセージプロトコルをサポートできるセルラデバイス、無線デバイス及びハンドヘルドデバイスを含むことができる。このようなシステムは、様々な商用的に入手可能なオペレーティングシステム、並びに開発及びデータベース管理等の目的のための他の既知のアプリケーションを実行する幾つかのワークステーションも含み得る。これらのデバイスは、ダミー端末、シンクライアント、ゲーム機、及び/またはネットワークを介して通信できる他のデバイスなどの、他の電子デバイスも含み得る。
【0169】
ほとんどの実施形態は、伝送制御プロトコル/インターネットプロトコル(TCP/IP)、ファイル転送プロトコル(FTP)、ユニバーサルプラグアンドプレイ(UPnP)、ネットワークファイルシステム(NFS)、共通インターネットファイルシステム(CIFS)、拡張メッセージング及びプレゼンスプロトコル(XMPP)、AppleTalkなど、様々な商用的に入手可能なプロトコルのいずれかを使用して通信をサポートするために当業者によく知られている少なくとも1つのネットワークを利用する。ネットワーク(複数可)は、例えば、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、仮想プライベートネットワーク(VPN)、インターネット、イントラネット、エクストラネット、パブリックスイッチドテレフォンネットワーク(PSTN)、赤外線ネットワーク、無線ネットワーク、及びこれらの任意の組み合わせを含み得る。
【0170】
ウェブサーバを利用する実施形態では、ウェブサーバは、HTTPサーバ、ファイル転送プロトコル(FTP)サーバ、共通ゲートウェイインタフェース(CGI)サーバ、データサーバ、Javaサーバ、ビジネスアプリケーションサーバ等を含む、様々なサーバまたは中間層アプリケーションのいずれかを実行できる。サーバ(複数可)はまた、Java(登録商標)、C、C#、もしくはC++等の任意のプログラム言語、または、Perl、Python、PHPもしくはTCL等のスクリプト言語、並びにそれらの組み合わせで書かれた、1つまたは複数のスクリプトまたはプログラムとして実装され得る1つまたは複数のウェブアプリケーションを実行すること等によって、ユーザデバイスからの応答要求で、プログラムまたはスクリプトを実行できてよい。サーバ(複数可)は、Oracle(R)、Microsoft(R)、Sybase(R)、IBM(R)などから市販されているものを含むがこれらに限定されないデータベースサーバも含み得る。データベースサーバは、リレーショナルまたは非リレーショナル(例:「NoSQL」)、分散型または非分散型などであってよい。
【0171】
環境は、上述の様々なデータストア並びに他のメモリ及び記憶媒体を含み得る。これらは、コンピュータの1つまたは複数にローカルな(及び/または、存在する)、または、ネットワーク上のコンピュータのいずれかまたは全てからリモートの記憶媒体上等の、様々な位置に存在し得る。実施形態の特定の組では、情報は、当業者によく知られているストレージエリアネットワーク(SAN)内に存在してよい。同様に、コンピュータ、サーバ、または他のネットワークデバイスに属する機能を実行するための任意の必要なファイルは、適宜、ローカルに及び/またはリモートに記憶されてよい。システムがコンピュータ化されたデバイスを含む場合、このようなデバイスは、それぞれ、バスを介して電気的に結合され得るハードウェア要素を含むことができ、要素は、少なくとも1つの中央処理装置(CPU)、少なくとも1つの入力デバイス(例えば、マウス、キーボード、コントローラ、タッチスクリーン、またはキーパッド)、及び/または、少なくとも1つの出力デバイス(例えば、ディスプレイデバイス、プリンタ、またはスピーカ)を含む。このようなシステムはまた、ディスクドライブ、光学ストレージデバイス、ならびに、ランダムアクセスメモリ(RAM)もしくはリードオンリメモリ(ROM)等のソリッドステートストレージデバイス、並びに、取り外し可能媒体デバイス、メモリカード、フラッシュカード等、1つまたは複数のストレージデバイスを含んでよい。
【0172】
このようなデバイスは、上述のようにコンピュータ可読記憶媒体リーダ、通信デバイス(例えば、モデム、ネットワークカード(無線または有線)、赤外線通信デバイス等)、及び作業メモリを含み得る。コンピュータ可読記憶媒体リーダは、コンピュータ可読記憶媒体と接続することができる、またはコンピュータ可読記憶媒体を受信するよう構成することができ、コンピュータ可読記憶媒体は、リモート、ローカル、固定、及び/または取り外し可能なストレージデバイス、並びにコンピュータ可読情報を一時的及び/またはより恒久的に含み、記憶し、伝送し、かつ読み出すための記憶媒体を表す。システム及び様々なデバイスはまた、通常、オペレーティングシステム、及びクライアントアプリケーションまたはウェブブラウザ等のアプリケーションプログラムを含む、少なくとも1つのワーキングメモリデバイス内に位置する幾つかのソフトウェアアプリケーション、モジュール、サービス、または他の要素を含む。代替の実施形態は、上記のものからの多数の変形を有し得ることが理解されるべきである。例えば、カスタマイズされたハードウェアも使用されてよい、及び/または特定の要素は、ハードウェア、ソフトウェア(アプレット等のポータブルソフトウェアを含む)、もしくはこれら両方において実装されてよい。さらに、ネットワーク入力/出力デバイス等の他のコンピューティングデバイスへの接続が採用されてよい。
【0173】
コードまたはコードの一部を含むための記憶媒体及びコンピュータ可読媒体は、RAM、ROM、電子的消去プログラム可能リードオンリメモリ(EEPROM)、フラッシュメモリ、もしくは他のメモリ技術、コンパクトディスクリードオンリーメモリ(CD-ROM)、デジタル多用途ディスク(DVD)、もしくは他の光学ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ、もしくは他の磁気ストレージデバイス、または所望の情報を記憶するために使用することができ、且つシステムデバイスによってアクセスできる任意の他の媒体を含む、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータ等の情報の記憶及び/または伝送のための、任意の方法または技術で実装される揮発性及び不揮発性の媒体、取外し可能及び取外しできない媒体等であるが、これらに限定されない記憶媒体及び通信媒体を含む当技術分野において既知の、または使用される任意の適切な媒体を含むことができる。本明細書に提供される開示及び教示に基づいて、当業者は、様々な実施形態を実装するための、他の手法及び/または方法を理解されよう。
【0174】
前述の説明には様々な実施形態が記載される。説明の目的で、実施形態の徹底的な理解を提供するために具体的な構成及び詳細が述べられている。しかしながら、当業者には、実施形態がその具体的な詳細を伴わずに実践され得るということもまた明らかであろう。さらに、周知の特徴は、記載する実施形態を不明瞭にしないために、省略または簡素化している場合がある。
【0175】
括弧で囲まれたテキスト及び破線の境界線を有するブロック(例えば、大きなダッシュ、小さなダッシュ、ドットダッシュ、及びドット)は、一部の実施形態に追加の特徴を追加するオプションの操作を示すために本明細書で使用される。ただし、このような表記は、これらが唯一のオプションまたはオプション操作であることを意味するものではない、及び/または特定の実施形態では、実線の境界線を有するブロックはオプションではない。
【0176】
接尾辞付きの参照番号は、様々な実施形態で参照エンティティの1つまたは複数のインスタンスが存在し得ることを示すために使用されてよく、複数のインスタンスがある場合、それぞれが同一である必要はないが、一部の一般的な特性を共有するか、共通の方法で動作し得る。さらに、使用される特定の接尾辞は、特に別段の記載がない限り、特定の量のエンティティが存在することを意味するものではない。したがって、同じまたは異なる接尾文字を使用する2つのエンティティは、様々な実施形態において同じ数のインスタンスを有してもよく、有さなくてもよい。
【0177】
「一実施形態」、「実施形態」、「実施形態の例」等への言及は、記載の実施形態が特定の特徴、構造、または特性を含み得ることを示すが、あらゆる実施形態が、特定の特徴、構造、または特性を必ずしも含むわけではない。その上、このような言いまわしは、同一の実施形態を必ずしも指すわけではない。さらに、特定の特徴、構造、または特性が、実施形態に関連して記載されるとき、このような特徴、構造、または特性を、他の実施形態に関連して達成することは、明示されているか否かにかかわらず、当業者の知識の範囲内であると考えられる。
【0178】
さらに、上記の様々な実施形態において、別段の記載のない限り、「A、B、またはCの少なくとも1つ」という句などの離接語は、A、B、またはCのいずれか、またはA、B、またはCの任意の組み合わせ(例えば、A、B、及び/またはC)を意味すると理解されることを意図している。したがって、離接語は、所与の実施形態が、Aの少なくとも1つ、Bの少なくとも1つ、またはCの少なくとも1つがそれぞれ存在することを必要とすることを意図しておらず、示唆していると理解すべきでもない。
【0179】
本開示の技術の少なくとも一部の実施形態は、以下の条項を考慮して説明することができる。
【0180】
条項1.マルチテナントウェブサービスプロバイダにおいて、アプリケーションインスタンス構成を受信することであって、アプリケーションインスタンスのアプリケーションは、接続されたグラフィックス処理ユニット(GPU)のある部分を機械学習モデルの実行中に利用し、アプリケーションインスタンス構成は、使用する中央処理装置(CPU)の能力の指示、使用する機械学習モデルの算術精度、使用するGPUの能力の指示、アプリケーションの記憶場所、及び、使用するランダムアクセスメモリの量の指示を含む、アプリケーションインスタンス構成を受信することと、アプリケーションインスタンスと、アプリケーションインスタンスに接続されたGPUの部分とをプロビジョニングすることであって、アプリケーションインスタンスは、第1のインスタンス位置の物理的計算インスタンスを使用して実施され、GPUの部分は、第2の位置の物理的GPUを使用して実施され、物理的GPUは、ネットワークを介して物理的計算インスタンスにアクセス可能である、アプリケーションインスタンスと、アプリケーションインスタンスに接続されたGPUの部分と、をプロビジョニングすることと、GPUの部分をアプリケーションインスタンスに接続することと、GPUの接続された部分に機械学習モデルをロードすることと、接続されたGPU上で、GPUの部分を使用してアプリケーションのロードされた機械学習モデルを使用する推論を実行することと、を含む、コンピュータ実装方法。
【0181】
条項2.アプリケーションインスタンスと接続されたGPUの部分は、異なる仮想ネットワーク内にある、条項1に記載の方法。
【0182】
条項3.機械学習モデルは、訓練から得られた推論及び重みの計算グラフの記述を含む、条項1~2のいずれかに記載の方法。
【0183】
条項4.機械学習モデルは、テンソルフロー、MXNet、またはONNXフォーマットである、条項1~2のいずれかに記載の方法。
【0184】
条項5.マルチテナントウェブサービスプロバイダにおいて、アプリケーションインスタンス構成を受信することであって、アプリケーションインスタンスのアプリケーションは、接続されたアクセラレータのある部分を機械学習モデルの実行中に利用し、アプリケーションインスタンス構成は、使用する中央処理装置(CPU)能力の指示、使用する機械学習モデルの算術精度、使用するアクセラレータ能力の指示、アプリケーションの記憶場所、及び、使用するランダムアクセスメモリの量の指示を含む、アプリケーションインスタンス構成を受信することと、アプリケーションインスタンスと、アプリケーションインスタンスに接続されたアクセラレータの部分とをプロビジョニングすることであって、アプリケーションインスタンスは、第1のインスタンス位置の物理的計算インスタンスを使用して実施され、アクセラレータの部分は、第2の位置の物理アクセラレータを使用して実施され、物理アクセラレータは、ネットワークを介して物理的計算インスタンスにアクセス可能である、アプリケーションインスタンスと、アプリケーションインスタンスに接続されたアクセラレータの部分とをプロビジョニングすることと、アクセラレータの部分をアプリケーションインスタンスに接続することと、機械学習モデルを、アクセラレータの接続された部分にロードすることと、接続されたアクセラレータで、アクセラレータの部分を使用して、アプリケーションのロードされた機械学習モデルを使用する推論を実行することとを含む、コンピュータ実装方法。
【0185】
条項6.機械学習モデルは、訓練から得られた推論及び重みの計算グラフの記述を含む、条項5に記載の方法。
【0186】
条項7.機械学習モデルは、テンソルフロー、MXNet、またはONNXフォーマットである、条項5~6のいずれかに記載の方法。
【0187】
条項8.アプリケーションインスタンスと接続されたアクセラレータの部分は、異なる仮想ネットワーク内にある、条項5~7のいずれかに記載の方法。
【0188】
条項9.アクセラレータは、アクセラレータアプライアンスの複数のアクセラレータのうちの1つである、条項5~8のいずれかに記載の方法。
【0189】
条項10.アクセラレータアプライアンスは、異なる能力のアクセラレータを含む、条項9に記載の方法。
【0190】
条項11.アクセラレータアプライアンスの中央処理装置は、複数のアクセラレータの能力に比例して共有される、条項10に記載の方法。
【0191】
条項12.接続されたアクセラレータの部分を取り外すことと、機械学習モデルを接続されたアクセラレータの別の部分に移行することとをさらに含む、条項5~11のいずれかに記載の方法。
【0192】
条項13.接続されたアクセラレータの部分の接続を解除することと、機械学習モデルを別のアクセラレータの部分に移行することとをさらに含む、条項5~11のいずれかに記載の方法。
【0193】
条項14.接続されたアクセラレータで、アクセラレータの部分を使用して、アプリケーションのロードされた機械学習モデルを使用する推論を実行する前に、ロードされた機械学習モデルに基づいて使用する推論エンジンを決定することをさらに含む、条項11に記載の方法。
【0194】
条項15.推論エンジンは、機械学習モデルフォーマットのバージョン番号と互換性がある、条項14に記載の方法。
【0195】
条項16.アプリケーションであって、機械学習モデルを含むアプリケーションを記憶するストレージと、第2の1つまたは複数の電子デバイスによって実施される弾力的推論サービスとを含む、システムであって、弾力的推論サービスは、アプリケーションインスタンスとアクセラレータアプライアンスとを含み、弾力的推論サービスは、アプリケーションインスタンス構成を受信することであって、アプリケーションインスタンスのアプリケーションは、アクセラレータアプライアンスの接続されたアクセラレータのある部分を機械学習モデルの実行中に利用し、アプリケーションインスタンス構成は、使用する中央処理装置(CPU)能力の指示、使用する機械学習モデルの算術精度、使用するアクセラレータ能力の指示、アプリケーションの記憶場所、及び使用するランダムアクセスメモリの量の指示を含む、アプリケーションインスタンス構成を受信することと、アプリケーションインスタンスと、アプリケーションインスタンスに接続されたアクセラレータの部分とをプロビジョニングすることであって、アプリケーションインスタンスは、第1のインスタンス位置の物理的計算インスタンスを使用して実施され、アクセラレータの部分は、第2の位置の物理アクセラレータを使用して実施され、物理アクセラレータは、ネットワークを介して物理的計算インスタンスにアクセス可能である、アプリケーションインスタンスと、アプリケーションインスタンスに接続されたアクセラレータの部分とをプロビジョニングすることと、アクセラレータの部分をアプリケーションインスタンスに接続することと、機械学習モデルをアクセラレータの接続された部分にロードすることと、接続されたアクセラレータで、アクセラレータの部分を使用して、アプリケーションのロードされた機械学習モデルを使用する推論を実行することである、システム。
【0196】
条項17.弾力的推論サービスは、接続されたアクセラレータの部分の接続を解除し、機械学習モデルを接続されたアクセラレータの別の部分に移行することである、条項16に記載のシステム。
【0197】
条項18.弾力的推論サービスは、接続されたアクセラレータの部分の接続を解除し、機械学習モデルを別のアクセラレータに移行することである、条項16~17のいずれかに記載のシステム。
【0198】
条項19.機械学習モデルは、訓練から得られた推論及び重みの計算グラフの記述を含む、条項16~18のいずれかに記載のシステム。
【0199】
条項20.機械学習モデルは、テンソルフロー、MXNet、またはONNXフォーマットである、条項16~18のいずれかに記載のシステム。
【0200】
条項21.アクセラレータアプライアンスの1つまたは複数のグラフィックス処理ユニット(GPU)スロットの第1のセットを、アプリケーションインスタンス構成に従ってマルチテナントプロバイダネットワークのアプリケーションインスタンスに接続することであって、アプリケーションインスタンス構成は、アプリケーションインスタンスのアプリケーションが使用する能力をGPUスロットごとに規定し、マルチテナントプロバイダネットワークは、複数の仮想計算インスタンスを実施するように構成された複数のコンピューティングデバイスを含み、1つまたは複数のGPUスロットの第1のセットは、アプリケーションインスタンスにネットワークを介してアクセス可能な物理的GPUリソースを使用して実施される、GPUスロットを接続することと、機械学習モデルを1つまたは複数のGPUスロットの第1のセットにロードすることと、接続されたアクセラレータアプライアンスで、1つまたは複数のGPUスロットの第1のセットを使用して、アプリケーションのロードされた機械学習モデルを使用する推論を実行している間、アクセラレータアプライアンスのアクセラレータアプライアンスマネージャを使用して、アクセラレータアプライアンスのリソースを管理することと、を含む、コンピュータ実装方法。
【0201】
条項22.アクセラレータアプライアンスは、少なくとも1つのGPUと、少なくとも1つの他のタイプのアクセラレータとを含む、条項21に記載の方法。
【0202】
条項23.アクセラレータアプライアンスの1つまたは複数のGPUスロットのセットをアプリケーションインスタンスに接続している間、機械学習モデルと互換性があるようにGPUスロットによって使用される少なくとも1つのソフトウェアバージョンを更新することをさらに含む、条項21~22のいずれかに記載の方法。
【0203】
条項24.アプリケーションインスタンスのために、1つまたは複数のGPUスロットの第1のセットを1つまたは複数のGPUスロットの第2のセットで置き換えることと、アプリケーションインスタンスの処理を1つまたは複数のGPUスロットの第1のセットから1つまたは複数のGPUスロットの第2のセットに移行することと、1つまたは複数のGPUスロットの第2のセットを使用してアプリケーションを実行することとをさらに含む、条項21~23のいずれかに記載の方法。
【0204】
条項25.アクセラレータアプライアンスの1つまたは複数のアクセラレータスロットの第1のセットをアプリケーションインスタンス構成に従って、マルチテナントプロバイダネットワークのアプリケーションインスタンスに接続することであって、アプリケーションインスタンス構成は、アプリケーションインスタンスのアプリケーションによって使用される能力をアクセラレータスロットごとに規定し、マルチテナントプロバイダネットワークは、複数の仮想計算インスタンスを実施するように構成された複数のコンピューティングデバイスを含み、1つまたは複数のアクセラレータスロットの第1のセットは、アプリケーションインスタンスにアクセス可能な物理アクセラレータリソースを使用して実装される、アクセラレータスロットの第1のセットを接続することと、機械学習モデルを1つまたは複数のアクセラレータスロットの第1のセットにロードすることと、接続されたアクセラレータアプライアンスで、1つまたは複数のアクセラレータスロットの第1のセットを使用して、アプリケーションのロードされた機械学習モデルを使用する推論を実行している間、アクセラレータアプライアンスのアクセラレータアプライアンスマネージャを使用して、アクセラレータアプライアンスのリソースを管理することと、を含む、コンピュータ実装方法。
【0205】
条項26.アクセラレータアプライアンスのリソースを管理することは、中央処理装置、メモリ、及び入力ネットワーク帯域幅を管理することを含む、条項25に記載の方法。
【0206】
条項27.アクセラレータアプライアンスのリソースを管理することは、1つまたは複数のアクセラレータスロットを空間的に多重化することを含む、条項25~26のいずれかに記載の方法。
【0207】
条項28.アクセラレータアプライアンスのリソースを管理することは、テンソル処理ブロックを単一のアクセラレータスロットに時間的に多重化することを含む、条項25~26のいずれかに記載の方法。
【0208】
条項29.アクセラレータスロットによって使用される少なくとも1つのソフトウェアバージョンを更新することをさらに含む、条項25~28のいずれかに記載の方法。
【0209】
条項30.アプリケーションインスタンスのために、1つまたは複数のアクセラレータスロットの第1のセットを1つまたは複数のアクセラレータスロットの第2のセットで置き換えることと、アプリケーションインスタンスの処理を、1つまたは複数のアクセラレータスロットの第1のセットから1つまたは複数のアクセラレータスロットの第2のセットに移行することと、1つまたは複数のアクセラレータスロットの第2のセットを使用してアプリケーションを実行することとをさらに含む、条項25~29のいずれかに記載の方法。
【0210】
条項31.要件の変更により、アプリケーションインスタンスのために、1つまたは複数のアクセラレータスロットの第1のセットが、1つまたは複数のアクセラレータスロットの第2のセットで置き換えられる、条項30に記載の方法。
【0211】
条項32.要件の変更は、アプリケーションインスタンスのユーザによって指定される、条項31の記載の方法。
【0212】
条項33.パフォーマンスの低下のために、アプリケーションインスタンスのための1つまたは複数のアクセラレータスロットの第1のセットが、1つまたは複数のアクセラレータスロットの第2のセットで置き換えられる、条項30に記載の方法。
【0213】
条項34.1つまたは複数のアクセラレータスロットの第2のセットは、1つまたは複数のアクセラレータスロットの第1のセットと比較して異なるレベルの処理を提供する、条項30に記載の方法。
【0214】
条項35.1つまたは複数のアクセラレータスロットの第1のセットを1つまたは複数のアクセラレータスロットの第2のセットで置き換えることは、1つまたは複数のアクセラレータスロットの第2のセットに、1つまたは複数のアクセラレータスロットの第1のセットの代わりに動作を引き受けさせることを含む、条項30に記載の方法。
【0215】
条項36.アクセラレータアプライアンスは、異なる能力のアクセラレータを含む、条項25~35のいずれかに記載の方法。
【0216】
条項37.アプリケーションであって、機械学習モデルを含むアプリケーションを記憶するストレージと、第2の1つまたは複数の電子デバイスによって実施される弾力的推論サービスとを含むシステムであって、弾力的推論サービスは、アプリケーションインスタンスとアクセラレータアプライアンスとを含み、弾力的推論サービスは、アクセラレータアプライアンスの1つまたは複数のアクセラレータスロットの第1のセットをアプリケーションインスタンス構成に従ってマルチテナントプロバイダネットワークのアプリケーションインスタンスに接続することであって、アプリケーションインスタンス構成は、アプリケーションインスタンスのアプリケーションによって使用される能力をアクセラレータスロットごとに規定し、マルチテナントプロバイダネットワークは、複数の仮想計算インスタンスを実施するように構成された複数のコンピューティングデバイスを含み、1つまたは複数のアクセラレータスロットの第1のセットは、アプリケーションインスタンスにアクセス可能な物理アクセラレータリソースを使用して実施される、1つまたは複数のアクセラレータスロットの第1のセットを接続することと、機械学習モデルを1つまたは複数のアクセラレータスロットの第1のセットにロードすることと、接続されたアクセラレータアプライアンス上で、1つまたは複数のアクセラレータスロットの第1のセットを使用して、アプリケーションのロードされた機械学習モデルを使用する推論を実行している間、アクセラレータアプライアンスのアクセラレータアプライアンスマネージャを使用してアクセラレータアプライアンスのリソースを管理する、システム。
【0217】
条項38.アクセラレータアプライアンスのリソースを管理することは、中央処理装置、メモリ、及び入力ネットワーク帯域幅を管理することを含む、条項37に記載のシステム。
【0218】
条項39.弾力的推論サービスはさらに、アプリケーションインスタンスのために1つまたは複数のアクセラレータスロットの第1のセットを1つまたは複数のアクセラレータスロットの第2のセットで置き換え、アプリケーションインスタンスの処理を1つまたは複数のアクセラレータスロットの第1のセットから1つまたは複数のアクセラレータスロットの第2のセットに移行し、アプリケーションを1つまたは複数のアクセラレータスロットの第2のセットを使用して実行する、条項37~38のいずれかに記載のシステム。
【0219】
条項40.パフォーマンスの低下のために、アプリケーションインスタンスのための1つまたは複数のアクセラレータスロットの第1のセットが、1つまたは複数のアクセラレータスロットの第2のセットで置き換えられる、条項39に記載のシステム。
【0220】
条項41.マルチテナントウェブサービスプロバイダにおいて、アプリケーションインスタンス構成を受信することであって、アプリケーションインスタンスのアプリケーションは、接続されたグラフィックス処理ユニット(GPU)のある部分を機械学習モデル実行中に利用し、アプリケーションインスタンス構成は、プロビジョニングするGPUの部分を決定する際に使用する機械学習モデルの算術精度を含む、アプリケーションインスタンス構成を受信することと、アプリケーションインスタンスと、アプリケーションインスタンスに接続されたGPUの部分をプロビジョニングすることであって、アプリケーションインスタンスは、第1のインスタンス位置の物理的計算インスタンスを使用して実施され、GPUの部分は、第2の位置の物理的GPUを使用して実施され、物理的GPUは、ネットワークを介して物理的計算インスタンスにアクセス可能である、アプリケーションインスタンスと、アプリケーションインスタンスに接続されたGPUの部分をプロビジョニングすることと、機械学習モデルをGPUの部分にロードすることと、接続されたGPUで、GPUの部分を使用して、アプリケーションのロードされた機械学習モデルを使用する推論を実行することと、を含む、コンピュータ実装方法。
【0221】
条項42.アクセラレータの部分をプロビジョニングする前に、機械学習モデルを評価して機械学習モデルの算術精度を決定することをさらに含む、条項41に記載の方法。
【0222】
条項43.GPUに依存しない最適化を有する中間表現に変換することと、中間表現からGPUに依存する最適化を用いて機械語に変換することとによって、機械学習モデルをプロファイリングすることをさらに含む、条項41~42のいずれかに記載の方法。
【0223】
条項44.1つまたは複数の配置基準に少なくとも部分的に基づいて物理アクセラレータのGPU位置またはアプリケーションインスタンス位置を選択することをさらに含み、マルチテナントウェブサービスプロバイダは、物理的計算インスタンスの複数のインスタンス位置と、物理アクセラレータの複数のGPU位置を含む、条項41~43のいずれかに記載の方法。
【0224】
条項45.マルチテナントウェブサービスプロバイダにおいて、アプリケーションインスタンス構成を受信することであって、アプリケーションインスタンスのアプリケーションは、接続されたアクセラレータのある部分を機械学習モデル実行中に利用し、アプリケーションインスタンス構成は、プロビジョニングするアクセラレータの部分を決定する際に使用される機械学習モデルの算術精度を含む、アプリケーションインスタンス構成を受信することと、アプリケーションインスタンスと、アプリケーションインスタンスに接続されたアクセラレータの部分と、をプロビジョニングすることであって、アプリケーションインスタンスは第1の位置の物理的計算インスタンスを使用して実施され、アクセラレータの部分は、第2の位置の物理アクセラレータを使用して実施され、物理アクセラレータは物理的計算インスタンスにアクセス可能である、アプリケーションインスタンスと、アプリケーションインスタンスに接続されたアクセラレータの部分とをプロビジョニングすることと、機械学習モデルをアクセラレータの部分にロードすることと、接続されたアクセラレータで、アクセラレータの部分を使用して、アプリケーションのロードされた機械学習モデルを使用する推論を実行することと、を含む、コンピュータ実装方法。
【0225】
条項46.機械学習モデルは、訓練から得られた推論及び重みの計算グラフの記述を含む、条項45に記載の方法。
【0226】
条項47.アクセラレータの部分をプロビジョニングする前に、機械学習モデルを評価して機械学習モデルの算術精度を決定することをさらに含む、条項45~46のいずれかに記載の方法。
【0227】
条項48.アクセラレータに依存しない最適化を有する中間表現に変換することと、アクセラレータに依存する最適化を用いて中間表現から機械語に変換することとによって、機械学習モデルをプロファイリングすることをさらに含む、条項45~47のいずれかに記載の方法。
【0228】
条項49.アプリケーションにおいて、アクセラレータの部分への呼び出しを集約することと、集約された呼び出しをバッチとして送信することとをさらに含む、条項45~48のいずれかに記載の方法。
【0229】
条項50.アクセラレータを接続する前に、アクセラレータの計算能力に基づいてアクセラレータを選択することをさらに含む、条項45~49のいずれかに記載の方法。
【0230】
条項51.物理アクセラレータのアクセラレータ位置またはアプリケーションインスタンス位置を1つまたは複数の配置基準に少なくとも部分的に基づいて選択することをさらに含み、マルチテナントウェブサービスプロバイダは、物理的計算インスタンスの複数のインスタンス位置と物理アクセラレータの複数のアクセラレータ位置とを含む、条項45~50のいずれかに記載の方法。
【0231】
条項52.1つまたは複数の配置基準は、1つまたは複数のメトリクスの改善を含む、条項51に記載の方法。
【0232】
条項53.1つまたは複数の配置基準は、物理的計算インスタンスによる物理アクセラレータの使用に関連付けられたパフォーマンスメトリクスに少なくとも部分的に基づく、条項51に記載の方法。
【0233】
条項54.1つまたは複数の配置基準は、物理的計算インスタンスによる物理アクセラレータの使用に関連付けられたエネルギーメトリクスに少なくとも部分的に基づく、条項51に記載の方法。
【0234】
条項55.アクセラレータ位置またはアプリケーションインスタンス位置は、ネットワークの局所性に少なくとも部分的に基づいて選択される、条項51~54のいずれかに記載の方法。
【0235】
条項56.アクセラレータ位置が、物理アクセラレータとクライアントデバイスの間のネットワーク待ち時間に少なくとも部分的に基づいて選択される、条項51~54のいずれかに記載の方法。
【0236】
条項57.アプリケーションであって、機械学習モデルを含むアプリケーションを記憶するストレージと、第2の1つまたは複数の電子デバイスによって実施される弾力的推論サービスとを含むシステムであって、弾力的推論サービスは、アプリケーションインスタンスとアクセラレータアプライアンスとを含み、弾力的推論サービスは、マルチテナントウェブサービスプロバイダにおいて、アプリケーションインスタンス構成を受信することであって、アプリケーションインスタンスのアプリケーションは、接続されたアクセラレータのある部分を機械学習モデルの実行中に利用し、アプリケーションインスタンス構成は、プロビジョニングするアクセラレータの部分を決定する際に使用する機械学習モデルの算術精度を含む、アプリケーションインスタンス構成を受信することと、アプリケーションインスタンスとアプリケーションインスタンスに接続されたアクセラレータの部分をプロビジョニングすることであって、アプリケーションインスタンスは、第1の位置の物理的計算インスタンスを使用して実施され、アクセラレータの部分は、第2の位置の物理アクセラレータを使用して実施され、物理アクセラレータは、物理的計算インスタンスにアクセス可能である、アプリケーションインスタンスとアプリケーションインスタンスに接続されたアクセラレータの部分をプロビジョニングすることと、機械学習モデルをアクセラレータの部分にロードすることと、接続されたアクセラレータで、アクセラレータの部分を使用してアプリケーションのロードされた機械学習モデルを使用する推論を実行することである、システム。
【0237】
条項58.弾力的推論サービスは、アクセラレータに依存しない最適化を有する中間表現に変換することと、アクセラレータに依存する最適化を用いて中間表現から機械語に変換することとによって、機械学習モデルをプロファイリングすることである、条項57に記載のシステム。
【0238】
条項59.弾力的推論サービスは、1つまたは複数の配置基準に少なくとも部分的に基づいて、物理アクセラレータのアクセラレータ位置またはアプリケーションインスタンス位置を選択することであり、マルチテナントウェブサービスプロバイダは、物理的計算インスタンスの複数のインスタンス位置と、物理アクセラレータの複数のアクセラレータ位置を含む、条項57~58のいずれかに記載のシステム。
【0239】
条項60.弾力的推論サービスは、アクセラレータ位置またはアプリケーションインスタンス位置をネットワーク局所性に少なくとも部分的に基づいて選択する、条項57~58のいずれかに記載のシステム。
【0240】
条項61.マルチテナントウェブサービスプロバイダにおいて、アプリケーションインスタンス構成を受信することであって、アプリケーションインスタンスのアプリケーションは、少なくとも1つの接続されたグラフィックス処理ユニット(GPU)の複数の部分を機械学習モデル実行中に利用する、アプリケーションインスタンス構成を受信することと、アプリケーションインスタンスと、アプリケーションインスタンスに接続された少なくとも1つのGPUの部分とをプロビジョニングすることと、少なくとも1つのGPUの部分に機械学習モデルをロードすることと、アプリケーションでスコアリングデータを受信することと、接続された少なくとも1つのGPUの部分のそれぞれを利用して、GPUの部分からの1つの応答のみを用いて並行して、スコアリングデータに対して推論を実行することとを含む、コンピュータ実装方法。
【0241】
条項62.使用する1つの応答は、時間的に最初の応答である、条項61に記載の方法。
【0242】
条項63.接続された少なくとも1つのGPUの部分からの各応答のタイミングを追跡することと、追跡されたタイミングに基づいて、少なくとも1つのGPUの複数の部分のプロビジョニングを変更することとを含む、条項61~62のいずれかに記載の方法。
【0243】
条項64.アプリケーションインスタンスと、アプリケーションインスタンスに接続された少なくとも1つのアクセラレータとを、アプリケーションインスタンスのアプリケーションの機械学習モデルを実行するためにプロビジョニングすることと、少なくとも1つのアクセラレータの部分に機械学習モデルをロードすることと、アプリケーションでスコアリングデータを受信することと、接続された少なくとも1つのアクセラレータの部分のそれぞれを利用して、アクセラレータの部分からの1つの応答のみを使用して並行して、スコアリングデータに対して推論を実行することと、を含む、コンピュータ実装方法。
【0244】
条項65.機械学習モデルは、訓練から得られた推論及び重みの計算グラフの記述を含む、条項64に記載の方法。
【0245】
条項66.使用する1つの応答は、時間的に最初の応答である、条項64~65のいずれかに記載の方法。
【0246】
条項67.接続された少なくとも1つのアクセラレータの部分からの各応答のタイミングを追跡することと、追跡されたタイミングに基づいて、少なくとも1つのアクセラレータの複数の部分のプロビジョニングを変更することとをさらに含む、条項64~66のいずれかに記載の方法。
【0247】
条項68.追跡されたタイミングに基づいて少なくとも1つのアクセラレータの複数の部分のプロビジョニングの変更は、少なくとも1つの異なるアクセラレータスロットを起動し、パフォーマンスの低いアクセラレータスロットを終了することによって少なくとも部分的に実行される、条項64~67のいずれかに記載の方法。
【0248】
条項69.アプリケーションインスタンス構成を受信することをさらに含み、アプリケーションインスタンス構成は、追跡されたタイミングに基づいて少なくとも1つのアクセラレータの複数の部分のプロビジョニング変更の使用を示す、条項64~68のいずれかに記載の方法。
【0249】
条項70.アクセラレータを接続する前に、アクセラレータの計算能力に基づいてアクセラレータを選択することをさらに含む、条項64~69のいずれかに記載の方法。
【0250】
条項71.1つまたは複数の配置基準に少なくとも部分的に基づいて、物理アクセラレータのアクセラレータ位置またはアプリケーションインスタンス位置を選択することをさらに含み、マルチテナントウェブサービスプロバイダは、物理的計算インスタンスの複数のインスタンス位置と、物理アクセラレータの複数のアクセラレータ位置とを含む、条項64~70のいずれかに記載の方法。
【0251】
条項72.1つまたは複数の配置基準は、物理的計算インスタンスによる物理アクセラレータの使用に関連付けられたパフォーマンスメトリクスに少なくとも部分的に基づく、条項71に記載の方法。
【0252】
条項73.アクセラレータ位置またはアプリケーションインスタンス位置は、ネットワークの局所性に少なくとも部分的に基づいて選択される、条項71に記載の方法。
【0253】
条項74.アクセラレータ位置は、物理アクセラレータとクライアントデバイスの間のネットワーク待ち時間に少なくとも部分的に基づいて選択される、条項71に記載の方法。
【0254】
条項75.アプリケーションであって、機械学習モデルを含むアプリケーションを記憶するストレージと、第2の1つまたは複数の電子デバイスによって実施される弾力的推論サービスとを含むシステムであって、弾力的推論サービスは、アプリケーションインスタンスとアクセラレータアプライアンスとを含み、弾力的推論サービスは、アプリケーションインスタンスのアプリケーションの機械学習モデルを実行するためにアプリケーションインスタンスとアプリケーションインスタンスに接続された少なくとも1つのアクセラレータのある部分とをプロビジョニングすることと、少なくとも1つのアクセラレータの部分に機械学習モデルをロードすることと、アプリケーションでスコアリングデータを受信することと、接続された少なくとも1つのアクセラレータの部分のそれぞれを利用して、アクセラレータの部分からの1つの応答のみを使用して並行して、スコアリングデータに対して推論を実行することである、システム。
【0255】
条項76.使用する1つの応答は、時間的に最初の応答である、条項75に記載のシステム。
【0256】
条項77.弾力的推論サービスは、さらに、接続された少なくとも1つのアクセラレータの部分からの各応答のタイミングを追跡し、追跡されたタイミングに基づいて、少なくとも1つのアクセラレータの複数の部分のプロビジョニングを変更する、条項75~76のいずれかに記載のシステム。
【0257】
条項78.追跡されたタイミングに基づいて少なくとも1つのアクセラレータの複数の部分のプロビジョニングの変更は、少なくとも1つの異なるアクセラレータスロットを起動し、パフォーマンスの低いアクセラレータスロットを終了することによって少なくとも部分的に実行される、条項75~77のいずれかに記載のシステム。
【0258】
条項79.弾力的推論サービスはさらに、アプリケーションインスタンス構成を受信し、アプリケーションインスタンス構成は、追跡されたタイミングに基づいて少なくとも1つのアクセラレータの複数の部分のプロビジョニングの変更の使用を示す、条項75~78のいずれかに記載のシステム。
【0259】
条項80.弾力的推論サービスはさらに、アクセラレータを接続する前に、アクセラレータの計算能力に基づいてアクセラレータを選択する、条項75~79のいずれかに記載のシステム。
【0260】
従って、明細書及び図面は、限定ではなく、例示的なものとみなされる。しかしながら、特許請求の範囲に記載される本開示のより広範の趣旨及び範囲から逸脱することなく、様々な修正及び変更がこれらに加えられてよいことは明らかである。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20