

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 概觀：使用 `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 進行處理*的 [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 使用者指南*中的[請求增加配額](https://docs.aws.amazon.com/servicequotas/latest/userguide/request-quota-increase.html)。

**使用 `ScriptProcessor` 的先決條件**

1. 您已建立指定地理空間機器學習 (ML) 工作負載的 Python 指令碼。

1. 您已授予 SageMaker AI 執行角色存取任何所需 Amazon S3 儲存貯體的權限。

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* 取代為 SageMaker AI 執行角色的 ARN，該角色可存取 Amazon S3 中存放的輸入資料，以及您想要在處理任務中呼叫的任何其他 AWS 服務。您可以更新 `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 資料處理指令碼名稱。
   + 處理工作支援兩種格式化輸入資料的方法。您可以建立指向處理工作所有輸入資料的資訊清單檔案，也可以在每個個別資料輸入上使用通用首碼。如果您建立了一個資訊清單檔案，設定 `s3_manifest_uri` 等於 `"ManifestFile"`。如果您使用的檔案首碼，設定 `s3_manifest_uri` 等於 `"S3Prefix"`。您使用 `source` 指定資料的路徑。
   + 您可以透過兩種方式發佈處理工作資料：
     + 設定 `s3_data_distribution_type` 等於 `FullyReplicated`，來將資料發佈至所有處理執行個體。
     + 設定 `s3_data_distribution_type` 等於 `ShardedByS3Key`，根據 Amazon S3 金鑰在碎片中發佈資料。當您使用 `ShardedByS3Key` 時，資料的一個碎片會被發送到每個處理執行個體。

    您可以使用指令碼來處理 SageMaker 地理空間資料。該指令碼可以在[步驟 3：編寫可以計算 NDVI 的指令碼](geospatial-custom-operations-procedure.md#geospatial-custom-operations-script-mode)中找到。若要進一步了解 `.run()` API 作業，請參閱*用於處理的 Amazon SageMaker Python SDK*中的 [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 參考》**中的 `DescribeProcessingJob`](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeProcessingJob.html)。

下一個主題說明如何使用 SageMaker 地理空間容器建立 `ScriptProcessor` 類別的執行個體，以及如何使用它來計算具有 Sentinel-2 影像的標準化差異植被指數 (NDVI)。

