

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

# 概要: `ScriptProcessor` と SageMaker 地理空間コンテナを使用して処理ジョブを実行する
<a name="geospatial-custom-operations-overview"></a>

SageMaker 地理空間は、専用の処理コンテナである `081189585635.dkr.ecr.us-west-2.amazonaws.com/sagemaker-geospatial-v1-0:latest` を提供します。Amazon SageMaker Processing でジョブを実行するときに、このコンテナを使用できます。*Amazon SageMaker Python SDK for Processing* を介して利用可能な [https://sagemaker.readthedocs.io/en/stable/api/training/processing.html#sagemaker.processing.ScriptProcessor](https://sagemaker.readthedocs.io/en/stable/api/training/processing.html#sagemaker.processing.ScriptProcessor) クラスのインスタンスを作成するときは、この `image_uri` を指定します。

**注記**  
処理ジョブの開始時に ResourceLimitExceeded エラーが表示された場合は、クォータの引き上げをリクエストする必要があります。Service Quotas クォータの引き上げリクエストを開始するには、*Service Quotas ユーザーガイド*の「[Requesting a quota increase](https://docs.aws.amazon.com/servicequotas/latest/userguide/request-quota-increase.html)」を参照してください。

**`ScriptProcessor` を使用するための前提条件**

1. 地理空間 ML ワークロードを指定する Python スクリプトを既に作成している。

1. 必要な Amazon S3 バケットにアクセスするための SageMaker AI 実行ロールを既に付与している。

1. データをコンテナにインポートする準備をします。Amazon SageMaker Processing ジョブでは、`s3_data_type` を `"ManifestFile"` または `"S3Prefix"` に設定することをサポートしています。

次の手順は、SageMaker 地理空間コンテナを使用して、`ScriptProcessor` のインスタンスを作成し、Amazon SageMaker Processing ジョブを送信する方法を示します。

**SageMaker 地理空間コンテナを使用して `ScriptProcessor` のインスタンスを作成し、Amazon SageMaker Processing ジョブを送信するには**

1. SageMaker 地理空間画像を使用して `ScriptProcessor` クラスのインスタンスをインスタンス化します。

   ```
   from sagemaker.processing import ScriptProcessor, ProcessingInput, ProcessingOutput
   	
   sm_session = sagemaker.session.Session()
   execution_role_arn = sagemaker.get_execution_role()
   
   # purpose-built geospatial container
   image_uri = '081189585635.dkr.ecr.us-west-2.amazonaws.com/sagemaker-geospatial-v1-0:latest'
   
   script_processor = ScriptProcessor(
   	command=['python3'],
   	image_uri=image_uri,
   	role=execution_role_arn,
   	instance_count=4,
   	instance_type='ml.m5.4xlarge',
   	sagemaker_session=sm_session
   )
   ```

   *execution\$1role\$1arn* を、Amazon S3 に保存されている入力データと、処理ジョブで呼び出すその他の AWS サービスにアクセスできる SageMaker AI 実行ロールの ARN に置き換えます。処理ジョブの要件に合うように、`instance_count` と `instance_type` を更新できます。

1. 処理ジョブを開始するには、 `.run()` メソッドを使用します。

   ```
   # Can be replaced with any S3 compliant string for the name of the folder.
   s3_folder = geospatial-data-analysis
   
   # Use .default_bucket() to get the name of the S3 bucket associated with your current SageMaker session
   s3_bucket = sm_session.default_bucket()
   					
   s3_manifest_uri = f's3://{s3_bucket}/{s3_folder}/manifest.json'
   s3_prefix_uri =  f's3://{s3_bucket}/{s3_folder}/image-prefix
   
   script_processor.run(
   	code='preprocessing.py',
   	inputs=[
   		ProcessingInput(
   			source=s3_manifest_uri | s3_prefix_uri ,
   			destination='/opt/ml/processing/input_data/',
   			s3_data_type= "ManifestFile" | "S3Prefix",
   			s3_data_distribution_type= "ShardedByS3Key" | "FullyReplicated"
   		)
   	],
   	outputs=[
           ProcessingOutput(
               source='/opt/ml/processing/output_data/',
               destination=s3_output_prefix_url
           )
       ]
   )
   ```
   + *preprocessing.py* を独自の Python データ処理スクリプトの名前に置き換えます。
   + 処理ジョブは、入力データをフォーマットするための 2 つの方法をサポートしています。処理ジョブのすべての入力データを指すマニフェストファイルを作成するか、個々の各データ入力に共通のプレフィックスを使用できます。マニフェストファイルを作成した場合は、`s3_manifest_uri` を `"ManifestFile"` に設定します。ファイルプレフィックスセットを使用した場合は、`s3_manifest_uri` を `"S3Prefix"` に設定します。データへのパスは、`source` を使用して指定します。
   + 処理ジョブデータは、次の 2 つの方法で配布できます。
     + `s3_data_distribution_type` を `FullyReplicated` に設定して、データをすべての処理インスタンスに配布する。
     + `s3_data_distribution_type` を `ShardedByS3Key` に設定して、Amazon S3 キーに基づいてシャードのデータを分散する。`ShardedByS3Key` を使用すると、1 つのデータのシャードが各処理インスタンスに送信されます。

    SageMaker 地理空間データはスクリプトを使用して処理できます。このスクリプトは、「[Step 3: Writing a script that can calculate the NDVI](geospatial-custom-operations-procedure.md#geospatial-custom-operations-script-mode)」に含まれています。`.run()` API オペレーションの詳細については、「*Amazon SageMaker Python SDK for Processing*」の「[https://sagemaker.readthedocs.io/en/stable/api/training/processing.html#sagemaker.processing.ScriptProcessor.run](https://sagemaker.readthedocs.io/en/stable/api/training/processing.html#sagemaker.processing.ScriptProcessor.run)」を参照してください。

処理ジョブの進行状況を監視するために、`ProcessingJobs` クラスでは [https://sagemaker.readthedocs.io/en/stable/api/training/processing.html#sagemaker.processing.ProcessingJob.describe](https://sagemaker.readthedocs.io/en/stable/api/training/processing.html#sagemaker.processing.ProcessingJob.describe) メソッドをサポートしています。このメソッドは `DescribeProcessingJob` API コールからのレスポンスを返します。詳細については、「*Amazon SageMaker AI API リファレンス*」の「[https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeProcessingJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeProcessingJob.html)」を参照してください。

次のトピックでは、SageMaker 地理空間コンテナを使用して `ScriptProcessor` クラスのインスタンスを作成する方法と、次にそれを使用して Sentinel-2 画像で正規化植生差指数 (NDVI) を計算する方法を示します。

