Información general: Ejecución de trabajos de procesamiento utilizando el ScriptProcessor y un contenedor geoespacial de SageMaker - Amazon SageMaker AI

Información general: Ejecución de trabajos de procesamiento utilizando el ScriptProcessor y un contenedor geoespacial de SageMaker

SageMaker geoespacial proporciona un contenedor diseñado específicamente, 081189585635.dkr.ecr.us-west-2.amazonaws.com/sagemaker-geospatial-v1-0:latest. Puede usar este contenedor cuando ejecute un trabajo con el procesamiento de Amazon SageMaker. Cuando cree una instancia de la clase ScriptProcessor que esté disponible a través del Amazon SageMaker Python SDK, especifique este image_uri.

nota

Si recibe el error ResourceLimitExceeded al intentar iniciar un trabajo de procesamiento, debe solicitar un aumento de cuota. Para aprender a solicitar un aumento de cuota, consulte Solicitud de aumento de cuota en la Guía del usuario de Service Quotas.

Requisitos previos para utilizar ScriptProcessor
  1. Ha creado un script Python que especifica su carga de trabajo de machine learning geoespacial.

  2. Ha concedido al rol de ejecución de SageMaker AI acceso a todos los buckets de Amazon S3 que sean necesarios.

  3. Preparación de los datos para importarlos al contenedor. Los trabajos de procesamiento de Amazon SageMaker admiten establecer el valor s3_data_type igual a "ManifestFile" o a "S3Prefix".

El siguiente procedimiento le muestra cómo crear una instancia del ScriptProcessor y enviar un trabajo de procesamiento de Amazon SageMaker mediante el contenedor geoespacial SageMaker.

Para crear una instancia de ScriptProcessor y enviar un trabajo de procesamiento de Amazon SageMaker mediante un contenedor geoespacial de SageMaker
  1. Cree una instancia de la clase ScriptProcessor mediante la imagen geoespacial de 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 )

    Sustituya execution_role_arn por el ARN del rol de ejecución de SageMaker AI que tenga acceso a los datos de entrada almacenados en Amazon S3 y cualquier otro servicio de AWS al que desee llamar en su trabajo de procesamiento. Puede actualizar el instance_count y el instance_type para que coincidan con los requisitos de su trabajo de procesamiento.

  2. Para iniciar un trabajo de procesamiento, utilice el método .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 ) ] )
    • Sustituya preprocessing.py por el nombre de su propio script de procesamiento de datos de Python.

    • Un trabajo de procesamiento admite dos métodos para formatear los datos de entrada. Puede crear un archivo de manifiesto que apunte a todos los datos de entrada para su trabajo de procesamiento o puede usar un prefijo común en cada entrada de datos individual. Si ha creado un archivo de manifiesto, establezca un s3_manifest_uri igual a "ManifestFile". Si usó un conjunto de prefijos de archivo s3_manifest_uri igual a "S3Prefix". Para especificar la ruta de acceso a sus datos, utilice source.

    • Puede distribuir los datos del trabajo de procesamiento de dos maneras:

      • Distribuya sus datos a todas las instancias de procesamiento estableciendo un valor s3_data_distribution_type igual a FullyReplicated.

      • Distribuya sus datos en fragmentos en particiones en función de la clave de Amazon S3 estableciendo un valor de s3_data_distribution_type igual a ShardedByS3Key. Cuando se utiliza ShardedByS3Key, se envía una partición de datos a cada instancia de procesamiento.

    Puede utilizar un script para procesar los datos geoespaciales de SageMaker. Ese script se encuentra en el Paso 3: Escritura de un script que pueda calcular el NDVI. Para obtener más información sobre el funcionamiento de la API .run(), consulte run en Amazon SageMaker Python SDK para el procesamiento.

Para supervisar el progreso de su trabajo de procesamiento, la clase ProcessingJobs admite un método describe. Este método devuelve una respuesta de la llamada a la API DescribeProcessingJob. Para obtener más información, consulte DescribeProcessingJob en la Referencia de la API de Amazon SageMaker AI.

En el siguiente tema, se muestra cómo crear una instancia de la clase ScriptProcessor mediante el contenedor de SageMaker geoespacial y, a continuación, cómo usarla para calcular el Índice de Vegetación Diferencial Normalizado (NDVI) con imágenes de Sentinel-2.