运行 Cl SageMaker arify 处理作业以实现偏见分析和可解释性 - Amazon SageMaker

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

运行 Cl SageMaker arify 处理作业以实现偏见分析和可解释性

要使用 SageMaker Clarify 分析您的数据和模型的偏差和可解释性,您必须配置 Clarify 处理 SageMaker 作业。本指南介绍如何使用 SageMaker Python 配置作业输入、输出、资源和分析配置SDKAPISageMakerClarifyProcessor

API充当. 的高级封装器。 SageMaker CreateProcessingJob API它隐藏了设置 Clarify 处理任务所涉及的 SageMaker 许多细节。设置作业的详细信息包括检索 Clarif SageMaker y 容器镜像URI和生成分析配置文件。以下步骤向您展示如何配置、初始化和启动 Clarif SageMaker y 处理作业。

使用配置 SageMaker 澄清处理作业 API
  1. 为作业配置的每个部分定义配置对象。这些部分可包括以下内容:

    Clarify SageMaker 处理作业的配置对象因数据格式和用例的不同类型而异。以下各节提供了表格数据JSON Lines格式CSV和格式、自然语言处理 (NLP)、computer vision (CV) 和时间序列 (TS) 问题的配置示例。

  2. 创建 SageMakerClarifyProcessor 对象并使用指定作业资源的参数对其进行初始化。这些资源包括要使用的计算实例数量等参数。

    以下代码示例演示如何创建 SageMakerClarifyProcessor 对象并指示其使用一个 ml.c4.xlarge 计算实例进行分析。

    from sagemaker import clarify clarify_processor = clarify.SageMakerClarifyProcessor( role=role, instance_count=1, instance_type='ml.c4.xlarge', sagemaker_session=session, )
  3. 使用您的用例的配置SageMakerClarifyProcessor对象调用对象的特定运行方法以启动作业。这些运行方法包括:

    • run_pre_training_bias

    • run_post_training_bias

    • run_bias

    • run_explainability

    • run_bias_and_explainability

    SageMakerClarifyProcessor 在后台处理多项任务。这些任务包括检索 Clarify 容器镜像通用资源标识符 (URI)、根据提供的配置对象撰写分析配置文件、将文件上传到 Amazon S3 存储桶以及配置 Clarify 处理 SageMaker 任务。 SageMaker

    以下可扩展部分展示了如何计算训练前和训练后的偏差指标SHAP 值部分依赖图 (PDPs)。 以下各节显示了这些数据类型的功能重要性:

    • CSV格式或JSON线条格式的表格数据集

    • 自然语言处理 (NLP) 数据集

    • 计算机视觉数据集

可扩展部分提供了使用 Spark 通过分布式训练运行 parallel Clarify 处理作业的指南。 SageMaker

以下示例说明如何为格式的表格数据集配置偏见分析和可解释性分析。CSV在这些示例中,传入的数据集有四个特征列和一个二进制标签列 Target。数据集的内容如下所示。标签值为 1 表示结果为阳性。

Target,Age,Gender,Income,Occupation 0,25,0,2850,2 1,36,0,6585,0 1,22,1,1759,1 0,48,0,3446,1 ...

DataConfig 对象指定输入数据集以及输出的存储位置。该s3_data_input_path参数可以是数据集文件URI中的参数,也可以是 Amazon S3 URI 前缀。如果您提供 S3 URI 前缀,则 Clarif SageMaker y 处理任务会以递归方式收集位于该前缀下的所有 Amazon S3 文件。的值s3_output_path应为 S3 URI 前缀以保存分析结果。 SageMaker 在编译s3_output_path时使用,并且不能取运行时使用的 Pip SageMaker eline 参数、属性ExecutionVariable、表达式或的值。以下代码示例说明如何为前述示例输入数据集指定数据配置。

data_config = clarify.DataConfig( s3_data_input_path=dataset_s3_uri, dataset_type='text/csv', headers=['Target', 'Age', 'Gender', 'Income', 'Occupation'], label='Target', s3_output_path=clarify_job_output_s3_uri, )

如何计算数据集的所有训练前偏差指标 CSV

以下代码示例说明如何配置 BiasConfig 对象,以测量前述示例输入对 Gender 值为 0 的样本的偏差。

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

以下代码示例说明如何使用 run 语句启动 Clarify 处理作业,该作业计算输入数据集的所有预训练偏差指标。 SageMaker

clarify_processor.run_pre_training_bias( data_config=data_config, data_bias_config=bias_config, methods="all", )

或者,您可以通过向 methods 参数分配训练前偏差指标列表来选择要计算的指标。例如,methods="all"替换为methods=["CI", "DPL"]会指示 Clari SageMaker fy Processo r 仅计算类别不平衡标签比例差异

如何计算数据集的所有训练后偏差指标 CSV

您可以在训练前计算训练前偏差指标。但是,要计算训练后偏差指标,必须拥有经过训练的模型。以下示例输出来自以CSV格式输出数据的二进制分类模型。在此示例输出中,每行包含两列。第一列包含预测标签,第二列包含该标签的概率值。

0,0.028986845165491 1,0.825382471084594 ...

在以下示例配置中,ModelConfig对象指示作业将 SageMaker 模型部署到临时端点。该端点使用一个 ml.m4.xlarge 推理实例。由于未设置参数 content_typeaccept_type,因此它们会自动使用参数 dataset_type 的值,即 text/csv

model_config = clarify.ModelConfig( model_name=your_model, instance_type='ml.m4.xlarge', instance_count=1, )

以下配置示例使用标签索引为 0ModelPredictedLabelConfig 对象。这会指示 C SageMaker larify 处理作业在模型输出的第一列中找到预测的标签。在本例中,处理作业使用零基索引。

predicted_label_config = clarify.ModelPredictedLabelConfig( label=0, )

结合前面的配置示例,以下代码示例启动了 Clarif SageMaker y 处理作业,以计算训练后的所有偏差指标。

clarify_processor.run_post_training_bias( data_config=data_config, data_bias_config=bias_config, model_config=model_config, model_predicted_label_config=predicted_label_config, methods="all", )

同样,您可以通过向 methods 参数分配训练后偏差指标列表来选择要计算的指标。例如,将 methods=“all” 替换为 methods=["DPPL", "DI"],便可仅计算预测标签中正比例的差异差别影响

如何计算CSV数据集的所有偏差指标

以下配置示例显示了如何在一个 SageMaker Clarify 处理作业中运行所有训练前和训练后的偏差指标。

clarify_processor.run_bias( data_config=data_config, bias_config=bias_config, model_config=model_config, model_predicted_label_config=predicted_label_config, pre_training_methods="all", post_training_methods="all", )

有关如何在 SageMaker Studio Classic 中运行 Clari SageMaker fy 处理作业以检测偏见的说明的示例笔记本,请参阅使用 Clarify 实现公平性和可 SageMaker 解释性

如何计算 SHAP CSV数据集的值

SageMaker Clarify 使用内核SHAP算法提供特征归因。SHAP 分析需要概率值或分数而不是预测标签,因此此ModelPredictedLabelConfig对象具有概率指数1。这指示 Cl SageMaker arify 处理作业从模型输出的第二列中提取概率分数(使用从零开始的索引)。

probability_config = clarify.ModelPredictedLabelConfig( probability=1, )

SHAPConfig对象提供 SHAP 分析参数。在这个例子中,SHAP baseline参数被省略,num_clusters参数的值为1。这会指示 Clari SageMaker fy 处理器计算一个 SHAP 基于对输入数据集进行聚类的基线样本。如果要选择基线数据集,请参阅 SHAP 可解释性的基准。

shap_config = clarify.SHAPConfig( num_clusters=1, )

以下代码示例启动 Clari SageMaker fy 处理任务进行计算 SHAP 价值观。

clarify_processor.run_explainability( data_config=data_config, model_config=model_config, model_scores=probability_config, explainability_config=shap_config, )

有关如何在 SageMaker Studio Classic 中运行 Cl SageMaker arify 处理作业进行计算的示例笔记本 SHAP 值,请参阅 Clarify 的公平性和可解释性。 SageMaker

如何计算部分依赖图 (PDPs) 用于CSV数据集

PDPs 在保持所有其他特征不变的情况下,显示预测的目标响应对一个或多个感兴趣的输入特征的依赖性。向上倾斜的直线或曲线表示目标要素和输入要素之间的关系为正,陡度表示关系的强度。PDP向下倾斜线或曲线表示如果输入特征减少,目标变量就会增加。直观地说,您可以将部分依赖性解释为目标变量对每个相关输入特征的响应。

以下配置示例用于使用PDPConfig对象指示 Clari SageMaker fy 处理作业计算该Income功能的重要性。

pdp_config = clarify.PDPConfig( features=["Income"], grid_resolution=10, )

在前面的示例中,grid_resolution 参数将 Income 特征值的范围划分为多个 10 存储桶。 SageMaker 澄清处理任务将生成 PDPs 用于在 x 轴上分Income割成10段。y 轴将显示 Income 对目标变量的边际影响。

以下代码示例启动 Clari SageMaker fy 处理任务进行计算 PDPs.

clarify_processor.run_explainability( data_config=data_config, model_config=model_config, model_scores=probability_config, explainability_config=pdp_config, )

有关如何在 SageMaker Studio Classic 中运行 Cl SageMaker arify 处理作业进行计算的示例笔记本 PDPs,参见 Clarif y- SageMaker 部分依赖图的可解释性 () PDP

如何两者兼而有之 SHAP 值和 PDPs 对于数据CSV集

你可以同时计算 SHAP 值和 PDPs 在单个 Clar SageMaker ify 处理作业中。在以下配置示例中,新 PDPConfig 对象的 top_k_features 参数设置为 2。这会指示 Clari SageMaker fy 处理任务进行计算 PDPs 以获得全球最大的2功能 SHAP 价值观。

shap_pdp_config = clarify.PDPConfig( top_k_features=2, grid_resolution=10, )

以下代码示例启动 Clari SageMaker fy 处理作业来计算两者 SHAP 值和 PDPs.

clarify_processor.run_explainability( data_config=data_config, model_config=model_config, model_scores=probability_config, explainability_config=[shap_config, shap_pdp_config], )

以下示例说明如何为 > Lin SageMaker JSON es 密集格式的表格数据集配置偏差分析和可解释性分析。请参阅JSONLINES请求格式了解更多信息。在这些示例中,传入的数据集与上一节的数据相同,但它们采用 Lin JSON es 格式。每行都是一个有效的JSON对象。键 Features 指向特征值数组,键 Label 指向 Ground Truth 标签。

{"Features":[25,0,2850,2],"Label":0} {"Features":[36,0,6585,0],"Label":1} {"Features":[22,1,1759,1],"Label":1} {"Features":[48,0,3446,1],"Label":0} ...

在以下配置示例中,DataConfig 对象指定了输入数据集以及输出的存储位置。

data_config = clarify.DataConfig( s3_data_input_path=jsonl_dataset_s3_uri, dataset_type='application/jsonlines', headers=['Age', 'Gender', 'Income', 'Occupation', 'Target'], label='Label', features='Features', s3_output_path=clarify_job_output_s3_uri, )

在前面的配置示例中,将 features 参数设置为JMESPath表达式,Features这样 Clarify 处理作业就可以从每条记录中提取特征数组。 SageMaker 该label参数设置为 expr JMESPath ession,Label这样 Clarify 处理作业就可以从每条记录中提取基本真相标签。 SageMaker 该s3_data_input_path参数可以是数据集文件URI中的参数,也可以是 Amazon S3 URI 前缀。如果您提供 S3 URI 前缀,则 Clarif SageMaker y 处理任务会以递归方式收集位于该前缀下的所有 S3 文件。的值s3_output_path应为 S3 URI 前缀以保存分析结果。 SageMaker 在编译s3_output_path时使用,并且不能取运行时使用的 Pip SageMaker eline 参数、属性ExecutionVariable、表达式或的值。

您必须拥有经过训练的模型,才能计算训练后偏差指标或特征重要性。以下示例来自二元分类模型,该模型以示例的格式输出 Lin JSON es 数据。模型输出的每一行都是一个有效的JSON对象。键 predicted_label 指向预测标签,键 probability 指向概率值。

{"predicted_label":0,"probability":0.028986845165491} {"predicted_label":1,"probability":0.825382471084594} ...

在以下配置示例中,ModelConfig对象指示 Clari SageMaker fy 处理作业将 SageMaker 模型部署到临时端点。该端点使用一个 ml.m4.xlarge 推理实例。

model_config = clarify.ModelConfig( model_name=your_model, instance_type='ml.m4.xlarge', instance_count=1, content_template='{"Features":$features}', )

在前面的配置示例中,未设置参数 content_typeaccept_type。因此,它们会自动使用 DataConfig 对象的 dataset_type 参数的值,即 application/jsonlines。Cl SageMaker arify 处理作业使用content_template参数通过将$features占位符替换为特征数组来组成模型输入。

以下示例配置显示如何将ModelPredictedLabelConfig对象的标签参数设置为JMESPath表达式predicted_label。这将从模型输出中提取预测标签。

predicted_label_config = clarify.ModelPredictedLabelConfig( label='predicted_label', )

以下示例配置显示如何将ModelPredictedLabelConfig对象的probability参数设置为JMESPath表达式probability。这将从模型输出中提取分数。

probability_config = clarify.ModelPredictedLabelConfig( probability='probability', )

要计算JSON线条格式数据集的偏差指标和特征重要性,请对数据CSV集使用与上一节相同的运行语句和配置对象。您可以在 SageMaker Studio C SageMaker lassic 中运行 Clarify 处理作业来检测偏差并计算特征重要性。有关说明和笔记本示例,请参阅使用 Clarify(JSON行格式)实现公平性和可 SageMaker 解释性

SageMaker Clarify 支持对自然语言处理 (NLP) 模型的解释。这些解释可帮助您了解文本的哪些部分对模型预测非常重要。您可以解释输入数据集单个实例的模型预测,也可以解释来自基准数据集的模型预测。要了解和可视化模型的行为,可以指定多个粒度级别。为此,请定义文本段的长度,例如其令牌、句子、段落。

SageMaker 澄清NLP可解释性与分类和回归模型兼容。您还可以使用 Clar SageMaker ify 来解释模型在包含文本、类别或数值特征的多模态数据集上的行为。NLP多模态数据集的可解释性可以帮助您了解每个特征对模型输出的重要性。 SageMaker Clarify 支持 62 种语言,可以处理包含多种语言的文本。

以下示例显示了用于计算特征重要性的分析配置文件NLP。在此示例中,传入的数据集是CSV格式的表格数据集,包含一个二进制标签列和两个特征列。

0,2,"Flavor needs work" 1,3,"They taste good" 1,5,"The best" 0,1,"Taste is awful" ...

以下配置示例说明如何使用DataConfig对象指定CSV格式和输出数据路径的输入数据集。

nlp_data_config = clarify.DataConfig( s3_data_input_path=nlp_dataset_s3_uri, dataset_type='text/csv', headers=['Target', 'Rating', 'Comments'], label='Target', s3_output_path=clarify_job_output_s3_uri, )

在前面的配置示例中,s3_data_input_path参数可以是数据集文件中的参数,也可以是 Amazon S3 URI 前缀。URI如果您提供 S3 URI 前缀,则 Clarif SageMaker y 处理任务会以递归方式收集位于该前缀下的所有 S3 文件。的值s3_output_path应为 S3 URI 前缀以保存分析结果。 SageMaker 在编译s3_output_path时使用,并且不能取运行时使用的 Pip SageMaker eline 参数、属性ExecutionVariable、表达式或的值。

以下示例输出是根据使用先前输入数据集训练的二进制分类模型创建的。分类模型接受CSV数据,并输出介于0和之间的单个分数1

0.491656005382537 0.569582343101501 ...

以下示例说明如何配置ModelConfig对象以部署 SageMaker 模型。在本例中,一个临时端点部署了该模型。此端点使用一个GPU配备的ml.g4dn.xlarge推理实例来加速推理。

nlp_model_config = clarify.ModelConfig( model_name=your_nlp_model_name, instance_type='ml.g4dn.xlarge', instance_count=1, )

以下示例说明了如何配置 ModelPredictedLabelConfig 对象,以定位索引为 0 的第一列中的概率(分数)。

probability_config = clarify.ModelPredictedLabelConfig( probability=0, )

以下示例 SHAP 配置显示了如何使用英语的模型和输入数据集运行按标记进行可解释性分析。

text_config = clarify.TextConfig( language='english', granularity='token', ) nlp_shap_config = clarify.SHAPConfig( baseline=[[4, '[MASK]']], num_samples=100, text_config=text_config, )

在前面的示例中,TextConfig对象激活了可NLP解释性分析。granularity 参数表示分析应解析令牌。在英语中,每个令牌都是一个单词。对于其他语言,请参阅 C spaCylarify 用于处理的 SageMaker 标记化文档。NLP前面的示例还演示了如何使用平均值Rating4来设置就地 SHAP 基准实例。使用特殊的掩码令牌 [MASK] 来替换 Comments 中的令牌(单词)。

在前面的示例中,如果实例为 2,"Flavor needs work",则使用以下基准将基准设置为平均 Rating4

4, '[MASK]'

在前面的示例中,Clar SageMaker ify 解释器遍历每个标记,并将其替换为掩码,如下所示。

2,"[MASK] needs work" 4,"Flavor [MASK] work" 4,"Flavor needs [MASK]"

然后,Cl SageMaker arify 解释器会将每行发送到您的模型进行预测。这样,解释器就可以在遮蔽和不遮蔽单词的情况下学习预测。然后, SageMaker Clarify 解释器使用这些信息来计算每个代币的贡献。

以下代码示例启动 Clari SageMaker fy 处理任务进行计算 SHAP 价值观。

clarify_processor.run_explainability( data_config=nlp_data_config, model_config=nlp_model_config, model_scores=probability_config, explainability_config=nlp_shap_config, )

有关如何在 SageMaker Studio Classic 中运行 Clar SageMaker ify 处理作业以进行NLP可解释性分析的示例笔记本,请参阅使用 SageMaker Clarify 解释文本情感分析

SageMaker Clarify 会生成热图,深入了解您的计算机视觉模型如何对图像中的物体进行分类和检测。

在以下配置示例中,输入数据集由JPEG图像组成。

cv_data_config = clarify.DataConfig( s3_data_input_path=cv_dataset_s3_uri, dataset_type="application/x-image", s3_output_path=clarify_job_output_s3_uri, )

在前面的配置示例中,该DataConfig对象包含一s3_data_input_path组 Amazon S3 URI 前缀。Cl SageMaker arify 处理作业以递归方式收集位于前缀下的所有图像文件。该s3_data_input_path参数可以是数据集文件URI中的参数,也可以是 Amazon S3 URI 前缀。如果您提供 S3 URI 前缀,则 Clarif SageMaker y 处理任务会以递归方式收集位于该前缀下的所有 S3 文件。的值s3_output_path应为 S3 URI 前缀以保存分析结果。 SageMaker 在编译s3_output_path时使用,并且不能取运行时使用的 Pip SageMaker eline 参数、属性ExecutionVariable、表达式或的值。

如何解释图像分类模型

Cl SageMaker arify 处理作业使用内核SHAP算法解释图像,该算法将图像视为超级像素的集合。给定一个由图像组成的数据集,处理作业会输出一个图像数据集,其中每张图像都显示相关超像素的热图。

以下配置示例说明如何使用 SageMaker 图像分类模型配置可解释性分析。请参阅图像分类-MXNet了解更多信息。

ic_model_config = clarify.ModelConfig( model_name=your_cv_ic_model, instance_type="ml.p2.xlarge", instance_count=1, content_type="image/jpeg", accept_type="application/json", )

在前面的配置示例中,一个名为的模型已经过训练your_cv_ic_model,可以对输入JPEG图像上的动物进行分类。前一个示例中的ModelConfig对象指示 Clari SageMaker fy 处理作业将 SageMaker 模型部署到临时端点。为了加速推理,终端节点使用一个配备的ml.p2.xlarge推理实例。GPU

将JPEG图像发送到端点后,端点会对其进行分类并返回分数列表。每个分数都对应一个类别。ModelPredictedLabelConfig 对象提供了每个类别的名称,如下所示。

ic_prediction_config = clarify.ModelPredictedLabelConfig( label_headers=['bird', 'cat', 'dog'], )

之前输入 ['bird','cat','dog'] 的输出示例为 0.3,0.6,0.1,其中 0.3 代表将图像分类为鸟类的置信度分数。

以下示例 SHAP 配置显示如何生成图像分类问题的解释。它使用 ImageConfig 对象来激活分析。

ic_image_config = clarify.ImageConfig( model_type="IMAGE_CLASSIFICATION", num_segments=20, segment_compactness=5, ) ic_shap_config = clarify.SHAPConfig( num_samples=100, image_config=ic_image_config, )

SageMaker Clarify 使用 scikit-learn 库中的简单线性迭代聚类 (SLIC) 方法提取特征,用于图像分割。前面的配置示例(model_type 参数)表示图像分类问题的类型。参数 num_segments 估算大约在输入图像中标注多少个分段。然后将分段数传递给 slic n_segments 参数。

图像的每个部分都被视为超像素,并且是局部的 SHAP 计算每个分段的值。参数 segment_compactness 确定由 scikit-image slic 方法生成的图像分段的形状和大小。然后将图像分段的大小和形状传递给 slic compactness 参数。

以下代码示例启动 Clar SageMaker ify 处理作业,为您的图像生成热图。正热图值表明该特征提高了检测对象的置信度分数。负值表示该特征降低了置信度分数。

clarify_processor.run_explainability( data_config=cv_data_config, model_config=ic_model_config, model_scores=ic_prediction_config, explainability_config=ic_shap_config, )

有关使用 Clarify 对 SageMaker 图像进行分类并解释其分类的示例笔记本,请参阅使用 Clarify 解释图像分类。 SageMaker

如何解释对象检测模型

Cl SageMaker arify 处理任务可以检测图像中的物体并对其进行分类,然后为检测到的物体提供解释。解释过程如下。

  1. 图像对象首先被归类为指定集合中的一个类。例如,如果对象检测模型可以识别猫、狗和鱼,那么这三个类位于一个集合中。此集合由 label_headers 参数指定,如下所示。

    clarify.ModelPredictedLabelConfig( label_headers=object_categories, )
  2. Cl SageMaker arify 处理作业会为每个对象生成置信度分数。高置信度分数表示它属于指定集合中的一个类。C SageMaker larify 处理作业还会生成用于分隔对象的边界框的坐标。有关置信度分数和边界框的更多信息,请参阅响应格式

  3. SageMaker 然后,Clarify 解释了在图像场景中检测物体的情况。它使用如何解释图像分类模型部分中描述的方法。

在以下配置示例中,在JPEG图像上训练 SageMaker 物体检测模型your_cv_od_model以识别图像上的动物。

od_model_config = clarify.ModelConfig( model_name=your_cv_ic_model, instance_type="ml.p2.xlarge", instance_count=1, content_type="image/jpeg", accept_type="application/json", )

前面配置示例中的ModelConfig对象指示 Clari SageMaker fy 处理作业将 SageMaker 模型部署到临时端点。为了加速成像,此端点使用一个GPU配备的ml.p2.xlarge推理实例。

在以下示例配置中,ModelPredictedLabelConfig 对象提供了每个类别的名称用于进行分类。

ic_prediction_config = clarify.ModelPredictedLabelConfig( label_headers=['bird', 'cat', 'dog'], )

以下示例 SHAP 配置显示了如何生成对象检测的解释。

od_image_config = clarify.ImageConfig( model_type="OBJECT_DETECTION", num_segments=20, segment_compactness=5, max_objects=5, iou_threshold=0.5, context=1.0, ) od_shap_config = clarify.SHAPConfig( num_samples=100, image_config=image_config, )

在前面的示例配置中,ImageConfig 对象激活分析。model_type 参数表示问题类型为对象检测。有关其他参数的详细说明,请参阅分析配置文件

以下代码示例启动 Clar SageMaker ify 处理作业,为您的图像生成热图。正热图值表明该特征提高了检测对象的置信度分数。负值表示该特征降低了置信度分数。

clarify_processor.run_explainability( data_config=cv_data_config, model_config=od_model_config, model_scores=od_prediction_config, explainability_config=od_shap_config, )

有关使用 SageMaker Clarify 检测图像中的物体并解释其预测的示例笔记本,请参阅使用 Amazon Clarify 解释物体检测 SageMaker 模型

以下示例说明如何配置 SageMaker JSON密集格式的数据以解释时间序列预测模型。有关JSON格式化的更多信息,请参阅JSON请求格式

[ { "item_id": "item1", "timestamp": "2019-09-11", "target_value": 47650.3, "dynamic_feature_1": 0.4576, "dynamic_feature_2": 0.2164, "dynamic_feature_3": 0.1906, "static_feature_1": 3, "static_feature_2": 4 }, { "item_id": "item1", "timestamp": "2019-09-12", "target_value": 47380.3, "dynamic_feature_1": 0.4839, "dynamic_feature_2": 0.2274, "dynamic_feature_3": 0.1889, "static_feature_1": 3, "static_feature_2": 4 }, { "item_id": "item2", "timestamp": "2020-04-23", "target_value": 35601.4, "dynamic_feature_1": 0.5264, "dynamic_feature_2": 0.3838, "dynamic_feature_3": 0.4604, "static_feature_1": 1, "static_feature_2": 2 }, ]

数据配置

使用TimeSeriesDataConfig与您的可解释性作业沟通如何正确解析传递的输入数据集中的数据,如以下示例配置所示:

time_series_data_config = clarify.TimeSeriesDataConfig( target_time_series='[].target_value', item_id='[].item_id', timestamp='[].timestamp', related_time_series=['[].dynamic_feature_1', '[].dynamic_feature_2', '[].dynamic_feature_3'], static_covariates=['[].static_feature_1', '[].static_feature_2'], dataset_format='timestamp_records', )

非对称 Shapley 值配置

AsymmetricShapleyValueConfig用于定义时间序列预测模型解释分析的参数,例如基线、方向、粒度和样本数量。为所有三种类型的数据设置了基线值:相关时间序列、静态协变量和目标时间序列。该AsymmetricShapleyValueConfig配置告知 Cl SageMaker arify 处理器如何一次计算一个项目的特征属性。以下配置显示了的示例定义AsymmetricShapleyValueConfig

asymmetric_shapley_value_config = AsymmetricShapleyValueConfig( direction="chronological", granularity="fine-grained", num_samples=10, baseline={ "related_time_series": "zero", "static_covariates": { "item1": [0, 0], "item2": [0, 0] }, "target_time_series": "zero" }, )

您提供的值将作为methodsAsymmetricShapleyValueConfig有 key 的条目传递到分析配置asymmetric_shapley_value

模型配置

您可以控制从 Clarify 处理器发送的 SageMaker 有效载荷的结构。在以下代码示例中,ModelConfig配置对象指示时间序列预测可解释性作业使用JMESPath语法将'{"instances": $records}'记录聚合到中,其中每条记录的结构都是使用以下 record_template 定义的。'{"start": $start_time, "target": $target_time_series, "dynamic_feat": $related_time_series, "cat": $static_covariates}'请注意,$start_time$target_time_series$related_time_series、和$static_covariates是用于将数据集值映射到端点请求值的内部标记。

model_config = clarify.ModelConfig( model_name=your_model, instance_type='ml.m4.xlarge', instance_count=1, record_template='{"start": $start_time, "target": $target_time_series, "dynamic_feat": $related_time_series, "cat": $static_covariates}', content_template='{"instances": $records}',, time_series_model_config=TimeSeriesModelConfig( forecast={'forecast': 'predictions[*].mean[:2]'} ) )

同样,使用密钥time_series_predictor_config传递给分析配置的属性forecast用于从端点响应中提取模型预测。TimeSeriesModelConfig例如,端点批量响应的示例可能如下所示:

{ "predictions": [ {"mean": [13.4, 3.6, 1.0]}, {"mean": [23.0, 4.7, 3.0]}, {"mean": [3.4, 5.6, 2.0]} ] }

如果提供的JMESPath表达式forecast{'预测 [*] .mean [: 2] '}},则预测值解析如下:

[[13.4, 3.6], [23.0, 4.7], [3.4, 5.6]]

如何运行 parallel Clar SageMaker ify 处理作业

处理大型数据集时,你可以使用 Apache Spark 来提高 Clarify 处理 SageMaker 作业的速度。Spark 是用于大规模数据处理的统一分析引擎。当你为每 SageMaker 个 Clarify 处理器请求多个实例时,Cl SageMaker arify 会使用 Spark 的分布式计算功能。

以下配置示例显示了SageMakerClarifyProcessor如何使用创建带有5计算实例的 Cl SageMaker arify 处理器。要运行任何与关联的作业SageMakerClarifyProcessor,请使用 Spark 分布式处理进行 SageMaker 澄清。

from sagemaker import clarify spark_clarify_processor = clarify.SageMakerClarifyProcessor( role=role, instance_count=5, instance_type='ml.c5.xlarge', )

如果将的save_local_shap_valuesSHAPConfig参数设置为True,则 Clari SageMaker fy 处理作业会保存本地 SHAP 值为作业输出位置中的多个零件文件。

关联本地 SHAP 输入数据集实例的值,请使用joinsource参数DataConfig。如果您添加更多计算实例,我们建议您同时增加临时终端节点ModelConfig的。instance_count这可防止 Spark 工作线程的并发推理请求让端点不堪重负。具体而言,我们建议您使用一定 one-to-one比例的 endpoint-to-processing实例数。