配置 SageMaker Clarify 处理作业 - Amazon SageMaker
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

配置 SageMaker Clarify 处理作业

要使用 SageMaker Clarify 分析数据和模型的偏差和可解释性,必须配置 SageMaker Clarify 处理作业。本指南介绍如何为处理作业指定输入数据集名称、分析配置文件名称和输出位置。有两种选项可用于配置处理容器、作业输入、输出、资源和其他参数。可以使用 SageMaker CreateProcessingJob API,也可以使用 SageMaker Python SDK API SageMaker ClarifyProcessor

有关所有处理作业的通用参数的信息,请参阅 Amazon SageMaker API 参考

以下说明介绍如何使用 CreateProcessingJob API 提供 SageMaker Clarify 特定配置的每个部分。

  1. AppSpecification 参数中输入 SageMaker Clarify 容器映像的统一资源标识符 (URI),如以下代码示例所示。

    { "ImageUri": "the-clarify-container-image-uri" }
    注意

    URI 必须标识预构建的 SageMaker Clarify 容器映像ContainerEntrypointContainerArguments 不受支持。

  2. ProcessingInputs 参数中指定分析配置和输入数据集参数。

    1. 指定 JSON 分析配置文件的位置,该文件包含用于偏差分析和可解释性分析的参数。ProcessingInput 对象的 InputName 参数必须是 analysis_config,如以下代码示例所示。

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

      有关分析配置文件架构的更多信息,请参阅配置分析

    2. 指定输入数据集的位置。ProcessingInput 对象的 InputName 参数必须是 dataset。如果您在分析配置文件中提供了“dataset_uri”,则此参数为可选。S3Input 配置中需要以下值。

      1. S3Uri 可以是 Amazon S3 对象或 S3 前缀。

      2. S3InputMode 必须是类型 File

      3. S3CompressionType 必须是类型 None(默认值)。

      4. S3DataDistributionType 必须是类型 FullyReplicated(默认值)。

      5. S3DataType 可以是 S3PrefixManifestFile。要使用 ManifestFileS3Uri 参数应指定清单文件的位置,该文件遵循《SageMaker API 参考》的 S3Uri 部分中的架构。此清单文件必须列出包含作业输入数据的 S3 对象。

      以下代码显示了输入配置的示例。

      { "InputName": "dataset", "S3Input": { "S3Uri": "s3://your-bucket/your-dataset.csv", "S3DataType": "S3Prefix", "S3InputMode": "File", "LocalPath": "/opt/ml/processing/input/data" } }
  3. ProcessingOutputConfig 参数中指定处理作业输出的配置。Outputs 配置中需要单个 ProcessingOutput 对象。输出配置的要求如下:

    1. OutputName 必须是 analysis_result

    2. S3Uri 必须是输出位置的 S3 前缀。

    3. S3UploadMode 必须设置为 EndOfJob

    以下代码显示了输出配置的示例。

    { "Outputs": [{ "OutputName": "analysis_result", "S3Output": { "S3Uri": "s3://your-bucket/result/", "S3UploadMode": "EndOfJob", "LocalPath": "/opt/ml/processing/output" } }] }
  4. ProcessingResources 参数中为处理作业中使用的资源指定配置 ClusterConfigClusterConfig 对象内部需要以下参数。

    1. InstanceCount 指定集群中运行处理作业的计算实例的数量。请指定一个大于 1 的值,以激活分布式处理。

    2. InstanceType 是指运行处理作业的资源。由于 SageMaker SHAP 分析是计算密集型,因此使用针对计算进行了优化的实例类型应该可以缩短分析的运行时间。SageMaker Clarify 处理作业不使用 GPU。

    以下代码显示了资源配置的示例。

    { "ClusterConfig": { "InstanceCount": 1, "InstanceType": "ml.m5.xlarge", "VolumeSizeInGB": 20 } }
  5. NetworkConfig 对象中指定处理作业中使用的网络配置。配置中需要以下值。

    1. EnableNetworkIsolation 必须设置为 False(默认),这样 SageMaker Clarify 才能在必要时调用端点进行预测。

    2. 如果您提供给 SageMaker Clarify 作业的模型或端点位于 Amazon Virtual Private Cloud (Amazon VPC) 中,则 SageMaker Clarify 作业也必须位于同一 VPC 中。使用 VpcConfig 指定 VPC。此外,该 VPC 必须具有指向 Amazon S3 存储桶、SageMaker 服务和 SageMaker Runtime 服务的端点。

      如果激活了分布式处理,则还必须允许同一处理作业中的不同实例之间进行通信。请为您的安全组配置规则,以允许同一安全组的成员之间实现入站连接。有关更多信息,请参阅为 Amazon SageMaker Clarify 作业授予对 Amazon VPC 中资源的访问权限

    以下代码显示了网络配置的示例。

    { "EnableNetworkIsolation": False, "VpcConfig": { ... } }
  6. 使用 StoppingCondition 参数设置作业运行的最长时间。SageMaker Clarify 作业可以运行的最长时间为 7 天或 604800 秒。如果无法在此时限内完成作业,则作业将停止,并且不会提供任何分析结果。例如,以下配置将作业的最长运行时间限制为 3600 秒。

    { "MaxRuntimeInSeconds": 3600 }
  7. RoleArn 参数指定 IAM 角色。该角色必须与 Amazon SageMaker 具有信任关系。它可用于执行下表中列出的 SageMaker API 操作。我们建议使用 Amazon SageMakerFullAccess 托管策略,该策略授予对 SageMaker 的完全访问权限。如果您对授予完全访问权限有疑虑,则所需的最低权限取决于您提供的是模型还是端点名称。使用端点名称可以减少向 SageMaker 授予的权限。

    下表包含 SageMaker Clarify 处理作业使用的 API 操作。模型名称端点名称下的 X 注明了每个输入所需的 API 操作。

    API 操作 模型名称 终端节点名称 用途

    ListTags

    X

    作业的标签将应用于影子端点。

    CreateEndpointConfig

    X

    使用您提供的模型名称创建端点配置。

    CreateEndpoint

    X

    使用端点配置创建影子端点。

    DescribeEndpoint

    X

    X

    描述端点的状态,端点必须为 InService 才能处理请求。

    InvokeEndpoint

    X

    X

    调用端点进行预测。

    有关所需权限的更多信息,请参阅 Amazon SageMaker API 权限:操作、权限和资源参考

    有关将角色传递给 SageMaker 的更多信息,请参阅传递角色

    获得处理作业配置的各个部分后,将它们组合起来配置作业。

以下代码示例展示了如何使用 Amazon SDK for Python 启动 SageMaker Clarify 处理作业。

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", )

有关示例笔记本和使用 Amazon SDK for Python 运行 SageMaker Clarify 处理作业的说明,请参阅使用 Amazon SDK for Python 实现 SageMaker Clarify 的公平性和可解释性。笔记本中使用的任何 S3 存储桶都必须与访问该存储桶的笔记本实例位于同一 Amazon 区域。

您也可以使用 SageMaker Python SDK API 中的 SageMaker ClarifyProcessor 配置 SageMaker Clarify 处理作业。有关更多信息,请参阅运行 SageMaker Clarify 处理作业以进行偏差分析和实现可解释性