Panoramica: Esegui i processi di elaborazione utilizzando ScriptProcessor e un container SageMaker geospaziale - Amazon SageMaker AI

Panoramica: Esegui i processi di elaborazione utilizzando ScriptProcessor e un container SageMaker geospaziale

SageMaker Geospatial fornisce un container di elaborazione appositamente progettato, 081189585635.dkr.ecr.us-west-2.amazonaws.com/sagemaker-geospatial-v1-0:latest. Puoi utilizzare questo container durante l'esecuzione di un processo con Amazon SageMaker Processing. Quando crei un'istanza della classe ScriptProcessor disponibile tramite Amazon SageMaker Python SDK for Processing, devi specificare image_uri.

Nota

Se quando provi ad avviare un processo di elaborazione ricevi un errore ResourceLimitExceeded, devi richiedere un aumento della quota. Per richiedere un aumento della quota in Service Quotas, consulta Requesting a quota increase in Guida per l'utente di Service Quotas

Prerequisiti per l'utilizzo di ScriptProcessor
  1. Aver creato uno script Python che specifica il tuo carico di lavoro ML geospaziale.

  2. Aver concesso al ruolo di esecuzione di SageMaker AI l’accesso a tutti i bucket Amazon S3 necessari.

  3. Preparazione dei dati per l'importazione nel container. I processi di Amazon SageMaker Processing supportano l'impostazione di s3_data_type uguale a "ManifestFile" o a "S3Prefix".

La procedura seguente mostra come creare un'istanza ScriptProcessor e inviare un processo di Amazon SageMaker Processing utilizzando il container SageMaker geospaziale.

Per creare un'istanza ScriptProcessor e inviare un processo di Elaborazione Amazon SageMaker utilizzando un container SageMaker geospaziale
  1. Crea un'istanza della classe ScriptProcessor utilizzando l'immagine SageMaker geospaziale:

    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 )

    Sostituisci execution_role_arn con l’ARN del ruolo di esecuzione di SageMaker che ha accesso ai dati di input archiviati in Amazon S3 e qualsiasi altro servizio AWS che desideri chiamare nel processo di elaborazione. Puoi aggiornare instance_count e instance_type in modo che soddisfino i requisiti del tuo processo di elaborazione.

  2. Per avviare un processo di elaborazione, utilizza il metodo .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 ) ] )
    • Sostituisci preprocessing.py con il nome del tuo script di elaborazione di dati in Python.

    • Un processo di elaborazione supporta due metodi per formattare i tuoi dati di input. Puoi creare un file manifest che rimandi a tutti i dati di input per il tuo processo di elaborazione oppure utilizzare un prefisso comune su ogni singolo input di dati. Se hai creato un file manifest, imposta s3_manifest_uri uguale a "ManifestFile". Se hai utilizzato un prefisso del file, imposta s3_manifest_uri uguale a "S3Prefix". Specifica il percorso dei tuoi dati utilizzando source.

    • Puoi distribuire i dati del tuo processo di elaborazione in due modi:

      • Distribuisci i tuoi dati su tutte le istanze di elaborazione impostando s3_data_distribution_type uguale a FullyReplicated.

      • Distribuisci i tuoi dati in shard basati sulla chiave Amazon S3 impostando s3_data_distribution_type uguale a ShardedByS3Key. Quando utilizzi ShardedByS3Key , a ogni istanza di elaborazione viene inviato uno shard di dati.

    Puoi utilizzare uno script per elaborare i dati di SageMaker Geospatial. Lo script è disponibile nella Fase 3: scrittura di uno script in grado di calcolare l'NDVI. Per ulteriori informazioni sull’operazione API .run(), consulta run in Amazon SageMaker Python SDK for Processing.

Per monitorare l'avanzamento del tuo processo di elaborazione, la classe ProcessingJobs supporta un metodo describe. Questo metodo restituisce una risposta dalla chiamata API DescribeProcessingJob. Per ulteriori informazioni, consulta DescribeProcessingJob nella documentazione di riferimento dell’API di Amazon SageMaker AI.

L’argomento successivo spiega come creare un’istanza della classe ScriptProcessor con il container di dati geospaziali SageMaker e come utilizzarla per calcolare l’indice di vegetazione della differenza normalizzata (NDVI) con le immagini Sentinel-2.