マルチモデルエンドポイント用のカスタムコンテナの規約 - Amazon SageMaker

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

マルチモデルエンドポイント用のカスタムコンテナの規約

複数のモデルを処理するには、コンテナが一連のAPIをサポートしている必要があります。これにより、 SageMaker Amazonはコンテナと通信して、必要に応じてモデルの読み込み、出品、取得、およびアンロードを行うことができます。model_name は、キー入力パラメータとして新しい API のセットで使用されます。カスタマーコンテナでは、マッピングキーとして model_name を使用して、ロードされたモデルを追跡する必要があります。また、model_name は不透明な識別子であり、必ずしも InvokeEndpoint API に渡される TargetModel パラメータの値ではありません。InvokeEndpoint リクエストの元の TargetModel 値は、ログ記録の目的で使用できる X-Amzn-SageMaker-Target-Model ヘッダーとして API のコンテナに渡されます。

注記

GPU ベースのインスタンス用のマルチモデルエンドポイントは、現在 NVIDIA Triton SageMaker 推論サーバーコンテナでのみサポートされています。このコンテナには、以下に定義されている規約が既に実装されています。顧客は、追加作業なしで、このコンテナをマルチモデルの GPU エンドポイントで直接使用できます。

CPU ベースのマルチモデルエンドポイント用に、次の API をコンテナに設定できます。

Load Model API

本文の url フィールドにある特定のモデルをカスタマーコンテナのメモリにロードし、割り当てられた model_name で追跡するように、コンテナに指示します。モデルがロードされたら、コンテナでは、この model_name を使用して推論リクエストを処理する準備ができています。

POST /models HTTP/1.1 Content-Type: application/json Accept: application/json { "model_name" : "{model_name}", "url" : "/opt/ml/models/{model_name}/model", }
注記

model_name がすでにロードされている場合、この API は 409 を返します。メモリ不足やその他のリソースが原因でモデルをロードできない場合、この API は 507 HTTP ステータスコードをに返し、 SageMaker使用されていないモデルのアンロードを開始して再利用します。

List Model API

カスタマーコンテナのメモリにロードされたモデルのリストを返します。

GET /models HTTP/1.1 Accept: application/json Response = { "models": [ { "modelName" : "{model_name}", "modelUrl" : "/opt/ml/models/{model_name}/model", }, { "modelName" : "{model_name}", "modelUrl" : "/opt/ml/models/{model_name}/model", }, .... ] }

この API はページ分割もサポートしています。

GET /models HTTP/1.1 Accept: application/json Response = { "models": [ { "modelName" : "{model_name}", "modelUrl" : "/opt/ml/models/{model_name}/model", }, { "modelName" : "{model_name}", "modelUrl" : "/opt/ml/models/{model_name}/model", }, .... ] }

SageMaker 最初に List Models API を呼び出すことができます。このとき、の値を指定する必要はありません。next_page_tokennextPageToken フィールドがレスポンスの一部として返された場合、後続の List Models コールで next_page_token の値として渡されます。nextPageToken が返されなかった場合、返されるモデルがこれ以上ないということです。

Get Model API

これは、model_name エンティティの単純な読み取り API です。

GET /models/{model_name} HTTP/1.1 Accept: application/json { "modelName" : "{model_name}", "modelUrl" : "/opt/ml/models/{model_name}/model", }
注記

model_name がロードされていない場合、この API は 404 を返します。

Unload Model API

SageMaker モデルをメモリからアンロードするように顧客コンテナに指示するようプラットフォームに指示します。これにより、新しいモデルのロードプロセスが開始されると、プラットフォームによって候補とされたモデルの削除が開始されます。model_name にプロビジョニングされたリソースは、この API がレスポンスを返すときにコンテナによって解放される必要があります。

DELETE /models/{model_name}
注記

model_name がロードされていない場合、この API は 404 を返します。

Invoke Model API

指定された特定の model_name への予測リクエストを作成します。 SageMaker Runtime InvokeEndpoint リクエストは、X-Amzn-SageMaker-Target-Model呼び出し用に指定されたモデルの相対パスを取得する新しいヘッダーとしてサポートします。 SageMaker システムは、CreateModel API 呼び出しの一部として提供されるプレフィックスとモデルの相対パスを組み合わせて、モデルの絶対パスを作成します。

POST /models/{model_name}/invoke HTTP/1.1 Content-Type: ContentType Accept: Accept X-Amzn-SageMaker-Custom-Attributes: CustomAttributes X-Amzn-SageMaker-Target-Model: [relativePath]/{artifactName}.tar.gz
注記

model_name がロードされていない場合、この API は 404 を返します。

さらに、GPU インスタンスでは、InvokeEndpointメモリやその他のリソース不足が原因で障害が発生した場合、この API は 507 HTTP ステータスコードをに返し SageMaker、使用されていないモデルのアンロードを開始して再利用します。