

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

# 独自の処理コンテナを使用したスクリプトの実行
<a name="processing-container-run-scripts"></a>

scikit-learn スクリプトを使用して、データを前処理し、モデルを評価できます。scikit-learn スクリプトを実行してこれらのタスクを実行する方法については、[scikit-learn 処理](https://github.com/awslabs/amazon-sagemaker-examples/tree/master/sagemaker_processing/scikit_learn_data_processing_and_model_evaluation)サンプルノートブックを参照してください。このノートブックでは、Amazon SageMaker Python SDK for Processing の `ScriptProcessor` クラスを使います。

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

次のサンプルを使う前に、独自の入力データとデータ処理のための Python スクリプトを準備しておく必要があります。このプロセスのエンドツーエンドのガイド付きサンプルについては、[scikit-learn 処理](https://github.com/awslabs/amazon-sagemaker-examples/tree/master/sagemaker_processing/scikit_learn_data_processing_and_model_evaluation)サンプルノートブックを参照してください。

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"]
   ```

1. 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
   ```

1. SageMaker Python SDK から `ScriptProcessor` をセットアップして、スクリプトを実行します。*image\$1uri* を、作成したイメージの URI に置き換え、*role\$1arn* をターゲット 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')
   ```

1. スクリプトを実行します。*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](https://kubernetes.io/) などの他のプラットフォームで実行するイメージも含まれます。