运行SageMaker Clarify处理作业以进行偏差分析和解释 - Amazon SageMaker
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

运行SageMaker Clarify处理作业以进行偏差分析和解释

您可以使用SageMaker Clarify处理作业分析训练数据中的潜在偏移源,并检查训练后的模型是否存在偏差。有关在 SageMaker Studio 中分析数据的过程,请参阅为 SageMaker Studio 中的预训练数据中的偏差生成报告。此处的重点是训练后偏差指标和用于说明的 SAP 值。模型预测可以是偏移源 (例如, 如果他们进行预测,预测会更频繁地为一个组生成负结果。) SageMaker Clarify 与 集成 SageMaker 进行了实验,以便在训练模型后, 您可以确定要检查偏差的属性(例如, 收入)。 SageMaker 运行一组算法来检查训练后的模型,并为您提供有关每个属性的不同类型的偏差的可视报告。 例如,与低收入玩家相比,高收入玩家是否获得更正面的预测。

SageMaker Clarify 处理作业所需的计算资源

在确定运行SageMaker Clarify处理作业所需的计算资源时,请考虑以下事项:

  • 处理作业可能需要几分钟或更长时间才能完成。

  • 计算说明可能比实际推理更耗时。这包括启动计算资源的时间。

  • 计算说明的计算密集型比实际推理要高。查看和监控使用 SageMaker 资源可能产生的费用。有关更多信息,请参阅 Amazon SageMaker 定价

运行处理作业

有关说明如何在 Studio 中运行SageMaker Clarify处理作业以检测训练后模型偏差的示例笔记本,请参阅 Amazon SageMaker Clarify的可解释性和偏差检测。

如果您需要有关如何在 Amazon SageMaker Studio 中打开笔记本的说明,请参阅创建或打开 Amazon SageMaker Studio 笔记本。从前面列出的示例笔记本中获取以下代码示例。

训练模型后,使用以下命令实例化SageMaker Clarify处理器:

from sagemaker import clarify clarify_processor = clarify.SageMakerClarifyProcessor(role=role, instance_count=1, instance_type='ml.c4.xlarge', sagemaker_session=session)

接下来,配置输入数据集,将输出存储到的位置,使用 DataConfig 对象作为目标标签列,使用 指定有关训练模型的信息ModelConfig,以及使用 提供有关预测格式的信息ModelPredictedLabelConfig

bias_report_output_path = 's3://{}/{}/clarify-bias'.format(bucket, prefix) bias_data_config = clarify.DataConfig(s3_data_input_path=train_uri, s3_output_path=bias_report_output_path, label='Target', headers=training_data.columns.to_list(), dataset_type='text/csv') model_config = clarify.ModelConfig(model_name=model_name, instance_type='ml.c5.xlarge', instance_count=1, accept_type='text/csv') predictions_config = clarify.ModelPredictedLabelConfig(probability_threshold=0.8)

使用 BiasConfig 可提供有关哪些列包含分面(敏感组Sex、)、哪些敏感功能 (facet_values_or_threshold) 以及所需结果是什么 () label_values_or_threshold的信息。

bias_config = clarify.BiasConfig(label_values_or_threshold=[1], facet_name='Sex', facet_values_or_threshold=[0])

您可以使用 同时在处理作业中运行预训练和训练后分析run_bias()

clarify_processor.run_bias(data_config=bias_data_config, bias_config=bias_config, model_config=model_config, model_predicted_label_config=predictions_config, pre_training_methods='all', post_training_methods='all')

在 Studio 中查看结果或从 bias_report_output_path S3 存储桶下载结果。

获取分析结果

处理作业完成后,您可以下载输出文件以在 Studio 中检查或可视化结果。输出目录包含以下文件:

  • analysis.json – JSON 格式的偏差指标和SHAP 值。

  • report.ipynb – 用于可视化偏差指标和 SAP 值的静态笔记本。

  • explanations_shap/out.csv – 数据集中每个行的本地(每个实例)SHAP 值,其格式与输入数据集相同。在每个行上,输出文件包含每个特征和预测标签的 SAP 值。

在分析 JSON 文件中,偏差指标和 SAP 值分为三个单独的部分。

{ "explanations": { . . . } "pre_training_bias_metrics": { . . . } "post_training_bias_metrics": { . . . } }

SAP 值位于 “explanations” 部分中。值对应于每个特征列的全局 SAP 值。

"explanations": { "kernel_shap": { "label0": { "global_shap_values": { "feature_0": 0.022486410860333206, "feature_1": 0.007381025261958729, "feature_2": 0.006843906804137847 }, "expected_value": 0.508233428001 } } }

偏差指标位于训练前和训练后偏差指标部分中。

{ "post_training_bias_metrics": { "label": "target", "label_value_or_threshold": "1", "facets": { "feature_2": [ { "value_or_threshold": "1", "metrics": [ { "name": "DI", "description": "Disparate Impact (DI)", "value": 0.711340206185567 }, { "name": "DCR", "description": "Difference in Conditional Rejections (DCR)", "value": -0.34782608695652184 } { . . . } ] } ] } } }

有关偏差指标和 SAP 值以及如何解释它们的更多信息,请参阅 Amazon AI 公平性和可解释性白皮书

报告笔记本中提供了具有偏差指标的顶部 SAP 值和表的条形图。

Troubleshooting

如果处理作业未完成,您可以尝试以下操作:

  • 直接在运行作业的笔记本中检查作业日志。作业日志位于您启动运行的笔记本单元的输出中。

  • 检查 中的作业日志CloudWatch。

  • 在笔记本中添加以下行以描述上一个处理作业,并查找失败原因和退出消息:

    • clarify_processor.jobs[-1].describe()

  • 执行以下 AWS CLI 命令以描述处理作业,并查找失败原因和退出消息:

    • aws sagemaker describe-processing-job —processing-job-name <processing-job-id>

如果处理作业完成但未找到结果,并且在CloudWatch日志中找到一条警告消息,指出“Signal 15 received, cleaning up (收到信号 15,清除)”,则表示作业已由于使用 StopProcessingJob API 调用的客户请求或作业超出分配时间而停止。在这种情况下,请检查作业配置中的最大运行时 (max_runtime_in_seconds) 并根据需要增加。

失败原因和退出消息旨在包含描述性消息和异常(如果遇到)。一个常见原因是参数无效或缺失。如果您遇到不明确、令人困惑或误导性的消息或无法找到解决方案,请提交反馈。