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

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

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

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

注記

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

コンテナAPIsで、CPUバックアップされたマルチモデルエンドポイント用に以下を設定できます。

ロードモデル 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 が既にロードされている場合、409 が返されAPIます。メモリ不足やその他のリソースのためにモデルをロードできない場合、507 HTTPステータスコードを に返すAPI必要があります。これにより SageMaker、未使用のモデルのアンロードが開始され、再利用されます。

モデルを一覧表示する 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 は、 の値を指定APIせずに、最初にリストモデルを呼び出しますnext_page_tokennextPageToken フィールドがレスポンスの一部として返された場合、後続の List Models コールで next_page_token の値として渡されます。nextPageToken が返されなかった場合、返されるモデルがこれ以上ないということです。

モデルの取得 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 がロードされていない場合、404 が返されAPIます。

モデルのアンロード API

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

DELETE /models/{model_name}
注記

model_name がロードされていない場合、404 が返されAPIます。

モデルを呼び出す API

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

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 がロードされていない場合、404 が返されAPIます。

さらに、GPUインスタンスでは、メモリやその他のリソース不足が原因で がInvokeEndpoint失敗した場合、507 HTTPステータスコードを に返すAPI必要があります。これにより SageMaker、未使用のモデルのアンロードが開始され、再利用されます。