バッチ変換での独自の推論コードの使用 - Amazon SageMaker

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

バッチ変換での独自の推論コードの使用

このセクションでは、Amazon SageMaker がバッチ変換用の独自の推論コードを実行する Docker コンテナとやり取りする方法について説明します。この情報を使用して、推論コードを書き込み、Docker イメージを作成します。

SageMaker が推論イメージを実行する方法

コンテナを実行可能ファイルとして実行するように設定するには、Dockerfile で ENTRYPOINT 命令を使用します。次の点に注意してください。

  • バッチ変換の場合、SageMaker はコンテナを次のように実行します。

    docker run image serve

    SageMaker は既定値を上書きしますCMDステートメントを指定して、コンテナ内のserveイメージ名の後に引数を指定します。serve 引数は、Dockerfile の CMD コマンドで指定した引数よりも優先されます。

     

  • exec 命令の ENTRYPOINT フォームを使用することをお勧めします。

    ENTRYPOINT ["executable", "param1", "param2"]

    例:

    ENTRYPOINT ["python", "k_means_inference.py"]

     

  • SageMaker は、 CreateModelおよび CreateTransformJobコンテナに。さらに、以下の環境変数が設定されます。

    • コンテナがバッチ変換で実行される場合、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 を参照してください。

     

  • 使用することはできませんinitイニシャライザは、トレイン引数と serve 引数で混乱が生じるため、SageMaker コンテナでは、エントリポイントとして使用します。

SageMaker がモデルアーティファクトをロードする方法

CreateModelリクエストの場合、コンテナー定義にはModelDataUrlパラメータを使用して、モデルアーティファクトを保存する Amazon S3 内の場所を指定します。SageMaker を使用して推論を実行すると、SageMaker はこの情報を使用してモデルアーティファクトをどこからコピーするかを決定します。また、推論コードで使用するために、アーティファクトを Docker コンテナの /opt/ml/model ディレクトリにコピーします。

ModelDataUrl パラメータは tar.gz ファイルを指す必要があります。この情報がないと、SageMaker はファイルをダウンロードできません。SageMaker でモデルをトレーニングする場合、アーティファクトは Amazon S3 の単一の圧縮 tar ファイルとして保存されます。別のフレームワークでモデルをトレーニングする場合は、モデルアーティファクトを圧縮 tar ファイルとして Amazon S3 に保存する必要があります。SageMaker は、この tar ファイルを解凍し、/opt/ml/modelディレクトリ内のバッチ変換ジョブが開始される前に、コンテナー内のディレクトリに移動します。

コンテナがリクエストを提供する方法

コンテナにはポート 8080 の呼び出しと ping リクエストに応答するウェブサーバーを実装する必要があります。バッチ変換の場合は、アルゴリズムを設定して、動的ランタイムを SageMaker に設定するように execution-parameters リクエストを実装することができます。SageMaker では、次のエンドポイントを使用します。

  • ping-コンテナの状態を定期的にチェックするために使用します。SageMaker は HTTP を待機します200ステータスコードと、呼び出しリクエストを送信する前に ping リクエストが成功した場合は、空の本文を使用します。呼び出しリクエストが送信される際に推論を生成するには、ping リクエストを使用して、モデルをメモリにロードする場合があります。

  • (オプション)execution-parameters-実行時に、アルゴリズムでジョブに最適な調整パラメータが渡されるようにします。コンテナで使用できるメモリと CPU に基づき、アルゴリズムによって、ジョブに適切な MaxConcurrentTransformsBatchStrategy、および MaxPayloadInMB の値が選択されます。

呼び出しリクエストを呼び出す前に、SageMaker は、execution-parameters リクエストの呼び出しを試みます。バッチ変換ジョブを作成する場合は、[バッチ変換ジョブ] の値を指定することができます。MaxConcurrentTransforms,BatchStrategy, およびMaxPayloadInMBパラメータを設定します。SageMaker は、次の優先順位を使用して、これらのパラメーターの値を決定します。

  1. 作成するときに指定するパラメータ値。CreateTransformJobリクエスト.

  2. SageMaker が execution-parameters エンドポイントを呼び出すときにモデルコンテナから返される値 >

  3. デフォルトのパラメータ値 (以下のテーブルを参照)。

    Parameter デフォルト値
    MaxConcurrentTransforms

    1

    BatchStrategy

    MULTI_RECORD

    MaxPayloadInMB

    6

GET execution-parameters リクエストのレスポンスは、MaxConcurrentTransformsBatchStrategy、および MaxPayloadInMB パラメータのキーを持つ JSON オブジェクトです。有効なレスポンスの例を以下に示します。

{ “MaxConcurrentTransforms”: 8, “BatchStrategy": "MULTI_RECORD", "MaxPayloadInMB": 6 }

コンテナが推論リクエストに応答する方法

推論を得るために、Amazon SageMaker は推論コンテナに POST リクエストを送信します。POST リクエストボディには、Amazon S3 からのデータが含まれています。Amazon SageMaker はリクエストをコンテナに渡し、コンテナから推論結果を返し、レスポンスのデータを Amazon S3 に保存します。

推論リクエストを受信するには、コンテナにポート 8080 でリッスンするウェブサーバーが必要であり、/invocations エンドポイントへの POST リクエストを受け入れる必要があります。モデルコンテナは、600 秒以内にリクエストに応答する必要があります。

コンテナがヘルスチェック (Ping) リクエストに応答する方法

コンテナの最も単純な要件は、HTTP 200 のステータスコードと空の本文で応答することです。これにより、SageMaker に、コンテナが/invocationsエンドポイントにする必要があります。

コンテナが静的な 200 を返す最小限のバーがありますが、コンテナ開発者はこの機能を使用してより深いチェックを実行できます。/ping 試行のリクエストのタイムアウトは 2 秒です。