独自の処理コンテナを使用したスクリプトの実行 - Amazon SageMaker

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

独自の処理コンテナを使用したスクリプトの実行

scikit-learn スクリプトを使用して、データを前処理し、モデルを評価できます。scikit-learn スクリプトを実行してこれらのタスクを実行する方法については、scikit-learn 処理サンプルノートブックを参照してください。このノートブックでは、Amazon SageMaker Python SDK for Processing の ScriptProcessor クラスを使用します。

次の例は、独自の処理コンテナで ScriptProcessor クラスを使う場合の一般的なワークフローを示しています。このワークフローでは、独自のイメージを作成し、コンテナを構築し、そのコンテナで ScriptProcessor クラスを使って Python の前処理スクリプトを実行します。処理ジョブは入力データを処理し、処理済みデータを Amazon Simple Storage Service (Amazon S3) に保存します。

次のサンプルを使う前に、独自の入力データとデータ処理のための Python スクリプトを準備しておく必要があります。このプロセスのガイド付きサンプルについては end-to-end、scikit-learn Processing サンプルノートブックを参照してください。

  1. Docker ディレクトリを作成し、処理コンテナを作成するために使用される Docker ファイルを追加します。pandas をインストールし、それに scikit-learn をインストールします (同様の RUN コマンドで独自の依存関係をインストールすることもできます)。

    mkdir docker %%writefile docker/Dockerfile FROM python:3.7-slim-buster RUN pip3 install pandas==0.25.3 scikit-learn==0.21.3 ENV PYTHONUNBUFFERED=TRUE ENTRYPOINT ["python3"]
  2. Docker コマンドを使ってコンテナを構築し、Amazon Elastic Container Registry (Amazon ECR) リポジトリを作成して、イメージを Amazon ECR にプッシュします。

    import boto3 account_id = boto3.client('sts').get_caller_identity().get('Account') region = boto3.Session().region_name ecr_repository = 'sagemaker-processing-container' tag = ':latest' processing_repository_uri = '{}.dkr.ecr.{}.amazonaws.com/{}'.format(account_id, region, ecr_repository + tag) # Create ECR repository and push docker image !docker build -t $ecr_repository docker !aws ecr get-login-password --region {region} | docker login --username AWS --password-stdin {account_id}.dkr.ecr.{region}.amazonaws.com !aws ecr create-repository --repository-name $ecr_repository !docker tag {ecr_repository + tag} $processing_repository_uri !docker push $processing_repository_uri
  3. SageMaker Python SDK ScriptProcessorから をセットアップして、スクリプトを実行します。image_uri を、作成したイメージの URI に置き換え、role_arn をターゲット Amazon S3 バケットにアクセスできる AWS Identity and Access Management ロールの ARN に置き換えます。

    from sagemaker.processing import ScriptProcessor, ProcessingInput, ProcessingOutput script_processor = ScriptProcessor(command=['python3'], image_uri='image_uri', role='role_arn', instance_count=1, instance_type='ml.m5.xlarge')
  4. スクリプトを実行します。preprocessing.py を独自の Python 処理スクリプトの名前に置き換え、s3://path/to/my/input-data.csv を入力データへの Amazon S3 パスに置き換えます。

    script_processor.run(code='preprocessing.py', inputs=[ProcessingInput( source='s3://path/to/my/input-data.csv', destination='/opt/ml/processing/input')], outputs=[ProcessingOutput(source='/opt/ml/processing/output/train'), ProcessingOutput(source='/opt/ml/processing/output/validation'), ProcessingOutput(source='/opt/ml/processing/output/test')])

他のライブラリやシステム依存関係でも同じ手順を使用できます。既存の Docker イメージも使えます。これには、Kubernetes などの他のプラットフォームで実行するイメージも含まれます。