翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Triton Inference Server によるモデルのデプロイ
Triton 推論サーバーは
SageMaker AI Triton コンテナは、SageMaker AI ホスティングプラットフォーム上に Triton 推論サーバーをデプロイし、トレーニング済みモデルを本番環境で提供するのに役立ちます。SageMaker AI が動作するさまざまなモードをサポートしています。SageMaker AI で使用可能な Triton 推論サーバーコンテナのリストについては、「NVIDIA Triton Inference Containers (SM support only)
エンドツーエンドのノートブックサンプルについては、「amazon-sagemaker-examples リポジトリ
ホスティングモード
Triton コンテナでは、以下の SageMaker AI ホスティングモードがサポートされています。
-
シングルモデルエンドポイント
-
これは SageMaker AI のデフォルトの動作モードです。このモードでは、Triton コンテナは 1 つのモデルまたは 1 つのアンサンブルモデルをロードできます。
-
モデルの名前は、
CreateModelSageMaker AI API コールの一部であるコンテナ環境のプロパティとして渡す必要があります。モデル名を渡すために使用される環境変数はSAGEMAKER_TRITON_DEFAULT_MODEL_NAMEです。
-
-
アンサンブルによる単一モデルエンドポイント
-
Triton 推論サーバーは、パイプラインまたはモデルの DAG (有向非巡回グラフ) であるアンサンブルをサポートします。アンサンブルは技術的には複数のモデルで構成されますが、デフォルトの単一モデルエンドポイントモードでは、SageMaker AI はアンサンブル自体 (パイプラインを表すメタモデル) をロードするメインモデルとして扱い、その後に関連するモデルをロードすることができます。
-
モデルをロードするには、アンサンブル自体のモデル名を使用する必要があります。
CreateModelSageMaker API 呼び出しの一部であるコンテナ環境のプロパティとして渡す必要があります。モデル名を渡すために使用される環境変数はSAGEMAKER_TRITON_DEFAULT_MODEL_NAMEです。
-
-
マルチモデルエンドポイント
-
このモードでは、SageMaker AI は 1 つのエンドポイントで複数のモデルを提供できます。このモードを使用するには、
CreateModelSageMaker API 呼び出しの一部であるコンテナ環境のプロパティとして環境変数‘MultiModel’: trueを指定します。 -
デフォルトでは、インスタンスの起動時にモデルはロードされません。特定のモデルに対して推論リクエストを実行するには、
InvokeEndpointSageMaker API 呼び出しのTargetModelプロパティの引数として、対応するモデルの*.tar.gzファイルを指定します。
-
-
アンサンブルによるマルチモデルエンドポイント
-
このモードでは、SageMaker AI は、マルチモデルエンドポイントの説明通りに機能します。ただし、SageMaker AI Triton コンテナは複数のアンサンブルモデルをロードできます。つまり、複数のモデルパイプラインを同じインスタンスで実行できます。SageMaker AI はすべてのアンサンブルを 1 つのモデルとして扱い、対応する
*.tar.gzアーカイブをTargetModelとして指定することで、各モデルのアンサンブル自体を呼び出すことができます。 動的メモリの
LOADおよびUNLOAD時のメモリ管理を向上するために、アンサンブルサイズを小さくしておくことをお勧めします。
-
推論ペイロードのタイプ
Triton は、推論ペイロードをネットワーク経由で送信する方法として、json と binary+json (またはバイナリエンコーディングされた json) の 2 つの方法をサポートしています。どちらの場合も JSON ペイロードには、データ型、シェイプ、および実際の推論リクエストテンソルが含まれます。リクエストテンソルはバイナリテンソルである必要があります。
binary+json 形式では、Triton がバイナリペイロードを正しく解析できるように、ヘッダーにリクエストメタデータの長さを指定する必要があります。SageMaker AI Triton コンテナでは、application/vnd.sagemaker-triton.binary+json;json-header-size={} というカスタム Content-Type ヘッダーを使用して行われます。これは、SageMaker AI ではカスタムヘッダーが許可されていないため、スタンドアロンの Triton 推論サーバーで Inference-Header-Content-Length ヘッダーを使用するのとは異なります。
config.pbtxt を使用してモデル設定を設定する
SageMaker AI 上の Triton 推論サーバーでは、各モデルに少なくともモデルの次の設定を指定する config.pbtxt ファイルを含める必要があります。
-
name: SageMaker AI の外部で実行されるモデルの場合は任意ですが、SageMaker AI 上の Triton で実行されるモデルの名前を常に指定することをお勧めします。 -
platformおよび/またはbackend: モデルのタイプを指定するには、バックエンドの設定が不可欠です。バックエンドによっては、 tensorflow_savedmodelやtensorflow_graphdefのようにさらに分類されているものもあります。このようなオプションは、backendキーに加えてplatformキーの一部として指定できます。最も一般的なバックエンドは、tensorrt、onnxruntime、tensorflow、pytorch、python、dali、fil、openvinoです。 -
input: 入力にはname、data_typeおよびdims(シェイプ) の 3 つの属性を指定します。 -
output: 出力にはname、data_typeおよびdims(シェイプ) の 3 つの属性を指定します。 -
max_batch_size: バッチサイズを、Triton がモデルで使用する最大バッチサイズを示す 1 以上の値に設定します。
config.pbtxt の設定の詳細については、「Triton の GitHub リポジトリ
-
instance_groups: インスタンスグループは、指定されたモデルの数と場所を指定するのに役立ちます。これらには count、kind、およびgpus(kindがKIND_GPUの場合に使用) という属性があります。count属性は、ワーカーの数と同等です。通常のモデル提供では、各ワーカーがモデルのコピーを所有します。同様に、Triton では、countはデバイスあたりのモデルコピー数を指定します。例えば、instance_groupタイプがKIND_CPUの場合、CPU にはcount数のモデルのコピーがあります。注記
GPU インスタンスでは、
instance_group設定は GPU デバイスごとに適用されます。例えば、モデルをロードする GPU デバイスを明示的に指定しない限り、各 GPU デバイスにはcount数のモデルのコピーが配置されます。 -
dynamic_batchingと sequence_batching: ステートレスモデルには動的バッチ処理が使用され、ステートフルモデル (毎回同じモデルインスタンスにリクエストをルーティングする場合) にはシーケンスバッチ処理が使用されます。バッチ処理スケジューラーではモデルごとのキューが有効になり、バッチ処理の設定によってはスループットの向上に役立ちます。 -
ensemble: アンサンブルモデルは、1 つ以上のモデルのパイプラインと、それらのモデル間の入力および出力テンソルの接続を表します。 platformをensembleと指定することで設定できます。アンサンブル設定はモデルパイプラインの単なる表現です。SageMaker AI では、アンサンブルに含まれるすべてのモデルはアンサンブルモデルの依存モデルとして扱われ、LoadedModelCountなどの SageMaker AI メトリクスでは単一のモデルとしてカウントされます。
デフォルトの Triton メトリクスを Amazon CloudWatch に発行する
NVIDIA Triton 推論コンテナは、Triton 推論サーバーで使用されるさまざまなモデルと GPU のメトリクスをポート 8002 (設定可能) で発行します。利用可能なデフォルトのメトリクスの詳細については、「Triton 推論サーバーメトリクスの GitHub
バージョン v23.07 以降、SageMaker AI Triton コンテナはいくつかの環境変数を指定することで、Amazon CloudWatch へのこれらのメトリクスの発行をサポ-トしています。Prometheus メトリクスをスクレイプするために、SageMaker AI Triton コンテナは Amazon CloudWatch エージェントを活用します。
メトリクスを収集するために指定する必要がある必須環境変数は次のとおりです。
| 環境変数 | 説明 | 値の例 |
|---|---|---|
|
|
このオプションを指定すると、Triton が Prometheus エンドポイントにメトリクスを発行できるようになります。 |
"true" |
|
|
このオプションを指定すると、Amazon CloudWatch にメトリクスを発行するために必要な事前チェックが開始されます。 |
"true" |
|
|
このオプションを指定して、メトリクスが書き込まれるロググループを指すようにします。 |
「/aws/SageMaker AI/Endpoints/TritonMetrics/SageMakerTwoEnsemblesTest」 |
|
|
このオプションを指定して、メトリクスを表示およびプロットするメトリクス名前空間を指すようにします。 |
「/aws/SageMaker AI/Endpoints/TritonMetrics/SageMakerTwoEnsemblesPublicTest」 |
|
|
これを 8002 またはその他のポートとして指定します。SageMaker AI が指定されたポートをブロックしていない場合は、そのポートが使用されます。そうでない場合は、ブロックされていない別のポートが自動的に選択されます。 |
「8002」 |
SageMaker AI で Triton を使用してメトリクスを発行する場合、以下の制限に注意してください。
C-API と Python バックエンド (v23.05 以降) を使用してカスタムメトリクスを生成することはできますが、Amazon CloudWatch への発行は現在サポートされていません。
SageMaker AI マルチモデルエンドポイント (MME) モードでは、各モデル (アンサンブルモデルを除く) は独自のモデルリポジトリにあるかのように扱われるため、Triton はモデル名前空間を有効にする必要がある環境で実行されます。現在、これによりメトリクスに制限が生じています。モデルの名前空間を有効にすると、Triton は異なるアンサンブルに属する同じ名前の 2 つのモデル間のメトリクスを区別しません。回避策として、デプロイされるすべてのモデルに一意の名前を付けます。これにより、CloudWatch でメトリクスを検索するのも簡単になります。
環境変数
次の表は、SageMaker AI 上の Triton でサポートされている環境変数の一覧です。
| 環境変数 | 説明 | [Type] (タイプ) | 使用できる値 |
|---|---|---|---|
|
Triton が SageMaker AI のマルチモデルエンドポイントモードで動作できるようにします。 |
ブール値 |
|
|
SageMaker AI 単一モデル (デフォルト) モードでロードするモデルを指定します。アンサンブルモードの場合は、アンサンブル自体の名前を指定します。 |
文字列 |
|
|
|
文字列 |
|
|
SageMaker AI Triton コンテナでは、デフォルトで |
ブール値 |
|
|
SageMaker AI では、デフォルトポートは 8080 です。マルチコンテナのシナリオでは、別のポートにカスタマイズできます。 |
文字列 |
|
|
これは、マルチコンテナモードを使用するときに SageMaker AI プラットフォームによって設定されます。 |
文字列 |
|
|
SageMaker AI は現在 GRPC をサポートしていませんが、カスタムリバースプロキシの前に Triton を使用している場合は GRPC を有効にすることができます。 |
ブール値 |
|
|
GRPC のデフォルトポートは 8001 ですが、変更できます。 |
文字列 |
|
|
デフォルトの HTTP リクエストハンドラーのスレッド数を設定できます。 |
文字列 |
|
|
SageMaker AI ではデフォルトで |
ブール値 |
|
|
SageMaker AI のデフォルトでは |
ブール値 |
|
|
SageMaker AI のデフォルトでは |
ブール値 |
|
|
SageMaker AI のデフォルトでは |
ブール値 |
|
|
Python バックエンドの shm サイズをバイト単位で指定します。デフォルト値は 16 MB ですが、これより大きくすることもできます。 |
文字列 |
|
|
Python バックエンドの shm 成長サイズをバイト単位で指定します。デフォルト値は 1 MB ですが、増分を増やすこともできます。 |
文字列 |
|
|
デフォルト値は |
文字列 |
|
|
モデルのロードに使用される最大 GPU メモリの割合を制限し、残りを推論リクエストに使用できるようにします。 |
文字列 |
|
|
SageMaker AI のデフォルトでは |
ブール値 |
|
|
デフォルトのポート番号は 8002 です。 |
文字列 |
|
|
SageMaker AI のデフォルトでは |
ブール値 |
|
|
CloudWatch へのメトリクスの発行を有効にしている場合は必須です。 |
文字列 |
|
|
CloudWatch へのメトリクスの発行を有効にしている場合は必須です。 |
文字列 |
|
|
Triton サーバーの起動時に追加の引数を追加します。 |
文字列 |
|