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

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

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

您可以使用 SageMaker 澄清处理作业来分析训练数据中的潜在偏差来源,并检查训练过的模型是否存在偏差。有关在 SageMaker 工作室中分析数据的过程,请参阅在 SageMaker 工作室中生成预训练数据偏差报告. 这里的重点是训练后偏差度量和 SHAP 值,用于解释。模型预测可能是偏差的一个来源(例如,如果它们所做的预测更频繁地为一个组产生负结果,而不是另一个组)。SageMaker 澄清与 SageMaker 实验集成在一起,因此在训练模型后,您可以识别要检查偏差的属性(例如,收入)。SageMaker 运行一组算法来检查训练过的模型,并为您提供有关每个属性的不同类型偏差的可视化报告,例如,高收入收入者是否获得比低收入收入者更积极的预测。

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

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

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

  • 计算解释可能比实际推断更花费时间。这包括启动计算资源的时间。

  • 计算解释可能比实际推断更多的计算密集型。查看并监控使用 SageMaker 资源可能产生的费用。有关更多信息,请参阅 。Amazon SageMaker 定价.

运行澄清处理 Job

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

如果您需要有关在 Amazon SageMaker Studio 中打开笔记本的说明,请参阅以及创建或打开 Amazon SageMaker 工作室笔记本电脑. 以下代码示例取自先前列出的示例笔记本电脑。

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

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_pathS3 存储桶。

使用 Spark 运行澄清处理 Job

Apache Spark是用于大规模数据处理的统一分析引擎。使用大型数据集时,您可以使用 SageMaker Clar 的 Spark 处理功能,使您的 “澄清” 处理作业能够更快地运行。要对 “明确” 作业使用 Spark 处理,请将实例计数设置为大于 1 的数字。当每个 Clear 处理器有多个实例时,Clear 使用 Spark 分布式计算。

下面的示例演示如何使用萨格制造商澄清处理器创建一个具有 5 个实例的澄清处理器。

澄清使用 Spark 分布式处理运行与此处理器相关的任何作业。

from sagemaker import clarify clarify_processor = clarify.SageMakerClarifyProcessor(role=role, instance_count=5, instance_type='ml.c5.xlarge', max_runtime_in_seconds=1200, volume_size_in_gb=100)

如果配置 “明确” 作业以将本地 SHAP 值保存在形状配置类时,Spark 会将本地 SHAP 值并行保存为多个部件文件。

如果添加了更多实例,我们建议您还增加模型配置中的实例数模型配置作为阴影端点。这是为了防止处理实例受到影子终端节点的瓶颈。具体而言,我们建议您使用终端节点与处理实例的一对一比率。

获取分析结果

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

  • analysis.json— JSON 格式的偏差量度和 SHAP 值。

  • report.ipynb— 静态笔记本电脑,可视化偏差指标和 SHAP 值。

  • explanations_shap/out.csv— 数据集中每行的本地(每个实例)SHAP 值,格式与输入数据集相同。在每一行上,输出文件都包含每个要素和预测标注的 SHAP 值。

在分析 JSON 文件中,偏差量度和 SHAP 值分为三个单独的部分。

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

SHAP 值位于“explanations”部分。值对应于每个要素列的全局 SHAP 值。

"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 } { . . . } ] } ] } } }

有关偏差量度和 SHAP 值以及如何对其进行解析的详细信息,请参阅亚马逊 AI 公平性和解释性白皮书.

报表笔记本中提供了顶级 SHAP 值的条形图和带有偏差度量的表格。