本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
概觀:使用 ScriptProcessor 和 SageMaker 地理空間容器執行處理任務
SageMaker 地理空間提供專門建置的容器,081189585635.dkr.ecr.us-west-2.amazonaws.com/sagemaker-geospatial-v1-0:latest。您可以在使用 Amazon SageMaker Processing 執行任務時使用此容器。當您建立可透過 Amazon SageMaker Python SDK 進行處理的 ScriptProcessorimage_uri。
注意
如果您在嘗試啟動處理任務時收到 ResourceLimitExceeded 錯誤,則必須請求增加配額。若要開始 Service Quotas 配額增加請求,請參閱 Service Quotas 使用者指南中的請求增加配額。
使用 ScriptProcessor 的先決條件
-
您已建立指定地理空間機器學習 (ML) 工作負載的 Python 指令碼。
-
您已授予 SageMaker AI 執行角色存取任何所需的 Amazon S3 儲存貯體的權限。
-
準備要匯入容器的資料。Amazon SageMaker Processing 任務支援將
s3_data_type設定為等於"ManifestFile"或設定為"S3Prefix"。
下列程序說明如何使用 SageMaker 地理空間容器,建立 ScriptProcessor 執行個體並提交 Amazon SageMaker Processing 任務。
若要使用 SageMaker 地理空間容器建立 ScriptProcessor 執行個體並提交 Amazon SageMaker Processing 任務
-
使用 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_role_arn取代為 SageMaker AI 執行角色的 ARN,該角色可存取存放在 Amazon S3 中的輸入資料,以及您想要在處理任務中呼叫的任何其他 AWS 服務。您可以更新instance_count和instance_type以符合處理任務的需求。 -
若要啟動處理任務,請使用
.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-prefixscript_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 的指令碼中找到。若要進一步了解
.run()API 作業,請參閱用於處理的 Amazon SageMaker Python SDK中的run。 -
若要監控處理任務的進度,ProcessingJobs 類別支援 describeDescribeProcessingJob API 呼叫的回應。若要進一步了解,請參閱《DescribeProcessingJobAmazon SageMaker AI API 參考》中的 。
下一個主題說明如何使用 SageMaker 地理空間容器建立 ScriptProcessor類別的執行個體,然後如何使用它來計算具有Sentinel-2影像的標準化差異植被索引 (NDVI)。