

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

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

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

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

**使用 API 配置 SageMaker Clarify 处理作业**

1. 为作业配置的每个部分定义配置对象。这些部分可包括以下内容：
   + 输入数据集和输出位置:[DataConfig](https://sagemaker.readthedocs.io/en/stable/api/training/processing.html#sagemaker.clarify.DataConfig).
   + 要分析的模型或终点:[ModelConfig](https://sagemaker.readthedocs.io/en/stable/api/training/processing.html#sagemaker.clarify.ModelConfig).
   + 偏差分析参数:[BiasConfig](https://sagemaker.readthedocs.io/en/stable/api/training/processing.html#sagemaker.clarify.BiasConfig).
   + SHapley 加法解释 (SHAP) 分析参数:[SHAPConfig](https://sagemaker.readthedocs.io/en/stable/api/training/processing.html#sagemaker.clarify.SHAPConfig).

   Clarify SageMaker 处理作业的配置对象因数据格式和用例的不同类型而异。以下几节提供了 [CSV](#clarify-processing-job-run-tabular-csv) 和 [JSON Lines](#clarify-processing-job-run-tabular-jsonlines) 格式表格数据、自然语言处理 ([NLP](#clarify-processing-job-run-tabular-nlp)) 和 [computer vision](#clarify-processing-job-run-cv) 问题的配置示例。

1. 创建 `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,
   )
   ```

1. 使用您的用例的配置[SageMakerClarifyProcessor](https://sagemaker.readthedocs.io/en/stable/api/training/processing.html#sagemaker.clarify.SageMakerClarifyProcessor.run)对象调用对象的特定运行方法以启动作业。这些运行方法包括：
   + `run_pre_training_bias`
   + `run_post_training_bias`
   + `run_bias`
   + `run_explainability`
   + `run_bias_and_explainability`

   此 `SageMakerClarifyProcessor` 在后台处理多项任务。这些任务包括检索 Clarify 容器镜像通用资源标识符 (URI)、根据提供的配置对象撰写分析配置文件、将文件上传到 Amazon S3 存储桶以及[配置 Clarify 处理](https://docs.amazonaws.cn/sagemaker/latest/dg/clarify-processing-job-configure-parameters.html)任务。 SageMaker SageMaker 

   以下可扩展章节展示了如何计算**训练前**和**训练后偏差指标**、**SHAP 值**和**部分依赖图** (PDPs)。这些章节显示了这些数据类型的特征重要性：
   + CSV 格式或 JSON 行格式的表格数据集
   + 自然语言处理 (NLP) 数据集
   + 计算机视觉数据集

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

## 分析 CSV 格式的表格数据


以下几个示例说明如何为 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 AI 在编译`s3_output_path`时使用，不能取运行时使用的 A SageMaker I Pipeline 参数、属性`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 处理作业，该作业计算输入数据集的所有[预训练偏差指标](https://docs.amazonaws.cn/sagemaker/latest/dg/clarify-measure-data-bias.html)。 SageMaker 

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

或者，您可以通过向 methods 参数分配训练前偏差指标列表来选择要计算的指标。例如，`methods="all"`替换为`methods=["CI", "DPL"]`会指示 Cl SageMaker arify 处理器仅计算[类别不平衡](https://docs.amazonaws.cn/sagemaker/latest/dg/clarify-bias-metric-class-imbalance.html)和[标签比例差异](https://docs.amazonaws.cn/sagemaker/latest/dg/clarify-data-bias-metric-true-label-imbalance.html)。

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


您可以在训练前计算训练前偏差指标。但是，要计算[训练后偏差指标](https://docs.amazonaws.cn/sagemaker/latest/dg/clarify-measure-post-training-bias.html)，必须拥有经过训练的模型。以下示例输出来自以 CSV 格式输出数据的二进制分类模型。在此示例输出中，每行包含两列。第一列包含预测标签，第二列包含该标签的概率值。

```
0,0.028986845165491
1,0.825382471084594
...
```

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

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

以下配置示例使用标签索引为 `0` 的 `ModelPredictedLabelConfig` 对象。这会指示 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"]`，便可仅计算[预测标签中正比例的差异](https://docs.amazonaws.cn/sagemaker/latest/dg/clarify-post-training-bias-metric-dppl.html)和[差别影响](https://docs.amazonaws.cn/sagemaker/latest/dg/clarify-post-training-bias-metric-di.html)。

### 如何计算 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 解释性](https://github.com/aws/amazon-sagemaker-examples/blob/master/sagemaker-clarify/fairness_and_explainability/fairness_and_explainability.ipynb)。

### 如何计算 CSV 数据集的 SHAP 值


SageMaker Clarify 使用 [Kernel](https://arxiv.org/abs/1705.07874) 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 可解释性基准](https://docs.amazonaws.cn/sagemaker/latest/dg/clarify-feature-attribute-shap-baselines.html)。

```
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 中运行 Clari SageMaker fy 处理作业以计算SHAP值的说明的示例笔记本，请参阅使用 Clarify 实现[公平性和可 SageMaker 解释性](https://github.com/aws/amazon-sagemaker-examples/blob/master/sagemaker-clarify/fairness_and_explainability/fairness_and_explainability.ipynb)。

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


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

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

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

在前面的示例中，`grid_resolution` 参数将 `Income` 特征值的范围划分为多个 `10` 存储桶。Cl SageMaker arify 处理作业将生成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 中运行 Clarify 处理作业进行计算的说明的示例笔记本PDPs，请参阅使用 Clarify [进行 SageMaker 可解释性——部分依赖图 (PDP)](https://github.com/aws/amazon-sagemaker-examples/blob/main/sagemaker-clarify/fairness_and_explainability/explainability_with_pdp.ipynb)。 SageMaker 

### 如何同时计算 CSV 数据集的 SHAP 值和 PDPs


您可以在单个 SageMaker Clarify 处理作业PDPs中计算这两个SHAP值。在以下配置示例中，新 `PDPConfig` 对象的 `top_k_features` 参数设置为 `2`。这会指示 C SageMaker larify 处理作业计算PDPs具有最大全局SHAP值`2`的特征。

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

以下代码示例启动 Clar SageMaker ify 处理任务来计算两个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],
)
```

## 分析 JSON 行格式的表格数据


以下示例说明如何为 > SageMaker AI JSON Lines 密集格式的表格数据集配置偏见分析和可解释性分析。请参阅[JSONLINES 请求格式](cdf-inference.md#cm-jsonlines)了解更多信息。在这些示例中，传入的数据集与上一节的数据相同，但采用 JSON 行格式。每行都是一个有效的 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](https://jmespath.org/)表达式，`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 AI 在编译`s3_output_path`时使用，不能取运行时使用的 A SageMaker I Pipeline 参数、属性`ExecutionVariable`、表达式或的值。

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

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

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

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

在前面的配置示例中，未设置参数 `content_type` 和 `accept_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 数据集使用与上一节相同的 run 语句和配置对象。您可以在 SageMaker Studio C SageMaker lassic 中运行 Clarify 处理作业来检测偏差并计算特征重要性。有关说明和笔记本示例，请参阅[使用 SageMaker Clarify 实现公平性和可解释性（JSON 行格式](https://github.com/aws/amazon-sagemaker-examples/blob/master/sagemaker-clarify/fairness_and_explainability/fairness_and_explainability_jsonlines_format.ipynb)）。

## 分析表格数据以实现 NLP 可解释性


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

SageMaker 澄清自然语言处理的可解释性与分类和回归模型兼容。您还可以使用 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` 参数既可以是数据集文件的 URI，也可以是 Amazon S3 URI 前缀。如果您提供 S3 URI 前缀，则 Clarif SageMaker y 处理任务会以递归方式收集位于该前缀下的所有 S3 文件。的值`s3_output_path`应为 S3 URI 前缀以保存分析结果。 SageMaker AI 在编译`s3_output_path`时使用，不能取运行时使用的 A SageMaker I Pipeline 参数、属性`ExecutionVariable`、表达式或的值。

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

```
0.491656005382537
0.569582343101501
...
```

以下示例说明如何配置`ModelConfig`对象以部署 A SageMaker I 模型。在本例中，一个临时端点部署了该模型。此端点使用一个配备 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` 参数表示分析应解析令牌。在英语中，每个令牌都是一个单词。有关其他语言，请参阅 [SpaCy 标记化文档，Clar](https://spacy.io/usage/linguistic-features#tokenization) ify 使用该文档进行 SageMaker 自然语言处理。前面的示例还说明了如何使用平均值为 `4` 的 `Rating` 来设置就地 SHAP 基准实例。使用特殊的掩码令牌 `[MASK]` 来替换 `Comments` 中的令牌（单词）。

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

```
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 中运行 Clarify 处理作业进行自然语言处理可解释性分析的示例笔记本，请参阅使用 Clarify [解释文本情感分析](https://github.com/aws/amazon-sagemaker-examples/blob/master/sagemaker-clarify/text_explainability/text_explainability.ipynb)。 SageMaker SageMaker 

## 分析图像数据以实现计算机视觉可解释性


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` 对象包含一个设置为 Amazon S3 URI 前缀的 `s3_data_input_path`。Cl SageMaker arify 处理作业以递归方式收集位于前缀下的所有图像文件。`s3_data_input_path` 参数既可以是数据集文件的 URI，也可以是 Amazon S3 URI 前缀。如果您提供 S3 URI 前缀，则 Clarif SageMaker y 处理任务会以递归方式收集位于该前缀下的所有 S3 文件。的值`s3_output_path`应为 S3 URI 前缀以保存分析结果。 SageMaker AI 在编译`s3_output_path`时使用，不能取运行时使用的 A SageMaker I Pipeline 参数、属性`ExecutionVariable`、表达式或的值。

### 如何解释图像分类模型


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

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

```
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 AI 模型部署到临时端点。为了加速推理，该端点使用一个配备 GPU 的 `ml.p2.xlarge` 推理实例。

将 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)](https://scikit-image.org/docs/dev/api/skimage.segmentation.html#skimage.segmentation.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 [解释图像分类](https://github.com/aws/amazon-sagemaker-examples/blob/master/sagemaker-clarify/computer_vision/image_classification/explainability_image_classification.ipynb)。 SageMaker 

### 如何解释对象检测模型


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

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

   ```
   clarify.ModelPredictedLabelConfig(
   
   label_headers=object_categories,
   
   )
   ```

1. Cl SageMaker arify 处理作业会为每个对象生成置信度分数。高置信度得分表示它属于指定集合中的一个类。C SageMaker larify 处理作业还会生成用于分隔对象的边界框的坐标。有关置信度得分和边界框的更多信息，请参阅[响应格式](object-detection-in-formats.md#object-detection-recordio)。

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

在以下配置示例中，在 JPEG 图像上训练 SageMaker AI 对象检测模型`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 AI 模型部署到临时端点。为了加速成像，此端点使用一个配备 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` 参数表示问题类型为对象检测。有关其他参数的详细说明，请参阅[分析配置文件](clarify-processing-job-configure-analysis.md)。

以下代码示例启动 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 A SageMaker I Clarify 解释物体检测模型](https://github.com/aws/amazon-sagemaker-examples/blob/master/sagemaker-clarify/computer_vision/object_detection/object_detection_clarify.ipynb)。

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


处理大型数据集时，你可以使用 [Apache Spark](https://spark.apache.org/) 来提高 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_values`参数设置[SHAPConfig](https://sagemaker.readthedocs.io/en/stable/api/training/processing.html#sagemaker.clarify.SHAPConfig)为`True`，Clari SageMaker fy 处理作业会将本地SHAP值作为多个零件文件保存到作业输出位置。

要将局部 SHAP 值与输入数据集实例相关联，请使用 `DataConfig` 的 `joinsource` 参数。如果您添加更多计算实例，我们建议您同时增加临时终端节点[ModelConfig](https://sagemaker.readthedocs.io/en/stable/api/training/processing.html#sagemaker.clarify.ModelConfig)的。`instance_count`这可防止 Spark 工作线程的并发推理请求让端点不堪重负。具体而言，我们建议您使用一定 one-to-one比例的 endpoint-to-processing实例数。