本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
概述:使用ScriptProcessor
和 SageMaker 地理空间容器运行处理作业
SageMaker geospatial 提供了一个专门构建的处理容器,。081189585635.dkr.ecr.us-west-2.amazonaws.com/sagemaker-geospatial-v1-0:latest
在使用 Amazon SageMaker Processing 运行任务时,您可以使用此容器。当您创建可通过 Amaz SageMaker on Python 进行处理的ScriptProcessor
image_uri
。
注意
如果您在尝试启动处理任务时收到ResourceLimitExceeded
错误,则需要申请增加配额。要开始申请增加服务限额,请参阅《服务限额用户指南》中的申请增加限额。
使用 ScriptProcessor
的先决条件
-
您已创建用于指定地理空间 ML 工作负载的 Python 脚本。
-
您已向 SageMaker 执行角色授予访问所需任何 Amazon S3 存储桶的权限。
-
准备好要导入到容器中的数据。Ama SageMaker zon Processing 任务支持将
s3_data_type
等于"ManifestFile"
或设置为"S3Prefix"
。
以下过程向您展示如何使用 SageMaker 地理空间容器创建实例ScriptProcessor
和提交 Amazon P SageMaker rocessing 任务。
使用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
)Replace(替换)
execution_role_arn
与有权访问存储在 Amazon S3 中的输入数据以及您要在处理任务中调用的任何其他 AWS 服务的 SageMaker执行角色相同。ARN您可以更新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-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
) ] )-
Replace(替换)
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操作的更多信息,请参阅run
SDK用于处理的 Amaz SageMaker on Python。 -
为了监控处理作业的进度,ProcessingJobs
类支持一种 describe
DescribeProcessingJob
API调用的响应。要了解更多信息,请参阅 DescribeProcessingJob
Amazon SageMaker API 参考文档。
下一个主题将向您展示如何使用 SageMaker 地理空间容器创建该ScriptProcessor
类的实例,以及如何使用它来计算包含Sentinel-2图像的归一化差异植被指数 (NDVI)。