Présentation : exécution des tâches de traitement à l’aide de ScriptProcessor et d’un conteneur géospatial SageMaker
Les fonctionnalités géospatiales de SageMaker fournissent un conteneur de traitement spécialement conçu, 081189585635.dkr.ecr.us-west-2.amazonaws.com/sagemaker-geospatial-v1-0:latest. Vous pouvez utiliser ce conteneur lors de l’exécution d’une tâche avec Amazon SageMaker Processing. Lorsque vous créez une instance de la classe ScriptProcessorimage_uri.
Note
Si vous recevez une erreur ResourceLimitExceeded lorsque vous essayez de démarrer une tâche de traitement, vous devez demander une augmentation de quota. Pour savoir comment demander une augmentation de quota Service Quotas, consultez Demande d’augmentation de quota dans le Guide de l’utilisateur Service Quotas.
Conditions préalables pour l’utilisation du ScriptProcessor.
-
Vous avez créé un script Python qui spécifie votre charge de travail ML géospatiale.
-
Vous avez accordé au rôle d’exécution SageMaker AI l’accès à tous les compartiments Amazon S3 nécessaires.
-
Préparez vos données pour les importer dans le conteneur. Les tâches Amazon SageMaker Processing prennent en charge la définition de
s3_data_typecomme étant égal à"ManifestFile"ou à"S3Prefix".
La procédure suivante explique comment créer une instance de ScriptProcessor et comment soumettre une tâche Amazon SageMaker Processing à l’aide du conteneur géospatial SageMaker.
Pour créer une instance ScriptProcessor et soumettre une tâche Amazon SageMaker Processing à l’aide d’un conteneur géospatial SageMaker
-
Instanciez une instance de la classe
ScriptProcessorà l’aide de l’image géospatiale SageMaker :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)Remplacez
execution_role_arnpar l’ARN du rôle d’exécution SageMaker AI qui a accès aux données d’entrée stockées dans Amazon S3 et à tout autre service AWS que vous souhaitez appeler dans le cadre de votre tâche de traitement. Vous pouvez mettre à jour les élémentsinstance_countetinstance_typepour répondre aux exigences de votre tâche de traitement. -
Pour démarrer une tâche de traitement, utilisez la méthode
.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) ] )-
Remplacez
preprocessing.pypar le nom de votre propre script de traitement de données Python. -
Une tâche de traitement prend en charge deux méthodes de formatage de vos données d’entrée. Vous pouvez soit créer un fichier manifeste qui pointe vers toutes les données d’entrée de votre tâche de traitement, soit utiliser un préfixe commun pour chaque entrée de données individuelle. Si vous avez créé un fichier manifeste, affectez à
s3_manifest_urila valeur"ManifestFile". Si vous avez utilisé un préfixe de fichier, affectez às3_manifest_urila valeur"S3Prefix". Vous spécifiez le chemin d’accès à vos données à l’aide desource. -
Vous pouvez distribuer les données de vos tâches de traitement de deux manières :
-
Distribuez vos données à toutes les instances de traitement en affectant à
s3_data_distribution_typela valeurFullyReplicated. -
Répartissez vos données en partitions en fonction de la clé Amazon S3 en affectant à
s3_data_distribution_typela valeurShardedByS3Key. Lorsque vous utilisezShardedByS3Key, une partition de données est envoyée à chaque instance de traitement.
-
Vous pouvez utiliser un script pour traiter les données géospatiales de SageMaker. Ce script se trouve à l’étape 3 : Rédaction d’un script capable de calculer le NDVI. Pour en apprendre davantage sur le fonctionnement de l’API
.run(), consultezrundans le kit Amazon SageMaker Python SDK pour le traitement. -
Pour surveiller la progression de votre tâche de traitement, la classe ProcessingJobs prend en charge une méthode describeDescribeProcessingJob. Pour en savoir plus, consultez DescribeProcessingJob dans la Référence des API Amazon SageMaker AI.
La rubrique suivante explique comment créer une instance de la classe ScriptProcessor à l’aide du conteneur géospatial SageMaker, puis comment l’utiliser pour calculer l’indice de végétation par différence normalisée (NDVI) avec des images Sentinel-2.