Configuración de un trabajo de procesamiento de SageMaker Clarify - Amazon SageMaker

Configuración de un trabajo de procesamiento de SageMaker Clarify

Para analizar los datos y los modelos para determinar el sesgo y la explicabilidad con SageMaker Clarify, debe configurar un trabajo de procesamiento de SageMaker Clarify. Esta guía muestra cómo especificar el nombre del conjunto de datos de entrada, el nombre del archivo de configuración de análisis y la ubicación de salida de un trabajo de procesamiento. Para configurar el contenedor de procesamiento, las entradas, las salidas, los recursos y otros parámetros del trabajo, tiene dos opciones. Puede usar la API de SageMaker CreateProcessingJob o la API del SageMaker Python SDK SageMaker ClarifyProcessor.

Para obtener información sobre los parámetros comunes a todos los trabajos de procesamiento, consulte la Referencia de la API de Amazon SageMaker.

Las siguientes instrucciones muestran cómo proporcionar cada parte de la configuración específica de SageMaker Clarify mediante la API CreateProcessingJob.

  1. Introduzca el identificador uniforme de investigación (URI) de una imagen de contenedor de SageMaker Clarify dentro del parámetro AppSpecification, como se muestra en el siguiente ejemplo de código.

    { "ImageUri": "the-clarify-container-image-uri" }
    nota

    El URI debe identificar una imagen de contenedor de SageMaker Clarify prediseñada. ContainerEntrypoint y ContainerArguments no se admiten. Para obtener más información sobre imágenes de contenedores de SageMaker Clarify, consulte Contenedores prediseñados de SageMaker Clarify.

  2. Especifique tanto la configuración del análisis como los parámetros del conjunto de datos de entrada dentro del parámetro ProcessingInputs.

    1. Especifique la ubicación del archivo de configuración del análisis JSON, que incluye los parámetros para el análisis del sesgo y el análisis de explicabilidad. El parámetro InputName del objeto ProcessingInput debe ser analysis_config como se muestra en el siguiente ejemplo de código.

      { "InputName": "analysis_config", "S3Input": { "S3Uri": "s3://your-bucket/analysis_config.json", "S3DataType": "S3Prefix", "S3InputMode": "File", "LocalPath": "/opt/ml/processing/input/config" } }

      Para obtener más información sobre el esquema del archivo de configuración del análisis, consulte Archivos de configuración del análisis.

    2. Especifique la ubicación del conjunto de datos de entrada. El parámetro InputName del objeto ProcessingInput debe ser dataset. Este parámetro es opcional si ha proporcionado el “dataset_uri” en el archivo de configuración del análisis. Los siguientes valores son obligatorios en la configuración de S3Input.

      1. S3Uri puede ser un objeto de Amazon S3 o un prefijo de S3.

      2. S3InputMode debe ser del tipo File.

      3. S3CompressionType debe ser del tipo None (el valor predeterminado).

      4. S3DataDistributionType debe ser del tipo FullyReplicated (el valor predeterminado).

      5. S3DataType puede ser S3Prefix o ManifestFile. Para usar ManifestFile, el parámetro S3Uri debe especificar la ubicación de un archivo de manifiesto que siga el esquema de la sección S3Uri de la referencia de la API de SageMaker. Este archivo de manifiesto debe enumerar los objetos de S3 que contienen los datos de entrada para el trabajo.

      En el siguiente código se muestra un ejemplo de configuración de entrada.

      { "InputName": "dataset", "S3Input": { "S3Uri": "s3://your-bucket/your-dataset.csv", "S3DataType": "S3Prefix", "S3InputMode": "File", "LocalPath": "/opt/ml/processing/input/data" } }
  3. Especifique la configuración de la salida del trabajo de procesamiento dentro del parámetro ProcessingOutputConfig. Se requiere un único objeto ProcessingOutput en la configuración de Outputs. La configuración de salida requiere lo siguiente:

    1. OutputName debe ser analysis_result.

    2. S3Uri debe ser un prefijo de S3 para la ubicación de salida.

    3. S3UploadMode se debe establecer en EndOfJob.

    En el siguiente código se muestra un ejemplo de configuración de salida.

    { "Outputs": [{ "OutputName": "analysis_result", "S3Output": { "S3Uri": "s3://your-bucket/result/", "S3UploadMode": "EndOfJob", "LocalPath": "/opt/ml/processing/output" } }] }
  4. Especifique la configuración ClusterConfig de los recursos que utiliza en el trabajo de procesamiento dentro del parámetro ProcessingResources. Se requieren los siguientes parámetros dentro del objeto ClusterConfig.

    1. InstanceCount especifica el número de instancias de computación del clúster que ejecuta el trabajo de procesamiento. Para trabajos de procesamiento distribuido, especifique un valor mayor que 1.

    2. InstanceType hace referencia a los recursos que ejecuta su trabajo de procesamiento. Como el análisis SHAP de SageMaker requiere un uso intensivo de recursos de computación, el uso de un tipo de instancia que esté optimizado para el cómputo debería mejorar el tiempo de ejecución del análisis. El trabajo de procesamiento de SageMaker Clarify no utiliza GPU.

    En el siguiente código se muestra un ejemplo de configuración de recursos.

    { "ClusterConfig": { "InstanceCount": 1, "InstanceType": "ml.m5.xlarge", "VolumeSizeInGB": 20 } }
  5. Especifique la configuración de la red que utilizará en el trabajo de procesamiento dentro del objeto NetworkConfig. Los siguientes valores son obligatorios en la configuración.

    1. EnableNetworkIsolation debe estar establecido en False (predeterminado) para que SageMaker Clarify pueda invocar un punto de conexión, si es necesario, para realizar predicciones.

    2. Si el modelo o punto de conexión que proporcionó al trabajo de SageMaker Clarify está dentro de una Amazon Virtual Private Cloud (Amazon VPC), el trabajo de SageMaker Clarify también debe estar en la misma VPC. Especifique la VPC mediante VpcConfig. Además, la VPC debe tener puntos de conexión con un bucket de Amazon S3, un servicio de SageMaker y un servicio de tiempo de ejecución de SageMaker.

      Si está activado el procesamiento distribuido, también debe permitir la comunicación entre distintas instancias en el mismo trabajo de procesamiento. Configure una regla para el grupo de seguridad que permita conexiones entrantes entre miembros del mismo grupo de seguridad. Para obtener más información, consulte Conceder acceso a los trabajos de compilación de Amazon SageMaker Clarify a los recursos de su Amazon VPC.

    El código siguiente proporciona un ejemplo de configuración de red.

    { "EnableNetworkIsolation": False, "VpcConfig": { ... } }
  6. Establezca el tiempo máximo que se ejecutará el trabajo mediante el parámetro StoppingCondition. El tiempo máximo que puede durar un trabajo de SageMaker Clarify es de 7 días o 604800 segundos. Si el trabajo no se puede completar dentro de este límite de tiempo, se detendrá y no se proporcionará ningún resultado de análisis. Por ejemplo, la siguiente configuración limita el tiempo máximo de ejecución del trabajo a 3600 segundos.

    { "MaxRuntimeInSeconds": 3600 }
  7. Especifique un rol de IAM para el parámetro RoleArn. El rol debe tener una relación de confianza con Amazon SageMaker. Se puede utilizar para realizar las operaciones de la API de SageMaker que se indican en la siguiente tabla. Se recomienda utilizar la política administrada Amazon SageMakerFullAccess, que otorga acceso total a SageMaker. Para obtener más información sobre esta política, consulte Política administrada por AWS: AmazonSageMakerFullAccess. Si tiene dudas sobre la posibilidad de conceder acceso total, los permisos mínimos necesarios dependen de si proporciona un modelo o un nombre de punto de conexión. El uso de un nombre de punto de conexión permite conceder menos permisos a SageMaker.

    La siguiente tabla contiene las operaciones de API utilizadas por el trabajo de procesamiento de SageMaker Clarify. Una X bajo Nombre del modelo y Nombre del punto de conexión indica la operación de la API necesaria para cada entrada.

    Operación de API Nombre de modelo Endpoint name (Nombre del punto de conexión) Para qué se usa

    ListTags

    X

    Las etiquetas del trabajo se aplican al punto de conexión de sombra.

    CreateEndpointConfig

    X

    Crea la configuración del punto de conexión con el nombre del modelo que proporcionó

    CreateEndpoint

    X

    Crea un punto de conexión de sombra mediante la configuración del punto de conexión.

    DescribeEndpoint

    X

    X

    Describe el estado del punto de conexión; el punto de conexión debe estar InService para atender las solicitudes.

    InvokeEndpoint

    X

    X

    Invoca el punto de conexión para realizar predicciones.

    Para obtener más información acerca de los permisos requeridos, consulte Permisos de la API de Amazon SageMaker: referencia de acciones, permisos y recursos.

    Para obtener más información sobre la transferencia de roles a SageMaker, consulte Transferencia de roles.

    Una vez que tenga las partes individuales de la configuración del trabajo de procesamiento, combínelas para configurar el trabajo.

El siguiente ejemplo de código muestra cómo lanzar un trabajo de procesamiento de SageMaker Clarify mediante el AWS SDK para Python.

sagemaker_client.create_processing_job( ProcessingJobName="your-clarify-job-name", AppSpecification={ "ImageUri": "the-clarify-container-image-uri", }, ProcessingInputs=[{ "InputName": "analysis_config", "S3Input": { "S3Uri": "s3://your-bucket/analysis_config.json", "S3DataType": "S3Prefix", "S3InputMode": "File", "LocalPath": "/opt/ml/processing/input/config", }, }, { "InputName": "dataset", "S3Input": { "S3Uri": "s3://your-bucket/your-dataset.csv", "S3DataType": "S3Prefix", "S3InputMode": "File", "LocalPath": "/opt/ml/processing/input/data", }, }, ], ProcessingOutputConfig={ "Outputs": [{ "OutputName": "analysis_result", "S3Output": { "S3Uri": "s3://your-bucket/result/", "S3UploadMode": "EndOfJob", "LocalPath": "/opt/ml/processing/output", }, }], }, ProcessingResources={ "ClusterConfig": { "InstanceCount": 1, "InstanceType": "ml.m5.xlarge", "VolumeSizeInGB": 20, }, }, NetworkConfig={ "EnableNetworkIsolation": False, "VpcConfig": { ... }, }, StoppingCondition={ "MaxRuntimeInSeconds": 3600, }, RoleArn="arn:aws:iam::<your-account-id>:role/service-role/AmazonSageMaker-ExecutionRole", )

Para ver un ejemplo de cuaderno con instrucciones para ejecutar un trabajo de procesamiento de SageMaker Clarify con el AWS SDK para Python, consulte Fairness and Explainability with SageMaker Clarify using AWS SDK for Python. Todos los buckets de S3 utilizados en el cuaderno deben estar en la misma región de AWS que la instancia de cuaderno que accede al bucket.

También puede configurar un trabajo de procesamiento de SageMaker Clarify mediante SageMaker ClarifyProcessor en la API del SageMaker Python SDK. Para obtener más información, consulte Ejecutar trabajos de procesamiento de SageMaker Clarify para obtener análisis del sesgo y explicabilidad.