翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
バッチ変換でのカスタム推論コード
このセクションでは、Amazon SageMaker AI がバッチ変換用の独自の推論コードを実行する Docker コンテナとやり取りする方法について説明します。この情報を使用して、推論コードを書き込み、Docker イメージを作成します。
トピック
SageMaker AI が推論イメージを実行する方法
コンテナを実行可能ファイルとして実行するように設定するには、Dockerfile で ENTRYPOINT
命令を使用します。次の点に注意してください:
-
バッチ変換の場合、SageMaker AI はユーザーに代わってモデルを呼び出します。SageMaker AI はコンテナを次のように実行します。
docker run
image
serveバッチ変換への入力は、小さなファイルに分割して並列に処理できる形式である必要があります。これらの形式には、CSV、JSON
、JSON Lines 、TFRecord 、RecordIO が含まれます。 SageMaker AI は、イメージ名の後に
serve
引数を指定することで、コンテナ内のデフォルトのCMD
ステートメントを上書きします。serve
引数は、Dockerfile のCMD
コマンドで指定した引数よりも優先されます。 -
exec
命令のENTRYPOINT
フォームを使用することをお勧めします。ENTRYPOINT ["executable", "param1", "param2"]
以下に例を示します。
ENTRYPOINT ["python", "k_means_inference.py"]
-
SageMaker AI は、コンテナ
CreateTransformJob
のCreateModel
と で指定された環境変数を設定します。さらに、以下の環境変数が設定されます。-
コンテナがバッチ変換で実行される場合、
SAGEMAKER_BATCH
はtrue
に設定されます。 -
SAGEMAKER_MAX_PAYLOAD_IN_MB
は、HTTP 経由でコンテナに送信される最大サイズのペイロードに設定されます。 -
SAGEMAKER_BATCH_STRATEGY
は、呼び出しを行うごとにコンテナが単一レコードを送信する場合はSINGLE_RECORD
に設定され、コンテナがペイロードに収まるだけのレコードを取得する場合はMULTI_RECORD
に設定されます。 -
SAGEMAKER_MAX_CONCURRENT_TRANSFORMS
は、同時に開くことができる/invocations
リクエストの最大数に設定されます。
注記
最後の 3 つの環境変数は、ユーザーが実行する API コールから取得されます。ユーザーがそれらの値を設定していない場合は、値が渡されません。その場合は、デフォルト値または (
/execution-parameters
へのレスポンスで) アルゴリズムによって要求された値のどちらかが使用されます。 -
-
モデル推論に GPU デバイスを使用 (
CreateTransformJob
リクエストで GPU ベースの ML コンピューティングインスタンスを指定) する予定の場合は、コンテナが nvidia-docker 互換であることを確認してください。NVIDIA ドライバーをイメージにバンドルしないでください。nvidia-docker の詳細については、NVIDIA/nvidia-dockerを参照してください。 -
トレーニング引数とサービス引数によって混乱するので、SageMaker AI コンテナのエントリポイントとして
init
イニシャライザを使用することはできません。
SageMaker AI がモデルアーティファクトをロードする方法
CreateModel
リクエストでは、Amazon S3 でモデルアーティファクトを保存する場所を指定する ModelDataUrl
パラメータがコンテナの定義に含まれます。SageMaker AI を使用して推論を実行する場合、この情報を使用してモデルアーティファクトのコピー先を決定します。また、推論コードで使用するために、アーティファクトを Docker コンテナの /opt/ml/model
ディレクトリにコピーします。
ModelDataUrl
パラメータは tar.gz ファイルを指す必要があります。それ以外の場合、SageMaker AI はファイルをダウンロードできません。SageMaker AI でモデルをトレーニングすると、アーティファクトは 1 つの圧縮 tar ファイルとして Amazon S3 に保存されます。別のフレームワークでモデルをトレーニングする場合は、モデルのアーティファクトを圧縮 tar ファイルとして Amazon S3 に保存する必要があります。SageMaker AI はこの tar ファイルを解凍し、バッチ変換ジョブを開始する前にコンテナの /opt/ml/model
ディレクトリに保存します。
コンテナがリクエストを提供する方法
コンテナにはポート 8080 の呼び出しと ping リクエストに応答するウェブサーバーを実装する必要があります。バッチ変換の場合、アルゴリズムを設定して実行パラメータリクエストを実装し、SageMaker AI に動的ランタイム設定を提供するオプションがあります。SageMaker AI は次のエンドポイントを使用します。
-
ping
- コンテナの健全性を定期的にチェックするために使用します。SageMaker AI は、呼び出しリクエストを送信する前に、HTTP200
ステータスコードと空の本文が ping リクエストに成功するまで待機します。呼び出しリクエストが送信される際に推論を生成するには、ping リクエストを使用して、モデルをメモリにロードする場合があります。 -
(オプション)
execution-parameters
- ランタイム時に、アルゴリズムでジョブに最適な調整パラメータが渡されるようにします。コンテナで使用できるメモリと CPU に基づき、アルゴリズムによって、ジョブに適切なMaxConcurrentTransforms
、BatchStrategy
、およびMaxPayloadInMB
の値が選択されます。
呼び出しリクエストを呼び出す前に、SageMaker AI は execution-parameters リクエストの呼び出しを試みます。バッチ変換ジョブを作成する場合は、MaxConcurrentTransforms
、BatchStrategy
、MaxPayloadInMB
の各パラメータに値を提供できます。SageMaker AI は、次の優先順位を使用してこれらのパラメータの値を決定します。
-
CreateTransformJob
リクエストを作成するときに指定するパラメータ値。 -
SageMaker AI が実行パラメータエンドポイントを呼び出すときにモデルコンテナが返す値>
-
デフォルトのパラメータ値 (以下のテーブルを参照)。
パラメータ デフォルト値 MaxConcurrentTransforms
1
BatchStrategy
MULTI_RECORD
MaxPayloadInMB
6
GET
execution-parameters リクエストのレスポンスは、MaxConcurrentTransforms
、BatchStrategy
、および MaxPayloadInMB
パラメータのキーを持つ JSON オブジェクトです。有効なレスポンスの例を以下に示します。
{ “MaxConcurrentTransforms”: 8, “BatchStrategy": "MULTI_RECORD", "MaxPayloadInMB": 6 }
コンテナが推論リクエストに応答する方法
推論を取得するために、Amazon SageMaker AI は推論コンテナに POST リクエストを送信します。POST リクエストボディには Amazon S3 からのデータが含まれています。Amazon SageMaker AI はリクエストをコンテナに渡し、コンテナから推論結果を返します。これにより、レスポンスのデータが Amazon S3 に保存されます。
推論リクエストを受信するには、コンテナにポート 8080 でリッスンするウェブサーバーが必要であり、/invocations
エンドポイントへの POST リクエストを受け入れる必要があります。推論リクエストのタイムアウトと最大リトライ回数は ModelClientConfig
によって設定できます。
コンテナがヘルスチェック (Ping) リクエストに応答する方法
コンテナの最も単純な要件は、HTTP 200 のステータスコードと空の本文で応答することです。これは、コンテナが/invocations
エンドポイントで推論リクエストを受け入れる準備ができていることを SageMaker AI に示しています。
コンテナが静的な 200 を返す最小限のバーがありますが、コンテナ開発者はこの機能を使用してより深いチェックを実行できます。/ping
試行のリクエストのタイムアウトは 2 秒です。