翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
独自の処理コンテナを構築する方法 (高度なシナリオ)
データ処理、特徴量エンジニアリング、モデル評価ワークロードを実行する独自のコードと依存関係を持つ Docker イメージを Amazon SageMaker Processing に提供できます。以下で、独自の処理コンテナを構築する方法を説明します。
次の 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"]
処理スクリプトの例については、「Get started with SageMaker Processing
この Docker イメージをビルドして Amazon Elastic Container Registry (Amazon ECR) リポジトリにプッシュし、SageMaker AI 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
に含まれているホスト名に関する情報は、正確ではない可能性があるため、使わないでください。
ホスト名の情報は、処理コンテナですぐに利用できない場合があります。ノードがクラスター内で使用可能になった時点で、ホスト名解決操作に再試行ポリシーを追加することをお勧めします。