独自の処理コンテナを構築する方法 (高度なシナリオ) - Amazon SageMaker

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

独自の処理コンテナを構築する方法 (高度なシナリオ)

Amazon SageMaker Processing には、データ処理、機能エンジニアリング、モデル評価ワークロードを実行するための独自のコードと依存関係を持つ Docker イメージを提供できます。以下は、独自の処理コンテナを構築する方法に関する情報です。

次の Dockerfile の例では、処理ジョブとして実行できる Python ライブラリ scikit-learn と pandas を持つコンテナを構築します。

FROM python:3.7-slim-buster # Install scikit-learn and pandas RUN pip3 install pandas==0.25.3 scikit-learn==0.21.3 # Add a Python script and configure Docker to run it ADD processing_script.py / ENTRYPOINT ["python3", "/processing_script.py"]

処理スクリプトの例については、「 SageMaker の処理の開始」を参照してください。

この Docker イメージを構築して Amazon Elastic Container Registry (Amazon ECR) リポジトリにプッシュし、ロール SageMaker IAMが Amazon からイメージをプルできることを確認しますECR。その後、このイメージを Amazon SageMaker Processing で実行できます。

Amazon SageMaker Processing が処理コンテナを設定する方法

Amazon SageMaker Processing は、環境変数と 2 つのJSONファイル、/opt/ml/config/processingjobconfig.jsonおよび /opt/ml/config/resourceconfig.jsonを使用して、コンテナ内の事前定義された場所で、処理コンテナに設定情報を提供します。

処理ジョブが開始されると、CreateProcessingJob リクエスト内の Environment マップで指定した環境変数が使用されます。/opt/ml/config/processingjobconfig.json ファイルには、処理コンテナのホスト名に関する情報が含まれています。この情報は CreateProcessingJob リクエストでも指定されています。

以下の例は、/opt/ml/config/processingjobconfig.json ファイル形式を示しています。

{ "ProcessingJobArn": "<processing_job_arn>", "ProcessingJobName": "<processing_job_name>", "AppSpecification": { "ImageUri": "<image_uri>", "ContainerEntrypoint": null, "ContainerArguments": null }, "Environment": { "KEY": "VALUE" }, "ProcessingInputs": [ { "InputName": "input-1", "S3Input": { "LocalPath": "/opt/ml/processing/input/dataset", "S3Uri": "<s3_uri>", "S3DataDistributionType": "FullyReplicated", "S3DataType": "S3Prefix", "S3InputMode": "File", "S3CompressionType": "None", "S3DownloadMode": "StartOfJob" } } ], "ProcessingOutputConfig": { "Outputs": [ { "OutputName": "output-1", "S3Output": { "LocalPath": "/opt/ml/processing/output/dataset", "S3Uri": "<s3_uri>", "S3UploadMode": "EndOfJob" } } ], "KmsKeyId": null }, "ProcessingResources": { "ClusterConfig": { "InstanceCount": 1, "InstanceType": "ml.m5.xlarge", "VolumeSizeInGB": 30, "VolumeKmsKeyId": null } }, "RoleArn": "<IAM role>", "StoppingCondition": { "MaxRuntimeInSeconds": 86400 } }

/opt/ml/config/resourceconfig.json ファイルには、処理コンテナのホスト名に関する情報が含まれています。分散処理コードを作成または実行するときは、以下のホスト名を使います。

{ "current_host": "algo-1", "hosts": ["algo-1","algo-2","algo-3"] }

/etc/hostname または /etc/hosts に含まれているホスト名に関する情報は、正確ではない可能性があるため、使わないでください。

ホスト名の情報は、処理コンテナですぐに利用できない場合があります。ノードがクラスター内で使用可能になった時点で、ホスト名解決操作に再試行ポリシーを追加することをお勧めします。