(57)【要約】  本明細書に詳述される実施態様は、コンピュータ実装方法の記載を含む。実施態様において、方法は、アプリケーションインスタンス構成を受信することを少なくとも含み、アプリケーションインスタンスのアプリケーションは、機械学習モデルの実行中、接続されたアクセラレータの部分を利用し、アプリケーションインスタンス構成は、使用する中央処理装置（ＣＰＵ）能力の指示、使用する機械学習モデルの算術精度、使用するアクセラレータ能力の指示、アプリケーションの記憶場所、及び、使用するランダムアクセスメモリの量の指示を含む。【選択図】図１１
2021528740.tif 000002
【特許請求の範囲】
【請求項１】
マルチテナントウェブサービスプロバイダにおいて、アプリケーションインスタンス構成を受信することであって、アプリケーションインスタンスのアプリケーションは、接続されたアクセラレータのある部分を機械学習モデルの実行中に利用し、前記アプリケーションインスタンス構成は、
使用する中央処理装置（ＣＰＵ）能力の指示、
使用する前記機械学習モデルの算術精度、
使用する前記アクセラレータの能力の指示、
前記アプリケーションの記憶場所、及び
使用するランダムアクセスメモリの量の指示
を含む、前記アプリケーションインスタンス構成を受信することと、
前記アプリケーションインスタンスと、前記アプリケーションインスタンスに接続された前記アクセラレータの前記部分とをプロビジョニングすることであって、前記アプリケーションインスタンスは、第１のインスタンス位置の物理的計算インスタンスを使用して実施され、前記アクセラレータの前記部分は、第２の位置の物理アクセラレータを使用して実施され、前記物理アクセラレータは、ネットワークを介して前記物理的計算インスタンスにアクセス可能である、前記アプリケーションインスタンスと、前記アプリケーションインスタンスに接続された前記アクセラレータの前記部分と、をプロビジョニングすることと、
前記アクセラレータの前記部分を前記アプリケーションインスタンスに接続することと、
前記機械学習モデルを前記アクセラレータの前記接続された部分にロードすることと、
前記接続されたアクセラレータで、前記アクセラレータの前記部分を使用して、前記アプリケーションの前記ロードされた機械学習モデルを使用する推論を実行することと、
を含む、コンピュータ実装方法。
【請求項２】
前記機械学習モデルは、訓練から得られた推論及び重みの計算グラフの記述を含む、請求項１に記載のコンピュータ実装方法。
【請求項３】
前記機械学習モデルは、テンソルフロー、ＭＸＮｅｔ、またはＯＮＮＸフォーマットである、請求項１または２に記載のコンピュータ実装方法。
【請求項４】
前記アプリケーションインスタンスと前記接続されたアクセラレータの前記部分とは、異なる仮想ネットワーク内にある、請求項１〜３のいずれか一項に記載のコンピュータ実装方法。
【請求項５】
前記アクセラレータは、アクセラレータアプライアンスの複数のアクセラレータのうちの１つである、請求項１〜４のいずれか一項に記載のコンピュータ実装方法。
【請求項６】
前記アクセラレータアプライアンスは、異なる能力のアクセラレータを含む、請求項５に記載のコンピュータ実装方法。
【請求項７】
前記アクセラレータアプライアンスの中央処理装置は、前記複数のアクセラレータの能力に比例して共有される、請求項６に記載のコンピュータ実装方法。
【請求項８】
接続されたアクセラレータの前記部分の接続を解除することと、
前記機械学習モデルを、前記接続されたアクセラレータの別の部分に移行することと、
をさらに含む、請求項１〜７のいずれか一項に記載のコンピュータ実装方法。
【請求項９】
接続されたアクセラレータの前記部分の接続を解除することと、
前記機械学習モデルを別のアクセラレータのある部分に移行することと、
をさらに含む、請求項１〜７のいずれか一項に記載のコンピュータ実装方法。
【請求項１０】
前記接続されたアクセラレータで、前記アクセラレータの前記部分を使用して、前記アプリケーションの前記ロードされた機械学習モデルを使用する推論を実行する前に、前記ロードされた機械学習モデルに基づいて使用する推論エンジンを決定すること
をさらに含む、請求項１〜９のいずれか一項に記載のコンピュータ実装方法。
【請求項１１】
前記推論エンジンは、前記機械学習モデルのフォーマットのバージョン番号と互換性がある、請求項１０に記載のコンピュータ実装方法。
【請求項１２】
アプリケーションであって、機械学習モデルを含む前記アプリケーションを記憶するストレージと、第２の１つまたは複数の電子デバイスによって実装される弾力的推論サービスとを含むシステムであって、前記弾力的推論サービスは、アプリケーションインスタンス及びアクセラレータアプライアンスを含み、
前記弾力的推論サービスは、
前記アプリケーションインスタンスの構成を受信することであって、前記アプリケーションインスタンスの前記アプリケーションは、前記アクセラレータアプライアンスの接続されたアクセラレータのある部分を前記機械学習モデルの実行中に利用し、前記アプリケーションインスタンスの構成は、
使用する中央処理装置（ＣＰＵ）能力の指示
使用する前記機械学習モデルの算術精度、
使用する前記アクセラレータの能力の指示、
前記アプリケーションの記憶場所、及び
使用するランダムアクセスメモリの量の指示
を含む、前記アプリケーションインスタンスの構成を受信することと、
前記アプリケーションインスタンスと前記アプリケーションインスタンスに接続された前記アクセラレータの前記部分とをプロビジョニングすることであって、前記アプリケーションインスタンスは、第１のインスタンス位置の物理的計算インスタンスを使用して実施され、前記アクセラレータの前記部分は、第２の位置の物理アクセラレータを使用して実施され、前記物理アクセラレータは、ネットワークを介して前記物理的計算インスタンスにアクセス可能である、前記アプリケーションインスタンスと前記アプリケーションインスタンスに接続された前記アクセラレータの前記部分とをプロビジョニングすることと、
前記アクセラレータの前記部分を前記アプリケーションインスタンスに接続することと、
前記機械学習モデルを前記アクセラレータの前記接続された部分にロードすることと、
前記接続されたアクセラレータで、前記アクセラレータの前記部分を使用して、前記アプリケーションの前記ロードされた機械学習モデルを使用する推論を実行すること、
である、システム。
【請求項１３】
前記弾力的推論サービスは、接続されたアクセラレータの前記部分の接続を解除し、前記機械学習モデルを前記接続されたアクセラレータの異なる部分に移行する、請求項１２に記載のシステム。
【請求項１４】
前記弾力的推論サービスは、接続されたアクセラレータの前記部分の接続を解除し、前記機械学習モデルを別のアクセラレータに移行する、請求項１２または１３に記載のシステム。
【請求項１５】
前記機械学習モデルは、訓練から得られる推論と重みの計算グラフの記述を含む、請求項１２〜１４のいずれか一項に記載のシステム。
【発明の詳細な説明】
【背景技術】
【０００１】
深層学習が様々なアプリケーションで普及するにつれ、顧客は製造中での実行が困難で費用がかかると感じている。今日、顧客はＧＰＵを使用して、干渉ワークロードを実行するパフォーマンスと効率を向上させているが、容量を過剰にプロビジョニングせずにそれを行うことは困難であり、無駄で費用がかかる場合がある。深層学習推論を実行するコストは、アプリケーションインフラストラクチャ全体のかなりの部分を占めており、これらのワークロードを大規模に実行する際の非効率性は、法外なコストになる可能性がある。
【０００２】
本開示に従った様々な実施形態を、図面を参照して記載する。
【図面の簡単な説明】
【０００３】
【図１】弾力的推論サービスを利用するシステムの実施形態を示す。
【図２】弾力的推論サービスの実施形態を示す。
【図３】データプレーンの態様及び制御プレーンの態様を含む弾力的推論を可能にするシステムの実施形態を示す。
【図４】アプライアンスプロビジョニングの方法の例をスイムレーン図として示す。
【図５】アクセラレータアプライアンスプロビジョニングの実施形態を示す。
【図６】アクセラレータアプライアンスの事前接続の実施形態を示す。
【図７】アプライアンス接続の方法の例をスイムレーン図として示す。
【図８】アクセラレータアプライアンス接続の実施形態を示す。
【図９】アプライアンスの接続解除／リサイクルの方法の例をスイムレーン図として示す。
【図１０】アプリケーションインスタンスとアクセラレータアプライアンスの間のインタラクションを含む弾力的推論のためにアクセラレータを使用する方法のスイムレーン図の実施形態を示す。
【図１１】弾力的推論サービスを実施する際にウェブサービスプロバイダによって行われる方法の実施形態を示す。
【図１２】弾力的推論サービスを実施する際にウェブサービスプロバイダによって行われる方法の実施形態を示す。
【図１３】弾力的推論サービスを実施する際にウェブサービスプロバイダによって行われる方法の実施形態を示す。
【図１４】アクセラレータベースの推論サービスを使用するシステムの実施形態を示す。
【図１５】一部の実施形態によるプロバイダネットワーク環境の例を示す。
【図１６】一部の実施形態による、ＩＰトンネリング技術を使用してネットワーク基板上にオーバーレイネットワークを実装するデータセンタの例を示す。
【図１７】一部の実施形態による、プロバイダネットワーク上の仮想ネットワークを少なくとも一部の顧客に提供するプロバイダネットワークの例を示す。
【図１８】一部の実施形態で使用され得るコンピュータシステムの例を示すブロック図である。
【図１９】様々な実施形態に従って利用できる例示的なコンピューティングデバイスの一般的なコンポーネントのセットの論理配置を示す。
【図２０】様々な実施形態による態様を実施するための環境の例を示す。
【発明を実施するための形態】
【０００４】
弾力的機械学習サービスのための方法、装置、システム、及び非一時的コンピュータ可読記憶媒体の様々な実施形態を記載する。詳細には、アクセラレータのスロットは、推論アプリケーション（推論呼び出しを含むアプリケーション）に接続されてよく、より大きなアプリケーションのパイプラインの一部として使用されてよい。
【０００５】
弾力的機械学習／推論（Ｅｌ）サービスは、計算インスタンスで実行されているアプリケーションにコスト効率の高いハードウェアアクセラレーションを提供する。接続及び使用は、アクセラレータを追加または除去することができ、精度及び／または速度の複数の選択肢があるという点で弾力的である。そのため、開発者は、完全なアクセラレータ（グラフィックス処理ユニット（ＧＰＵ）全体など）を使用せずに、より多くの場所にハードウェアアクセラレーションを組み込むことができる。さらに、Ｅｌサービスは、ハードウェアに依存しないインタフェースを介して基盤となるハードウェアを覆い隠し、サービスプロバイダが、コストと能力に応じて、その下に異種ハードウェアを展開し、急速に移行する深層学習／人工知能ハードウェア状況に適応するのを可能にする。さらに、Ｅｌインタフェース（アクセラレータスロットの接続及び／またはアクセラレータスロットとアプリケーション間の通信を可能にするコマンド）を介して、単一のアクセラレータチップを複数の推論アプリケーション（顧客インスタンスなど）間で仮想化できる。
【０００６】
異なる機械学習ワークロードが、コア機械学習（ＭＬ）機能の他に異なる量の前処理と後処理の要件を有すると、必要なＣＰＵ、ＤＲＡＭ、ハードウェアアクセラレーションリソースの量は各ワークロードに関して同じではない。記載のＥｌサービスによって提供される機械学習の計算効率とアクセラレーションに必要なハードウェアリソースの分離により、開発者は計算インスタンスで中央処理ユニット（ＣＰＵ）とメモリ（ダイナミックランダムアクセスメモリ（ＤＲＡＭ）など）のサイズを個別に設定できる。
【０００７】
図１は、弾力的推論サービスを利用するシステムの実施形態を示す。この図では、弾力的推論サービス１０５は、ウェブサービスプロバイダ１０１によって提供されるサービスである。ウェブサービスプロバイダ１０１は、マルチテナントの計算能力及び／またはストレージ能力を提供する。
【０００８】
一部の実施形態では、ウェブサービスプロバイダ１０１のフロントエンド１０３は、ウェブサービスプロバイダ１０１のユーザ（顧客など）がウェブサービスプロバイダ１０１の基礎となるサービスとインタラクトするための導管である。例えば、ユーザデバイス１２１は、フロントエンド１０３を介して弾力的推論サービス１０５とインタラクトする。このインタラクションは、弾力的推論サービス１０５の構成、及び弾力的推論サービス１０５からの結果の受信を含んでよい。インタラクションは、アプリケーションプログラミングインタフェース（ＡＰＩ）呼び出し及び／またはコマンドラインインタフェースの使用を介してよい。一部の実施形態では、弾力的推論サービス１０５に直接、結合する。ＤｅｓｃｒｉｂｅＥｌａｓｔｉｃＩｎｆｅｒｅｎｃｅＡｃｃｅｌｅｒａｔｏｒｓ、ＲｕｎＩｎｓｔａｎｃｅｓ、ＳｔａｒｔＩｎｓｔａｎｃｅｓ等、ＡＰＩ呼び出しが、一部の実施形態で利用される。
【０００９】
弾力的推論サービス１０５は、特定のソフトウェアコンポーネントのセットを実行してアクセラレータを提供するアクセラレータアプライアンスのプールを管理する。弾力的推論１０５を利用して、アクセラレータ上で実行されるコードの少なくとも一部（モデルなど）を含むアプリケーションを実行する。これらのアクセラレータアプライアンスは、サービスが所有する仮想ネットワークに存在する。内部的に、アクセラレータは、アクセラレータアプライアンスから計算リソースの一部を含むアクセラレータスロットにマッピングする。アクセラレータアプライアンスは、複数のアクセラレータスロットを含むアクセラレータをホストしてよい。アクセラレータアプライアンスでホストされるアクセラレータスロットの数は、アクセラレータの構成とアクセラレータアプライアンスの構成とに応じて決まる。
【００１０】
ユーザは、アプリケーションインスタンスを起動し、ユーザが指定した構成に従ってアクセラレータを接続するように要求してよい（本明細書で例を詳しく記載する）。弾力的推論サービス１０５の制御プレーンは、少なくとも１つのアクセラレータスロットをプロビジョニングし、１つまたは複数のスロットをユーザのアプリケーションインスタンスに接続する要求を処理する。構成は、使用するアクセラレータスロット（複数可）の詳細を指示してよい、または弾力的推論サービス１０５がそれを行ってよい。接続後、アクセラレータスロット（複数可）は、ユーザの仮想ネットワークから、またはより直接的な接続（ＰＣＩｅ接続など）を介してアクセス可能である。
【００１１】
上記のように、弾力的推論サービス１０５は、推論などの機械学習タスクのためのマルチテナンシアクセラレーションをサポートする。ストレージ１１３Ａ及び／または１１３Ｂを使用して、弾力的推論サービス１０５で実行される１つまたは複数のモデルを含む１つまたは複数のアプリケーションを記憶する。アプリケーションは、弾力的推論サービス１０５によって、コンテナとしてホストされてよい、または仮想マシンの一部として実行されてよい。
【００１２】
データソース（複数可）１０９Ａ及び１０９Ｂは、弾力的推論サービス１０５によって実行されるアクセラレータによって処理されるスコアリングデータを提供する。
【００１３】
一部の実施形態では、弾力的推論サービス１０５は、ウェブサービスプロバイダ１０１のオファリングの一部ではなく、ユーザデバイス１２１などのユーザデバイス上にあるが、簡潔にするために、以下の説明のほとんどは、ウェブサービスプロバイダを例として使用する。
【００１４】
番号の付いたサークルは、例示的なフローを示す。サークル１において、ユーザデバイス１２１は、ウェブサービスプロバイダ１０１に、弾力的推論サービス１０５の構成を通信する。具体的には、ユーザデバイス１２１は、弾力的推論サービス１０５によって制御されるアクセラレータ上で実行するモデルを含むストレージ１１３Ａからのアプリケーションをホストするように弾力的推論サービス１０５を構成する。
【００１５】
サークル２において、この構成は、弾力的推論サービス１０５に提供され、弾力的推論サービス１０５は、サークル３でストレージ１１３Ａに接続し、モデルにアクセス及びモデルをロードし、モデルが弾力的推論サービス１０５のアクセラレータ上で実行できるかどうかを決定する。一部の実施形態では、弾力的推論サービス１０５はまた、アクセラレータがモデルをどのように実行すべきかを決定する。
【００１６】
サークル４Ａまたは４Ｂでは、データソース１０９Ａまたは１０９Ｂは、スコアリングデータをフロントエンド１０３に提供する。このスコアリングデータは、処理のために弾力的推論サービス１０５に転送され、結果は、サークル５でフロントエンド１０３に戻される。結果は、ストレージ１１３Ａまたは１１３Ｂに記憶されてもよい。最後に、結果がユーザデバイス１２１に提供される（要求された場合）。
【００１７】
図２は、弾力的推論サービス１０５の実施形態を示す。この弾力的推論サービス１０５は、ウェブサービスプロバイダオファリングの一部であってよい、またはユーザデバイス上のエンジンとしてであってよい（ただし、上記のように簡潔にするために、「サービス」を本出願書を通して使用する）。具体的には、図に示すものは、弾力的推論サービス１０５のデータプレーンと見なすことができる。図に示すように、データプレーンは、クライアントコンポーネント（アプリケーションインスタンス２１１の一部）及びサーバコンポーネント（アクセラレータアプライアンス２２１）を含む。クライアントコンポーネントは、アプリケーションインスタンス２１１にインストールされたクライアントライブラリ実装として配信される。クライアントライブラリは、アプリケーションインスタンス２１１からリモートに接続されたアクセラレータアプライアンス２２１に推論呼び出しを転送する。一部の実施形態では、アクセラレータアプライアンス２２１は、アプリケーションインスタンス２１１からテンソルを受け取り、テンソルを返す。
【００１８】
アプリケーションインスタンス２１１は、アプリケーション２１３を実行するＣＰＵ２１２、メモリ、ストレージ、及びネットワーク容量の特定の構成を使用する仮想コンピューティング環境である。一部の実施形態では、構成はインスタンスタイプと呼ばれる。アプリケーションインスタンス（オペレーティングシステムを含む）のテンプレートは、マシンイメージと呼ばれる。アプリケーション２１３は、アプリケーション２１３の一部が少なくとも１つのアクセラレータスロットに対して推論呼び出しを行うことを強調するために、以下では「推論アプリケーション」と呼ばれてよい。しかしながら、アプリケーション２１３は通常、他のコードを含み、推論呼び出しは通常、アプリケーションパイプラインの１つの側面である。
【００１９】
ユーザによって指定されたインスタンスタイプは、ウェブサービスプロバイダ１０１内のインスタンスに使用されるホストコンピュータのハードウェアを決定する。各インスタンスタイプは、異なる計算能力、メモリ能力、及びストレージ能力を提供し、これらの能力に基づいてインスタンスファミリにグループ化される。
【００２０】
同様に、アクセラレータアプライアンス２２１（別の計算インスタンス）は、アプリケーション２１３の機械学習モデルを実行するＣＰＵ２２４、メモリ、ストレージ、及びネットワーク容量の特定の構成を使用する。アクセラレータアプライアンス２２１はさらに、１つまたは複数のアクセラレータ２２２へのアクセスを有する。各アクセラレータ２２２は、１つまたは複数のアクセラレータスロット２２３から構成される。具体的には、アクセラレータアプライアンス２２１の計算リソースは、マルチテナント環境での一貫した持続的なパフォーマンスのために、アクセラレータスロット２２３間で分割され、配分され、リソースが管理され、分離される。ＣＰＵ２２４で実行されるコードは、オンボードアクセラレータを調整し、推論エンジンランタイムを実行し、アクセラレータ２２２に計算をオフロードする。競合する可能性のあるアクセラレータアプライアンス２２１のリソースは、ＣＰＵ２２４、メモリ、アクセラレータ、アクセラレータメモリ、通信チャネル２８１（ＰＣＩｅなどの直接接続またはネットワーク接続等）、ディスク、及びホストからインターコネクト（ＰＣＩｅなど）の帯域幅を含む。アクセラレータスロット２２３は、アプリケーションインスタンス２１１の呼び出しを処理する。
【００２１】
リソースの管理と分離は、アプライアンス管理コンポーネント２４１を使用して、アクセラレータスロット２２３全体へのリソースの静的パーティショニングによってアクセラレータスロット２２３全体で要求の干渉を低減／軽減してよい。静的パーティショニングは通常、アクセラレータアプライアンス２２１で、ＣＰＵコアとメモリ、アクセラレータ計算とメモリ、及びネットワーク帯域幅（少なくとも入力）のリソースタイプに使用される。しかしながら、一部の実施形態では、接続されていないスロット２２３がメモリなどのリソースを配分されないように、動的パーティショニングが利用される。
【００２２】
一部の実施形態では、ＣＰＵ２２４のリソース及びディスクは、制御グループ（ｃｇｒｏｕｐｓ）を使用して分離及び管理されてよく、アクセラレータリソースは、マルチプロセスサービス機能を使用して分離及び管理されてよく、ネットワーク帯域幅は、１つまたは複数のネットワークスケジューラを使用して分離及び管理（スロットルなど）されてよい。例えば、一部の実施形態では、ＣＰＵコアは、Ｃｇｒｏｕｐｓ内のｃｐｕｓｅｔメカニズムを使用してプロセス間で分割される。コアの小さなセットは、（アクセラレータごと、またはインスタンスに共通のいずれかである）管理／保守／健全性チェック／ログプロセス間で共有される。コアの残りの部分は、アクセラレータスロット間で分割される。
【００２３】
アクセラレータリソース２２２の場合、アクセラレータスロット２２３のパーティショニングは、使用される基盤となるアクセラレータのタイプに依存する。例えば、一部の実施形態では、アクセラレータスロットへのカーネルの空間多重化が使用される。所与のアクセラレータスロット２２３の場合、カーネルは入手可能なハードウェアの一部を使用する。これを行う１つの方法は、分割をアクセラレータスロット２２３のＴＯＰＳ（Ｔｅｒａ  ｏｐｅｒａｔｉｏｎｓ  ｐｅｒ  ｓｅｃｏｎｄ）容量に比例させることである。シストリックアレイベースのアクセラレータの場合、時間多重化を使用して単一のテンソル処理ブロックをスロット化し、長時間実行されるカーネルのプリエンプトをサポートする。
【００２４】
リモートに接続されたアクセラレータスロット２２３が、弾力的推論アクセラレータとしてユーザに提示され、インスタンスの起動時に顧客のアプリケーションインスタンス２１１に接続された一時的なデバイスが、インスタンスに推論アクセラレータ機能を提供する。ユーザは、１つまたは複数の弾力的推論アクセラレータをアプリケーションインスタンスに関連付けてよい。
【００２５】
通信チャネル２８１の帯域幅の使用については、大きなテンソルが推論呼び出しの入力として送信される可能性があるため（例えば、視覚モデル）、入力帯域幅に懸念がある。ｎ個の入力ブランチのそれぞれは、（ｎ個のブランチネットワークインタフェースが全てアクティブでない場合でさえ）、インスタンス帯域幅のおおよそ１／ｎを使用しなければならない。アクセラレータアプライアンス２２１上のネットワークスケジューラ（図示せず）を使用してよい。アプリケーションインスタンス２１１とアクセラレータ２２１の間の通信は、複数のネットワーク接続上で行われ、各接続は、アプリケーションインスタンス２１１によって開始される。
【００２６】
推論のためのＥｌの計算容量は、様々な方法でスケールアップ及びスケールダウンできる。第１に、Ｅｌ接続は起動インスタンステンプレートの一部であるため、顧客インスタンスとＥｌ接続は、自動スケーリングユニットであってよい。第２に、顧客は、精度とＴＯＰＳが異なる複数のＥｌインタフェースを所与のインスタンスに接続し、それらに推論呼び出しを分散させることができる。
【００２７】
多くのネットワークでは、正確さに大きな影響を与えることなく、８ビットの整数（ＩＮＴ８）計算を使用して推論を実行できる。現実の世界では、入力データは低精度（または低ダイナミックレンジ）で生成されることが多いため、低精度での計算は結果の正確さに影響を与えない。低精度の計算を使用すると、推論が、メモリ使用量を削減し、より高いスループットでデータを転送し、より大きなモデルを展開し、ワイドベクトル命令を介してＯＰＳスループットを向上させることが可能になる。ただし、訓練では、より高精度の算術演算（例えば、ＦＰ３２）を使用して、高精度の重みを使用するモデルを作成することが多い。したがって、訓練済みモデル（例えば、ＦＰ３２）と推論のためのハードウェアの演算（例えば、ＩＮＴ８）の能力／モードの間の精度のこのギャップに対処する必要がある。
【００２８】
一部の実施形態では、ハードウェアの精度能力はユーザに公開され、ユーザは各精度でモデルを提供する。他の実施形態では、高精度の訓練済みモデル（ＦＰ３２）から低精度の推論モデルへの変換が行われる。入力テンソル／アクティベーション／重みの事前に計算された最小／最大限界を使用して効率的な方法で量子化を行うために、ユーザからのそのモデルのキャリブレーションデータセットを使用してよい。
【００２９】
弾力的推論サービスは、ＦＰ３２とＦＰ１６の少なくとも２つの算術精度を提供する。両方の場合において、一部の実施形態では、訓練済みモデルがＦＰ３２フォーマットで提供される。ＦＰ３２モデルに対してＦＰ１６モードで推論を実行するには、単純な型変換（量子化ではない）を伴う。
【００３０】
図３は、データプレーンの態様及び制御プレーンの態様を含む弾力的推論を可能にするシステムの実施形態を示す。一部の実施形態では、このシステムの態様は、弾力的推論サービスの一部である。上記のように、リモート接続されたアクセラレータ２２３は、ユーザの計算インスタンスに接続された弾力的推論アクセラレータ（ＥＩＡ）（または単にアクセラレータ）として提示される。ユーザの計算インスタンスにはアプリケーションインスタンス（ＡＩ）２１１のラベルが付けられ、サービス側でＥＩＡをホストする計算インスタンスにはアクセラレータアプライアンス（ＡＡ）２２１のラベルが付けられる。各ＥＩＡは、アクセラレータスロット（ＡＳ）にマッピングされ、アクセラレータスロット（ＡＳ）は、アクセラレータの一部であり、ＡＡ２２１によって管理される。
【００３１】
ＡＡ２２１は、複数のＥＩＡ２２３をホストしてよく、マルチテナンシをサポートする（それにより、異なるユーザに属する異なるアプリケーションインスタンス２１１からの接続を可能にする）。各アクセラレータスロットは、任意の所与の時に１つのアプリケーションインスタンスにのみ接続できる。
【００３２】
データプレーン３０１によって、ユーザは、１つまたは複数のリモート接続されたＥＩＡを使用して深層学習推論アプリケーションを管理することができ、アプリケーションインスタンス２１１で実行している推論アプリケーションの健全性及びパフォーマンスメトリクスを監視でき、アクセラレータアプライアンス２２１上で実行しているサービスコンポーネントの健全性及びパフォーマンスメトリクスを監視でき、アプリケーションインスタンス２１１にインストールされたソフトウェアコンポーネントが、アクセラレータアプライアンス２２１にインストールされたものに対応していることを確認し、接続されたＥＩＡの健全性、接続性、パフォーマンスについてユーザに通知でき、及び／または、ＥＩＡが（例えば、ＴＯＰＳやメモリ使用量の点で）約束されたパフォーマンスを提供することを保証することができる。
【００３３】
データプレーン３０１は、少なくとも１つのアプリケーションインスタンス２１１と少なくとも１つのアクセラレータアプライアンス２２１を含む。各アプリケーションインスタンス２１１は、アプリケーションインスタンス２１１上で実行するアプリケーションインスタンスマネージャ（ＡＩＭ）３１７を含み、アプリケーションインスタンスマネージャ（ＡＩＭ）３１７は、ＥＩＡのアプリケーションインスタンス２１１への接続を販売し、ＥＩＡとの接続をチェックし、アプリケーションインスタンス２１１にインストールされたソフトウェアコンポーネントがＥＩＡにインストールされているものと対応していることを確認し、アプリケーションインスタンス２１１に固有の健全性情報をＥＩＡにプッシュすることを担当している。
【００３４】
ＡＩＭ３１７はブート時に起動され、クラッシュや予期しないシャットダウンが発生した場合に再起動される。制御プレーン３５１がアクセラレータ２２３を接続すると、制御プレーン３５１は、アクセラレータ２２３に接触する方法に関する情報をアプリケーションインスタンス２１１のインスタンスメタデータサービス（ＩＭＤＳ）３７１に注入する（このインタラクションの詳細は、本明細書の他の部分で詳述する）。一部の実施形態では、ＡＩＭ３１７は、ＩＭＤＳ３７１を使用して、アクセラレータが接続されているかどうかをチェックする。ＡＩ２１１にアクセラレータが接続されていない場合、ＩＭＤＳ３７１はアイドル状態のままで、新しいアクセラレータの接続を待つ。アクセラレータが接続されている場合、一部の実施形態では、ＡＩＭ３１７は、アクセラレータスロットマネージャ（ＡＳＭ）３２９への接続を試みる。一部の実施形態では、通信は、ＡＳＭ３２９によって提供され、ＡＩＭ３１７によって開始されるエンドポイントを介して行われる。接続に失敗した場合、または接続が後に切断された場合、数回の再試行の後、ＩＭＤＳ３７１は問題をエンドユーザに報告する。一部の実施形態では、ＩＭＤＳ３７１は、顧客が（例えば、顧客のインスタンス内から既知のエンドポイントをカーリングすることによって）使用して、顧客のインスタンスに関する特定のデータ（例えば、インスタンスＩＤ、接続されたネットワークインタフェースなど）をイントロスペクトすることができるｈｔｔｐサーバである。
【００３５】
接続が確立されると、ＡＩＭ３１７はＡＳＭ３２９とインタラクトして、インストールするソフトウェアのインベントリを取得する。ＡＳのコンポーネントは、このハンドシェイク手順の最後に、最新のソフトウェアバージョンまたはＡＩ２１１のコンポーネントと互換性のあるバージョンを実行していることが期待される。一部の実施形態では、実行されるモデルとソフトウェアの互換性があるように、この時点で最新のソフトウェアバージョンがロードされる。一部の実施形態では、マシンインスタンスがロックされ、ＡＩ２１１のコンポーネントがアクセラレータのコンポーネントと互換性がない場合、接続が切断され、報告される。
【００３６】
アプリケーション２１３自体は、クライアントライブラリ３１５を使用して、アクセラレータ２２３の推論エンジン３２５に呼び出しを行う。一部の実施形態では、クライアントライブラリ３１５は、推論エンジン３２５へのリモートプロシージャコールのためにｇＲＰＣを使用する。
【００３７】
一部の実施形態では、クライアントライブラリ３１５は、ＡＰＩを実装する。このＡＰＩには、次のコマンドの１つまたは複数が含まれてよい。
・ＥＩＡ．ｉｎｉｔＬｉｂｒａｒｙ（ｅｉａＩＤ）：顧客のアプリケーションインスタンスに接続されたＥＩＡに呼び出しを行う際に使用されるアプリケーションのＥＩＡコンテキストを初期化する。複数のＥＩＡのアプリケーションインスタンスが顧客のアプリケーションインスタンスに接続されている場合は、オプションの引数「ｅｉａＩＤ」を渡すことができる。ｅｉａＩＤが無効であるか、ＥＩＡが接続されていない場合、例外をスローする。
・ｅｉａ．ｌｏａｄＭｏｄｅｌ（ｎａｍｅ、ｍｏｄｅｌ−ｃｏｎｆｉｇ．ｘｍｌ、ｒｕｎｔｉｍｅＰａｒａｍｅｔｅｒｓ）：「ｍｏｄｅｌ−ｃｏｎｆｉｇ．ｘｍｌ」で与えられた構成でモデルをロードする。モデルに関連するフレームワーク、バージョン、位置、及びその他の詳細は、「ｍｏｄｅｌ−ｃｏｎｆｉｇ．ｘｍｌ」を使用して渡すことができる。最大バッチサイズなどのランタイムパラメータは、「ｒｕｎｔｉｍｅＰａｒａｍｅｔｅｒｓ」を使用して提供できる。
・ｍｏｄｅｌ．ｐｒｅｄｉｃｔ（ｉｎｐｕｔＴｅｎｓｏｒ）：ＥＩＡにロードされた「ｍｏｄｅｌ」への同期推論ＡＰＩ呼び出し。出力テンソルを返す。
・ｍｏｄｅｌ．ｐｒｅｄｉｃｔＢａｔｃｈ（ｉｎｐｕｔＴｅｓｓｏｒＡｒｒａｙ）：ＥＩＡにロードされた「モデル」への同期推論バッチＡＰＩ呼び出し。
・ｍｏｄｅｌ．ｐｒｅｄｉｃｔＡｓｙｎｃ（ｉＴｅｎｓｏｒ）：ＥＩＡにロードされた「ｍｏｄｅｌ」への非同期推論ＡＰＩ呼び出し。結果を取得できる未来を返す。
・ｏｕｔｐｕｔＦｕｔｕｒｅ．ｇｅｔＲｅｓｕｌｔｓ（）：以前に発行された推論呼び出しの結果を読み出すためのブロックに戻る。
・ｍｏｄｅｌ．ｐｒｅｄｉｃｔＢａｔｃｈＡｓｙｎｃ（ｉＴｅｎｓｏｒＡｒｒａｙ）：ＥＩＡにロードされた「ｍｏｄｅｌ」への非同期推論バッチＡＰＩ呼び出し。未来を返し、それを用いて結果を取得できる。
・ｏＦｕｔｕｒｅ．ｇｅｔＲｅｓｕｌｔｓ（）：以前に発行された推論呼び出しの結果を読み出すためのブロックに戻る。
・ｅｉａ．ｌｉｓｔＭｏｄｅｌｓ（）：ＥＩＡにロードされたモデル「ｅｉａ」を列挙する。
・ｅｉａ．ｕｎｌｏａｄＭｏｄｅｌ（ｎａｍｅ）：以前にロードされたモデル「ｎａｍｅ」をアンロードする。モデルが存在しない場合、例外がスローされる。
・ｅｉａ．ｃｒｅａｔｅＴｅｎｓｏｒ（ｓｈａｐｅ、ｄｔｙｐｅ）：  指定された形状とタイプのＥＩＡコンテキストのテンソルを作成／割り当てる。
・ｅｉａ．ｃｏｐｙＴｅｎｓｏｒ（ｓｏｕｒｃｅ、ｔａｒｇｅｔ）：テンソルを「ｓｏｕｒｃｅ」から「ｔａｒｇｅｔ」にコピーする。
・ｄｅｌｅｔｅＴｅｎｓｏｒ（ｉｎｐｕｔＴｅｎｓｏｒ）：ＥＩＡコンテキストで以前に作成されたテンソルを削除／配分を解除する。
【００３８】
一部の実施形態では、コマンドラインユーティリティ３１９を使用して、接続性の情報にアクセスしてよい、及び／または推論などのコマンドを生成してよい。
【００３９】
ＡＡ２２１は、アクセラレータスロット（複数可）２２３、ディスク３３３、及びアプライアンス管理コンポーネント２４１を含む幾つかのコンポーネントを備える。ＡＡ２２１コンポーネントは、ブートストラップ、分離されたアクセラレータスロットのプロビジョニング、制御プレーン３５１からのイベント（アクセラレータスロットの接続／リサイクル等）の監視、制御プレーン３５１へのスロット及びアプライアンスステータス（健全性及びネットワーク接続性等）の更新、メトリクス／ログのアップロードを担当する。
【００４０】
制御プレーン３５１は、アプリケーションインスタンス２１１の起動及び終了との統合、ならびにデバイスのクエリ及び管理のサポートを実行する幾つかのサービスコンポーネントを備える。したがって、制御プレーン３５１を介して、ユーザは、１つまたは複数のアクセラレータスロット２２３を弾力的アクセラレータとしてアプリケーションインスタンス２１１に接続することを要求するアプリケーションインスタンス２１１を起動してよく、弾力的推論アクセラレータが接続されているアプリケーションインスタンス２１１を終了してよい。
【００４１】
一部の実施形態では、関連する弾力的推論アクセラレータを支援するアクセラレータアプライアンス２２１が損なわれるか、または保守が必要となる場合のアプリケーションインスタンス２１１の保守通知は、制御プレーン３５１を介してユーザにルーティングされる。さらに、一部の実施形態では、制御プレーン３５１は、アクセラレータアプライアンス２２１及びアプリケーションインスタンス２１１のメトリクスをユーザに提供する。
【００４２】
上記のように、アクセラレータスロット２２３のコンポーネントはあらゆるアクセラレータスロットで実行される。アクセラレータスロット内の全てのコンポーネントは、ＣＰＵ、ＲＡＭ、ＧＰＵ計算、ＧＰＵメモリ、ディスク、及びネットワークなどのリソースという観点では、分離されている。アクセラレータスロットコンポーネントは、そのアクセラレータスロット２２３に接続された顧客インスタンスにサービスを提供する。
【００４３】
アクセラレータスロットマネージャ（ＡＳＭ）３２９は、アプリケーションインスタンス２１１へのソフトウェアコンポーネントのインストールを担当する。ＡＳＭ３２９は、アプリケーションインスタンス２１１からのハンドシェイク、ソフトウェア同期、及び健全性チェックを聞く。ＡＩＭ３１７は、アプリケーションインスタンス２１１に存在するソフトウェアインベントリを使用してＡＳＭ３２９に接続する。
【００４４】
ＡＳＭ３２９は、ＡＩＭ３１７からの定期的な健全性チェックの受信も担当する。ＡＳＭ３２９は、ＡＩＭ３１７からの健全性チェックメッセージの受信に基づいて、アプリケーションインスタンス２１１の接続性を報告する。これは、ＡＳＭ３２９によってディスクに書き込まれ、ストレージ３６１を介してＡＡＭによって読み取られて制御プレーンに報告される。ＡＩＭ３１７は接続性の情報を追跡する。これは、クライアントライブラリ３１５またはコマンドラインユーティリティ３１９によって提供されるユーティリティを使用して、アプリケーションインスタンス２１１で顧客によって読み出されてよい。
【００４５】
推論エンジン（ＩＥ）３２５は、モデルのロード及び推論の実行を処理する。図に示すように、このエンジン３２５は、アクセラレータスロット２２３ごとに別個のプロセスである。ＩＥ３２５は、フロントエンドの受信機ライブラリを介して、顧客インスタンス上のクライアントライブラリ３１５から要求を受信する。ＩＥ３２５には、推論が機能するために必要なランタイムが含まれている。
【００４６】
モデルバリデータ（ＭＶ）３２７は、ユーザ提供のモデルファイル構文の正確性及び妥当性をチェックする。一部の実施形態では、これは、推論エンジン２２３とは別のＣＰＵプロセスとして行われるので、アクセラレータランタイムへのセキュリティ関連のリークはない。一部の実施形態では、ＭＶ３２７は、提供されたモデルを異なるフォーマットに変換する（ＭＸＮＥＴをＪＳＯＮにシリアル化するなど）。一部の実施形態では、ＭＶ３２７は、アプリケーション２１３（ライブラリ３１５を含む）が選択を行わなかったとき、使用する推論エンジン３２５を選択する。
【００４７】
一部の実施形態では、アプリケーションメトリクスコレクタ３３１は、アプリケーションのメトリクスを送信、収集、及び集約するために使用されるツールのセットである。一部の実施形態では、アプリケーションメトリクスコレクタ３３１はＳｔａｔｓＤである。収集されたメトリクスは、アプライアンス管理コンポーネント２４１によってアクセス可能なローカルディスク３３３に記憶される。
【００４８】
アプライアンス管理コンポーネント２４１は、アクセラレータアプライアンスマネージャ（ＡＡＭ）３４３、ストレージアップローダ３４５、並びにメトリクス及びログコレクタ３４７を含む。ＡＡＭ３４３は、アクセラレータアプライアンス２２１をブートストラップし、ストレージ３６１の記憶されたオブジェクトの監視を通してアクセラレータスロット２２１をプロビジョニングし、アクセラレータスロットが不要になると、アクセラレータスロットのプロビジョニング／接続を解除し、将来使用するためにアクセラレータスロットをリサイクルする。ＡＡＭ３４３はまた、アクセラレータスロット２２３の健全性及び占有率を監視し、ストレージアップローダ３４５によってストレージ３６１にアップロードされるオブジェクトを準備する。アクセラレータの監視と報告は、別のコンポーネントによって分離及び処理される場合があることに注意されたい。
【００４９】
メトリクス及びログコレクタ３４７は、アクセラレータスロット２２３及びアクセラレータアプライアンス２２１からメトリクス及びログを収集し、制御プレーン３５１による消費のためにデータを適切に伝達する。
【００５０】
ストレージアップローダ３４５は、（ＡＡＭ３４３によって作成された）健全性及び占有率リポートと、メトリクス及びログとをアップロードする。
【００５１】
クライアントライブラリ３１５を使用する推論アプリケーションは、ＡＩＭ３１７と通信することによって、アクセラレータアプライアンス２２１の接続情報を取得する。
【００５２】
ＡＩＭ３１７はＡＳＭ３２９にハートビートをプッシュして、ＡＩＭ３１７のライブネスを通知する。この情報は、ＡＳＭ３２９によって使用されて、接続されたアプリケーションインスタンス２１１の健全性に関して制御プレーン３５１に報告される。
【００５３】
図示のシステムは、アプリケーションインスタンス２１１上で実行されるアクセラレータを使用するアプリケーション２１３と、アクセラレータスロット２２３上で実行される推論エンジン３２５との間のコンポーネントの数を最小化して、待ち時間及び故障率を最小限にする。さらに、推論サービスの制御プレーン３５１は、制御プレーン３５１の停止がアプリケーションインスタンス２１１またはアプリケーションインスタンス２１１が使用しているアクセラレータスロット２２３に影響を与えないように、（図示のように）データプレーン３０２から分離されている。
【００５４】
Ｅｌインタフェース（ＥＩＡへのインタフェース）は、インスタンスの起動時に、アプリケーションインスタンスに接続することができる、または動的にライブインスタンスに接続／から接続を解除することができる。Ｅｌインタフェースには、クライアントライブラリ３１５を使用して直接アクセスできる、または、モデルフレームワーク（テンソルフローやＭＸＮｅｔフレームワークなど）を介してアクセスできる。典型的なユースケースでは、アプリケーションインスタンス２１１はより大きな機械学習パイプラインを実行し、そのうちアクセラレータアプライアンス２２１のバインドされた呼び出しのみがＥｌインタフェースＡＰＩを使用して送信され、残りはローカルで実行される。データ入力の前処理及び推論出力の後処理も、アプリケーションインスタンス２１１で行われる。アクセラレータを使用してインスタンスを起動するためのＡＰＩコマンドの例は次のとおりである。
＄  ａｗｓ  ｅｃ２  ｒｕｎ−ｉｎｓｔａｎｃｅｓ−ｒｅｇｉｏｎ  ｕｓ−ｅａｓｔ−１−ｅｉａ−ｓｐｅｃｉｆｉｃａｔｉｏｎ  ｔｙｐｅ＝ｆｐ１６．ｅｉａ．ｍｅｄｉｕｍ  −ｉｎｓｔａｎｃｅ−ｔｙｐｅ  ｔ２．ｍｅｄｉｕｍ  −ｉｍａｇｅ−ｉｄ  ａｍｉ−ｅ３ｂｂ７３９９
【００５５】
Ｅｌインタフェースは、算術精度（ＦＰ３２、ＦＰ１６、ＩＮＴ８など）と計算能力（ＴＯＰＳ）を指定することによってサイズ設定される。ＥｌインタフェースＡＰＩは、モデルのロード、モデルに対する推論呼び出し（テンソルイン／テンソルアウト）、及びモデルのアンロードを可能にする。複数のモデルが、いつでもＥｌインタフェースを介してロードできる。モデルは、（ｉ）推論のための計算グラフ全体の記述、及び（ｉｉ）訓練から得られた重みで構成される。ロードするためのＡＰＩコマンドの例は次のとおりである。
＄  ｅｉａ  ｌｏａｄ−ｍｏｄｅｌ  −ｍｏｄｅｌ−ｌｏｃａｔｉｏｎ"ｓ３  ｌｏｃａｔｉｏｎ"−ｒｏｌｅ"ｅｉａＲｏｌｅ"  −ｍｏｄｅｌ＿ｎａｍｅ"ｍｙ＿ｍｏｄｅｌ＿１"  −ｍａｘ＿ｂａｔｃｈ＿ｓｉｚｅ  １６
【００５６】
モデルには多くの異なるフォーマットがあり、本明細書に記載するサービスの実施形態は複数のフォーマットをサポートする。一部の実施形態では、テンソルフロー及びＭＸＮｅｔフレームワークからエクスポートされたモデルフォーマットと、ＯＮＮＸのようなモデル交換フォーマットがサポートされる。特定のフォーマットがどのように扱われるかは異なってよい。通常、モデルは１つまたは複数のファイル及び／またはオブジェクトを介してアプリケーションインスタンスとアクセラレータにロードされる。例えば、モデルをストレージ（ストレージ３６１など）にロードし、その後、アプリケーションインスタンス及びアクセラレータで利用可能にすることができる。これらのファイル及び／またはオブジェクトは、テンソルフロー、Ａｐａｃｈｅ  ＭＸＮｅｔ、ＯＮＮＸなどのフォーマットの加重計算グラフとしてモデルを指定する。モデル定義は、各フレームワークまたは交換フォーマットで定義された組み込み演算子／層を使用する。モデルフォーマットのバージョンはモデルファイルで指定され、ファイルのエクスポートに使用された各フレームワークのバージョン番号である（例えば、テンソルフロー１．５、ＭＸＮｅｔ１．０、ＯＮＮＸ１．０）。一部の実施形態では、アクセラレータランタイム（モデルバリデータ３２７など）は、この情報を使用して、どの推論エンジン３２５を使用してモデルを提供するかを決定する。
【００５７】
Ｅｌインタフェースの初期化中に、訓練済みモデル（計算グラフ）が入力として提供され、プロファイリングされ、その後、アプリケーション２１３は、アプリケーションインスタンス２１１上のクライアントライブラリ３１５を介して推論呼び出しを行う。このアプローチを実施する多くの方法がある。
【００５８】
一部の実施形態では、事前（ＡＯＴ）コンパイルが使用される。例えば、Ｅｌインタフェースでのモデルロード中に、訓練済みモデルがターゲット（ハードウェア）コードにコンパイルされる。これは２つのサブステップを伴う。第１に、フロントエンドコンパイラは、ターゲットに依存しない最適化と分析を取り入れながら、訓練済みモデルのファイルフォーマットから中間表現に変換する。第２に、バックエンドコンパイラは、ターゲットに依存する最適化と分析を使用して、中間表現からマシンコードに変換する。この「ＡＯＴ」コンパイルにより、プログラム全体の分析が可能になる。ターゲットハードウェアは、ＣＰＵとアクセラレータアプライアンス２２１上のアクセラレータデバイスの組み合わせであり、コンパイルは、アクセラレータアプライアンス２２１上で行われる。出力には、ターゲットアーキテクチャに固有の推論用に最適化された実行プランが組み込まれる。コンパイル段階では、最大バッチサイズのような追加入力が必要になる場合がある。さらに、必要に応じて表現をストレージにシリアル化することもでき、同じモデル及びアクセラレータアプライアンス２２１ハードウェアに対する将来の推論をインスタンス化するためのコンパイル段階を回避できる。アクセラレータアプライアンス２２１上のランタイムは、これをメモリ内の「推論ランタイムオブジェクト」としてインスタンス化し、それを使用して、Ｅｌインタフェース上で将来の推論呼び出しを実行する。ＡＯＴコンパイルアプローチは、機械学習（ＭＬ）エンジンの依存性（のほとんど）を取り除くため、ランタイムのメモリフットプリントとＣＰＵオーバーヘッドが低下する。これは、多くの場合、推論パフォーマンス向上につながり得る。
【００５９】
一部の実施形態では、アクセラレータアプライアンス２２１上のＭＬエンジンが利用される。ＭＬエンジンはモデルを入力として受け取り、推論中にモデルを実行する。ＭＬエンジンはモデルグラフをトラバースし、演算子レベルのＡＰＩを呼び出すため、アクセラレータアプライアンス２２１のメモリフットプリントとＣＰＵオーバーヘッドが高くなる。
【００６０】
一部の実施形態では、アプリケーションインスタンス２１１上のＭＬエンジンが利用される。一部のＧＰＵベースのアクセラレーションでは、ＣＰＵはそれ自体とＧＰＵの間で計算を分割し、インタフェースを呼び出してＧＰＵに計算をオフロードする。これにより、ＭＬエンジンを顧客インスタンスで実行し、ネットワークを介して、計算プリミティブの粒度でアクセラレータアプライアンス２２１に呼び出しを行うことができる。リモート呼び出しを集約し、それらをバッチでアクセラレータアプライアンス２２１に送信することによって、このアプローチの待ち時間を短縮することも可能である。クライアントライブラリ３１５は、フレームワークの下のアクセラレータアプライアンス２２１にモデルをロードし、続いてそれに対して推論呼び出しを行うために使用される。
【００６１】
一部の実施形態では、広告されたＴＯＰＳは、アプリケーションインスタンス２１１を実行するＣＰＵではなく、アクセラレーションハードウェアの計算能力に起因する。ほとんどの計算集約的な演算子はアクセラレータで実行される（例えば、ＭＸＮｅｔはＧＰＵ実装を有する）が、制御フローでは、演算子はシリアル化されたモデルフォーマットで表現できない場合があり、ＣＰＵで実行される。アクセラレータアプライアンス２２１上の各アクセラレータスロットはまた、アプリケーションインスタンス２１１のＣＰＵの割り当てを取得し、その割り当ては、プロビジョニングされたＴＯＰＳに比例する。
【００６２】
一部の実施形態では、モデルの構文は、正確性及び各フレームワーク／バージョンへの適合性について検証されるので、顧客は、この形式を入力として使用して推論エンジン２２３の脆弱性を悪用することはできない。モデルバリデータは、各フレームワーク／フォーマットのモデル構文を検証する。この検証は、推論エンジン２２３とは別のプロセスとして行われるため、ＧＰＵランタイムへのセキュリティ関連のリークはない。
【００６３】
図４は、アプライアンスプロビジョニングの方法の例をスイムレーン図として示す。この図は、制御プレーン３５１とデータプレーンコンポーネント（アクセラレータアプライアンスマネージャ３４３及びアクセラレータスロット２２３など）の間のアクション及び通信に焦点を当てている。上記のように、アプライアンスは、コントローラ（ＣＰＵなど）と、コントローラに結合された複数のアクセラレータ（ＧＰＵ、ＡＳＩＣ、ＦＰＧＡなど）を含む。アクセラレータアプライアンスマネージャ３４３は、アクセラレータの一部であるアクセラレータスロット２２３のプロビジョニング及び分離、アクセラレータスロットへのアプリケーションインスタンスの接続／接続解除、将来の接続のためのアクセラレータのクリーンアップとリサイクル、アクセラレータの健全性と接続性の収集及び報告、及び／またはアクセラレータソフトウェアのバージョンアップグレードの処理を担当している。ストレージ３６１は、オブジェクトストレージに使用される。
【００６４】
サークル１で、制御プレーン３５１は、プロビジョニングデータをアクセラレータアプライアンスマネージャ３４３に送信する。このプロビジョニングデータは、アクセラレータアプライアンスの識別子の１つまたは複数、使用するアクセラレータの１つまたは複数の識別子、アクセラレータタイプの１つまたは複数の識別子、メタデータストレージの識別子もしくは位置、ログ（複数可）（健全性ログやダンプなど）ストレージの識別子もしくは位置、及び暗号化キー（もしくはその位置）を含む。選択されるアクセラレータアプライアンスは、ユーザのプロビジョニング要求のサイズと精度に合致する。
【００６５】
アクセラレータアプライアンスマネージャ３４３は、サークル２で、使用する各アクセラレータスロット２２３の起動／構成を行う。一部の実施形態では、これは、コンテナ、または機械学習モデルのための仮想マシンの起動を含む。一部の実施形態では、ベアメタルが使用される。
【００６６】
アクセラレータアプライアンスマネージャ３４３は、サークル３で、識別されたログストレージ３６１にログ情報を書き込む。例えば、健全性メトリクスファイルへの接続性の情報（空の構成）がこの時点で書き込まれてよい。健全性メトリクスの例には、アプライアンスのアイデンティティ、インスタンスのアイデンティティ、アプライアンスタイプの識別、健全性ステータスの指示（ＯＫ、障害、停止など）、及びログの時間が含まれるが、これらに限定されない。プロビジョニングが行われたばかりであるため、アクセラレータスロットに関するこの時点での接続性の情報は、通常は空であることに注意されたい。
【００６７】
さらに、メトリクス情報が書き込まれてよい。例示的なメトリクスには、名前、単位、値、統計値（最大値、最小値、サンプルカウント、参照期間の値の合計）、及びタイムスタンプなどのメトリクスのデータ、インスタンス識別子、アクセラレータスロットの識別子、アクセラレータスロットタイプの識別子、インスタンスのソフトウェア構成の識別子などのメトリクスディメンション、並びに、アプリケーションインスタンス識別子などが含まれるが、これらに限定されない。
【００６８】
この情報をストレージ３６１に記憶することにより、制御プレーン３５１が情報を利用することができる。各アクセラレータスロット２２３は、健全性及び接続性の情報を生成し、これをサークル４で、アクセラレータアプライアンスマネージャ３４３に提供し、アクセラレータアプライアンスマネージャ３４３は、次に、サークル５で、ストレージ３６１を更新する。一部の実施形態では、健全性及び接続性の情報は、毎分生成されるが、他の実施形態では、この情報は、オンデマンドで、異なるレートでなど、生成される。
【００６９】
ある時点で、制御プレーン３５１は、サークル４で少なくとも健全性をポーリングする（健全性ファイルのポーリングなど）。ストレージ３６１は、サークル５で、健全性情報で応答し、制御プレーン３５１は、この健全性情報に基づいて、プロビジョニングが成功したかどうかを評価する。プロビジョニングが失敗する場合がある。例えば、スロットのプロビジョニングの失敗などのブートストラップの問題が発生したり、健全性、メトリクス、ログ、またはダンプ情報の書き込みの失敗などのストレージの問題が発生したりする場合がある。例えば、一部の実施形態では、アクセラレータスロットの健全性情報が全く生成されない場合、制御プレーン３５１は、アプライアンス全体を再プロビジョニングする。一部の実施形態では、データプレーンが健全性情報をストレージ３６１に記憶しない場合、制御プレーン３５１は、健全性情報が到着するまで待機し（そして、到着しない場合はある時点でタイムアウトし）、アプライアンスの再プロビジョニングが行われる。制御プレーン３５１は、ストレージ３６１に欠落しているデータがある場合、情報の再送信を（アクセラレータアプライアンスマネージャ３４３を介して）要求してよいことに注意されたい。
【００７０】
図５は、アクセラレータアプライアンスプロビジョニングの実施形態を示す。図に示すように、アクセラレータアプライアンス２２１は、複数のアクセラレータスロット（ＡＳ１  ２２３、ＡＳ２，...，ＡＳｎ）を含む。ユーザプロビジョニングデータはＡＡＭ３４３によって受信され、ＡＡＭ３４３は必要に応じて各アクセラレータスロットをセットアップする。この例では、ＡＳ１  ２２３のみがセットアップされている。ただし、ＡＡＭ３４３は他のアクセラレータスロットの使用状況を追跡する。例えば、ＡＳ２は、別のアプリケーションインスタンスに接続されてよく、ＡＡＭ３４３は、それを認識し、それに応じてアクセラレータアプライアンス２２１のリソースの使用を管理する。
【００７１】
図６は、アクセラレータアプライアンスの事前接続の実施形態を示す。図に示すように、アクセラレータアプライアンス２２１は、複数のアクセラレータスロット（ＡＳ１２２３、ＡＳ２，...，ＡＳｎ）を含む。各アクセラレータスロットは、ＡＡＭ３４３と（例えば、ローカルディスクを介して、または直接）健全性、メトリクス、及びログ情報を通信する。ＡＡＭ３４３は、制御プレーンにアクセス可能な記憶場所（ストレージ３６１など）に、アクセラレータスロットごとに、ＪＳＯＮ（ＪａｖａＳｃｒｉｐｔ  Ｏｂｊｅｃｔ  Ｎｏｔａｔｉｏｎ）フォーマットで健全性及びメトリクス情報を通信する。アクセラレータスロットごとのログ及びダンプ情報も、制御プレーンにアクセスできる記憶場所で利用可能になる。一部の実施形態では、情報は定期的に送信される。周期性は、ユーザ定義またはウェブサービスプロバイダによって規定されてよい。他の実施形態では、情報は、情報が変化するときに送信される。例えば、健全性情報が変化する（アクセラレータスロットが不健全になる）と。
【００７２】
図７は、アプライアンス接続の方法の例をスイムレーン図として示す。この図は、制御プレーン３５１とデータプレーンコンポーネント（アクセラレータアプライアンスマネージャ３４３及びアクセラレータスロット２２３）の間のアクション及び通信に焦点を当てている。
【００７３】
サークル１で、制御プレーン３５１は、ストレージ３６１を介して接続性の情報をアクセラレータアプライアンスマネージャ３４３に送信する。この接続性データは、接続メタデータ、健全性／接続性データ、及びメトリクスデータの１つまたは複数を含む。一部の実施形態では、これらのうちの１つまたは複数は、別個のファイル（接続メタデータファイル、健全性／接続性ファイル等）として記憶される。
【００７４】
接続メタデータは、顧客アカウント識別子、接続識別子、接続タイプ（アクセラレータスロット２２３のタイプ）、アプリケーションインスタンス識別子、ドメイン識別子、ネットワークインタフェースのＶＬＡＮ識別子、ネットワークインタフェースのＭＡＣ、及びネットワークインタフェースのＩＰアドレスなどの接続情報を含み得るが、これらに限定されない。
【００７５】
健全性／接続性データは、アプライアンスのアイデンティティ、インスタンスのアイデンティティ、アプライアンスタイプの識別、健全性ステータスの指示（ＯＫ、障害、停止など）、及びログの時間などの健全性データ、並びに、接続性ステータス（接続／切断）、接続識別子、接続タイプ（アクセラレータスロット２２３のタイプ）、アプリケーションインスタンス識別子、ドメイン識別子、及びタイムスタンプなどの接続性データを含み得るが、これらに限定されない。
【００７６】
メトリクスデータは、名前、単位、値、統計値（最大値、最小値、サンプルカウント、参照期間の値の合計）、タイムスタンプなどのメトリクスのデータ、並びに、インスタンス識別子、アクセラレータスロット識別子、アクセラレータスロットタイプの識別子、インスタンスのソフトウェア構成の識別子、アプリケーションインスタンス識別子などのメトリクスディメンションを含み得るが、これらに限定されない。
【００７７】
アクセラレータアプライアンスマネージャ３４３は、サークル２で、ストレージ３６１に接続性データ情報を要求する。接続性データ情報は、（入手可能な場合）サークル３で提供される。次に、アプライアンスアプリケーションマネージャ３４３は、この情報を使用して、１つまたは複数のアクセラレータスロット２２３（例えば、接続メタデータに詳述されているように）を接続し、アクセラレータスロット（複数可）２２３は、サークル４で、接続性の情報をアプライアンスアプリケーションマネージャ３４３に戻す。
【００７８】
アクセラレータアプライアンスマネージャ３４３は、サークル５で、識別されたログストレージ３６１にログ情報を書き込む。例えば、健全性メトリクス情報に接続性の情報が書き込まれる。ただし、上記で詳述した健全性メトリクスの例は、この時点では空であってはならない。さらに、非健全性メトリクス情報が書き込まれてよい。例示的な非健全性メトリクスには、名前、単位、値、統計値（最大値、最小値、サンプルカウント、参照期間の値の合計）、及びタイムスタンプなどのメトリクスのデータ、インスタンス識別子、アクセラレータスロット識別子、アクセラレータスロットタイプ識別子、インスタンスのソフトウェア構成の識別子などのメトリクスディメンション、アプリケーションインスタンス識別子などが含まれ得るが、これらに限定されない。
【００７９】
ある時点で、制御プレーン３５１は、サークル６で、少なくとも健全性情報をポーリングする。ストレージ３６１は、サークル７で、健全性情報で応答し、制御プレーン３５１は、サークル８で、この健全性情報に基づいて、接続が成功したかどうかを評価する。
【００８０】
接続に失敗する場合があることに注意されたい。例えば、接続メタデータ情報の書き込みまたは読み取りの失敗、健全性、メトリクス、ログ、またはダンプ情報の書き込みまたは読み取りの失敗など、ストレージの問題が発生する場合がある。例えば、一部の実施形態では、制御プレーン３５１が接続メタデータを送信できない場合、データプレーンは、以前に動作していたのと同じように続行する。ただし、制御プレーン３５１は何が悪かったのかを把握する必要がある。一部の実施形態では、データプレーンが接続情報を読み取れない場合、接続メタデータによって参照されるアクセラレータスロット２２３は、アクセラレータスロットが接続されていることを知らず、制御プレーン３５１は、（アクセラレータスロット２２３によって健全性データで提供される）接続がなくなるまで接続が損なわれていると見なす。一部の実施形態では、データプレーンが健全性情報を送信できない場合、または制御プレーン３５１が健全性情報を読み取れない場合、制御プレーン３５１は、（アクセラレータスロット２２３によって健全性データで提供される）接続がなくなるまで接続が損なわれていると見なす。
【００８１】
図８は、アクセラレータアプライアンス接続の実施形態を示す。具体的には、１つのアクセラレータスロットが接続されている。図に示すように、アクセラレータアプライアンス２２１は、複数のアクセラレータスロット（ＡＳ１  ２２３、ＡＳ２，...，ＡＳｎ）を含む。ＪＳＯＮメタデータファイルがＡＡＭ３４３に提供され、アクセラレータアプライアンスを使用するアプリケーションインスタンスにユーザアカウントが接続されたことを示す。ＡＡＭ３４３は、健全性、メトリクス、ログ、及びダンプ情報を更新し、その情報を制御プレーンにアクセス可能なストレージが利用できるようにする。そのため、制御プレーンは、スロットが接続されていることを認識する。
【００８２】
図９は、アプライアンスの接続解除／リサイクルの方法の例をスイムレーン図として示す。この図は、制御プレーン３５１とデータプレーンコンポーネント（アクセラレータアプライアンスマネージャ３４３及びアクセラレータスロット２２３）の間のアクション及び通信に焦点を当てている。ある時点で、アクセラレータスロット２２３が必要とされなくなる。制御プレーン３５１は、そのアクセラレータスロット２２３にこれを通知する。まず、制御プレーンは、サークル１でクリーニングが必要なターゲットアクセラレータスロットをマークする。
【００８３】
制御プレーン３５１は、サークル２で、ストレージ３６１のメタデータ情報を更新して、全ての接続性の情報を空にし、クリーニングトークンを入れる。クリーニングトークンは、クリーニングプロセスが完了したことを確認するためにアクセラレータスロット２２３によって使用される。例えば、接続情報はクリーニングトークンのみを含む。
【００８４】
アクセラレータアプライアンスマネージャ３４３は、サークル３で、ストレージ３６１から接続性データの１つまたは複数を要求する。接続性データは、（入手可能な場合）サークル４で提供される。次に、アプライアンスアプリケーションマネージャ３４３は、この情報を使用して、（例えば、接続メタデータに詳述されている）１つまたは複数のアクセラレータスロット２２３の接続を解除し、アクセラレータスロット（複数可）２２３は、サークル４でアプライアンスアプリケーションマネージャ３４３に接続性の情報を返す。
【００８５】
アプライアンスアプリケーションマネージャ３４３は、サークル５で、アクセラレータスロット２２３にクリーンアップ／リサイクルするように通知する。アクセラレータスロット２２３は、アプリケーションによって使用されているリソース（メモリ、キャッシュ内のアドレス等）を解放し、サークル６で、クリーンアップ／リサイクルが完了したことをアプライアンスアプリケーションマネージャ３４３に通知する。
【００８６】
アクセラレータアプライアンスマネージャ３４３は、サークル６で、空の接続性に対する通常の健全性情報に加えて、クリーニングトークンが含まれる更新された健全性情報をストレージ３６１に書き込む。
【００８７】
ある時点で、制御プレーン３５１は、サークル８で、少なくとも健全性情報をポーリングする。ストレージ３６１は、サークル９で、健全性情報で応答し、制御プレーン３５１は、サークル１０で、この健全性情報に基づいて、接続解除が成功したかどうかを評価する。接続解除に失敗する場合があることに注意されたい。例えば、更新接続メタデータ情報の書き込みまたは読み取りの失敗、または制御プレーン３５１によるクリーニングトークンの読み取りの失敗などのストレージの問題が発生する可能性がある。例えば、一部の実施形態では、制御プレーン３５１が更新された接続メタデータを送信できない場合、データプレーンは以前に動作していたように継続するが、制御プレーン３５１は、顧客インスタンスが停止されたために接続が損なわれたと見なす。ただし、制御プレーン３５１は何が悪かったのかを把握する必要がある。一部の実施形態では、データプレーンが更新されたメタデータ情報を読み取れない場合、接続メタデータによって参照されるアクセラレータスロット２２３は、アクセラレータスロット２２３の接続が解除されたことを知らず、制御プレーン３５１は、接続がクリーニング状態にあると見なす。クリーニング状態が解除されるまで、アクセラレータスロット２２３への新たな配置は起こらない。
【００８８】
図１０は、アプリケーションインスタンスとアクセラレータアプライアンスの間のインタラクションを含む、弾力的推論のためにアクセラレータを使用する方法のスイムレーン図の実施形態を示す。
【００８９】
図に示すように、ＡＩＭ３１７は、ＩＭＤＳを読み取り、アクセラレータ２２２に接触する方法に関する情報を取得する。一部の実施形態では、ＩＭＤＳ情報は、特定のアクセラレータスロット２２３に接触する方法に関する情報を含む。
【００９０】
アクセラレータスロット２２３のＡＩＭ３１７及びＡＳＭ３２９は、互換性を決定するためにハンドシェイク動作を行う。互換性がある場合、アプリケーションインスタンス２１１の推論アプリケーション２１３は、ＡＩＭ３１７からアクセラレータのアドレスを取得する。このようにして、推論アプリケーション２１３は、処理するスコアリングデータをどこにアドレス指定するかが分かる。
【００９１】
アプリケーションインスタンスによって使用されるアクセラレータスロットのＡＳＭ３２９は、接続性及び健全性の情報をアクセラレータアプライアンスのローカルディスク３３３で、または、通信チャネル２８１を使用して更新する。ＡＡＭ３４３はこの情報を読み取り、制御プレーンによってアクセス可能なストレージ３６１に情報を配置する。このようにして、アプリケーションインスタンス及びアクセラレータスロットは相互に接続する方法を学習し、アクセラレータアプライアンスはその情報を制御プレーン３５１で利用できるようにした。制御プレーンがそのデータとどのようにインタラクトするかについては、他の箇所に詳しく記載する。
【００９２】
推論アプリケーション２１３はまた、使用したい１つまたは複数のモデルをアクセラレータスロットにロードする。一部の実施形態では、このロードは、推論エンジン３２５に行われ、推論エンジン３２５は、次に、モデルバリデータ３２７を呼び出して、アップロードされたモデル（複数可）を検証する。その検証の成功または失敗は、推論エンジンに提供される。他の実施形態では、推論エンジン２１２からのロードは、モデルバリデータ３２７に行われ、モデルバリデータ３２７は、モデルを検証し、利用する推論エンジン３２５を選択し、検証済みモデルを選択した推論エンジン３２５に提供する。モデルのロードが成功したことを示すものが、推論アプリケーション２１３に提供される。
【００９３】
推論アプリケーション２１３によって受信されたスコアリングデータは、推論エンジン３２５に向けられ、結果（複数可）が戻される。
【００９４】
モデルが使用されなくなった場合、モデルは、コマンドを介して推論アプリケーション２１３からアクセラレータスロットにアンロードされる。具体的には、推論エンジン３２５は、もはや推論アプリケーション２１３からの要求を処理するようにプロビジョニングされていない。
【００９５】
他の箇所で論じるように、アクセラレータスロット（具体的には、ＡＳＭ３２９）は、ＡＡＭ３４３が消費のためにストレージ３６１に提供するか、または通信チャネル２８１を介して送信する接続性の情報でローカルディスク３３３を更新することに注意されたい。制御プレーン３５１は、ストレージ３６１を介して接続性が無いと判断した場合（モデルのアンロード後または障害後など）、スロットは損なわれているとする。
【００９６】
さらに、接続性の問題、コンポーネントの障害、コンポーネントの非互換性などが原因で、１つまたは複数のアクセラレータスロットを使用するときに障害が発生する可能性がある。障害の検出、根本原因の特定、及び必要な修正措置を講じるようにユーザに通知することは、弾力的推論サービス１０５が一部の実施形態で提供する機能である。上記のように、アクセラレータスロットは、接続の健全性及びスロットの健全性に関するメトリクスを発行し、これらは、制御プレーン３５１が消費するために、ＡＡＭ３４３によってストレージ３６１にアップロードされる。接続の健全性は、接続済みと未接続の状態のいずれかになり得る。接続済みは、アプリケーションインスタンス２１１が「アプリケーションレベルのｐｉｎｇ」を介してアクセラレータスロット２２３に到達でき、アプリケーションインスタンス２１１のコンポーネントがアクセラレータスロット２２３のコンポーネントと互換性があることを示す。未接続は、アプリケーションインスタンス２１１がＡＳＭ３２９に到達できなかったか、コンポーネントに互換性がないことを意味し得る。
【００９７】
アクセラレータの健全性は、アクセラレータが正常であるかどうかを識別する。アクセラレータの健全性は、正常または正常でない、を含むがこれらに限定されず、これらの多くの状態の１つであってよい。アクセラレータスロット２２３の健全性は、推論エンジン３２５が推論要求に応答できるかどうかを含む様々な要因によって決まる。このチェックは、推論エンジン３２５にｐｉｎｇすることによってＡＳＭ３２９によって行われる。
【００９８】
ＡＳＭ３２９は、アクセラレータごとにこれらの状態をローカルディスク３３３に対して発行し、これは次に、ＡＡＭ３４３によって読み取られ、状態を制御プレーン３５１に転送する。制御プレーン３５１は、これらの状態を、ＯＫ、障害、及び不明の接続状態を反映する１つの状態に統合し、ユーザが利用できるようにする。
【００９９】
図１１は、弾力的推論サービスを実施する際にウェブサービスプロバイダによって行われる方法の実施形態を示す。１１０１で、ウェブサービスプロバイダのフロントエンドは、弾力的推論サービスによって使用されるアプリケーションインスタンス構成情報を受信する。例えば、フロントエンド１０３は、構成情報を受信し、それを少なくとも弾力的推論サービス１０５に提供する。構成情報は、マシンイメージの指示、アプリケーションインスタンスのインスタンスタイプの指示、アプリケーションインスタンスによって利用される仮想ネットワーク情報、推論に使用するアクセラレータタイプの指示、及び使用する１つまたは複数の記憶場所の指示（アプリケーションの位置、推論の結果を配置する位置、健全性及び接続性の情報の位置、自動スケーリング使用等）の１つまたは複数を含み得るが、これらに限定されない。
【０１００】
一部の実施形態では、アプリケーションインスタンス及び／またはアクセラレータアプライアンスは、（手動でスケーリングするのではなく）弾力的推論サービス１０５による自動スケーリングの対象となる。自動スケーリングは、アプリケーションの新しいインスタンス及び／または最も少ないインスタンスを有するデバイスのアクセラレータスロット（複数可）を起動することにより、インスタンスを均等に分散しようとする。リバランス時に（アクセラレータスロットが異常になった後など）、自動スケーリングは古いインスタンスを終了する前に新しいインスタンスを起動するため、リバランスによってアプリケーションのパフォーマンスや可用性が損なわれることはない。通常、構成情報は、自動スケーリングが弾力的推論サービス１０５によって適用されるべきかどうかの指示を含む。
【０１０１】
アプリケーションインスタンスは、１１０３で受信した構成に従って、少なくとも１つのアクセラレータスロットとともにプロビジョニングされる。アクセラレータスロットをプロビジョニングする例は、図４と、それに関連するテキストによって記載している。
【０１０２】
一部の実施形態では、弾力的推論サービスは、ウェブサービスプロバイダ内のリソースの位置の最適化を実行する位置選択機能を含む。位置選択機能を使用して、アクセラレータスロットを実装する物理アクセラレータに対してアクセラレータ位置の特定の１つを選択してよい。アクセラレータスロットの位置は、１つまたは複数の配置基準に（少なくとも部分的に）基づいて選択されてよい。位置選択機能を使用して、（同じ物理マシン上などで）仮想計算インスタンスを実装する物理的計算インスタンスに対して、アクセラレータスロット位置の特定の１つを選択してよい。アプリケーションインスタンスの位置も、１つまたは複数の配置基準に（少なくとも部分的に）基づいて選択されてよい。
【０１０３】
アクセラレータスロットの位置を選択するために使用される配置基準は、アプリケーションインスタンスの位置を選択するために使用される配置基準と同じであっても、異なっていてもよい。一実施形態では、アプリケーションインスタンスの位置とＧＰＵの位置の両方を、特定の仮想計算インスタンスとそれに接続された仮想ＧＰＵに対して最適化してよい。一実施形態では、特定の仮想アプリケーションインスタンス及び／またはアクセラレータスロットの配置を最適化するために使用される配置基準は、プロバイダネットワークのクライアントによって提供または承認される。一実施形態では、特定のアプリケーションインスタンス及び／またはアクセラレータスロットの配置を最適化するために使用される配置基準は、プロバイダネットワークの管理者によって提供または承認されてよい。一実施形態では、特定のアプリケーションインスタンス及び／またはアクセラレータスロットの配置を最適化するために使用される配置基準は、デフォルト設定を使用して決定されてよい。
【０１０４】
１つまたは複数の配置基準は、パフォーマンス（例えば、パフォーマンスを最大にするため）、リソース使用量（例えば、リソース使用量を最小限にするため）、コスト（例えば、コストを最小限にするため、または、リソースコストをクライアントが指定した予算内にするため）、エネルギー使用量（例えば、エネルギー使用量を最小限にするため、または「グリーン」エネルギーを優先するため）、ネットワークの局所性（例えば、２つ以上のリソース間のネットワークの近接性を最小限にするため）のメトリクス、及び／または任意の他の適切なメトリクスの最適化（例えば、改善）を含んでよい、または、それらに関連付けられてよい。配置基準として使用されるパフォーマンスメトリクスとコストメトリクスは、物理的計算インスタンスによる物理アクセラレータの使用に関連付けられていることが多い。パフォーマンスメトリクスは、プロバイダネットワーク内、及び／またはプロバイダネットワークとクライアントデバイス間で測定された、待ち時間や帯域幅などのネットワーク関連のメトリクスを含んでよい。パフォーマンスメトリクスは、プロセッサの使用、ＧＰＵの使用、メモリの使用、ストレージの使用などに関連する任意の他のメトリクスを含んでよい。例として、ネットワーク待ち時間及び／または帯域幅を最小限に抑えるために、物理的計算インスタンスのアプリケーションインスタンスの位置は、物理アクセラレータと同じラック内で選択されてよく、これにより、基盤となる物理的計算インスタンスと物理アクセラレータ間のネットワーク通信がラックのトップオブラックスイッチを超えないようになる。同じラック内の位置が利用できない場合は、物理アクセラレータの近くのインスタンス位置（例えば、同じデータセンタ内）を選択して、配置基準を最適化してよい。別の例として、クライアントデバイスに最も近いデータセンタ内のアクセラレータ位置を選択して、物理アクセラレータとクライアントデバイス間の待ち時間を最小限にしてよく、この場合、データセンタのクライアントデバイスへの近接性は、予測または過去の待ち時間及び／または地理的近接性に基づいて測定される。
【０１０５】
本明細書で使用される場合、プロビジョニングは一般に、クライアントの基盤となる物理的計算インスタンスのリソース（例えば、計算及びメモリリソース）を（例えば、利用可能な物理的計算インスタンス及び他のリソースのプールから）確保することと、必要なソフトウェア（例えば、オペレーティングシステム）をインストールまたは起動することと、クライアントが指定したタスクを実行するために仮想計算インスタンスをクライアントが利用できるようにすることとを含む。仮想計算インスタンスは、様々な機能を有する複数のインスタンスタイプから選択されてよい。
【０１０６】
ネットワークの局所性のための配置最適化は、ネットワーク内の近接性に（少なくとも部分的に）基づいて、複数のリソース（例えば、１つまたは複数の物理的計算インスタンスと１つまたは複数の物理アクセラレータ）のグループ化を試みる場合がある。ネットワークの局所性は、リソースが属するネットワーク内の１つまたは複数の位置、接続、関連付け、またはゾーンを指す場合がある。リソース自体が、ノードまたは特定のネットワーク位置（例えば、ネットワークアドレス）であってよく、したがってネットワークの局所性であってよい。ネットワークの局所性は、リソースが接続されているネットワークルータ、スイッチ、またはその他のネットワークデバイスもしくはインフラストラクチャ（ネットワークスパインなど）に基づいて決定されてよい。ネットワークの局所性は、一部の実施形態では、論理的に関連付けられたネットワークデバイスまたはリソースに従って論理的に決定されてよい。リソースは、特定のネットワークルータに接続されているなど、複数のネットワークの局所性に属している場合があり、このルータは、他のネットワークルータやネットワークデバイスにリンクされてよい。アプリケーションインスタンス位置及び／またはアクセラレータ位置は、ネットワークの局所性に（少なくとも部分的に）基づいて選択されてよい。
【０１０７】
１１０５で、クライアントライブラリが、プロビジョニングされたアプリケーションインスタンスにロードされる。一部の実施形態では、インスタンスマネージャも、ロード／インストールされる。これらのコンポーネントの機能については、他の箇所で詳しく記載した。
【０１０８】
アクセラレータスロットは、１１０７でアプリケーションインスタンスに接続される。
【０１０９】
アクセラレータスロットにモデルをロードする要求は、１１０９で受信される。例えば、ＡＳＭ３２９がこの要求を受信する。通常、モデルをロードするこの要求には、モデルの位置が含まれる。この要求は、ユーザからであってよい、または、プロビジョニングされたアプリケーションインスタンスからであってよいことに注意されたい。
【０１１０】
１１１１で、ロードされるモデルが検証され、使用する推論エンジンが決定され、モデルがロードされる。モデルの検証と推論エンジンの選択の例については、前に詳しく記載した。
【０１１１】
１１１３で、アプリケーションの実行中にロードされたモデルを使用して推論が実行され、１１１５で、アプリケーションインスタンスのアプリケーションによって指示されたように結果が返信される。アクセラレータアプライアンスは、上記の間に管理されるリソースを含めて管理されることに注意されたい。
【０１１２】
図１２は、弾力的推論サービスを実施する際にウェブサービスプロバイダによって行われる方法の実施形態を示す。特に、方法の実施形態は、推論要求の処理を記載する。
【０１１３】
１２００で、複数のアクセラレータスロットがアプリケーションインスタンスで使用するために構成される。構成は、例えば、図１１などの他の箇所で詳述するように、プロビジョニング、接続、選択、モデルのロードなどを含む。各アクセラレータスロットは個別にアドレス指定可能であり、アプリケーションが様々なアクセラレータスロットを呼び出して様々なアクションを実行し得ることに注意されたい。
【０１１４】
１２０１で、推論要求がアプリケーションインスタンスによって受信される。例えば、フロントエンド１０３は、スコアリングデータを受信し、このデータをアプリケーションインスタンス２１１に提供する。
【０１１５】
推論要求データ（スコアリングデータ）は、１２０３で、アプリケーションインスタンスに接続された複数のアクセラレータの結合された推論エンジンに転送される。例えば、クライアントライブラリ３１５が、このデータをアプリケーション２１３から複数の推論エンジン３２５に転送するために呼び出される。
【０１１６】
最初の応答は、１２０５で、アプリケーションによって複数のアクセラレータスロットのうちの１つから受信される。この応答は、使用する結果と見なされる。後続の応答が受信されると、それらは１２０７で処理される。一部の実施形態では、処理は、後続の応答のうちの１つまたは複数を捨てることを含む。一部の実施形態では、後続の応答がマージされる。アプリケーションは１２０９で、最初の応答を使用する。
【０１１７】
一部の実施形態では、応答のタイミングが追跡される。例えば、各応答が受信されると、応答にかかった時間が計算される。タイミングの追跡により、アプリケーション（またはアプリケーションユーザ）は、アクセラレータスロットの接続を解除して別のアクセラレータスロットを接続する必要があるかどうかを判断できる。１２１１で、１つまたは複数の応答のタイミングが閾値よりも大きいかどうかの判断が行われ、ユーザの１人または複数に移行の可能性について警告が行われる、及び／または、別のアクセラレータスロットへの実際の移行が行われる。そのため、アクセラレータアプライアンス２２１、またはアクセラレータアプライアンス２２１とアプリケーションインスタンス２１１を結合するネットワーク（複数可）のスピードが低下すると、アプリケーション及び／またはユーザは、調整することができる。アクセラレータアプライアンスは、上記の間に管理されるリソースを含めて管理されることに注意されたい。
【０１１８】
接続解除と新しい接続は、移行の形態である。そのため、アプリケーションインスタンスに関して１つまたは複数のアクセラレータスロットが１つまたは複数のアクセラレータスロットに置き換えられ、アプリケーションインスタンスの処理が１つまたは複数のアクセラレータスロットの第１のセットから１つまたは複数のアクセラレータスロットの第２のセットに移行され、１つまたは複数のアクセラレータスロットの第２のセットを使用したアプリケーションインスタンスのアプリケーションが実行される。一部の実施形態では、新しい１つまたは複数のアクセラレータスロットは、１つまたは複数のアクセラレータスロットの第１のセットと比較して異なるレベルの処理を提供する。一部の実施形態では、１つまたは複数のアクセラレータスロットの第１のセットを１つまたは複数のアクセラレータスロットの第２のセットで置き換えることは、１つまたは複数のアクセラレータスロットの第１のセットの代わりに１つまたは複数のアクセラレータスロットの第２のセットに動作を引き受けさせることを含む。
【０１１９】
図１３は、弾力的推論サービスを実施する際にウェブサービスプロバイダによって行われる方法の実施形態を示す。特に、方法の実施形態は、アクセラレータスロットのプロビジョニングの処理を記載する。
【０１２０】
１３０１で、モデルのためにアクセラレータスロットをプロビジョニングし、接続する要求が受信される。要求は、使用するデータタイプ、モデル自体（またはその位置）、タイミング要件、コスト要件などの１つまたは複数を含んでよい。
【０１２１】
要求の要件を満たす利用可能なアクセラレータスロットが、１３０３で決定される。例えば、モデルのデータタイプが評価され、それらのタイプを処理できないアクセラレータスロットは要件を満たさないと見なされる。一部の実施形態では、この決定は、どのアクセラレータスロットが機能し、要件を満たすかを決定するためにモデルを実行することを含む。他の実施形態では、モデルは、弾力的推論サービスによって実行された他のモデルと比較され、同様のモデルの以前の実行が決定を知らせる。さらに、アクセラレータスロットの位置は、他の箇所で詳述されているように最適化されてよい。
【０１２２】
要求の要件を満たすと決定された少なくとも１つまたは複数のアクセラレータスロットが１３０５でプロビジョニングされる。プロビジョニングされた１つまたは複数のアクセラレータスロットは、１３０７でアプリケーションインスタンスに接続される。プロビジョニングと接続については、前に詳しく記載した。
【０１２３】
着信推論要求データ（スコアリングデータ）は、１３０９でアプリケーションインスタンスに接続された少なくとも１つまたは複数のアクセラレータスロットの結合された推論エンジン（複数可）に転送される。例えば、クライアントライブラリ３１５が、このデータをアプリケーション２１３から複数の推論エンジン３２５に転送するために呼び出される。
【０１２４】
応答（複数可）は、１３１１で追跡される。例えば、各応答が受信されると、応答にかかった時間が計算される及び／またはエラーがあれば、アクセラレータスロットによってスローされる。
【０１２５】
モデル及びアプリケーションの要件を満たしたアクセラレータスロットの評価は、一部の実施形態では１３１３で行われる。例えば、応答はタイムリーか、結果は正しいか、アクセラレータスロットは正常かなど。
【０１２６】
一部の実施形態では、１３１５で、接続されたアクセラレータスロットの１つまたは複数は、それらがもはや要件を満たさない場合、１３１５で接続を解除される。
【０１２７】
一部の実施形態では、スロット（複数可）が要件を満たしていない場合、要求の要件を満たす利用可能なアクセラレータスロットが別に決定される。これにより、スケーリングが可能になる。接続解除が常に発生するとは限らず、一部の実施形態では、より多くのスロットがスケーリングに配分されることに注意されたい。
【０１２８】
アクセラレータアプライアンスは、上記の間に管理されるリソースを含めて管理されることに注意されたい。
【０１２９】
図１４は、アクセラレータベースの推論サービスを使用するシステムの実施形態を示す。この図は、そのようなシステムのネットワークの側面を強調している。アクセラレータベースの推論サービス仮想ネットワーク１４０１は、１つまたは複数のアクセラレータアプライアンス１４２１を含む。詳細に記載すると、各アクセラレータアプライアンスは、アクセラレータベースの推論サービス通信チャネル（ネットワークなど）１４０１の「トランキング」通信チャネル１４０３に結合された１つまたは複数のアクセラレータスロット１４２３を有する。トランク通信チャネル１４０３は、アクセラレータアプライアンス１４２１の各アクセラレータスロット１４２３の位置識別子を認識している。
【０１３０】
図に示すように、ユーザは異なる仮想ネットワーク（ユーザＡの仮想ネットワーク１４１１及びユーザＢの仮想ネットワーク１４３１）を有する。各仮想ネットワーク内には、少なくとも１つのネットワークインタフェース（通信チャネル１４１５及び通信チャネル１４３５など）及び少なくとも１つのアプリケーションインスタンス（アプリケーションインスタンス１４１３及びアプリケーションインスタンス１４３３など）がある。アプリケーションインスタンスは、そのネットワークインタフェースを介してユーザの仮想ネットワークでアクセラレータスロットと通信する。
【０１３１】
一部の実施形態では、ネットワーク名前空間を利用して、同じ物理アクセラレータアプライアンス上のアクセラレータスロット間でネットワークインタフェースを分離し、各アクセラレータスロットのネットワークインタフェースがそれ自体の名前空間に存在するようにする。アクセラレータスロットのネットワークインタフェースを自身の名前空間に移動すると、異なる仮想ネットワークが重複するＩＰアドレスを有することが可能になる。
【０１３２】
図１５は、一部の実施形態による例示的なプロバイダネットワーク（または「サービスプロバイダシステム」）環境を示す。プロバイダネットワーク１５００は、１つまたは複数の仮想化サービス１５１０を介して顧客にリソース仮想化を提供することができ、仮想化サービスにより、顧客は、１つまたは複数のデータセンタのプロバイダネットワーク（複数可）内のデバイスに実装された計算及びストレージリソースを含むがこれらに限定されない仮想リソースのインスタンス１５１２を購入、レンタル、または取得することが可能になる。ローカルインターネットプロトコル（ＩＰ）アドレス１５１６は、リソースインスタンス１５１２に関連付けられてよく、ローカルＩＰアドレスは、プロバイダネットワーク１５００上のリソースインスタンス１５１２の内部ネットワークアドレスである。一部の実施形態では、プロバイダネットワーク１５００はまた、パブリックＩＰアドレス１５１４及び／または顧客がプロバイダ１５００から取得し得るパブリックＩＰアドレス範囲（例えば、インターネットプロトコルバージョン４（ＩＰｖ４）またはインターネットプロトコルバージョン６（ＩＰｖ６）アドレス）を提供してよい。
【０１３３】
従来、プロバイダネットワーク１５００は、仮想化サービス１５１０を介して、サービスプロバイダの顧客（例えば、１つまたは複数の顧客デバイス（複数可）１５５２を含む１つまたは複数のクライアントネットワーク１５５０Ａ〜１５５０Ｃを運用する顧客）が、顧客に割り当てられたまたは配分された少なくとも一部のパブリックＩＰアドレス１５１４を、顧客に割り当てられた特定のリソースインスタンス１５１と動的に関連付けることを可能にし得る。プロバイダネットワーク１５００はまた、顧客に配分された１つの仮想計算リソースインスタンス１５１２に以前にマッピングされたパブリックＩＰアドレス１５１４を、同じく顧客に配分された別の仮想計算リソースインスタンス１５１２に再マッピングすることを可能にし得る。サービスプロバイダによって提供される仮想計算リソースインスタンス１５１２及びパブリックＩＰアドレス１５１４を使用して、顧客ネットワーク（複数可）１５５０Ａ〜１５５０Ｃのオペレータなどのサービスプロバイダの顧客は、例えば、顧客固有のアプリケーションを実装し、インターネットなどの中間ネットワーク１５４０上に顧客のアプリケーションを提示する。次に、中間ネットワーク１５４０上の他のネットワークエンティティ１５２０は、顧客ネットワーク（複数可）１５５０Ａ〜１５５０Ｃによって公開された宛先パブリックＩＰアドレス１５１４へのトラフィックを生成してよく、トラフィックはサービスプロバイダデータセンタにルーティングされ、データセンタで、ネットワーク基板を介して、宛先パブリックＩＰアドレス１５１４に現在マップされている仮想計算リソースインスタンス１５１２のローカルＩＰアドレス１５１６にルーティングされる。同様に、仮想計算リソースインスタンス１５１２からの応答トラフィックは、ネットワーク基板を介して中間ネットワーク１５４０にルーティングされて、ソースエンティティ１５２０に戻されてよい。
【０１３４】
本明細書では、ローカルＩＰアドレスは、例えば、プロバイダネットワーク内のリソースインスタンスの内部のまたは「プライベートな」ネットワークアドレスを指す。ローカルＩＰアドレスは、インターネットエンジニアリングタスクフォース（ＩＥＴＦ：Ｉｎｔｅｒｎｅｔ  Ｅｎｇｉｎｅｅｒｉｎｇ  Ｔａｓｋ  Ｆｏｒｃｅ）リクエストフォーコメント（ＲＦＣ：Ｒｅｑｕｅｓｔ  ｆｏｒ  Ｃｏｍｍｅｎｔｓ）１９１８によって確保されたアドレスブロック内にあってよい、及び／またはＩＥＴＦ  ＲＦＣ４１９３で指定されたアドレスフォーマットであってよく、プロバイダネットワーク内で変更可能であってよい。プロバイダネットワークの外部から発信されたネットワークトラフィックは、ローカルＩＰアドレスに直接ルーティングされず、代わりに、トラフィックはリソースインスタンスのローカルＩＰアドレスにマップされているパブリックＩＰアドレスを使用する。プロバイダネットワークは、パブリックＩＰアドレスからローカルＩＰアドレスへのマッピング（またはその逆）を実行するためのネットワークアドレス変換（ＮＡＴ）または同様の機能を提供するネットワークデバイスまたはアプライアンスを含み得る。
【０１３５】
パブリックＩＰアドレスは、サービスプロバイダまたは顧客のいずれかによってリソースインスタンスに割り当てられるインターネット可変ネットワークアドレスである。パブリックＩＰアドレスにルーティングされたトラフィックは、例えば、１：１ＮＡＴを介して変換され、リソースインスタンスの各ローカルＩＰアドレスに転送される。
【０１３６】
一部のパブリックＩＰアドレスは、プロバイダネットワークインフラストラクチャによって特定のリソースインスタンスに割り当てられてよく、これらのパブリックＩＰアドレスは、標準のパブリックＩＰアドレス、または単に標準ＩＰアドレスと呼ばれてよい。一部の実施形態では、リソースインスタンスのローカルＩＰアドレスへの標準ＩＰアドレスのマッピングは、全てのリソースインスタンスタイプのデフォルトの起動構成である。
【０１３７】
少なくとも一部のパブリックＩＰアドレスは、プロバイダネットワーク１５００の顧客に配分されるか、または顧客によって取得されてよく、次に、顧客は、配分されたパブリックＩＰアドレスを、顧客に配分された特定のリソースインスタンスに割り当ててよい。これらのパブリックＩＰアドレスは、顧客パブリックＩＰアドレス、または単に顧客ＩＰアドレスと呼ばれてよい。標準ＩＰアドレスの場合のようにプロバイダネットワーク１５００によってリソースインスタンスに割り当てられる代わりに、顧客ＩＰアドレスは、例えば、サービスプロバイダによって提供されるＡＰＩを介して、顧客によってリソースインスタンスに割り当てられてよい。標準ＩＰアドレスとは異なり、顧客ＩＰアドレスは顧客のアカウントに配分され、必要または所望に応じて、各顧客によって他のリソースインスタンスに再マッッピングすることができる。顧客ＩＰアドレスは、特定のリソースインスタンスではなく、顧客のアカウントに関連付けられており、顧客が解放することを選択するまで、顧客がそのＩＰアドレスを制御する。従来の静的ＩＰアドレスとは異なり、顧客ＩＰアドレスは、顧客のパブリックＩＰアドレスを顧客のアカウントに関連付けられたリソースインスタンスに再マッピングすることで、リソースインスタンスまたはアベイラビリティーゾーンの障害を顧客がマスクするのを可能にする。例えば、顧客ＩＰアドレスは、顧客ＩＰアドレスを交換用のリソースインスタンスに再マッピングすることで、顧客が、顧客のリソースインスタンスまたはソフトウェアの問題を回避できるようにする。
【０１３８】
図１６は、一部の実施形態による、ＩＰトンネリング技術を使用してネットワーク基板上にオーバーレイネットワークを実装するデータセンタの例を示す。プロバイダデータセンタ１６００は、ルータ、スイッチ、ネットワークアドレストランスレータ（ＮＡＴ）などのネットワーキングノード１６１２を含むネットワーク基板を含んでよく、これらは、ソフトウェア、ハードウェア、またはそれらの組み合わせとして実装されてよい。一部の実施形態は、インターネットプロトコル（ＩＰ）トンネリング技術を使用して、オーバーレイネットワークを提供してよく、オーバーレイネットワークを介して、カプセル化されたパケットがトンネルを使用してネットワーク基板１６１０を通過してよい。ＩＰトンネリング技術は、ネットワーク上にオーバーレイネットワーク（例えば、図１６のデータセンタ１６００内のローカルネットワーク）を作成するためのマッピング及びカプセル化システムを提供してよく、オーバーレイ層（パブリックＩＰアドレス）とネットワーク基板１６１０層（ローカルＩＰアドレス）に別個の名前空間を提供してよい。オーバーレイ層のパケットは、それらのトンネル基板ターゲット（ローカルＩＰアドレス）が何かを決定するために（例えば、マッピングサービス１６３０によって提供される）マッピングディレクトリに照らしてチェックされてよい。ＩＰトンネリング技術は、仮想ネットワークトポロジ（オーバーレイネットワーク）を提供し、顧客に提示されるインタフェース（例えば、サービスＡＰＩ）はオーバーレイネットワークに接続されているため、顧客がパケットの送信先のＩＰアドレスを提供すると、ＩＰオーバーレイアドレスがどこであるかを知っているマッピングサービス（例えば、マッピングサービス１６３０）と通信することでＩＰアドレスが仮想空間で実行される。
【０１３９】
一部の実施形態では、ＩＰトンネリング技術は、ＩＰオーバーレイアドレス（パブリックＩＰアドレス）を基板ＩＰアドレス（ローカルＩＰアドレス）にマッピングしてよく、２つの名前空間の間のトンネルにパケットをカプセル化してよく、トンネルを介して正しいエンドポイントにパケットを配信してよく、ここで、カプセル化がパケットから取り除かれる。図１６では、ホスト１６２０Ａ上の仮想マシン（ＶＭ）１６２４Ａ（ＶＭＭ１６２２Ａを介した、ＶＭ１６２４Ａ１〜１６２４Ａ４）から中間ネットワーク１６４０上のデバイスへのオーバーレイネットワークトンネル１６３４Ａの例と、ホスト１６２０Ａ上のＶＭ１６２４Ａ（ＶＭＭ１６２２Ａを介した、ＶＭ１６２４Ａ１〜１６２４Ａ４）とホスト１６２０Ｂ上のＶＭ１６２４Ｂ（ＶＭＭ１６２２Ｂを介した、ＶＭ１６２４Ｂ１〜１６２４Ｂ４）の間のオーバーレイネットワークトンネル１６３４Ｂの例とが示されている。一部の実施形態では、パケットは、送信前にオーバーレイネットワークパケットフォーマットでカプセル化されてよく、オーバーレイネットワークパケットは、受信後に取り除かれてよい。他の実施形態では、オーバーレイネットワークパケットにパケットをカプセル化する代わりに、オーバーレイネットワークアドレス（パブリックＩＰアドレス）を、送信前にパケットの基板アドレス（ローカルＩＰアドレス）に埋め込み、受信時にパケットアドレスから取り除いてよい。例として、オーバーレイネットワークは、パブリックＩＰアドレスとして３２ビットＩＰｖ４（インターネットプロトコルバージョン４）アドレスを使用して実装されてよく、ＩＰｖ４アドレスは、基板ネットワーク上で使用される１２８ビットＩＰｖ６（インターネットプロトコルバージョン６）アドレスの一部としてローカルＩＰアドレスとして埋め込まれてよい。
【０１４０】
図１６を参照すると、実施形態が実装され得る少なくとも一部のネットワークは、ハードウェア仮想化技術を含んでよく、ハードウェア仮想化技術によって、複数のオペレーティングシステムが、ホストコンピュータ（例えば、図１６のホスト１６２０Ａ及び１６２０Ｂ）上で、すなわち、ホスト１６２０上で仮想マシン（ＶＭ）１６２４として同時に実行することができる。ＶＭ１６２４は、例えば、ネットワークプロバイダの顧客に貸し出されるかまたはリースされるホスト１６２０上のスロットで実行されてよい。ホスト１６２０上のハイパーバイザ、または仮想マシンモニタ（ＶＭＭ）１６２２は、仮想プラットフォームを有するホスト上にＶＭ１６２４を提示し、ＶＭ１６２４の実行を監視する。各ＶＭ１６２４は、１つまたは複数のローカルＩＰアドレスを備えてよく、ホスト１６２０上のＶＭＭ１６２２は、ホスト上のＶＭ１６２４のローカルＩＰアドレスを認識し得る。マッピングサービス１６３０は、（例えば、記憶されたマッピング情報１６３２によって）ルータまたは他のデバイスのネットワークＩＰプレフィックス及びＩＰアドレスを認識しており、ローカルネットワーク上でＩＰアドレスを提供し得る。これには、複数のＶＭ１６２４にサービスを提供するＶＭＭ１６２２のＩＰアドレスが含まれる。マッピングサービス１６３０は、例えば、サーバシステム上に集中化されてよい、あるいは、ネットワーク上の２つ以上のサーバシステムまたは他のデバイス間に分散されてよい。ネットワークは、例えば、マッピングサービス技術及びＩＰトンネリング技術を使用して、例えば、データセンタ１６００ネットワーク内の異なるホスト１６２０上のＶＭ１６２４間でデータパケットをルーティングしてよく、内部ゲートウェイプロトコル（ＩＧＰ：Ｉｎｔｅｒｉｏｒ  Ｇａｔｅｗａｙ  Ｐｒｏｔｏｃｏｌ）を使用して、このようなローカルネットワーク内でルーティング情報を交換してよいことに注意されたい。
【０１４１】
さらに、プロバイダデータセンタ１６００ネットワーク（自律システム（ＡＳ）と呼ばれることもある）などのネットワークは、マッピングサービス技術、ＩＰトンネリング技術、及びルーティングサービス技術を使用して、ＶＭ１６２４からインターネットの宛先、及びインターネットソースからＶＭ１６２４にパケットをルーティングしてよい。外部ゲートウェイプロトコル（ＥＧＰ）またはボーダーゲートウェイプロトコル（ＢＧＰ）が通常、インターネット上のソースと宛先の間のインターネットルーティングに使用されることに注意されたい。図１６は、一部の実施形態による、リソース仮想化技術を提供し、インターネットトランジットプロバイダに接続するエッジルータ（複数可）１６１４を介して完全なインターネットアクセスを提供するネットワークを実装するプロバイダデータセンタ１６００の例を示す。プロバイダデータセンタ１６００は、例えば、ハードウェア仮想化サービスを介して仮想コンピューティングシステム（ＶＭ１６２４）を実装する能力、及びストレージ仮想化サービスを介してストレージリソース１６１８Ａ〜１６１８Ｎに仮想データストア１６１６を実装する能力を顧客に提供してよい。
【０１４２】
データセンタ１６００ネットワークは、仮想リソースとの間でトラフィックをルーティングするために、例えば、データセンタ１６００内のホスト１６２０上のＶＭ１６２４からインターネット宛先に、また、インターネットソースからＶＭ１６２４にパケットをルーティングするために、ＩＰトンネリング技術、マッピングサービス技術、及びルーティングサービス技術を実施してよい。インターネットソース及び宛先は、例えば、中間ネットワーク１６４０に接続されたコンピューティングシステム１６７０、及び、（例えば、ネットワーク１６５０をインターネットトランジットプロバイダに接続するエッジルータ（複数可）１６１４を介して）中間ネットワーク１６４０に接続するローカルネットワーク１６５０に接続されたコンピューティングシステム１６５２を含んでよい。プロバイダデータセンタ１６００ネットワークはまた、データセンタ１６００内のリソース間で、例えば、データセンタ１６００内のホスト１６２０上のＶＭ１６２４から、データセンタ１６００内の同じホスト上または他のホスト１６２０上の他のＶＭ１６２４にパケットをルーティングしてよい。
【０１４３】
データセンタ１６００を備えるサービスプロバイダはまた、追加のデータセンタ（複数可）１６６０を備えてよく、データセンタ（複数可）１６６０は、データセンタ１６００と同様のハードウェア仮想化技術を含み、また中間ネットワーク１６４０に接続されてよい。パケットは、データセンタ１６００から他のデータセンタ１６６０に、例えば、データセンタ１６００のホスト１６２０上のＶＭ１６２４から、別の同様のデータセンタ１６６０内の別のホスト上の別のＶＭに、またはその逆に転送されてよい。
【０１４４】
上記では、複数のオペレーティングシステムをホスト上の仮想マシン（ＶＭ）としてホストコンピュータ上で同時に実行できるようにするハードウェア仮想化技術について記載したが、ＶＭは、ネットワークプロバイダの顧客に貸し出されるかまたはリースされているホスト上のスロットでインスタンス化されてよく、ハードウェア仮想化技術を使用して、他の計算リソース、例えばストレージリソース１６１８Ａ〜１６１８Ｎを、同様の方法でネットワークプロバイダの顧客に仮想リソースとして提供してもよい。
【０１４５】
図１７は、一部の実施形態による、プロバイダネットワーク上の仮想ネットワークを少なくとも一部の顧客に提供するプロバイダネットワークの例を示す。例えば、プロバイダネットワーク１７００上の顧客の仮想ネットワーク１７６０は、顧客が、顧客ネットワーク１７５０上の既存のインフラストラクチャ（例えば、１つまたは複数の顧客デバイス１７５２）を、論理的に分離されたリソースインスタンスのセット（例えば、ＶＭ１７２４Ａ、１７２４Ｂ、及びストレージ１７１８Ａ、１７１８Ｂ）に接続することを可能にし、且つ、セキュリティサービス、ファイアウォール、侵入検出システムなどの管理機能をそれらのリソースインスタンスを含むように拡張することを可能にする。
【０１４６】
顧客の仮想ネットワーク１７６０は、プライベート通信チャネル１７４２を介して顧客ネットワーク１７５０に接続されてよい。プライベート通信チャネル１７４２は、例えば、ネットワークトンネリング技術または中間ネットワーク１７４０を介した他の技術に従って実装されたトンネルであってよい。中間ネットワークは、例えば、共有ネットワークまたはインターネットなどのパブリックネットワークであってよい。あるいは、プライベート通信チャネル１７４２は、仮想ネットワーク１７６０と顧客ネットワーク１７５０の間の直接の専用接続を介して実装されてよい。
【０１４７】
パブリックネットワークは、複数のエンティティへのオープンアクセスと複数のエンティティ間の相互接続性を提供するネットワークとして大まかに定義されてよい。インターネット、またはワールドワイドウェブ（ＷＷＷ）は、パブリックネットワークの例である。共有ネットワークは、アクセスが一般に制限されていないパブリックネットワークとは対照的に、アクセスが２つ以上のエンティティに制限されているネットワークとして大まかに定義されてよい。共有ネットワークは、例えば、１つまたは複数のローカルエリアネットワーク（ＬＡＮ）及び／またはデータセンタネットワーク、または相互接続されてワイドエリアネットワーク（ＷＡＮ）を形成する２つ以上のＬＡＮまたはデータセンタネットワークを含んでよい。共有ネットワークの例は、会社ネットワーク及び他の企業ネットワークを含み得るが、これらに限定されない。共有ネットワークは、ローカルエリアをカバーするネットワークからグローバルネットワークの範囲のどこにあってもよい。共有ネットワークは、少なくとも一部のネットワークインフラストラクチャをパブリックネットワークと共有してよく、共有ネットワークは、パブリックネットワークを含み得る１つまたは複数の他のネットワークに結合されてよく、他のネットワーク（複数可）と共有ネットワークの間のアクセスは制御されていることに注意されたい。共有ネットワークは、インターネットなどのパブリックネットワークとは対照的に、プライベートネットワークと見なされてもよい。一部の実施形態では、共有ネットワークまたはパブリックネットワークのいずれかが、プロバイダネットワークと顧客ネットワークの間の中間ネットワークとして機能してよい。
【０１４８】
プロバイダネットワーク１７００上の顧客のための仮想ネットワーク１７６０を確立するために、１つまたは複数のリソースインスタンス（例えば、ＶＭ１７２４Ａ、１７２４Ｂ、及びストレージ１７１８Ａ、１７１８Ｂ）を仮想ネットワーク１７６０に配分してよい。他のリソースインスタンス（例えば、ストレージ１７１８Ｃ及びＶＭ１７２４Ｃ）は、他の顧客が使用するためにプロバイダネットワーク１７００上で利用可能であってよいことに注意されたい。ある範囲のパブリックＩＰアドレスもまた、仮想ネットワーク１７６０に配分されてよい。さらに、プロバイダネットワーク１７００の１つまたは複数のネットワークノード（例えば、ルータ、スイッチなど）が仮想ネットワーク１７６０に配分されてよい。プライベート通信チャネル１７４２は、仮想ネットワーク１７６０のプライベートゲートウェイ１７６２と顧客ネットワーク１７５０のゲートウェイ１７５６の間に確立されてよい。
【０１４９】
一部の実施形態では、パブリックゲートウェイ１７６２に加えて、またはその代わりに、仮想ネットワーク１７６０は、パブリックゲートウェイ１７６４を備えてよく、パブリックゲートウェイ１７６４は、プライベート通信チャネル１７４２に加えて、またはその代わりに、中間ネットワーク１７４０を介して、仮想ネットワーク１７６０内のリソースがエンティティ（例えば、ネットワークエンティティ１７４４）と（または、その逆）直接通信することを可能にする。
【０１５０】
仮想ネットワーク１７６０は、２つ以上のサブネットワーク、またはサブネット１７７０に細分されてよいが、必ずしも細分されなくてよい。例えば、プライベートゲートウェイ１７６２とパブリックゲートウェイ１７６４の両方を含む実施態様では、仮想ネットワーク１７６０は、プライベートゲートウェイ１７６２を介して到達可能なリソース（この例では、ＶＭ１７２４Ａ及びストレージ１７１８Ａ）を含むサブネット１７７０Ａと、パブリックゲートウェイ１７６４を介して到達可能なリソース（この例では、ＶＭ１７２４Ｂ及びストレージ１７１８Ｂ）を含むサブネット１７７０Ｂに細分されてよい。
【０１５１】
顧客は、特定の顧客のパブリックＩＰアドレスを仮想ネットワーク１７６０の特定のリソースインスタンスに割り当ててよい。次に、中間ネットワーク１７４０上のネットワークエンティティ１７４４は、顧客によって公開されたパブリックＩＰアドレスにトラフィックを送信してよく、トラフィックは、プロバイダネットワーク１７００によって、関連するリソースインスタンスにルーティングされる。リソースインスタンスからのリターントラフィックは、プロバイダネットワーク１７００によって、中間ネットワーク１７４０を介してネットワークエンティティ１７４４に戻されるようにルーティングされる。リソースインスタンスとネットワークエンティティ１７４４の間のトラフィックのルーティングは、パブリックＩＰアドレスとリソースインスタンスのローカルＩＰアドレスの間で変換するためにネットワークアドレス変換を要し得ることに注意されたい。
【０１５２】
一部の実施形態は、図１７に示されるように、顧客が顧客の仮想ネットワーク１７６０内のパブリックＩＰアドレスを顧客の外部ネットワーク１７５０上のデバイスに再マッピングすることを可能にし得る。パケットが（例えば、ネットワークエンティティ１７４４から）受信されると、ネットワーク１７００は、パケットによって示される宛先ＩＰアドレスが外部ネットワーク１７５０上のエンドポイントに再マッピングされたと判断し、プライベート通信チャネル１７４２または中間ネットワーク１７４０を介した各エンドポイントへのパケットのルーティングを処理してよい。応答トラフィックは、エンドポイントからプロバイダネットワーク１７００を介してネットワークエンティティ１７４４にルーティングされてよい、あるいは、顧客ネットワーク１７５０によってネットワークエンティティ１７４４に直接ルーティングされてよい。ネットワークエンティティ１７４４の観点からは、ネットワークエンティティ１７４４がプロバイダネットワーク１７００上の顧客のパブリックＩＰアドレスと通信しているように見える。しかしながら、ネットワークエンティティ１７４４は、実際には、顧客ネットワーク１７５０上のエンドポイントと通信している。
【０１５３】
図１７は、プロバイダネットワーク１７００の外部にある中間ネットワーク１７４０上のネットワークエンティティ１７４４を示しているが、ネットワークエンティティは、プロバイダネットワーク１７００上のエンティティであってもよい。例えば、プロバイダネットワーク１７００によって提供されるリソースインスタンスの１つは、顧客によって公開されたパブリックＩＰアドレスにトラフィックを送信するネットワークエンティティであってよい。
【０１５４】
一部の実施形態では、本明細書中に記載する技術の一部または全てを実装するシステムは、図１８に示すコンピュータシステム１８００など、１つまたは複数のコンピュータアクセス可能な媒体を含むまたはそれらにアクセスするように構成される汎用コンピュータシステムを含んでよい。図示の実施形態では、コンピュータシステム１８００は、入力／出力（Ｉ／Ｏ）インタフェース１８３０を介してシステムメモリ１８２０に結合された１つまたは複数のプロセッサ１８１０を含む。コンピュータシステム１８００は、Ｉ／Ｏインタフェース１８３０に結合されたネットワークインタフェース１８４０をさらに含む。図１８は、コンピュータシステム１８００を単一のコンピューティングデバイスとして示し、様々な実施形態では、コンピュータシステム１８００は、１つのコンピューティングデバイス、または単一のコンピュータシステム１８００として一緒に動作するように構成された任意の数のコンピューティングデバイスを含んでよい。
【０１５５】
様々な実施形態では、コンピュータシステム１８００は、１つのプロセッサ１８１０を含むユニプロセッサシステム、または幾つかのプロセッサ１８１０（例えば、２つ、４つ、８つ、または別の適切な数）を含むマルチプロセッサシステムであってよい。プロセッサ１８１０は、命令を実行することができる任意の適切なプロセッサであってよい。例えば、様々な実施形態では、プロセッサ１８１０は、ｘ８６、ＡＲＭ、ＰｏｗｅｒＰＣ、ＳＰＡＲＣ、もしくはＭＩＰＳ  ＩＳＡ、または任意の他の適切なＩＳＡなどの様々な命令セットアーキテクチャ（ＩＳＡ）のうちのいずれかを実装する汎用または埋め込みプロセッサであってよい。マルチプロセッサシステムでは、プロセッサ１８１０はそれぞれ、同じＩＳＡを一般に実装し得るが、必ずしもそうでなくてもよい。
【０１５６】
システムメモリ１８２０は、プロセッサ（複数可）１８１０によってアクセス可能な命令及びデータを記憶してよい。様々な実施形態では、システムメモリ１８２０は、ランダムアクセスメモリ（ＲＡＭ）、スタティックＲＡＭ（ＳＲＡＭ）、同期ダイナミックＲＡＭ（ＳＤＲＡＭ）、不揮発性／フラッシュ型メモリ、または任意の他のタイプのメモリなどの任意の適切なメモリ技術を使用して実装されてよい。図示の実施形態では、上述の方法、技術及びデータなどの１つまたは複数の所望の機能を実施するプログラム命令及びデータは、システムメモリ１８２０内にコード１８２５及びデータ１８２６として記憶されていることが示されている。
【０１５７】
一実施形態では、Ｉ／Ｏインタフェース１８３０は、プロセッサ１８１０、システムメモリ１８２０、及び、ネットワークインタフェース１８４０または他の周辺インタフェースを含むデバイス内の任意の周辺デバイス間のＩ／Ｏトラフィックを調整するように構成されてよい。一部の実施形態では、Ｉ／Ｏインタフェース１８３０は、１つのコンポーネント（例えば、システムメモリ１８２０）からのデータ信号を、別のコンポーネント（例えば、プロセッサ１８１０）による使用に適切なフォーマットに変換するように、任意の必要なプロトコル、タイミング、または他のデータ変換を行ってよい。一部の実施形態では、Ｉ／Ｏインタフェース１８３０は、例えば、ペリフェラルコンポーネントインターコネクト（ＰＣＩ）バス規格、またはユニバーサルシリアルバス（ＵＳＢ）規格の変形など、様々なタイプの周辺バスを通じて接続されるデバイスに対するサポートを含み得る。一部の実施形態では、Ｉ／Ｏインタフェース１８３０の機能は、例えば、ノースブリッジ及びサウスブリッジなどの２つ以上の別個のコンポーネントに分割されてよい。また、一部の実施形態では、システムメモリ１８２０へのインタフェースなどのＩ／Ｏインタフェース１８３０の機能の一部または全ては、プロセッサ１８１０内に直接組み込まれてよい。
【０１５８】
ネットワークインタフェース１８４０は、データが、コンピュータシステム１８００と、例えば、図１に示すような他のコンピュータシステムまたはデバイスなどの、ネットワーク（１つまたは複数）１８５０に接続された他のデバイス１８６０との間でやりとりされることを可能にするように構成されてよい。様々な実施形態では、ネットワークインタフェース１８４０は、例えば、イーサネット（登録商標）ネットワークのタイプなどの任意の適切な有線または無線の一般データネットワークを介した通信をサポートしてよい。さらに、ネットワークインタフェース１８４０は、アナログ音声ネットワークまたはデジタルファイバ通信ネットワークなどの電気通信／テレフォニネットワークを介した、ファイバチャネルＳＡＮなどのストレージエリアネットワーク（ＳＡＮ）を介した、または任意の他の適切なタイプのネットワーク及び／またはプロトコルを介した通信をサポートしてよい。
【０１５９】
一部の実施形態では、コンピュータシステム１８００は、（１つまたは複数のプロセッサ１８７５を含み、場合によっては１つまたは複数のネットワークインタフェース１８４０を含む）１つまたは複数のオフロードカード１８７０を含み、オフロードカード１８７０は、Ｉ／Ｏインタフェース１８３０（例えば、ペリフェラルコンポーネントインターコネクトエクスプレス（ＰＣＩ−Ｅ）規格のバージョン、またはクイックパスインターコネクト（ＱＰＩ）やウルトラパスインターコネクト（ＵＰＩ）などの別のインターコネクトを実装するバス）を用いて接続される。例えば、一部の実施形態では、コンピュータシステム１８００は、計算インスタンスをホストする（例えば、ハードウェア仮想化サービスの一部として動作する）ホスト電子デバイスとして機能してよく、１つまたは複数のオフロードカード１８７０は、ホスト電子デバイスで実行される計算インスタンスを管理できる仮想化マネージャを実行する。一例として、一部の実施形態では、オフロードカード（複数可）１８７０は、計算インスタンスの一時停止及び／または一時停止の解除、計算インスタンスの起動及び／または終了、メモリ転送／コピー動作の実行などの計算インスタンス管理動作を行うことができる。これらの管理動作は、一部の実施形態では、コンピュータシステム１８００の他のプロセッサ１８１０Ａ〜１８１０Ｎによって実行されるハイパーバイザと協調して（例えば、ハイパーバイザからの要求に応じて）オフロードカード（複数可）１８７０によって行われてよい。しかしながら、一部の実施形態では、オフロードカード（複数可）１８７０によって実装される仮想化マネージャは、他のエンティティからの（例えば、計算インスタンス自体からの）要求に対応でき、別個のハイパーバイザと協調（または、にサービス）しなくてよい。
【０１６０】
一部の実施形態では、システムメモリ１８２０は、上述のようなプログラム命令及びデータを記憶するように構成されたコンピュータアクセス可能な媒体の一実施形態であってよい。しかし、他の実施形態では、プログラム命令及び／またはデータは、異なるタイプのコンピュータアクセス可能な媒体上で、受信、送信、または記憶されてよい。一般的に言えば、コンピュータアクセス可能な媒体は、Ｉ／Ｏインタフェース１８３０を介してコンピュータシステム１８００に結合されるディスクまたはＤＶＤ／ＣＤ等、磁気媒体または光媒体などの非一時的記憶媒体またはメモリ媒体を含み得る。非一時的コンピュータアクセス可能な記憶媒体はまた、システムメモリ１８２０または別のタイプのメモリとして、コンピュータシステム１８００の一部の実施形態に含まれ得る、ＲＡＭ（例えば、ＳＤＲＡＭ、ダブルデータレート（ＤＤＲ）ＳＤＲＡＭ、ＳＲＡＭ等）、リードオンリメモリ（ＲＯＭ）などの任意の揮発性または非揮発性媒体を含んでよい。さらに、コンピュータアクセス可能な媒体は、ネットワークインタフェース１８４０を介して実装され得るような、ネットワーク及び／または無線リンクなどの通信媒体を介して伝送される伝送媒体または電気信号、電磁信号、もしくはデジタル信号などの信号を含み得る。
【０１６１】
図１９は、ウェブサービスプロバイダなどのコンピューティングデバイス１９００の例の一般的なコンポーネントのセットの論理配置を示す。一般に、コンピューティングデバイス１９００は、電子デバイスとも呼ぶことができる。図に示され、本明細書に記載する技術は、１つまたは複数の電子デバイス（例えば、クライアントエンドステーション及び／またはサーバエンドステーション）に記憶、及び、１つまたは複数の電子デバイスで実行されるコード及びデータを使用して実装することができる。このような電子デバイスは、非一時的なコンピュータ可読記憶媒体（例えば、磁気ディスク、光ディスク、ランダムアクセスメモリ（ＲＡＭ）、リードオンリメモリ（ＲＯＭ）、フラッシュメモリデバイス、位相変化メモリ）、及び、一時的コンピュータ可読通信媒体（例えば、搬送波、赤外線信号、デジタル信号などの、電気的、光学的、音響的、または他の形態の伝播信号）などのコンピュータ可読媒体を使用して、コード及びデータを（内部で、及び／またはネットワークを介して他の電子デバイスと）記憶または通信する。さらに、このような電子デバイスは、例えば、コード（例えば、命令１９１４）及び／またはデータを記憶する１つまたは複数の非一時的機械可読記憶媒体（例えば、メモリ１９０４）などの１つまたは複数の他のコンポーネントに結合された１つまたは複数のプロセッサ１９０２のセット（例えば、プロセッサは、マイクロプロセッサ、コントローラ、マイクロコントローラ、中央処理装置、デジタル信号プロセッサ、アプリケーション固有の集積回路、フィールドプログラマブルゲートアレイ、他の電子回路、これらの１つまたは複数の組み合わせ）と、典型的には、１つまたは複数のネットワーク（例えば、ローカルエリアネットワーク（ＬＡＮ）、インターネット）を介して電子デバイスが他のコンピューティングデバイスとデータを送受信するのを可能にする１つまたは複数の有線または無線のネットワークインタフェース１９０８のセットなどのハードウェアを含む。プロセッサのセットと他のコンポーネントとの結合は通常、電子デバイス内の１つまたは複数の相互接続（例えば、バス及び場合によってはブリッジ）を介して行われる。したがって、所与の電子デバイスの非一時的な機械可読記憶媒体（例えば、メモリ１９０４）は通常、その電子デバイスの１つまたは複数のプロセッサ１９０２のセットで実行するためのコード（例えば、命令１９１４）を記憶する。様々な実施形態の１つまたは複数の部分は、ソフトウェア、ファームウェア、及び／またはハードウェアの異なる組み合わせを使用して実装されてよい。
【０１６２】
コンピューティングデバイス１９００は、タッチスクリーンまたは液晶ディスプレイ（ＬＣＤ）などの何らかのタイプの表示要素１９０６を含むことができるが、ポータブルメディアプレーヤなどの多くのデバイスは、オーディオスピーカなどの他の手段を介して情報を伝達してよく、サーバエンドステーションなどの他のタイプのデバイスは、表示要素１９０６が全くない場合がある。上記のように、一部の実施形態で使用される一部のコンピューティングデバイスは、ユーザからの入力を受信可能な少なくとも１つの入力及び／または出力コンポーネント（複数可）１９１２を含む。この入力コンポーネントは、例えば、プッシュボタン、タッチパッド、タッチスクリーン、ホイール、ジョイスティック、キーボード、マウス、キーパッド、または任意の他のこのようなデバイスもしくは要素を含むことができ、それによって、ユーザはコマンドをデバイスに入力することができる。一部の実施形態では、しかしながら、このようなデバイスは、ユーザが、デバイスと物理的に接触する必要なくデバイスを制御することができるように、視覚及び／または音声によるコマンドの組み合わせによって制御されてよく、また、マイクロフォン、カメラ、センサ等を利用してよい。
【０１６３】
上記のように、記載される実施形態に従って様々な環境で異なるアプローチを実施することができる。例えば、図２０は、様々な実施形態に従って態様を実施するための環境２０００の例を示す。例えば、一部の実施形態では、要求は、ウェブサーバ（例えば、ウェブサーバ２００６）によって受信されるハイパーテキスト転送プロトコル（ＨＴＴＰ）要求であり、ユーザは、電子デバイスを介して、ウェブサーバ２００６及びアプリケーションサーバ２００８を介して提供されるウェブポータルを介してプロバイダネットワークとインタラクトしてよい。理解されるように、ウェブベースの環境が説明の目的で使用されるが、様々な実施形態を実施するために異なる環境が必要に応じて使用されてよい。システムは、電子クライアントデバイス２００２を含み、電子クライアントデバイス２００２は、クライアントデバイスとも呼ばれてよく、適切なネットワーク２００４を介して要求、メッセージ、または情報を送受信し、デバイス２００２のユーザに情報を返信するように動作可能な任意の適切なデバイスであってよい。このようなクライアントデバイスの例には、パーソナルコンピュータ（ＰＣ）、携帯電話、携帯型メッセージングデバイス、ラップトップコンピュータ、セットトップボックス、パーソナルデータアシスタント、電子ブックリーダ、ウェアラブル電子デバイス（例えば、眼鏡、リストバンド、モニタ）等が含まれる。１つまたは複数のネットワーク２００４は、イントラネット、インターネット、セルラネットワーク、ローカルエリアネットワーク、もしくは任意の他のそのようなネットワーク、または、それらの組み合わせを含む、任意の適切なネットワークを含み得る。このようなシステムのために使用されるコンポーネントは、選択されるネットワーク及び／または環境のタイプに少なくとも部分的に依存し得る。このようなネットワークを介して通信するためのプロトコル及びコンポーネントは周知であり、本明細書において詳細に説明しない。ネットワークを介した通信は、有線または無線接続、及びそれらの組み合わせによって有効にされてよい。この例では、環境が、要求を受信し、要求に応えてコンテンツを供給するウェブサーバ２００６を含むので、ネットワーク２００４はインターネットを含むが、他のネットワークの場合、同様の目的を果たす代替のデバイスを使用できることは、当業者には明らかである。
【０１６４】
図示の環境は、少なくとも１つのアプリケーションサーバ２００８及びデータストア２０１０を含む。幾つかのアプリケーションサーバ、層、または、他の要素、プロセス、もしくはコンポーネントがあってよく、これらは、チェーン接続もしくは別様で構成されてよく、適切なデータストアからデータを得る等のタスクを実行するためにインタラクトできることは理解されたい。本明細書で使用する場合、「データストア」という用語は、データを記憶、データにアクセス、及びデータを読み出すことができる任意のデバイスまたはデバイスの組み合わせを指し、これは、任意の標準、分散、またはクラスタ環境内の、データサーバ、データベース、データストレージデバイス、及びデータ記憶媒体の任意の組み合わせ及び任意の数を含んでよい。アプリケーションサーバ２００８は、クライアントデバイス２００２の１つまたは複数のアプリケーションの態様を実行するために必要に応じてデータストア２０１０と統合し、且つ、アプリケーションに関するデータアクセス及びビジネス論理の大半を処理するために、任意の適切なハードウェア及びソフトウェアを含み得る。アプリケーションサーバ２００８は、データストア２０１０と協働してアクセス制御サービスを提供し、クライアントデバイス２００２に転送されるテキスト、グラフィックス、オーディオ、ビデオ等のコンテンツを生成でき、この例では、コンテンツは、ハイパーテキストマークアップ言語（ＨＴＭＬ）、拡張マークアップ言語（ＸＭＬ）、ＪＳＯＮ（ＪａｖａＳｃｒｉｐｔ  Ｏｂｊｅｃｔ  Ｎｏｔａｔｉｏｎ）または別の適切な非構造化言語または構造言語の形態で、ウェブサーバによってユーザに提供されてよい。全ての要求及び応答の処理、並びにクライアントデバイス２００２とアプリケーションサーバ２００８の間のコンテンツの配信は、ウェブサーバ２００６によって処理することができる。本明細書に記載される構造コードは、本明細書の他の箇所に記載される任意の適切なデバイスまたはホストマシン上で実行することができるので、ウェブサーバ２００６及びアプリケーションサーバ２００８は、必要とされず、単にコンポーネントの例にすぎないことを理解されたい。
【０１６５】
データストア２０１０は、幾つかの別個のデータテーブル、データベースまたは他のデータ記憶機構、及び特定の側面に関するデータを記憶するための媒体を含み得る。例えば、図示のデータストアは、生産データ２０１２及びユーザ情報２０１６を記憶する機構を含み、この機構を使用して、生産側にコンテンツを供給することができる。データストア２０１０はまた、ログまたはセッションデータ２０１４を記憶するための機構を含むことも示される。ページ画像情報及びアクセス権情報等、データストアに記憶する必要があり得る多数の他の側面が存在する場合があり、これらは、必要に応じて上に列挙された機構のいずれか、またはデータストア２０１０内の追加の機構に記憶できることは理解されたい。データストア２０１０は、そこに関連付けられる論理を通して、アプリケーションサーバ２００８から命令を受信して、それに応答してデータを得る、更新する、または別様でデータを処理するように動作可能である。一例では、ユーザは、特定の種類のアイテムの検索要求を提出する場合がある。この場合、データストア２０１０は、ユーザ情報２０１６にアクセスして、ユーザのアイデンティティを検証してよく、生産データ２０１２にアクセスして、その種類のアイテムについての情報を取得することができる。その後、情報は、ユーザがユーザデバイス２００２のブラウザを介して視聴できるウェブページ上の結果のリスト等において、ユーザに返信することができる。関心のある特定のアイテムについての情報は、ブラウザの専用ページまたはウィンドウで閲覧できる。
【０１６６】
ウェブサーバ２００６、アプリケーションサーバ２００８、及び／またはデータストア２０１０は、１つまたは複数の電子デバイス２０２０によって実装されてよく、これらは、電子サーバデバイスまたはサーバエンドステーションとも呼ぶことができ、異なる地理的位置に配置されてもされなくてもよい。１つまたは複数の電子デバイス２０２０は、それぞれ、オペレーティングシステムを備えてよく、オペレーティングシステムは、そのデバイスの一般的な管理及び動作のための実行可能なプログラム命令を提供し、デバイスのプロセッサによって実行されるとデバイスが意図した機能を行うのを可能にする命令を記憶するコンピュータ可読媒体を通常含む。デバイスのオペレーティングシステム及び一般的な機能の適切な実施態様は、既知または商用的に入手可能であり、かつ、特に本明細書の開示を踏まえると当業者によって容易に実施される。
【０１６７】
一実施形態における環境は、１つまたは複数のコンピュータネットワークまたは直接接続を用いて通信リンクを介して相互接続された幾つかのコンピュータシステム及びコンポーネントを利用する分散型コンピューティング環境である。しかしながら、このようなシステムは、図２０に示すよりも少ないまたは多いコンポーネントを有するシステムにおいても同等に良好に動作し得るということは、当業者に理解されるであろう。したがって、図２０の環境２０００の描写は、本質的に例示とみなされるべきであり、本開示の範囲を制限するものではない。
【０１６８】
上記で検討及び提案された様々な実施形態は、多様な動作環境で実施することができ、動作環境は、ある場合には、幾つかの数のアプリケーションのいずれかを動作するために使用し得る１つまたは複数のユーザコンピュータ、コンピューティングデバイス、または処理デバイスを含み得る。ユーザデバイスまたはクライアントデバイスは、標準オペレーティングシステムを実行するデスクトップコンピュータまたはラップトップコンピュータなどの幾つかの汎用パーソナルコンピュータのいずれか、並びにモバイルソフトウェアを実行し、幾つかのネットワーキングプロトコル及びメッセージプロトコルをサポートできるセルラデバイス、無線デバイス及びハンドヘルドデバイスを含むことができる。このようなシステムは、様々な商用的に入手可能なオペレーティングシステム、並びに開発及びデータベース管理等の目的のための他の既知のアプリケーションを実行する幾つかのワークステーションも含み得る。これらのデバイスは、ダミー端末、シンクライアント、ゲーム機、及び／またはネットワークを介して通信できる他のデバイスなどの、他の電子デバイスも含み得る。
【０１６９】
ほとんどの実施形態は、伝送制御プロトコル／インターネットプロトコル（ＴＣＰ／ＩＰ）、ファイル転送プロトコル（ＦＴＰ）、ユニバーサルプラグアンドプレイ（ＵＰｎＰ）、ネットワークファイルシステム（ＮＦＳ）、共通インターネットファイルシステム（ＣＩＦＳ）、拡張メッセージング及びプレゼンスプロトコル（ＸＭＰＰ）、ＡｐｐｌｅＴａｌｋなど、様々な商用的に入手可能なプロトコルのいずれかを使用して通信をサポートするために当業者によく知られている少なくとも１つのネットワークを利用する。ネットワーク（複数可）は、例えば、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、仮想プライベートネットワーク（ＶＰＮ）、インターネット、イントラネット、エクストラネット、パブリックスイッチドテレフォンネットワーク（ＰＳＴＮ）、赤外線ネットワーク、無線ネットワーク、及びこれらの任意の組み合わせを含み得る。
【０１７０】
ウェブサーバを利用する実施形態では、ウェブサーバは、ＨＴＴＰサーバ、ファイル転送プロトコル（ＦＴＰ）サーバ、共通ゲートウェイインタフェース（ＣＧＩ）サーバ、データサーバ、Ｊａｖａサーバ、ビジネスアプリケーションサーバ等を含む、様々なサーバまたは中間層アプリケーションのいずれかを実行できる。サーバ（複数可）はまた、Ｊａｖａ（登録商標）、Ｃ、Ｃ＃、もしくはＣ＋＋等の任意のプログラム言語、または、Ｐｅｒｌ、Ｐｙｔｈｏｎ、ＰＨＰもしくはＴＣＬ等のスクリプト言語、並びにそれらの組み合わせで書かれた、１つまたは複数のスクリプトまたはプログラムとして実装され得る１つまたは複数のウェブアプリケーションを実行すること等によって、ユーザデバイスからの応答要求で、プログラムまたはスクリプトを実行できてよい。サーバ（複数可）は、Ｏｒａｃｌｅ（Ｒ）、Ｍｉｃｒｏｓｏｆｔ（Ｒ）、Ｓｙｂａｓｅ（Ｒ）、ＩＢＭ（Ｒ）などから市販されているものを含むがこれらに限定されないデータベースサーバも含み得る。データベースサーバは、リレーショナルまたは非リレーショナル（例：「ＮｏＳＱＬ」）、分散型または非分散型などであってよい。
【０１７１】
環境は、上述の様々なデータストア並びに他のメモリ及び記憶媒体を含み得る。これらは、コンピュータの１つまたは複数にローカルな（及び／または、存在する）、または、ネットワーク上のコンピュータのいずれかまたは全てからリモートの記憶媒体上等の、様々な位置に存在し得る。実施形態の特定の組では、情報は、当業者によく知られているストレージエリアネットワーク（ＳＡＮ）内に存在してよい。同様に、コンピュータ、サーバ、または他のネットワークデバイスに属する機能を実行するための任意の必要なファイルは、適宜、ローカルに及び／またはリモートに記憶されてよい。システムがコンピュータ化されたデバイスを含む場合、このようなデバイスは、それぞれ、バスを介して電気的に結合され得るハードウェア要素を含むことができ、要素は、少なくとも１つの中央処理装置（ＣＰＵ）、少なくとも１つの入力デバイス（例えば、マウス、キーボード、コントローラ、タッチスクリーン、またはキーパッド）、及び／または、少なくとも１つの出力デバイス（例えば、ディスプレイデバイス、プリンタ、またはスピーカ）を含む。このようなシステムはまた、ディスクドライブ、光学ストレージデバイス、ならびに、ランダムアクセスメモリ（ＲＡＭ）もしくはリードオンリメモリ（ＲＯＭ）等のソリッドステートストレージデバイス、並びに、取り外し可能媒体デバイス、メモリカード、フラッシュカード等、１つまたは複数のストレージデバイスを含んでよい。
【０１７２】
このようなデバイスは、上述のようにコンピュータ可読記憶媒体リーダ、通信デバイス（例えば、モデム、ネットワークカード（無線または有線）、赤外線通信デバイス等）、及び作業メモリを含み得る。コンピュータ可読記憶媒体リーダは、コンピュータ可読記憶媒体と接続することができる、またはコンピュータ可読記憶媒体を受信するよう構成することができ、コンピュータ可読記憶媒体は、リモート、ローカル、固定、及び／または取り外し可能なストレージデバイス、並びにコンピュータ可読情報を一時的及び／またはより恒久的に含み、記憶し、伝送し、かつ読み出すための記憶媒体を表す。システム及び様々なデバイスはまた、通常、オペレーティングシステム、及びクライアントアプリケーションまたはウェブブラウザ等のアプリケーションプログラムを含む、少なくとも１つのワーキングメモリデバイス内に位置する幾つかのソフトウェアアプリケーション、モジュール、サービス、または他の要素を含む。代替の実施形態は、上記のものからの多数の変形を有し得ることが理解されるべきである。例えば、カスタマイズされたハードウェアも使用されてよい、及び／または特定の要素は、ハードウェア、ソフトウェア（アプレット等のポータブルソフトウェアを含む）、もしくはこれら両方において実装されてよい。さらに、ネットワーク入力／出力デバイス等の他のコンピューティングデバイスへの接続が採用されてよい。
【０１７３】
コードまたはコードの一部を含むための記憶媒体及びコンピュータ可読媒体は、ＲＡＭ、ＲＯＭ、電子的消去プログラム可能リードオンリメモリ（ＥＥＰＲＯＭ）、フラッシュメモリ、もしくは他のメモリ技術、コンパクトディスクリードオンリーメモリ（ＣＤ−ＲＯＭ）、デジタル多用途ディスク（ＤＶＤ）、もしくは他の光学ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ、もしくは他の磁気ストレージデバイス、または所望の情報を記憶するために使用することができ、且つシステムデバイスによってアクセスできる任意の他の媒体を含む、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータ等の情報の記憶及び／または伝送のための、任意の方法または技術で実装される揮発性及び不揮発性の媒体、取外し可能及び取外しできない媒体等であるが、これらに限定されない記憶媒体及び通信媒体を含む当技術分野において既知の、または使用される任意の適切な媒体を含むことができる。本明細書に提供される開示及び教示に基づいて、当業者は、様々な実施形態を実装するための、他の手法及び／または方法を理解されよう。
【０１７４】
前述の説明には様々な実施形態が記載される。説明の目的で、実施形態の徹底的な理解を提供するために具体的な構成及び詳細が述べられている。しかしながら、当業者には、実施形態がその具体的な詳細を伴わずに実践され得るということもまた明らかであろう。さらに、周知の特徴は、記載する実施形態を不明瞭にしないために、省略または簡素化している場合がある。
【０１７５】
括弧で囲まれたテキスト及び破線の境界線を有するブロック（例えば、大きなダッシュ、小さなダッシュ、ドットダッシュ、及びドット）は、一部の実施形態に追加の特徴を追加するオプションの操作を示すために本明細書で使用される。ただし、このような表記は、これらが唯一のオプションまたはオプション操作であることを意味するものではない、及び／または特定の実施形態では、実線の境界線を有するブロックはオプションではない。
【０１７６】
接尾辞付きの参照番号は、様々な実施形態で参照エンティティの１つまたは複数のインスタンスが存在し得ることを示すために使用されてよく、複数のインスタンスがある場合、それぞれが同一である必要はないが、一部の一般的な特性を共有するか、共通の方法で動作し得る。さらに、使用される特定の接尾辞は、特に別段の記載がない限り、特定の量のエンティティが存在することを意味するものではない。したがって、同じまたは異なる接尾文字を使用する２つのエンティティは、様々な実施形態において同じ数のインスタンスを有してもよく、有さなくてもよい。
【０１７７】
「一実施形態」、「実施形態」、「実施形態の例」等への言及は、記載の実施形態が特定の特徴、構造、または特性を含み得ることを示すが、あらゆる実施形態が、特定の特徴、構造、または特性を必ずしも含むわけではない。その上、このような言いまわしは、同一の実施形態を必ずしも指すわけではない。さらに、特定の特徴、構造、または特性が、実施形態に関連して記載されるとき、このような特徴、構造、または特性を、他の実施形態に関連して達成することは、明示されているか否かにかかわらず、当業者の知識の範囲内であると考えられる。
【０１７８】
さらに、上記の様々な実施形態において、別段の記載のない限り、「Ａ、Ｂ、またはＣの少なくとも１つ」という句などの離接語は、Ａ、Ｂ、またはＣのいずれか、またはＡ、Ｂ、またはＣの任意の組み合わせ（例えば、Ａ、Ｂ、及び／またはＣ）を意味すると理解されることを意図している。したがって、離接語は、所与の実施形態が、Ａの少なくとも１つ、Ｂの少なくとも１つ、またはＣの少なくとも１つがそれぞれ存在することを必要とすることを意図しておらず、示唆していると理解すべきでもない。
【０１７９】
本開示の技術の少なくとも一部の実施形態は、以下の条項を考慮して説明することができる。
【０１８０】
条項１．マルチテナントウェブサービスプロバイダにおいて、アプリケーションインスタンス構成を受信することであって、アプリケーションインスタンスのアプリケーションは、接続されたグラフィックス処理ユニット（ＧＰＵ）のある部分を機械学習モデルの実行中に利用し、アプリケーションインスタンス構成は、使用する中央処理装置（ＣＰＵ）の能力の指示、使用する機械学習モデルの算術精度、使用するＧＰＵの能力の指示、アプリケーションの記憶場所、及び、使用するランダムアクセスメモリの量の指示を含む、アプリケーションインスタンス構成を受信することと、アプリケーションインスタンスと、アプリケーションインスタンスに接続されたＧＰＵの部分とをプロビジョニングすることであって、アプリケーションインスタンスは、第１のインスタンス位置の物理的計算インスタンスを使用して実施され、ＧＰＵの部分は、第２の位置の物理的ＧＰＵを使用して実施され、物理的ＧＰＵは、ネットワークを介して物理的計算インスタンスにアクセス可能である、アプリケーションインスタンスと、アプリケーションインスタンスに接続されたＧＰＵの部分と、をプロビジョニングすることと、ＧＰＵの部分をアプリケーションインスタンスに接続することと、ＧＰＵの接続された部分に機械学習モデルをロードすることと、接続されたＧＰＵ上で、ＧＰＵの部分を使用してアプリケーションのロードされた機械学習モデルを使用する推論を実行することと、を含む、コンピュータ実装方法。
【０１８１】
条項２．アプリケーションインスタンスと接続されたＧＰＵの部分は、異なる仮想ネットワーク内にある、条項１に記載の方法。
【０１８２】
条項３．機械学習モデルは、訓練から得られた推論及び重みの計算グラフの記述を含む、条項１〜２のいずれかに記載の方法。
【０１８３】
条項４．機械学習モデルは、テンソルフロー、ＭＸＮｅｔ、またはＯＮＮＸフォーマットである、条項１〜２のいずれかに記載の方法。
【０１８４】
条項５．マルチテナントウェブサービスプロバイダにおいて、アプリケーションインスタンス構成を受信することであって、アプリケーションインスタンスのアプリケーションは、接続されたアクセラレータのある部分を機械学習モデルの実行中に利用し、アプリケーションインスタンス構成は、使用する中央処理装置（ＣＰＵ）能力の指示、使用する機械学習モデルの算術精度、使用するアクセラレータ能力の指示、アプリケーションの記憶場所、及び、使用するランダムアクセスメモリの量の指示を含む、アプリケーションインスタンス構成を受信することと、アプリケーションインスタンスと、アプリケーションインスタンスに接続されたアクセラレータの部分とをプロビジョニングすることであって、アプリケーションインスタンスは、第１のインスタンス位置の物理的計算インスタンスを使用して実施され、アクセラレータの部分は、第２の位置の物理アクセラレータを使用して実施され、物理アクセラレータは、ネットワークを介して物理的計算インスタンスにアクセス可能である、アプリケーションインスタンスと、アプリケーションインスタンスに接続されたアクセラレータの部分とをプロビジョニングすることと、アクセラレータの部分をアプリケーションインスタンスに接続することと、機械学習モデルを、アクセラレータの接続された部分にロードすることと、接続されたアクセラレータで、アクセラレータの部分を使用して、アプリケーションのロードされた機械学習モデルを使用する推論を実行することとを含む、コンピュータ実装方法。
【０１８５】
条項６．機械学習モデルは、訓練から得られた推論及び重みの計算グラフの記述を含む、条項５に記載の方法。
【０１８６】
条項７．機械学習モデルは、テンソルフロー、ＭＸＮｅｔ、またはＯＮＮＸフォーマットである、条項５〜６のいずれかに記載の方法。
【０１８７】
条項８．アプリケーションインスタンスと接続されたアクセラレータの部分は、異なる仮想ネットワーク内にある、条項５〜７のいずれかに記載の方法。
【０１８８】
条項９．アクセラレータは、アクセラレータアプライアンスの複数のアクセラレータのうちの１つである、条項５〜８のいずれかに記載の方法。
【０１８９】
条項１０．アクセラレータアプライアンスは、異なる能力のアクセラレータを含む、条項９に記載の方法。
【０１９０】
条項１１．アクセラレータアプライアンスの中央処理装置は、複数のアクセラレータの能力に比例して共有される、条項１０に記載の方法。
【０１９１】
条項１２．接続されたアクセラレータの部分を取り外すことと、機械学習モデルを接続されたアクセラレータの別の部分に移行することとをさらに含む、条項５〜１１のいずれかに記載の方法。
【０１９２】
条項１３．接続されたアクセラレータの部分の接続を解除することと、機械学習モデルを別のアクセラレータの部分に移行することとをさらに含む、条項５〜１１のいずれかに記載の方法。
【０１９３】
条項１４．接続されたアクセラレータで、アクセラレータの部分を使用して、アプリケーションのロードされた機械学習モデルを使用する推論を実行する前に、ロードされた機械学習モデルに基づいて使用する推論エンジンを決定することをさらに含む、条項１１に記載の方法。
【０１９４】
条項１５．推論エンジンは、機械学習モデルフォーマットのバージョン番号と互換性がある、条項１４に記載の方法。
【０１９５】
条項１６．アプリケーションであって、機械学習モデルを含むアプリケーションを記憶するストレージと、第２の１つまたは複数の電子デバイスによって実施される弾力的推論サービスとを含む、システムであって、弾力的推論サービスは、アプリケーションインスタンスとアクセラレータアプライアンスとを含み、弾力的推論サービスは、アプリケーションインスタンス構成を受信することであって、アプリケーションインスタンスのアプリケーションは、アクセラレータアプライアンスの接続されたアクセラレータのある部分を機械学習モデルの実行中に利用し、アプリケーションインスタンス構成は、使用する中央処理装置（ＣＰＵ）能力の指示、使用する機械学習モデルの算術精度、使用するアクセラレータ能力の指示、アプリケーションの記憶場所、及び使用するランダムアクセスメモリの量の指示を含む、アプリケーションインスタンス構成を受信することと、アプリケーションインスタンスと、アプリケーションインスタンスに接続されたアクセラレータの部分とをプロビジョニングすることであって、アプリケーションインスタンスは、第１のインスタンス位置の物理的計算インスタンスを使用して実施され、アクセラレータの部分は、第２の位置の物理アクセラレータを使用して実施され、物理アクセラレータは、ネットワークを介して物理的計算インスタンスにアクセス可能である、アプリケーションインスタンスと、アプリケーションインスタンスに接続されたアクセラレータの部分とをプロビジョニングすることと、アクセラレータの部分をアプリケーションインスタンスに接続することと、機械学習モデルをアクセラレータの接続された部分にロードすることと、接続されたアクセラレータで、アクセラレータの部分を使用して、アプリケーションのロードされた機械学習モデルを使用する推論を実行することである、システム。
【０１９６】
条項１７．弾力的推論サービスは、接続されたアクセラレータの部分の接続を解除し、機械学習モデルを接続されたアクセラレータの別の部分に移行することである、条項１６に記載のシステム。
【０１９７】
条項１８．弾力的推論サービスは、接続されたアクセラレータの部分の接続を解除し、機械学習モデルを別のアクセラレータに移行することである、条項１６〜１７のいずれかに記載のシステム。
【０１９８】
条項１９．機械学習モデルは、訓練から得られた推論及び重みの計算グラフの記述を含む、条項１６〜１８のいずれかに記載のシステム。
【０１９９】
条項２０．機械学習モデルは、テンソルフロー、ＭＸＮｅｔ、またはＯＮＮＸフォーマットである、条項１６〜１８のいずれかに記載のシステム。
【０２００】
条項２１．アクセラレータアプライアンスの１つまたは複数のグラフィックス処理ユニット（ＧＰＵ）スロットの第１のセットを、アプリケーションインスタンス構成に従ってマルチテナントプロバイダネットワークのアプリケーションインスタンスに接続することであって、アプリケーションインスタンス構成は、アプリケーションインスタンスのアプリケーションが使用する能力をＧＰＵスロットごとに規定し、マルチテナントプロバイダネットワークは、複数の仮想計算インスタンスを実施するように構成された複数のコンピューティングデバイスを含み、１つまたは複数のＧＰＵスロットの第１のセットは、アプリケーションインスタンスにネットワークを介してアクセス可能な物理的ＧＰＵリソースを使用して実施される、ＧＰＵスロットを接続することと、機械学習モデルを１つまたは複数のＧＰＵスロットの第１のセットにロードすることと、接続されたアクセラレータアプライアンスで、１つまたは複数のＧＰＵスロットの第１のセットを使用して、アプリケーションのロードされた機械学習モデルを使用する推論を実行している間、アクセラレータアプライアンスのアクセラレータアプライアンスマネージャを使用して、アクセラレータアプライアンスのリソースを管理することと、を含む、コンピュータ実装方法。
【０２０１】
条項２２．アクセラレータアプライアンスは、少なくとも１つのＧＰＵと、少なくとも１つの他のタイプのアクセラレータとを含む、条項２１に記載の方法。
【０２０２】
条項２３．アクセラレータアプライアンスの１つまたは複数のＧＰＵスロットのセットをアプリケーションインスタンスに接続している間、機械学習モデルと互換性があるようにＧＰＵスロットによって使用される少なくとも１つのソフトウェアバージョンを更新することをさらに含む、条項２１〜２２のいずれかに記載の方法。
【０２０３】
条項２４．アプリケーションインスタンスのために、１つまたは複数のＧＰＵスロットの第１のセットを１つまたは複数のＧＰＵスロットの第２のセットで置き換えることと、アプリケーションインスタンスの処理を１つまたは複数のＧＰＵスロットの第１のセットから１つまたは複数のＧＰＵスロットの第２のセットに移行することと、１つまたは複数のＧＰＵスロットの第２のセットを使用してアプリケーションを実行することとをさらに含む、条項２１〜２３のいずれかに記載の方法。
【０２０４】
条項２５．アクセラレータアプライアンスの１つまたは複数のアクセラレータスロットの第１のセットをアプリケーションインスタンス構成に従って、マルチテナントプロバイダネットワークのアプリケーションインスタンスに接続することであって、アプリケーションインスタンス構成は、アプリケーションインスタンスのアプリケーションによって使用される能力をアクセラレータスロットごとに規定し、マルチテナントプロバイダネットワークは、複数の仮想計算インスタンスを実施するように構成された複数のコンピューティングデバイスを含み、１つまたは複数のアクセラレータスロットの第１のセットは、アプリケーションインスタンスにアクセス可能な物理アクセラレータリソースを使用して実装される、アクセラレータスロットの第１のセットを接続することと、機械学習モデルを１つまたは複数のアクセラレータスロットの第１のセットにロードすることと、接続されたアクセラレータアプライアンスで、１つまたは複数のアクセラレータスロットの第１のセットを使用して、アプリケーションのロードされた機械学習モデルを使用する推論を実行している間、アクセラレータアプライアンスのアクセラレータアプライアンスマネージャを使用して、アクセラレータアプライアンスのリソースを管理することと、を含む、コンピュータ実装方法。
【０２０５】
条項２６．アクセラレータアプライアンスのリソースを管理することは、中央処理装置、メモリ、及び入力ネットワーク帯域幅を管理することを含む、条項２５に記載の方法。
【０２０６】
条項２７．アクセラレータアプライアンスのリソースを管理することは、１つまたは複数のアクセラレータスロットを空間的に多重化することを含む、条項２５〜２６のいずれかに記載の方法。
【０２０７】
条項２８．アクセラレータアプライアンスのリソースを管理することは、テンソル処理ブロックを単一のアクセラレータスロットに時間的に多重化することを含む、条項２５〜２６のいずれかに記載の方法。
【０２０８】
条項２９．アクセラレータスロットによって使用される少なくとも１つのソフトウェアバージョンを更新することをさらに含む、条項２５〜２８のいずれかに記載の方法。
【０２０９】
条項３０．アプリケーションインスタンスのために、１つまたは複数のアクセラレータスロットの第１のセットを１つまたは複数のアクセラレータスロットの第２のセットで置き換えることと、アプリケーションインスタンスの処理を、１つまたは複数のアクセラレータスロットの第１のセットから１つまたは複数のアクセラレータスロットの第２のセットに移行することと、１つまたは複数のアクセラレータスロットの第２のセットを使用してアプリケーションを実行することとをさらに含む、条項２５〜２９のいずれかに記載の方法。
【０２１０】
条項３１．要件の変更により、アプリケーションインスタンスのために、１つまたは複数のアクセラレータスロットの第１のセットが、１つまたは複数のアクセラレータスロットの第２のセットで置き換えられる、条項３０に記載の方法。
【０２１１】
条項３２．要件の変更は、アプリケーションインスタンスのユーザによって指定される、条項３１の記載の方法。
【０２１２】
条項３３．パフォーマンスの低下のために、アプリケーションインスタンスのための１つまたは複数のアクセラレータスロットの第１のセットが、１つまたは複数のアクセラレータスロットの第２のセットで置き換えられる、条項３０に記載の方法。
【０２１３】
条項３４．１つまたは複数のアクセラレータスロットの第２のセットは、１つまたは複数のアクセラレータスロットの第１のセットと比較して異なるレベルの処理を提供する、条項３０に記載の方法。
【０２１４】
条項３５．１つまたは複数のアクセラレータスロットの第１のセットを１つまたは複数のアクセラレータスロットの第２のセットで置き換えることは、１つまたは複数のアクセラレータスロットの第２のセットに、１つまたは複数のアクセラレータスロットの第１のセットの代わりに動作を引き受けさせることを含む、条項３０に記載の方法。
【０２１５】
条項３６．アクセラレータアプライアンスは、異なる能力のアクセラレータを含む、条項２５〜３５のいずれかに記載の方法。
【０２１６】
条項３７．アプリケーションであって、機械学習モデルを含むアプリケーションを記憶するストレージと、第２の１つまたは複数の電子デバイスによって実施される弾力的推論サービスとを含むシステムであって、弾力的推論サービスは、アプリケーションインスタンスとアクセラレータアプライアンスとを含み、弾力的推論サービスは、アクセラレータアプライアンスの１つまたは複数のアクセラレータスロットの第１のセットをアプリケーションインスタンス構成に従ってマルチテナントプロバイダネットワークのアプリケーションインスタンスに接続することであって、アプリケーションインスタンス構成は、アプリケーションインスタンスのアプリケーションによって使用される能力をアクセラレータスロットごとに規定し、マルチテナントプロバイダネットワークは、複数の仮想計算インスタンスを実施するように構成された複数のコンピューティングデバイスを含み、１つまたは複数のアクセラレータスロットの第１のセットは、アプリケーションインスタンスにアクセス可能な物理アクセラレータリソースを使用して実施される、１つまたは複数のアクセラレータスロットの第１のセットを接続することと、機械学習モデルを１つまたは複数のアクセラレータスロットの第１のセットにロードすることと、接続されたアクセラレータアプライアンス上で、１つまたは複数のアクセラレータスロットの第１のセットを使用して、アプリケーションのロードされた機械学習モデルを使用する推論を実行している間、アクセラレータアプライアンスのアクセラレータアプライアンスマネージャを使用してアクセラレータアプライアンスのリソースを管理する、システム。
【０２１７】
条項３８．アクセラレータアプライアンスのリソースを管理することは、中央処理装置、メモリ、及び入力ネットワーク帯域幅を管理することを含む、条項３７に記載のシステム。
【０２１８】
条項３９．弾力的推論サービスはさらに、アプリケーションインスタンスのために１つまたは複数のアクセラレータスロットの第１のセットを１つまたは複数のアクセラレータスロットの第２のセットで置き換え、アプリケーションインスタンスの処理を１つまたは複数のアクセラレータスロットの第１のセットから１つまたは複数のアクセラレータスロットの第２のセットに移行し、アプリケーションを１つまたは複数のアクセラレータスロットの第２のセットを使用して実行する、条項３７〜３８のいずれかに記載のシステム。
【０２１９】
条項４０．パフォーマンスの低下のために、アプリケーションインスタンスのための１つまたは複数のアクセラレータスロットの第１のセットが、１つまたは複数のアクセラレータスロットの第２のセットで置き換えられる、条項３９に記載のシステム。
【０２２０】
条項４１．マルチテナントウェブサービスプロバイダにおいて、アプリケーションインスタンス構成を受信することであって、アプリケーションインスタンスのアプリケーションは、接続されたグラフィックス処理ユニット（ＧＰＵ）のある部分を機械学習モデル実行中に利用し、アプリケーションインスタンス構成は、プロビジョニングするＧＰＵの部分を決定する際に使用する機械学習モデルの算術精度を含む、アプリケーションインスタンス構成を受信することと、アプリケーションインスタンスと、アプリケーションインスタンスに接続されたＧＰＵの部分をプロビジョニングすることであって、アプリケーションインスタンスは、第１のインスタンス位置の物理的計算インスタンスを使用して実施され、ＧＰＵの部分は、第２の位置の物理的ＧＰＵを使用して実施され、物理的ＧＰＵは、ネットワークを介して物理的計算インスタンスにアクセス可能である、アプリケーションインスタンスと、アプリケーションインスタンスに接続されたＧＰＵの部分をプロビジョニングすることと、機械学習モデルをＧＰＵの部分にロードすることと、接続されたＧＰＵで、ＧＰＵの部分を使用して、アプリケーションのロードされた機械学習モデルを使用する推論を実行することと、を含む、コンピュータ実装方法。
【０２２１】
条項４２．アクセラレータの部分をプロビジョニングする前に、機械学習モデルを評価して機械学習モデルの算術精度を決定することをさらに含む、条項４１に記載の方法。
【０２２２】
条項４３．ＧＰＵに依存しない最適化を有する中間表現に変換することと、中間表現からＧＰＵに依存する最適化を用いて機械語に変換することとによって、機械学習モデルをプロファイリングすることをさらに含む、条項４１〜４２のいずれかに記載の方法。
【０２２３】
条項４４．１つまたは複数の配置基準に少なくとも部分的に基づいて物理アクセラレータのＧＰＵ位置またはアプリケーションインスタンス位置を選択することをさらに含み、マルチテナントウェブサービスプロバイダは、物理的計算インスタンスの複数のインスタンス位置と、物理アクセラレータの複数のＧＰＵ位置を含む、条項４１〜４３のいずれかに記載の方法。
【０２２４】
条項４５．マルチテナントウェブサービスプロバイダにおいて、アプリケーションインスタンス構成を受信することであって、アプリケーションインスタンスのアプリケーションは、接続されたアクセラレータのある部分を機械学習モデル実行中に利用し、アプリケーションインスタンス構成は、プロビジョニングするアクセラレータの部分を決定する際に使用される機械学習モデルの算術精度を含む、アプリケーションインスタンス構成を受信することと、アプリケーションインスタンスと、アプリケーションインスタンスに接続されたアクセラレータの部分と、をプロビジョニングすることであって、アプリケーションインスタンスは第１の位置の物理的計算インスタンスを使用して実施され、アクセラレータの部分は、第２の位置の物理アクセラレータを使用して実施され、物理アクセラレータは物理的計算インスタンスにアクセス可能である、アプリケーションインスタンスと、アプリケーションインスタンスに接続されたアクセラレータの部分とをプロビジョニングすることと、機械学習モデルをアクセラレータの部分にロードすることと、接続されたアクセラレータで、アクセラレータの部分を使用して、アプリケーションのロードされた機械学習モデルを使用する推論を実行することと、を含む、コンピュータ実装方法。
【０２２５】
条項４６．機械学習モデルは、訓練から得られた推論及び重みの計算グラフの記述を含む、条項４５に記載の方法。
【０２２６】
条項４７．アクセラレータの部分をプロビジョニングする前に、機械学習モデルを評価して機械学習モデルの算術精度を決定することをさらに含む、条項４５〜４６のいずれかに記載の方法。
【０２２７】
条項４８．アクセラレータに依存しない最適化を有する中間表現に変換することと、アクセラレータに依存する最適化を用いて中間表現から機械語に変換することとによって、機械学習モデルをプロファイリングすることをさらに含む、条項４５〜４７のいずれかに記載の方法。
【０２２８】
条項４９．アプリケーションにおいて、アクセラレータの部分への呼び出しを集約することと、集約された呼び出しをバッチとして送信することとをさらに含む、条項４５〜４８のいずれかに記載の方法。
【０２２９】
条項５０．アクセラレータを接続する前に、アクセラレータの計算能力に基づいてアクセラレータを選択することをさらに含む、条項４５〜４９のいずれかに記載の方法。
【０２３０】
条項５１．物理アクセラレータのアクセラレータ位置またはアプリケーションインスタンス位置を１つまたは複数の配置基準に少なくとも部分的に基づいて選択することをさらに含み、マルチテナントウェブサービスプロバイダは、物理的計算インスタンスの複数のインスタンス位置と物理アクセラレータの複数のアクセラレータ位置とを含む、条項４５〜５０のいずれかに記載の方法。
【０２３１】
条項５２．１つまたは複数の配置基準は、１つまたは複数のメトリクスの改善を含む、条項５１に記載の方法。
【０２３２】
条項５３．１つまたは複数の配置基準は、物理的計算インスタンスによる物理アクセラレータの使用に関連付けられたパフォーマンスメトリクスに少なくとも部分的に基づく、条項５１に記載の方法。
【０２３３】
条項５４．１つまたは複数の配置基準は、物理的計算インスタンスによる物理アクセラレータの使用に関連付けられたエネルギーメトリクスに少なくとも部分的に基づく、条項５１に記載の方法。
【０２３４】
条項５５．アクセラレータ位置またはアプリケーションインスタンス位置は、ネットワークの局所性に少なくとも部分的に基づいて選択される、条項５１〜５４のいずれかに記載の方法。
【０２３５】
条項５６．アクセラレータ位置が、物理アクセラレータとクライアントデバイスの間のネットワーク待ち時間に少なくとも部分的に基づいて選択される、条項５１〜５４のいずれかに記載の方法。
【０２３６】
条項５７．アプリケーションであって、機械学習モデルを含むアプリケーションを記憶するストレージと、第２の１つまたは複数の電子デバイスによって実施される弾力的推論サービスとを含むシステムであって、弾力的推論サービスは、アプリケーションインスタンスとアクセラレータアプライアンスとを含み、弾力的推論サービスは、マルチテナントウェブサービスプロバイダにおいて、アプリケーションインスタンス構成を受信することであって、アプリケーションインスタンスのアプリケーションは、接続されたアクセラレータのある部分を機械学習モデルの実行中に利用し、アプリケーションインスタンス構成は、プロビジョニングするアクセラレータの部分を決定する際に使用する機械学習モデルの算術精度を含む、アプリケーションインスタンス構成を受信することと、アプリケーションインスタンスとアプリケーションインスタンスに接続されたアクセラレータの部分をプロビジョニングすることであって、アプリケーションインスタンスは、第１の位置の物理的計算インスタンスを使用して実施され、アクセラレータの部分は、第２の位置の物理アクセラレータを使用して実施され、物理アクセラレータは、物理的計算インスタンスにアクセス可能である、アプリケーションインスタンスとアプリケーションインスタンスに接続されたアクセラレータの部分をプロビジョニングすることと、機械学習モデルをアクセラレータの部分にロードすることと、接続されたアクセラレータで、アクセラレータの部分を使用してアプリケーションのロードされた機械学習モデルを使用する推論を実行することである、システム。
【０２３７】
条項５８．弾力的推論サービスは、アクセラレータに依存しない最適化を有する中間表現に変換することと、アクセラレータに依存する最適化を用いて中間表現から機械語に変換することとによって、機械学習モデルをプロファイリングすることである、条項５７に記載のシステム。
【０２３８】
条項５９．弾力的推論サービスは、１つまたは複数の配置基準に少なくとも部分的に基づいて、物理アクセラレータのアクセラレータ位置またはアプリケーションインスタンス位置を選択することであり、マルチテナントウェブサービスプロバイダは、物理的計算インスタンスの複数のインスタンス位置と、物理アクセラレータの複数のアクセラレータ位置を含む、条項５７〜５８のいずれかに記載のシステム。
【０２３９】
条項６０．弾力的推論サービスは、アクセラレータ位置またはアプリケーションインスタンス位置をネットワーク局所性に少なくとも部分的に基づいて選択する、条項５７〜５８のいずれかに記載のシステム。
【０２４０】
条項６１．マルチテナントウェブサービスプロバイダにおいて、アプリケーションインスタンス構成を受信することであって、アプリケーションインスタンスのアプリケーションは、少なくとも１つの接続されたグラフィックス処理ユニット（ＧＰＵ）の複数の部分を機械学習モデル実行中に利用する、アプリケーションインスタンス構成を受信することと、アプリケーションインスタンスと、アプリケーションインスタンスに接続された少なくとも１つのＧＰＵの部分とをプロビジョニングすることと、少なくとも１つのＧＰＵの部分に機械学習モデルをロードすることと、アプリケーションでスコアリングデータを受信することと、接続された少なくとも１つのＧＰＵの部分のそれぞれを利用して、ＧＰＵの部分からの１つの応答のみを用いて並行して、スコアリングデータに対して推論を実行することとを含む、コンピュータ実装方法。
【０２４１】
条項６２．使用する１つの応答は、時間的に最初の応答である、条項６１に記載の方法。
【０２４２】
条項６３．接続された少なくとも１つのＧＰＵの部分からの各応答のタイミングを追跡することと、追跡されたタイミングに基づいて、少なくとも１つのＧＰＵの複数の部分のプロビジョニングを変更することとを含む、条項６１〜６２のいずれかに記載の方法。
【０２４３】
条項６４．アプリケーションインスタンスと、アプリケーションインスタンスに接続された少なくとも１つのアクセラレータとを、アプリケーションインスタンスのアプリケーションの機械学習モデルを実行するためにプロビジョニングすることと、少なくとも１つのアクセラレータの部分に機械学習モデルをロードすることと、アプリケーションでスコアリングデータを受信することと、接続された少なくとも１つのアクセラレータの部分のそれぞれを利用して、アクセラレータの部分からの１つの応答のみを使用して並行して、スコアリングデータに対して推論を実行することと、を含む、コンピュータ実装方法。
【０２４４】
条項６５．機械学習モデルは、訓練から得られた推論及び重みの計算グラフの記述を含む、条項６４に記載の方法。
【０２４５】
条項６６．使用する１つの応答は、時間的に最初の応答である、条項６４〜６５のいずれかに記載の方法。
【０２４６】
条項６７．接続された少なくとも１つのアクセラレータの部分からの各応答のタイミングを追跡することと、追跡されたタイミングに基づいて、少なくとも１つのアクセラレータの複数の部分のプロビジョニングを変更することとをさらに含む、条項６４〜６６のいずれかに記載の方法。
【０２４７】
条項６８．追跡されたタイミングに基づいて少なくとも１つのアクセラレータの複数の部分のプロビジョニングの変更は、少なくとも１つの異なるアクセラレータスロットを起動し、パフォーマンスの低いアクセラレータスロットを終了することによって少なくとも部分的に実行される、条項６４〜６７のいずれかに記載の方法。
【０２４８】
条項６９．アプリケーションインスタンス構成を受信することをさらに含み、アプリケーションインスタンス構成は、追跡されたタイミングに基づいて少なくとも１つのアクセラレータの複数の部分のプロビジョニング変更の使用を示す、条項６４〜６８のいずれかに記載の方法。
【０２４９】
条項７０．アクセラレータを接続する前に、アクセラレータの計算能力に基づいてアクセラレータを選択することをさらに含む、条項６４〜６９のいずれかに記載の方法。
【０２５０】
条項７１．１つまたは複数の配置基準に少なくとも部分的に基づいて、物理アクセラレータのアクセラレータ位置またはアプリケーションインスタンス位置を選択することをさらに含み、マルチテナントウェブサービスプロバイダは、物理的計算インスタンスの複数のインスタンス位置と、物理アクセラレータの複数のアクセラレータ位置とを含む、条項６４〜７０のいずれかに記載の方法。
【０２５１】
条項７２．１つまたは複数の配置基準は、物理的計算インスタンスによる物理アクセラレータの使用に関連付けられたパフォーマンスメトリクスに少なくとも部分的に基づく、条項７１に記載の方法。
【０２５２】
条項７３．アクセラレータ位置またはアプリケーションインスタンス位置は、ネットワークの局所性に少なくとも部分的に基づいて選択される、条項７１に記載の方法。
【０２５３】
条項７４．アクセラレータ位置は、物理アクセラレータとクライアントデバイスの間のネットワーク待ち時間に少なくとも部分的に基づいて選択される、条項７１に記載の方法。
【０２５４】
条項７５．アプリケーションであって、機械学習モデルを含むアプリケーションを記憶するストレージと、第２の１つまたは複数の電子デバイスによって実施される弾力的推論サービスとを含むシステムであって、弾力的推論サービスは、アプリケーションインスタンスとアクセラレータアプライアンスとを含み、弾力的推論サービスは、アプリケーションインスタンスのアプリケーションの機械学習モデルを実行するためにアプリケーションインスタンスとアプリケーションインスタンスに接続された少なくとも１つのアクセラレータのある部分とをプロビジョニングすることと、少なくとも１つのアクセラレータの部分に機械学習モデルをロードすることと、アプリケーションでスコアリングデータを受信することと、接続された少なくとも１つのアクセラレータの部分のそれぞれを利用して、アクセラレータの部分からの１つの応答のみを使用して並行して、スコアリングデータに対して推論を実行することである、システム。
【０２５５】
条項７６．使用する１つの応答は、時間的に最初の応答である、条項７５に記載のシステム。
【０２５６】
条項７７．弾力的推論サービスは、さらに、接続された少なくとも１つのアクセラレータの部分からの各応答のタイミングを追跡し、追跡されたタイミングに基づいて、少なくとも１つのアクセラレータの複数の部分のプロビジョニングを変更する、条項７５〜７６のいずれかに記載のシステム。
【０２５７】
条項７８．追跡されたタイミングに基づいて少なくとも１つのアクセラレータの複数の部分のプロビジョニングの変更は、少なくとも１つの異なるアクセラレータスロットを起動し、パフォーマンスの低いアクセラレータスロットを終了することによって少なくとも部分的に実行される、条項７５〜７７のいずれかに記載のシステム。
【０２５８】
条項７９．弾力的推論サービスはさらに、アプリケーションインスタンス構成を受信し、アプリケーションインスタンス構成は、追跡されたタイミングに基づいて少なくとも１つのアクセラレータの複数の部分のプロビジョニングの変更の使用を示す、条項７５〜７８のいずれかに記載のシステム。
【０２５９】
条項８０．弾力的推論サービスはさらに、アクセラレータを接続する前に、アクセラレータの計算能力に基づいてアクセラレータを選択する、条項７５〜７９のいずれかに記載のシステム。
【０２６０】
従って、明細書及び図面は、限定ではなく、例示的なものとみなされる。しかしながら、特許請求の範囲に記載される本開示のより広範の趣旨及び範囲から逸脱することなく、様々な修正及び変更がこれらに加えられてよいことは明らかである。
【図１】
2021528740.tif 000003
【図２】
2021528740.tif 000004
【図３】
2021528740.tif 000005
【図４】
2021528740.tif 000006
【図５】
2021528740.tif 000007
【図６】
2021528740.tif 000008
【図７】
2021528740.tif 000009
【図８】
2021528740.tif 000010
【図９】
2021528740.tif 000011
【図１０】
2021528740.tif 000012
【図１１】
2021528740.tif 000013
【図１２】
2021528740.tif 000014
【図１３】
2021528740.tif 000015
【図１４】
2021528740.tif 000016
【図１５】
2021528740.tif 000017
【図１６】
2021528740.tif 000018
【図１７】
2021528740.tif 000019
【図１８】
2021528740.tif 000020
【図１９】
2021528740.tif 000021
【図２０】
2021528740.tif 000022
【国際調査報告】
2021528740.tif 000023
2021528740.tif 000024
2021528740.tif 000025