配置 SageMaker Clarify 处理作业
要使用 SageMaker Clarify 分析数据和模型的偏差和可解释性,必须配置 SageMaker Clarify 处理作业。本指南介绍如何为处理作业指定输入数据集名称、分析配置文件名称和输出位置。有两种选项可用于配置处理容器、作业输入、输出、资源和其他参数。可以使用 SageMaker CreateProcessingJob
API,也可以使用 SageMaker Python SDK API SageMaker ClarifyProcessor
。
有关所有处理作业的通用参数的信息,请参阅 Amazon SageMaker API 参考。
以下说明介绍如何使用 CreateProcessingJob
API 提供 SageMaker Clarify 特定配置的每个部分。
-
在
AppSpecification
参数中输入 SageMaker Clarify 容器映像的统一资源标识符 (URI),如以下代码示例所示。{ "ImageUri": "
the-clarify-container-image-uri
" }注意
URI 必须标识预构建的 SageMaker Clarify 容器映像。
ContainerEntrypoint
和ContainerArguments
不受支持。 -
在
ProcessingInputs
参数中指定分析配置和输入数据集参数。-
指定 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
" } }有关分析配置文件架构的更多信息,请参阅配置分析。
-
指定输入数据集的位置。
ProcessingInput
对象的InputName
参数必须是dataset
。如果您在分析配置文件中提供了“dataset_uri”,则此参数为可选。S3Input
配置中需要以下值。-
S3Uri
可以是 Amazon S3 对象或 S3 前缀。 -
S3InputMode
必须是类型File
。 -
S3CompressionType
必须是类型None
(默认值)。 -
S3DataDistributionType
必须是类型FullyReplicated
(默认值)。 -
S3DataType
可以是S3Prefix
或ManifestFile
。要使用ManifestFile
,S3Uri
参数应指定清单文件的位置,该文件遵循《SageMaker API 参考》的 S3Uri 部分中的架构。此清单文件必须列出包含作业输入数据的 S3 对象。
以下代码显示了输入配置的示例。
{ "InputName": "dataset", "S3Input": { "S3Uri": "
s3://your-bucket/your-dataset.csv
", "S3DataType": "S3Prefix", "S3InputMode": "File", "LocalPath": "/opt/ml/processing/input/data
" } } -
-
-
在
ProcessingOutputConfig
参数中指定处理作业输出的配置。Outputs
配置中需要单个ProcessingOutput
对象。输出配置的要求如下:-
OutputName
必须是analysis_result
。 -
S3Uri
必须是输出位置的 S3 前缀。 -
S3UploadMode
必须设置为EndOfJob
。
以下代码显示了输出配置的示例。
{ "Outputs": [{ "OutputName": "analysis_result", "S3Output": { "S3Uri": "
s3://your-bucket/result/
", "S3UploadMode": "EndOfJob", "LocalPath": "/opt/ml/processing/output
" } }] } -
-
在
ProcessingResources
参数中为处理作业中使用的资源指定配置ClusterConfig
。ClusterConfig
对象内部需要以下参数。-
InstanceCount
指定集群中运行处理作业的计算实例的数量。请指定一个大于1
的值,以激活分布式处理。 -
InstanceType
是指运行处理作业的资源。由于 SageMaker SHAP 分析是计算密集型,因此使用针对计算进行了优化的实例类型应该可以缩短分析的运行时间。SageMaker Clarify 处理作业不使用 GPU。
以下代码显示了资源配置的示例。
{ "ClusterConfig": { "InstanceCount":
1
, "InstanceType": "ml.m5.xlarge
", "VolumeSizeInGB":20
} } -
-
在
NetworkConfig
对象中指定处理作业中使用的网络配置。配置中需要以下值。-
EnableNetworkIsolation
必须设置为False
(默认),这样 SageMaker Clarify 才能在必要时调用端点进行预测。 -
如果您提供给 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": { ... } }
-
-
使用
StoppingCondition
参数设置作业运行的最长时间。SageMaker Clarify 作业可以运行的最长时间为7
天或604800
秒。如果无法在此时限内完成作业,则作业将停止,并且不会提供任何分析结果。例如,以下配置将作业的最长运行时间限制为 3600 秒。{ "MaxRuntimeInSeconds": 3600 }
-
为
RoleArn
参数指定 IAM 角色。该角色必须与 Amazon SageMaker 具有信任关系。它可用于执行下表中列出的 SageMaker API 操作。我们建议使用 Amazon SageMakerFullAccess 托管策略,该策略授予对 SageMaker 的完全访问权限。如果您对授予完全访问权限有疑虑,则所需的最低权限取决于您提供的是模型还是端点名称。使用端点名称可以减少向 SageMaker 授予的权限。下表包含 SageMaker Clarify 处理作业使用的 API 操作。模型名称和端点名称下的
X
注明了每个输入所需的 API 操作。API 操作 模型名称 终端节点名称 用途 X
作业的标签将应用于影子端点。
X
使用您提供的模型名称创建端点配置。
X
使用端点配置创建影子端点。
X
X
描述端点的状态,端点必须为 InService 才能处理请求。
X
X
调用端点进行预测。
有关所需权限的更多信息,请参阅 Amazon SageMaker API 权限:操作、权限和资源参考。
有关将角色传递给 SageMaker 的更多信息,请参阅传递角色。
获得处理作业配置的各个部分后,将它们组合起来配置作业。
以下代码示例展示了如何使用 Amazon SDK for 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
", )
有关示例笔记本和使用 Amazon SDK for Python 运行 SageMaker Clarify 处理作业的说明,请参阅使用 Amazon SDK for Python 实现 SageMaker Clarify 的公平性和可解释性
您也可以使用 SageMaker Python SDK API 中的 SageMaker ClarifyProcessor