Überblick: Verarbeitungsaufträge mit ScriptProcessor und einem SageMaker Geocontainer ausführen
SageMaker Geospatial bietet einen speziell entwickelten Verarbeitungscontainer, 081189585635.dkr.ecr.us-west-2.amazonaws.com/sagemaker-geospatial-v1-0:latest. Sie können diesen Container verwenden, wenn Sie einen Job mit Amazon SageMaker Processing ausführen. Wenn Sie eine Instance der ScriptProcessorimage_uri an.
Anmerkung
Wenn Sie beim Versuch, einen Verarbeitungsjob zu starten, einen ResourceLimitExceeded-Fehler erhalten, müssen Sie eine Erhöhung des Kontingents beantragen. Informationen zur Beantragung einer Quotenerhöhung für Service Quotas finden Sie unter Beantragung einer Quotenerhöhung im Service Quotas-Benutzerhandbuch
Voraussetzungen für die Verwendung von ScriptProcessor
-
Sie haben ein Python Skript erstellt, das Ihre Geospatial-ML-Arbeitslast spezifiziert.
-
Sie haben der SageMaker-AI-Ausführungsrolle Zugriff auf alle benötigten Amazon-S3-Buckets gewährt.
-
Bereiten Sie Ihre Daten für den Import in den Container vor. Amazon SageMaker Processing-Jobs unterstützen entweder das Setzen von
s3_data_typegleich"ManifestFile"oder auf"S3Prefix".
Das folgende Verfahren zeigt Ihnen, wie Sie eine Instance von ScriptProcessor erstellen und einen Amazon SageMaker Processing Job unter Verwendung des SageMaker Geospatial Containers übermitteln.
Um eine ScriptProcessor Instance zu erstellen und einen Amazon SageMaker Processing-Job mit einem SageMaker-Geodatencontainer einzureichen
-
Instanziieren Sie eine Instance der
ScriptProcessorKlasse mithilfe des Geodatenbilds von 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)Ersetzen Sie
execution_role_arndurch den ARN der SageMaker-AI-Ausführungsrolle, die Zugriff auf die in Amazon S3 und allen anderen AWS-Services gespeicherten Eingabedaten hat, die Sie in Ihrem Verarbeitungsauftrag aufrufen möchten. Sie können dieinstance_countund dieinstance_typeaktualisieren, um sie an die Anforderungen Ihres Verarbeitungsjobs anzupassen. -
Verwenden Sie die folgende
.run()Methode, um einen Verarbeitungsjob zu starten:# 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) ] )-
Ersetzen Sie
preprocessing.pydurch den Namen Ihres eigenen Python-Datenverarbeitungsskripts. -
Ein Verarbeitungsjob unterstützt zwei Methoden zum Formatieren Ihrer Eingabedaten. Sie können entweder eine Manifestdatei erstellen, die auf alle Eingabedaten für Ihren Verarbeitungsauftrag verweist, oder Sie können für jede einzelne Dateneingabe ein gemeinsames Präfix verwenden. Wenn Sie eine Manifestdatei erstellt haben, die
s3_manifest_urigleich"ManifestFile"ist. Wenn Sie ein Dateipräfix verwendet haben, dass3_manifest_urigleich"S3Prefix"gesetzt ist. Sie geben den Pfad zu Ihren Daten mitsourcean. -
Sie können die Daten Ihres Verarbeitungsauftrags auf zwei Arten verteilen:
-
Verteilen Sie Ihre Daten auf alle Verarbeitungsinstances, indem Sie
s3_data_distribution_typegleichFullyReplicatedsetzen. -
Verteilen Sie Ihre Daten auf der Grundlage des Amazon S3-Schlüssels in Shards, indem Sie
s3_data_distribution_typegleichShardedByS3Keysetzen. Bei der Verwendung vonShardedByS3Keywird an jede Verarbeitungsinstance ein Datenbruchstück gesendet.
-
Sie können ein Skript verwenden, um Geodaten von SageMaker zu verarbeiten. Dieses Skript finden Sie in Schritt 3: Schreiben eines Skripts, das den NDVI berechnen kann. Weitere Informationen zum
.run()API-Betrieb finden Sie unterrunim Amazon SageMaker Python SDK für die Verarbeitung. -
Um den Fortschritt Ihres Verarbeitungsauftrags zu überwachen, unterstützt die ProcessingJobs Klasse eine describeDescribeProcessingJob API-Aufruf zurück. Weitere Informationen finden Sie unter DescribeProcessingJob in der API-Referenz zu Amazon SageMaker AI.
Im nächsten Thema erfahren Sie, wie Sie mithilfe des Geodatencontainers von SageMaker eine Instance der ScriptProcessor-Klasse erstellen und ihn dann verwenden, um den Normalized Difference Vegetation Index (NDVI) mit Sentinel-2-Bildern zu berechnen.