

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

# 使用 AutoML API 为表格数据创建回归或分类作业
<a name="autopilot-automate-model-development-create-experiment"></a>

您可以通过调用 Autopilot 或 AWS CLI支持的任何语言的 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJobV2.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJobV2.html) API 操作，以编程方式为表格数据创建 Autopilot 回归或分类作业。以下参数集合介绍了 `CreateAutoMLJobV2` API 操作的必需和可选输入请求参数。您可以找到此操作先前版本 `CreateAutoMLJob` 的备用信息。但是，我们建议使用 `CreateAutoMLJobV2`。

有关此 API 操作如何转换为所选语言中函数的信息，请参阅 `CreateAutoMLJobV2` 中的[另请参阅](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJobV2.html#API_CreateAutoMLJobV2_SeeAlso)部分并选择 SDK。例如，对于 Python 用户，请参阅 适用于 Python (Boto3) 的 AWS SDK中 `[create\$1auto\$1ml\$1job\$1v2](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker.html#SageMaker.Client.create_auto_ml_job_v2)` 的完整请求语法。

**注意**  
[CreateAutoMLJobV2](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJobV2.html) 和 [DescribeAutoMLJobV2](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeAutoMLJobV2.html) 是的新版本，[DescribeAutoMLJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeAutoMLJob.html)它们提供了向后兼容性[CreateAutoMLJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJob.html)。  
我们建议使用 `CreateAutoMLJobV2`。`CreateAutoMLJobV2` 可以管理与其先前版本 `CreateAutoMLJob` 相同的表格问题类型，以及非表格问题类型，例如图像或文本分类或者时间序列预测。

至少，所有表格数据实验都需要指定实验名称，提供输入和输出数据的位置，并指定要预测的目标数据。您还可以选择指定要解决的问题类型（回归、分类、多分类器）、选择建模策略（*堆叠集合*或*超参数优化*）、选择 Autopilot 任务用于训练数据的算法列表等。

 实验运行后，您可以比较试验，并深入研究每个模型的预处理步骤、算法和超参数范围的详细信息。您还可以选择下载他们的[解释功能](https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-explainability.html)和[性能](https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-model-insights.html)报告。使用提供的[笔记本](https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-automate-model-development-notebook-output.html )查看自动数据探索的结果或候选模型定义。

在[将 a 迁移 CreateAutoMLJob 到 CreateAuto MLJob V2](#autopilot-create-experiment-api-migrate-v1-v2) 中查找有关如何将 `CreateAutoMLJob` 迁移到 `CreateAutoMLJobV2` 的指南。

## 必填参数
<a name="autopilot-create-experiment-api-required-params"></a>

------
#### [ CreateAutoMLJobV2 ]

在调用 `[CreateAutoMLJobV2](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJobV2.html)` 为表格数据创建 Autopilot 实验时，您必须提供以下值：
+ `[AutoMLJobName](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJobV2.html#API_CreateAutoMLJobV2_RequestSyntax)`，用于指定您作业的名称。
+ `[AutoMLJobInputDataConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJobV2.html#sagemaker-CreateAutoMLJobV2-request-AutoMLJobInputDataConfig)` 中至少有一个 `[AutoMLJobChannel](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLJobChannel.html)` 来指定您的数据来源。
+ 同时提供 `[AutoMLJobObjective](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJobV2.html#sagemaker-CreateAutoMLJobV2-request-AutoMLJobObjective)` 指标和您在 `AutoMLProblemTypeConfig` 中选择的有监督问题类型（二元分类、多元分类、回归），或者均不提供。对于表格数据，您必须选择 `[TabularJobConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TabularJobConfig.html)` 作为 `[AutoMLProblemTypeConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJobV2.html#sagemaker-CreateAutoMLJobV2-request-AutoMLProblemTypeConfig)` 的类型。您可以在 `TabularJobConfig` 的 `ProblemType` 属性中设置有监督学习问题。
+ `[OutputDataConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLOutputDataConfig.html)`，指定用于存储 AutoML 作业构件的 Amazon S3 输出路径。
+ `[RoleArn](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJob.html#sagemaker-CreateAutoMLJob-request-RoleArn)`，指定用于访问您的数据的角色的 ARN。

------
#### [ CreateAutoMLJob ]

在调用 `[CreateAutoMLJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJob.html)` 创建 AutoML 实验时，您必须提供以下四个值：
+ `[AutoMLJobName](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJob.html#sagemaker-CreateAutoMLJob-request-AutoMLJobName)`，用于指定您作业的名称。
+ `[InputDataConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJob.html#sagemaker-CreateAutoMLJob-request-InputDataConfig)` 中至少有一个 `[AutoMLChannel](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLChannel.html)` 来指定您的数据来源。
+ `[OutputDataConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLOutputDataConfig.html)`，指定用于存储 AutoML 作业构件的 Amazon S3 输出路径。
+ `[RoleArn](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJob.html#sagemaker-CreateAutoMLJob-request-RoleArn)`，指定用于访问您的数据的角色的 ARN。

------

所有其他参数都是可选的。

## 可选参数
<a name="autopilot-create-experiment-api-optional-params"></a>

以下部分提供了一些可选参数的详细信息，在使用表格数据时，您可以将这些参数传递给 `CreateAutoMLJobV2` API 操作。您可以找到此操作先前版本 `CreateAutoMLJob` 的备用信息。但是，我们建议使用 `CreateAutoMLJobV2`。

### 如何设置 AutoML 作业的训练模式
<a name="autopilot-set-training-mode"></a>

对于表格数据，在您的数据上运行用于训练候选模型的算法集取决于您的建模策略（`ENSEMBLING` 或 `HYPERPARAMETER_TUNING`）。以下将详细介绍如何设置此训练模式。

如果保留空白（或为 `null`），则 `Mode` 根据数据集的大小进行推理。

有关 Autopilot 的*堆叠组合*和*超参数优化*训练方法的信息，请参阅[训练模式和算法支持](autopilot-model-support-validation.md)

------
#### [ CreateAutoMLJobV2 ]

对于表格数据，您必须选择 `[TabularJobConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TabularJobConfig.html)` 作为 `[AutoMLProblemTypeConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJobV2.html#sagemaker-CreateAutoMLJobV2-request-AutoMLProblemTypeConfig)` 的类型。

您可以使用 `[TabularJobConfig.Mode](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TabularJobConfig.html)` 参数设置 AutoML 作业 V2 的[训练方法](https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-model-support-validation.html)。

------
#### [ CreateAutoMLJob ]

您可以使用 `[AutoMLJobConfig.Mode](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLJobConfig.html#sagemaker-Type-AutoMLJobConfig-Mode)` 参数设置 AutoML 作业的[训练方法](https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-model-support-validation.html)。

------

### 如何选择用于训练 AutoML 作业的特征和算法
<a name="autopilot-feature-selection"></a>

#### 特征选择
<a name="autopilot-automl-job-feature-selection-api"></a>

Autopilot 提供自动数据预处理步骤，包括特征选择和特征提取。但是，您可以使用 `FeatureSpecificatioS3Uri` 属性手动提供要在训练中使用的特征。

所选特征应包含在 JSON 文件中，采用以下格式：

```
{ "FeatureAttributeNames":["col1", "col2", ...] }
```

`["col1", "col2", ...]` 中列出的值区分大小写。它们应该是包含唯一值的字符串列表，这些值是输入数据中列名的子集。

**注意**  
提供作为特征的列的列表不能包括目标列。

------
#### [ CreateAutoMLJobV2 ]

对于表格数据，您必须选择 `[TabularJobConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TabularJobConfig.html)` 作为 `[AutoMLProblemTypeConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJobV2.html#sagemaker-CreateAutoMLJobV2-request-AutoMLProblemTypeConfig)` 的类型。

您可以使用 `[TabularJobConfig.FeatureSpecificationS3Uri](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TabularJobConfig.html)` 参数设置所选特征的 URL。

------
#### [ CreateAutoMLJob ]

您可以在 [CreateAutoMLJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJob.html)API 中使用以下格式设置 “[自动 MLCandidate GenerationConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLCandidateGenerationConfig.html)” 的`FeatureSpecificatioS3Uri`属性：

```
{
    "[AutoMLJobConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJob.html#sagemaker-CreateAutoMLJob-request-AutoMLJobConfig)": {
        "[CandidateGenerationConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLJobConfig.html#sagemaker-Type-AutoMLJobConfig-CandidateGenerationConfig)": {
            "[FeatureSpecificationS3Uri](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLCandidateGenerationConfig.html#sagemaker-Type-AutoMLCandidateGenerationConfig-FeatureSpecificationS3Uri)":"string"
            },
       }
  }
```

------

#### 算法选择
<a name="autopilot-automl-job-algorithms-selection-api"></a>

默认情况下，您的 Autopilot 作业会在数据集上运行预定义的算法列表，以训练候选模型。算法列表取决于作业使用的训练模式（`ENSEMBLING` 或 `HYPERPARAMETER_TUNING`）。

您可以提供默认算法选择的子集。

------
#### [ CreateAutoMLJobV2 ]

对于表格数据，您必须选择 `[TabularJobConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TabularJobConfig.html)` 作为 `[AutoMLProblemTypeConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJobV2.html#sagemaker-CreateAutoMLJobV2-request-AutoMLProblemTypeConfig)` 的类型。

可以在的`AlgorithmsConfig`属性`AutoMLAlgorithms`中指定选定的数组[CandidateGenerationConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CandidateGenerationConfig.html)。

以下是一个 `AlgorithmsConfig` 属性示例，在 `AutoMLAlgorithms` 字段中列出了用于组合模式的三种算法（“xgboost”、“fastai”、“catboost”）。

```
{
   "[AutoMLProblemTypeConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJobV2.html#sagemaker-CreateAutoMLJobV2-request-AutoMLProblemTypeConfig)": {
        "[TabularJobConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TabularJobConfig.html)": {
          "[Mode](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TabularJobConfig.html)": "ENSEMBLING",
          "[CandidateGenerationConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CandidateGenerationConfig.html)": {
            "[AlgorithmsConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CandidateGenerationConfig.html#sagemaker-Type-CandidateGenerationConfig-AlgorithmsConfig)":[
               {"[AutoMLAlgorithms](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLAlgorithmConfig.html)":["xgboost", "fastai", "catboost"]}
            ]
         },
       },
     },
  }
```

------
#### [ CreateAutoMLJob ]

您可以在 “[自动 `AlgorithmsConfig`](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLCandidateGenerationConfig.html)” 属性`AutoMLAlgorithms`中指定选定的数组MLCandidateGenerationConfig。

以下是一个 `AlgorithmsConfig` 属性示例，在 `AutoMLAlgorithms` 字段中列出了用于组合模式的三种算法（“xgboost”、“fastai”、“catboost”）。

```
{
   "[AutoMLJobConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJob.html#sagemaker-CreateAutoMLJob-request-AutoMLJobConfig)": {
        "[CandidateGenerationConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLJobConfig.html#sagemaker-Type-AutoMLJobConfig-CandidateGenerationConfig)": {
            "[AlgorithmsConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLCandidateGenerationConfig.html#sagemaker-Type-AutoMLCandidateGenerationConfig-AlgorithmsConfig)":[
               {"[AutoMLAlgorithms](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLAlgorithmConfig.html#sagemaker-Type-AutoMLAlgorithmConfig-AutoMLAlgorithms)":["xgboost", "fastai", "catboost"]}
            ]
         },
     "Mode": "ENSEMBLING" 
  }
```

------

有关各种训练 `Mode` 可用算法的列表，请参阅 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLAlgorithmConfig.html#sagemaker-Type-AutoMLAlgorithmConfig-AutoMLAlgorithms](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLAlgorithmConfig.html#sagemaker-Type-AutoMLAlgorithmConfig-AutoMLAlgorithms)。有关每种算法的详细信息，请参阅[训练模式和算法支持](autopilot-model-support-validation.md)。

### 如何指定 AutoML 作业的训练和验证数据集
<a name="autopilot-data-sources-training-or-validation"></a>

您可以提供自己的验证数据集和自定义的数据拆分比率，也可以让 Autopilot 自动拆分数据集。

------
#### [ CreateAutoMLJobV2 ]

每个[https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLJobChannel.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLJobChannel.html)对象（参见必填参数 [Auto MLJob InputDataConfig](https://docs.aws.amazon.com/sagemaker-api/src/AWSSageMakerAPIDoc/build/server-root/sagemaker/latest/APIReference/API_CreateAutoMLJobV2.html#sagemaker-CreateAutoMLJobV2-request-AutoMLJobInputDataConfig)）都有`ChannelType`，可以将其设置为`training`或指定在构建机器学习模型时如何使用数据的`validation`值。数据来源至少需要一个，最多可以有两个：一个用于训练数据，一个用于验证数据。

如何将数据拆分为训练和验证数据集，取决于您有一个还是两个数据来源。
+ 如果您只有**一个数据来源**，则默认情况下 `ChannelType` 设置为 `training`，并且必须具有此值。
  + 如果未设置 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLDataSplitConfig.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLDataSplitConfig.html) 中的 `ValidationFraction` 值，则默认情况下，将使用来自此来源中数据的 0.2 (20%) 进行验证。
  + 如果 `ValidationFraction` 设置为介于 0 和 1 之间的值，则根据指定的值拆分数据集，该值指定用于验证的数据集的比例。
+ 如果您有**两个数据来源**，则其中一个 `AutoMLJobChannel` 对象的 `ChannelType` 必须设置为默认值 `training`。另一个数据来源的 `ChannelType` 必须设置为 `validation`。这两个数据来源必须具有相同的格式（CSV 或 Parquet）和相同的架构。在这种情况下，您不可为 `ValidationFraction` 设置值，因为每个来源的所有数据都用于训练或验证。设置此值会导致错误。

------
#### [ CreateAutoMLJob ]

每个[https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLChannel.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLChannel.html)对象（参见必填参数 [InputDataConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJob.html#sagemaker-CreateAutoMLJob-request-InputDataConfig)）都有`ChannelType`，可以将其设置为`training`或指定在构建机器学习模型时如何使用数据的`validation`值。数据来源至少需要一个，最多可以有两个：一个用于训练数据，一个用于验证数据。

如何将数据拆分为训练和验证数据集，取决于您有一个还是两个数据来源。
+ 如果您只有**一个数据来源**，则默认情况下 `ChannelType` 设置为 `training`，并且必须具有此值。
  + 如果未设置 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLDataSplitConfig.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLDataSplitConfig.html) 中的 `ValidationFraction` 值，则默认情况下，将使用来自此来源中数据的 0.2 (20%) 进行验证。
  + 如果 `ValidationFraction` 设置为介于 0 和 1 之间的值，则根据指定的值拆分数据集，该值指定用于验证的数据集的比例。
+ 如果您有**两个数据来源**，则其中一个 `AutoMLChannel` 对象的 `ChannelType` 必须设置为默认值 `training`。另一个数据来源的 `ChannelType` 必须设置为 `validation`。这两个数据来源必须具有相同的格式（CSV 或 Parquet）和相同的架构。在这种情况下，您不可为 `ValidationFraction` 设置值，因为每个来源的所有数据都用于训练或验证。设置此值会导致错误。

------

有关 Autopilot 中的拆分和交叉验证的信息，请参阅 [Autopilot 中的交叉验证](autopilot-metrics-validation.md#autopilot-cross-validation)。

### 如何设置 AutoML 作业的问题类型
<a name="autopilot-set-problem-type-api"></a>

------
#### [ CreateAutoMLJobV2 ]

对于表格数据，您必须选择 `[TabularJobConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TabularJobConfig.html)` 作为 `[AutoMLProblemTypeConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJobV2.html#sagemaker-CreateAutoMLJobV2-request-AutoMLProblemTypeConfig)` 的类型。

您可以使用 `[TabularJobConfig.ProblemType](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TabularJobConfig.html)` 参数，进一步指定可用于 AutoML 作业 V2 的候选模型的有监督学习问题类型（二元分类、多元分类、回归）。

------
#### [ CreateAutoMLJob ]

您可以使用 `[CreateAutoPilot.ProblemType](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJob.html#sagemaker-CreateAutoMLJob-request-ProblemType)` 参数在 AutoML 作业上设置[问题的类型](https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-datasets-problem-types.html#autopilot-problem-types)。这限制了 Autopilot 尝试的预处理和算法类型。在完成作业后，如果您设置了 `[CreateAutoPilot.ProblemType](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJob.html#sagemaker-CreateAutoMLJob-request-ProblemType)`，则 `[ResolvedAttribute.ProblemType](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ResolvedAttributes.html)` 将匹配您设置的 `ProblemType`。如果您将其留空（或为 `null`），则 `ProblemType` 代表您进行推理。

------

**注意**  
在某些情况下，Autopilot 无法以足够高的置信度推理 `ProblemType`，在这种情况下，您必须提供值以使作业成功。

### 如何向 AutoML 作业添加样本权重
<a name="autopilot-add-sample-weights-api"></a>

您可以向表格数据集添加样本权重列，然后将其传递给 AutoML 作业，以请求在训练和评估期间对数据集行进行加权。

只有[组合模式](https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-model-support-validation.html#autopilot-training-mode)支持样本加权。您的权重应为非负数字。没有权重值或权重值无效的数据点被排除。有关可用目标指标的更多信息，请参阅 [Autopilot 加权指标](autopilot-metrics-validation.md#autopilot-weighted-metrics)。

------
#### [ CreateAutoMLJobV2 ]

对于表格数据，您必须选择 `[TabularJobConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TabularJobConfig.html)` 作为 `[AutoMLProblemTypeConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJobV2.html#sagemaker-CreateAutoMLJobV2-request-AutoMLProblemTypeConfig)` 的类型。

要在创建实验时设置样本权重（参见 [CreateAutoMLJobV2](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJobV2.html)），可以在`TabularJobConfig`对象的`SampleWeightAttributeName`属性中传递样本权重列的名称。这样可以确保您的目标指标使用这些权重来训练、评估和选择候选模型。

------
#### [ CreateAutoMLJob ]

要在创建实验时设置样本权重（参见 [CreateAutoMLJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJob.html)），可以在 A [uto MLChannel](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLChannel.html) 对象的`SampleWeightAttributeName`属性中传递样本权重列的名称。这样可以确保您的目标指标使用这些权重来训练、评估和选择候选模型。

------

### 如何配置 AutoML 以在 EMR Serverless 上为大型数据集启动远程作业
<a name="autopilot-set-emr-serverless-api-tabular"></a>

您可以配置 AutoML 作业 V2，以便在处理大型数据集需要额外计算资源时，自动启动 Amazon EMR Serverless 上的远程作业。通过在需要时无缝过渡到 EMR Serverless，AutoML 作业可以处理超出初始资源配置的数据集，而无需您进行任何人工干预。EMR Serverless 可用于表格和时间序列问题类型。我们建议为大于 5 GB 的表格数据集设置此选项。

要让 AutoML 作业 V2 自动过渡到针对大型数据集的 EMR Serverless，您需要向 AutoML 作业 V2 输入请求的 `AutoMLComputeConfig` 提供一个 `EmrServerlessComputeConfig` 对象，其中包括一个 `ExecutionRoleARN` 字段。

`ExecutionRoleARN` 是 IAM 角色的 ARN，授予 AutoML 作业 V2 运行 EMR Serverless 作业所需的权限。

该角色应具有以下信任关系：

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "emr-serverless.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}
```

------

并授予权限进行：
+ 创建、列出和更新 EMR Serverless 应用程序。
+ 在 EMR Serverless 应用程序上启动、列出、获取或取消作业运行。
+ 标记 EMR Serverless 资源。
+ 将 IAM 角色传递给 EMR Serverless 服务以执行。

  通过授予 `iam:PassRole` 权限，AutoML 作业 V2 可以临时承担 `EMRServerlessRuntimeRole-*` 角色，并将其传递给 EMR Serverless 服务。EMR Serverless 任务执行环境使用这些 IAM 角色来访问运行时所需的其他 AWS 服务和资源，例如 Amazon S3，用于访问数据、记录、访问 AWS Glue 数据目录或其他基于您的工作负载 CloudWatch 要求的服务。

  有关此角色权限的详细信息，请参阅 [Amazon EMR Serverless 的作业运行时角色](https://docs.aws.amazon.com/emr/latest/EMR-Serverless-UserGuide/security-iam-runtime-role.html)。

所提供 JSON 文档中定义的 IAM 策略会授予这些权限：

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
            "Sid": "EMRServerlessCreateApplicationOperation",
            "Effect": "Allow",
            "Action": "emr-serverless:CreateApplication",
            "Resource": "arn:aws:emr-serverless:*:*:/*",
            "Condition": {
                "StringEquals": {
                    "aws:RequestTag/sagemaker:is-canvas-resource": "True",
                    "aws:ResourceAccount": "${aws:PrincipalAccount}"
                }
            }
        },
        {
            "Sid": "EMRServerlessListApplicationOperation",
            "Effect": "Allow",
            "Action": "emr-serverless:ListApplications",
            "Resource": "arn:aws:emr-serverless:*:*:/*",
            "Condition": {
                "StringEquals": {
                    "aws:ResourceAccount": "${aws:PrincipalAccount}"
                }
            }
        },
        {
            "Sid": "EMRServerlessApplicationOperations",
            "Effect": "Allow",
            "Action": [
                "emr-serverless:UpdateApplication",
                "emr-serverless:GetApplication"
            ],
            "Resource": "arn:aws:emr-serverless:*:*:/applications/*",
            "Condition": {
                "StringEquals": {
                    "aws:ResourceTag/sagemaker:is-canvas-resource": "True",
                    "aws:ResourceAccount": "${aws:PrincipalAccount}"
                }
            }
        },
        {
            "Sid": "EMRServerlessStartJobRunOperation",
            "Effect": "Allow",
            "Action": "emr-serverless:StartJobRun",
            "Resource": "arn:aws:emr-serverless:*:*:/applications/*",
            "Condition": {
                "StringEquals": {
                    "aws:RequestTag/sagemaker:is-canvas-resource": "True",
                    "aws:ResourceAccount": "${aws:PrincipalAccount}"
                }
            }
        },
        {
            "Sid": "EMRServerlessListJobRunOperation",
            "Effect": "Allow",
            "Action": "emr-serverless:ListJobRuns",
            "Resource": "arn:aws:emr-serverless:*:*:/applications/*",
            "Condition": {
                "StringEquals": {
                    "aws:ResourceTag/sagemaker:is-canvas-resource": "True",
                    "aws:ResourceAccount": "${aws:PrincipalAccount}"
                }
            }
        },
        {
            "Sid": "EMRServerlessJobRunOperations",
            "Effect": "Allow",
            "Action": [
                "emr-serverless:GetJobRun",
                "emr-serverless:CancelJobRun"
            ],
            "Resource": "arn:aws:emr-serverless:*:*:/applications/*/jobruns/*",
            "Condition": {
                "StringEquals": {
                    "aws:ResourceTag/sagemaker:is-canvas-resource": "True",
                    "aws:ResourceAccount": "${aws:PrincipalAccount}"
                }
            }
        },
        {
            "Sid": "EMRServerlessTagResourceOperation",
            "Effect": "Allow",
            "Action": "emr-serverless:TagResource",
            "Resource": "arn:aws:emr-serverless:*:*:/*",
            "Condition": {
                "StringEquals": {
                    "aws:RequestTag/sagemaker:is-canvas-resource": "True",
                    "aws:ResourceAccount": "${aws:PrincipalAccount}"
                }
            }
        },
        {
            "Sid": "IAMPassOperationForEMRServerless",
            "Effect": "Allow",
            "Action": "iam:PassRole",
            "Resource": "arn:aws:iam::*:role/EMRServerlessRuntimeRole-*",
            "Condition": {
                "StringEquals": {
                    "iam:PassedToService": "emr-serverless.amazonaws.com",
                    "aws:ResourceAccount": "${aws:PrincipalAccount}"
                }
            }
         }
    ]
}
```

------

## 将 a 迁移 CreateAutoMLJob 到 CreateAuto MLJob V2
<a name="autopilot-create-experiment-api-migrate-v1-v2"></a>

我们建议 `CreateAutoMLJob` 的用户迁移到 `CreateAutoMLJobV2`。

本节通过突出显示两个版本之间输入请求的对象[CreateAutoMLJob](https://docs.aws.amazon.com/sagemaker-api/src/AWSSageMakerAPIDoc/build/server-root/sagemaker/latest/APIReference/API_CreateAutoMLJob.html#API_CreateAutoMLJob_RequestSyntax)和属性的位置、名称或结构的变化来说明和 [CreateAutoMLJobV2](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJobV2.html#API_CreateAutoMLJobV2_RequestSyntax) 之间输入参数的差异。
+ **在两个版本之间没有变化的请求属性。**

  ```
  {
     "AutoMLJobName": "string",
     "AutoMLJobObjective": { 
        "MetricName": "string"
     },
     "ModelDeployConfig": { 
        "AutoGenerateEndpointName": boolean,
        "EndpointName": "string"
     },
     "OutputDataConfig": { 
        "KmsKeyId": "string",
        "S3OutputPath": "string"
     },
     "RoleArn": "string",
     "Tags": [ 
        { 
           "Key": "string",
           "Value": "string"
        }
     ]
  }
  ```
+ **在两个版本之间位置和结构发生变化的请求属性。**

  以下属性改变了位置：`DataSplitConfig`、`Security Config`、`CompletionCriteria`、`Mode`、`FeatureSpecificationS3Uri`、`SampleWeightAttributeName`、`TargetAttributeName`。

------
#### [ CreateAutoMLJob ]

  ```
  { 
      "AutoMLJobConfig": { 
          "Mode": "string",
          "CompletionCriteria": { 
              "MaxAutoMLJobRuntimeInSeconds": number,
              "MaxCandidates": number,
              "MaxRuntimePerTrainingJobInSeconds": number
          },
          "DataSplitConfig": { 
              "ValidationFraction": number
          },
          "SecurityConfig": { 
              "EnableInterContainerTrafficEncryption": boolean,
              "VolumeKmsKeyId": "string",
              "VpcConfig": { 
              "SecurityGroupIds": [ "string" ],
              "Subnets": [ "string" ]
              }
          },
          "CandidateGenerationConfig": { 
              "FeatureSpecificationS3Uri": "string"
          }
      },
      "GenerateCandidateDefinitionsOnly": boolean,
      "ProblemType": "string"
  }
  ```

------
#### [ CreateAutoMLJobV2 ]

  ```
  {       
      "AutoMLProblemTypeConfig": {
          "TabularJobConfig": {
              "Mode": "string",
              "ProblemType": "string",
              "GenerateCandidateDefinitionsOnly": boolean,
              "CompletionCriteria": { 
                  "MaxAutoMLJobRuntimeInSeconds": number,
                  "MaxCandidates": number,
                  "MaxRuntimePerTrainingJobInSeconds": number
              },
              "FeatureSpecificationS3Uri": "string",
              "SampleWeightAttributeName": "string",
              "TargetAttributeName": "string"
          }
      },
      "DataSplitConfig": { 
          "ValidationFraction": number
      },
      "SecurityConfig": { 
          "EnableInterContainerTrafficEncryption": boolean,
          "VolumeKmsKeyId": "string",
          "VpcConfig": { 
              "SecurityGroupIds": [ "string" ],
              "Subnets": [ "string" ]
          }
      }
  }
  ```

------
+ **在两个版本之间，以下属性的位置和结构发生了变化。**

  以下 JSON 说明了如何[自动MLJob配置。 CandidateGenerationConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLJobConfig.html#sagemaker-Type-AutoMLJobConfig-CandidateGenerationConfig)类型为 “[自](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLCandidateGenerationConfig.html)动” MLCandidate GenerationConfig 已移至 “[自动 MLProblemTypeConfig”。 TabularJobConfig。 ](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJobV2.html#API_CreateAutoMLJobV2_RequestSyntax)CandidateGenerationConfig[CandidateGenerationConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CandidateGenerationConfig.html)在 V2 中属于类型。

------
#### [ CreateAutoMLJob ]

  ```
  {
     "AutoMLJobConfig": { 
        "CandidateGenerationConfig": { 
           "AlgorithmsConfig": [ 
              { 
                 "AutoMLAlgorithms": [ "string" ]
              }
           ],
           "FeatureSpecificationS3Uri": "string"
        }
  }
  ```

------
#### [ CreateAutoMLJobV2 ]

  ```
  {
      "AutoMLProblemTypeConfig": {
          "TabularJobConfig": {
              "CandidateGenerationConfig": { 
                  "AlgorithmsConfig": [ 
                      { 
                      "AutoMLAlgorithms": [ "string" ]
                      }
                  ],
              },
          }
      },
  }
  ```

------
+ **名称和结构发生了变化的请求属性。**

  以下 JSON 说明了 [InputDataConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJob.html#sagemaker-CreateAutoMLJob-request-InputDataConfig)（[自动](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLChannel.html)数组MLChannel）是如何在 V2 中更改为自动 MLJobInputDataConfig（[自动MLJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJobV2.html#sagemaker-CreateAutoMLJobV2-request-AutoMLJobInputDataConfig)[频道](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLJobChannel.html)数组）的。请注意，属性 `SampleWeightAttributeName` 和 `TargetAttributeName` 从 `InputDataConfig` 中移出并移入到 `AutoMLProblemTypeConfig` 中。

------
#### [ CreateAutoMLJob ]

  ```
  {    
      "InputDataConfig": [ 
          { 
              "ChannelType": "string",
              "CompressionType": "string",
              "ContentType": "string",
              "DataSource": { 
                  "S3DataSource": { 
                      "S3DataType": "string",
                      "S3Uri": "string"
                  }
              },
              "SampleWeightAttributeName": "string",
              "TargetAttributeName": "string"
          }
      ]
  }
  ```

------
#### [ CreateAutoMLJobV2 ]

  ```
  {    
      "AutoMLJobInputDataConfig": [ 
          { 
              "ChannelType": "string",
              "CompressionType": "string",
              "ContentType": "string",
              "DataSource": { 
                  "S3DataSource": { 
                      "S3DataType": "string",
                      "S3Uri": "string"
                  }
              }
          }
      ]
  }
  ```

------

# Autopilot 数据集和问题类型
<a name="autopilot-datasets-problem-types"></a>

对于表格数据（即数据的每列包含具有特定数据类型的特征，每行包含一个观察数据），Autopilot 让您可以选择选项，以指定用于 AutoML 作业的候选模型的有监督学习问题类型，例如二元分类或回归，或者根据您提供的数据代表您进行检测。Autopilot 还支持多种数据格式和数据类型。

**Topics**
+ [Autopilot 数据集、数据类型和格式](#autopilot-datasets)
+ [Autopilot 问题类型](#autopilot-problem-types)

## Autopilot 数据集、数据类型和格式
<a name="autopilot-datasets"></a>

Autopilot 支持格式化为 CSV 或 Parquet 文件的表格数据：其中每列都包含具有特定数据类型的特征，而每行都包含观察数据。这两种文件格式的属性差异很大。
+ **CSV** (comma-separated-values) 是一种基于行的文件格式，它以人类可读的纯文本存储数据，这是数据交换的热门选择，因为它们受到各种应用程序的支持。
+ **Parquet** 是一种基于列的文件格式，相比基于行的文件格式，数据的存储和处理更高效。这使它们成为解决大数据问题的更好选择。

列接受的**数据类型**包括数值、分类、文本和时间序列，由逗号分隔数字字符串组成。如果 Autopilot 检测到所处理的是**时间序列**，则它会通过 [tsfresh](https://tsfresh.readthedocs.io/en/latest/text/list_of_features.html) 库提供的专用特征转换器对其进行处理。该库将时间序列作为输入，并输出特征，例如时间序列的最高绝对值或自相关性的描述性统计数据。然后，这些输出特征将用作三种问题类型之一的输入。

Autopilot 支持在多达数百个的大型数据集上构建机器学习模型。 GBs有关输入数据集的默认资源限制以及如何增加这些限制的详细信息，请参阅 [Autopilot 限额](https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-quotas.html)。

## Autopilot 问题类型
<a name="autopilot-problem-types"></a>

对于表格数据，您可以进一步指定可供候选模型使用的有监督学习问题类型，如下所示：

### 回归
<a name="autopilot-automate-model-development-problem-types-regression"></a>

回归根据一个或多个与其相关的其他变量或属性来估计因果目标变量的值。一个例子是预测房屋价格所使用的特征，如浴室和卧室的数量、房屋和花园的平方英尺数。回归分析可以创建一个模型，该模型将其中一个或多个特征作为输入并预测房屋价格。

### 二元分类
<a name="autopilot-automate-model-development-problem-types-binary-classification"></a>

二元分类是一种受监督的学习类型，可根据个体的属性将个体分配给两个预定义且互斥的类别之一。它受到监督，因为模型是使用样本进行训练的，其中为属性提供了正确标注的对象。基于诊断测试的结果对个人是否患有疾病的医学诊断是二元分类的一个示例。

### 多元分类
<a name="autopilot-automate-model-development-problem-types-multiclass-classification"></a>

多元分类是一种受监督的学习类型，可根据个体的属性将个体分配给多个类别之一。它受到监督，因为模型是使用示例进行训练的，其中为属性提供了正确标记的对象。一个例子是预测与文本文档最相关的主题。文档可以分类为如宗教、政治或金融，或者是其他若干个预定义的主题类别之一。

# 训练模式和算法支持
<a name="autopilot-model-support-validation"></a>

Autopilot 支持不同的训练模式和算法来解决机器学习问题，报告质量和客观指标，并在需要时自动使用交叉验证。

## 模型训练
<a name="autopilot-training-mode"></a>

SageMaker Autopilot 可以根据数据集大小自动选择训练方法，也可以手动选择。选项如下所示：
+ E@@ **nsembling** — Autopilot 使用[AutoGluon](https://auto.gluon.ai/scoredebugweight/tutorials/tabular_prediction/index.html)库来训练多个基础模型。为了找到最适合您的数据集的组合，组合模式使用不同的模型和元参数设置运行 10 次试验。然后，Autopilot 使用堆叠组合方法，将这些模型组合在一起，以创建最优预测模型。有关 Autopilot 在组合模式下对表格数据支持的算法列表，请参阅下文的**算法支持**部分。
+ **超参数优化 (HPO)** – Autopilot 在数据集上运行训练作业时，使用贝叶斯优化或多保真优化来调整超参数，从而找到模型的最佳版本。HPO 模式选择与您的数据集最相关的算法，并选择最佳的超参数范围来调整您的模型。为了调整模型，HPO 模式最多可运行 100 次试验（默认），以找到选定范围内的最佳超参数设置。如果您的数据集大小小于 100 MB，Autopilot 将使用贝叶斯优化。如果您的数据集大于 100 MB，Autopilot 会选择多保真优化。

  在多保真优化中，训练容器会连续发出指标。在选定的目标指标上表现不佳的试验会提前停止。系统向表现良好的试验分配更多资源。

  有关 Autopilot 在 HPO 模式下支持的算法列表，请参阅下文的**算法支持**部分。
+ **自动** – Autopilot 会根据您的数据集大小自动选择组合模式或 HPO 模式。如果您的数据集大于 100 MB，Autopilot 会选择 HPO。否则，它会选择组合模式。在以下情况下，Autopilot 可能无法读取数据集的大小。
  + 您为 AutoML 作业启用虚拟私有云 (VPC) 模式，但包含数据集的 S3 存储桶仅允许从 VPC 进行访问。
  + 数据集DataType的输入 [S3](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLS3DataSource.html#sagemaker-Type-AutoMLS3DataSource-S3DataType) 是`ManifestFile`。
  + 输入 [S3Uri](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLS3DataSource.html#sagemaker-Type-AutoMLS3DataSource-S3Uri) 包含超过 1000 个项目。

  如果 Autopilot 无法读取您的数据集大小，则默认为选择 HPO 模式。

**注意**  
要获得最佳运行时间和性能，请对小于 100 MB 的数据集使用组合训练模式。

## 算法支持
<a name="autopilot-algorithm-support"></a>

在 **HPO 模式下**，Autopilot 支持以下类型的机器学习算法：
+  [线性学习器](https://docs.aws.amazon.com/sagemaker/latest/dg/linear-learner.html) – 一种有监督学习算法，可以解决分类或回归问题。
+ [XGBoost](https://docs.aws.amazon.com/sagemaker/latest/dg/xgboost.html)— 一种监督学习算法，它试图通过组合来自一组更简单和更弱的模型的估计值来准确预测目标变量。
+ 深度学习算法 – 多层感知器 (MLP) 和前馈人工神经网络。此算法可以处理线性不可分的数据。

**注意**  
您无需指定一个算法来解决机器学习问题。Autopilot 会自动选择合适的算法进行训练。

在**组合模式下**，Autopilot 支持以下类型的机器学习算法：
+ [LightGBM](https://docs.aws.amazon.com/sagemaker/latest/dg/lightgbm.html) – 一种经过优化的框架，使用基于树的算法和梯度提升。此算法使用在广度而不是深度上增长的树，并且针对速度进行了高度优化。
+ [CatBoost](https://docs.aws.amazon.com/sagemaker/latest/dg/catboost.html)— 使用基于树的算法和梯度提升的框架。针对处理分类变量进行了优化。
+ [XGBoost](https://docs.aws.amazon.com/sagemaker/latest/dg/xgboost.html)— 一种使用基于树的算法的框架，其梯度提升是深度而不是广度增加的。
+ [随机森林](https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.RandomForestClassifier.html) – 一种基于树的算法，在数据的随机子样本上使用多个决策树并进行替换。树在每个级别上拆分到最佳节点。对每个树的决策一起求平均值，以防止过度拟合并改善预测。
+ [额外的树](https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.ExtraTreesClassifier.html#sklearn.ensemble.ExtraTreesClassifier) – 基于树的算法，在整个数据集上使用多个决策树。树在每个级别上随机拆分。对每个树的决策进行求平均值，以防止过度拟合并改善预测。与随机森林算法相比，额外的树会增加一定程度的随机化。
+ [线性模型](https://scikit-learn.org/stable/modules/classes.html#module-sklearn.linear_model) – 一种使用线性方程对所观测数据中两个变量之间的关系进行建模的框架。
+ 神经网络 torch – 使用 [Pytorch](https://pytorch.org/) 实施的神经网络模型。
+ 神经网络 fast.ai – 使用 [fast.ai](https://www.fast.ai/) 实施的神经网络模型。

# 指标和验证
<a name="autopilot-metrics-validation"></a>

本指南介绍了可用于衡量机器学习模型性能的指标和验证技术。Amazon SageMaker Autopilot 会生成衡量候选机器学习模型预测质量的指标。为候选人计算的指标是使用一系列[MetricDatum](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_MetricDatum.html)类型指定的。

## Autopilot 指标
<a name="autopilot-metrics"></a>

以下列表包含当前可用于衡量 Autopilot 中模型性能的指标名称。

**注意**  
Autopilot 支持样本权重。要了解有关样本权重和可用目标指标的更多信息，请参阅 [Autopilot 加权指标](#autopilot-weighted-metrics)。

可用指标如下所示。

**`Accuracy`**  
 正确分类的项目数，相比所分类项目总数（正确和错误）的比率。它用于二元分类和多元分类。准确性衡量预测类值与实际值的接近程度。准确性指标的值在零 (0) 和壹 (1) 之间变化。值为 1 表示完全准确，0 表示完全不准确。

**`AUC`**  
 曲线下面积 (AUC) 指标通过返回概率（例如逻辑回归）的算法，比较和评估二元分类。为了将概率映射到分类中，需要将这些概率与阈值进行比较。  
相关的曲线是接收者操作特征曲线。该曲线将预测（或查全率）的真阳性率 (TPR) 与假阳性率 (FPR) 作为阈值的函数绘制，在曲线之上的预测视为阳性。提高阈值会减少假阳性，但会增加假阴性。  
AUC 是接收者操作特征曲线下方的面积。因此，AUC 提供了在所有可能的分类阈值中，模型性能的综合度量。AUC 分数介于 0 和 1 之间。分数为 1 表示完美的准确性，分数为一半 (0.5) 表示预测结果并不比随机分类器更好。

**`BalancedAccuracy`**  
`BalancedAccuracy` 是用于衡量准确预测占所有预测比例的指标。该比率是在根据阳性 (P) 和阴性 (N) 值总数，对真阳性 (TP) 和真阴性 (TN) 进行标准化后计算得出的。它用于二进制分类和多类分类，定义如下：0.5\$1 ((TP/P)\$1(TN/N))，值范围为 0 到 1。 `BalancedAccuracy`在不平衡的数据集中，如果正面或负面的数量相差很大，例如只有 1% 的电子邮件是垃圾邮件，则可以更好地衡量准确性。

**`F1`**  
`F1` 分数是查准率和查全率的调和平均值，定义如下：F1 = 2 \$1（查准率 \$1 查全率）/（查准率 \$1 查全率）。它用于二元分类，分为传统上称为阳性和阴性的类。预测在与实际（正确）类匹配时为 true，不匹配时为 false。  
查准率是指真阳性预测与所有阳性预测的比率，它包括数据集中的假阳性。在预测阳性类时，查准率衡量预测的质量。  
查全率（或灵敏度）是真阳性预测与所有实际阳性实例的比率。查全率衡量模型预测数据集中实际类成员的全面程度。  
F1 分数介于 0 和 1 之间。分数为 1 表示具有最佳性能，0 表示性能最差。

**`F1macro`**  
`F1macro` 分数将 F1 评分应用于多元分类问题。为此，它计算查准率和查全率，然后用它们的调和平均值来计算每个类的 F1 分数。最后，`F1macro` 对各个分数取平均值以获得 `F1macro` 分数。`F1macro` 分数介于 0 和 1 之间。分数为 1 表示具有最佳性能，0 表示性能最差。

**`InferenceLatency`**  
推理延迟是指从发出模型预测请求，到从部署模型的实时端点收到模型预测请求之间的大致时间长度。该指标以秒为单位进行测量，仅在组合模式下可用。

**`LogLoss`**  
对数损失，也称为交叉熵损失，是用于评估概率输出质量的指标，而不是输出本身。它可用于二元分类和多元分类，也用于神经网络。它也是逻辑回归的成本函数。对数损失是一个重要指标，指示模型何时有很高的概率做出了错误预测。值范围为 0 到无穷大。值为 0 表示可以完美预测数据的模型。

**`MAE`**  
平均绝对误差 (MAE) 用于衡量在所有值上，将预测值与实际值的差值取平均数时有多大的差异。MAE 通常用于回归分析以了解模型预测误差。如果使用线性回归，则 MAE 表示从预测线到实际值的平均距离。MAE 定义为绝对误差之和除以观察数据的数量。值的范围从 0 到无穷大，数字越小表示模型对数据的拟合效果越好。

**`MSE`**  
均方误差 (MSE) 是预测值和实际值之间的平方差的平均值。它用于回归。MSE 值始终为正值。模型在预测实际值方面的表现越好，MSE 值就越小。

**`Precision`**  
查准率衡量算法预测的真阳性 (TP) 占所识别的全部阳性的比例。它的定义如下：查准率 = TP/(TP\$1FP)，值范围从零 (0) 到壹 (1)，用于二元分类。当假阳性的成本很高时，查准率是一个重要指标。例如，如果飞机安全系统错误地认为可以安全飞行，则假阳性的成本非常高。假阳性 (FP) 反映的是预测为阳性，而在数据中实际为阴性的情况。

**`PrecisionMacro`**  
查准率宏计算多元分类问题的查准率。它通过计算每个类的查准率并对分数取平均值来获得多个类的查准率。`PrecisionMacro` 分数范围从零 (0) 到壹 (1)。该分数在多个类中取平均值，分数越高反映了模型越能从其识别的所有阳性中预测真阳性 (TP)。

**`R2`**  
R2，也称为决定系数，在回归中用于量化模型在多大程度上可以解释因变量的方差。值范围从壹 (1) 到负壹 (-1)。数字越大，说明变异率的解释比例越高。接近零 (0) 的 `R2` 值表示模型几乎无法解释因变量。负值表示拟合不佳，常量函数的性能优于模型。对于线性回归，这是一条水平线。

**`Recall`**  
查全率可以衡量算法正确预测数据集中所有真阳性 (TP) 的能力如何。真阳性是指预测为阳性，而实际也是数据中阳性值的情况。查全率定义如下：查全率 = TP/(TP\$1FN)，值范围从 0 到 1。分数越高，反映模型预测数据中真阳性 (TP) 的能力越强。它用于二元分类。  
在癌症检测时，查全率很重要，因为它被用来找出所有真阳性。假阴性（FN）反映的是预测阴性，而在数据中实际为阳性的情况。仅衡量查全率通常是不够的，因为只要将每个输出都预测为真阳性，就可以得到完美的查全率分数。

**`RecallMacro`**  
`RecallMacro` 计算每个类的查全率并取平均值，以获取多个类的查全率，以此来计算多元分类问题的查全率。`RecallMacro` 分数介于 0 和 1 之间。分数越高反映模型预测数据集中真阳性 (TP) 的能力就越好，而真阳性反映的是预测为阳性，而实际也是数据中阳性值的情况。仅衡量查全率通常是不够的，因为只要将每个输出都预测为真阳性，就可以得到完美的查全率分数。

**`RMSE`**  
均方根误差 (RMSE) 衡量预测值与实际值之间平方差的平方根，并对所有值取平均值。它用于回归分析以了解模型预测误差。这是一个重要的指标，用于指示是否存在较大的模型误差和异常值。值的范围从零 (0) 到无穷大，数字越小表示模型对数据的拟合效果越好。RMSE 依赖于规模，不应用于比较不同大小的数据集。

为候选模型自动计算的指标取决于要解决的问题的类型。

有关 Autopilot 支持的可用指标列表，请参阅 A [mazon SageMaker API 参考文档](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLJobObjective.html)。

## Autopilot 加权指标
<a name="autopilot-weighted-metrics"></a>

**注意**  
Autopilot 仅在组合模式下支持所有[可用指标](https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-metrics-validation.html#autopilot-metrics)的样本权重，但 `Balanced Accuracy` 和 `InferenceLatency` 除外。对于不需要样本权重的不平衡数据集，`BalanceAccuracy` 有自己的加权架构。`InferenceLatency` 不支持样本权重。在训练和评估模型时，目标 `Balanced Accuracy` 和 `InferenceLatency` 指标都会忽略任何现有的样本权重。

用户可以向其数据添加样本权重列，以确保向用于训练机器学习模型的每个观察数据赋予权重，该权重对应于每个观察数据对模型的感知重要性。在数据集中的观察数据重要性程度各不相同，或者数据集中一个类别的样本数量与其他类别的样本数量相比不成比例的场景中，权重特别有用。根据每个观察结果的重要性向其分配权重，或者向少数类赋予更高的权重，有助于提升模型的整体性能，或者确保模型不会偏向多数类。

有关在 Studio Classic 用户界面中创建实验时如何传递样本权重的信息，请参阅[使用 Studio Classic 创建 Autopilot 实验](https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-automate-model-development-create-experiment.html)中的*步骤 7*。

有关在使用 API 创建 Autopilot 实验时如何以编程方式传递样本权重的信息，请参阅[以编程方式创建 Autopilot 实验](https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-automate-model-development-create-experiment.html)中的*如何向 AutoML 作业添加样本权重*。

## Autopilot 中的交叉验证
<a name="autopilot-cross-validation"></a>

交叉验证用于减少模型选择中的过度拟合和偏差。如果验证数据集抽取自同一个数据集，交叉验证还有助于评测模型预测验证数据集中未用于训练的能力。在对训练实例数量有限的数据集进行训练时，此方法尤其重要。

Autopilot 使用交叉验证在超参数优化 (HPO) 和组合训练模式下构建模型。Autopilot 交叉验证过程的第一步是将数据拆分为 k 个子集。

### K 折拆分
<a name="autopilot-cross-validation-kfold"></a>

K 折拆分是一种将输入训练数据集拆分成多个训练和验证数据集的方法。数据集被拆分为 `k` 个大小相等的子样本，称为子集。然后在 `k-1` 个子集上对模型进行训练，并根据剩余的第 k 个子集进行测试，该子集作为验证数据集。此过程使用不同的数据集重复 `k` 次以进行验证。

下图描绘了 k = 4 个子集时的 k 折拆分。每个子集都表示为一行。深色调的方框代表训练中使用的数据部分。其余的浅色方框表示验证数据集。

![\[K 折拆分，4 个子集以方框表示：深色表示使用的数据；浅色表示验证数据集。\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/autopilot/autopilot-metrics-kfold-splits.png)


Autopilot 为超参数优化 (HPO) 模式和组合模式使用 k 折交叉验证。

你可以像使用任何其他自动驾驶或 SageMaker 人工智能模型一样部署使用交叉验证构建的自动驾驶模型。

### HPO 模式
<a name="autopilot-cross-validation-hpo"></a>

K 折交叉验证使用 k 折拆分方法进行交叉验证。在 HPO 模式下，Autopilot 会自动为不超过 50000 个训练实例的小型数据集实施 k 折交叉验证。在小型数据集上训练时，执行交叉验证尤其重要，因为它可以防止过度拟合和选择偏差。

HPO 模式对用于数据集建模的每个候选算法使用 *k* 值 5。在不同的拆分上训练多个模型，模型分开存储。训练完成后，将对每个模型的验证指标取平均值，以生成单个估计指标。最后，Autopilot 将试验中具有最佳验证指标的模型合并成一个组合模型。Autopilot 使用此组合模型进行预测。

Autopilot 训练的模型的验证指标提供作为模型排行榜中的目标指标。除非您另有指定，否则 Autopilot 会对处理的每种问题类型使用默认验证指标。有关 Autopilot 使用的所有指标的列表，请参阅 [Autopilot 指标](#autopilot-metrics)。

例如，[波士顿房屋数据集](http://lib.stat.cmu.edu/datasets/boston)只包含 861 个样本。如果您尝试使用此数据集构建模型来预测房屋销售价格但没有进行交叉验证，那么就会面临在无法代表波士顿住房存量的数据集上进行训练的风险。如果您只将数据拆分为训练和验证子集一次，则训练子集可能只包含主要来自郊区的数据。因此，您将使用无法代表城市其他地区的数据进行训练。在此示例中，您的模型可能会在此存有偏差的选择上过度拟合。K 折交叉验证可随机地使用可用数据进行充分地训练和验证，降低了出现此类错误的风险。

交叉验证平均会将训练时间增加 20%。在使用复杂的数据集时，训练时间也可能显著增加。

**注意**  
在 HPO 模式下，你可以在`/aws/sagemaker/TrainingJobs` CloudWatch 日志中看到各个方面的训练和验证指标。有关 CloudWatch 日志的更多信息，请参阅[CloudWatch 亚马逊 A SageMaker I 的日志](logging-cloudwatch.md)。

### 组合模式
<a name="autopilot-cross-validation-ensemble"></a>

**注意**  
Autopilot 支持组合模式下的样本权重。有关支持样本权重的可用指标列表，请参阅 [Autopilot 指标](#autopilot-metrics)。

在组合模式下，无论数据集大小如何，都会执行交叉验证。客户可以提供自己的验证数据集并自定义数据拆分比率，也可以让 Autopilot 自动按照 80%-20% 的拆分比率来拆分数据集。然后，将训练数据拆分为 `k`-folds 以进行交叉验证，其中的`k`值由引擎确定。 AutoGluon 一个组合由多个机器学习模型组成，其中每个模型被称为基础模型。单基础模型在 (`k`-1) 个折叠上进行训练，并对剩余的折叠进行 out-of-fold预测。对所有`k`折叠重复此过程，并将 out-of-fold (OOF) 预测串联起来形成一组预测。组合中的所有基础模型都遵循相同的流程来生成 OOF 预测。

下图描绘了 `k` = 4 个子集时的 k 折验证。每个子集都表示为一行。深色调的方框代表训练中使用的数据部分。其余的浅色方框表示验证数据集。

在图像的上半部的每个子集中，第一个基础模型在训练数据集上训练后，对验证数据集进行预测。在随后的每个子集中，数据集更换角色。之前用于训练的数据集现在用于验证，以此类推。在`k`折叠结束时，将所有预测连接起来，形成一组名为 out-of-fold（OOF）预测的预测。对每个 `n` 基础模型重复此过程。

![\[k 折验证：四行方框描绘了生成一行 OOF 预测的 4 折验证。\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/autopilot/autopilot-metrics-kfold.PNG)


然后，将每个基础模型的 OOF 预测用作特征来训练堆叠模型。堆叠模型学习每个基础模型的重要性权重。这些权重用于合并 OOF 预测以形成最终预测。验证数据集的性能决定了哪个基础模型或堆叠模型最合适，然后返回此模型作为最终模型。

在组合模式下，您可以提供自己的验证数据集，也可以让 Autopilot 自动拆分输入数据集，其中 80% 为训练数据集，20% 为验证数据集。然后，将训练数据拆分为 `k` 个子集以进行交叉验证，并为每个子集生成 OOF 预测和基础模型。

这些 OOF 预测用作特征来训练堆叠模型，堆叠模型同时会学习每个基础模型的权重。这些权重用于合并 OOF 预测以形成最终预测。每个子集的验证数据集用于所有基础模型和堆叠模型的超参数调整。验证数据集的性能决定了哪个基础模型或堆叠模型是最合适的模型，然后返回此模型作为最终模型。

# Autopilot 模型部署和预测
<a name="autopilot-deploy-models"></a>

本 Amazon A SageMaker utopilot 指南包括模型部署、设置实时推理以及使用批处理作业运行推理的步骤。

在训练了 Autopilot 模型之后，您可以部署这些模型并通过两种方式之一来获取预测：

1. 使用 [为实时推理部署模型](autopilot-deploy-models-realtime.md) 设置端点并以交互方式获取预测。实时推理非常适合有实时、交互式、低延迟要求的推理工作负载。

1. 使用 [运行批量推理作业](autopilot-deploy-models-batch.md) 对整个数据集上的观察数据批次并行进行预测。对于大型数据集或者在您不需要立即响应模型预测请求时，批量推理是很好的选择。

**注意**  
避免产生不必要的费用：当您不再需要模型部署时创建的端点和资源时，可以删除这些资源。有关按地区划分的实例定价的信息，请参阅 [Amazon SageMaker 定价](https://aws.amazon.com/sagemaker/pricing/)。

# 为实时推理部署模型
<a name="autopilot-deploy-models-realtime"></a>

实时推理非常适合有实时、交互式、低延迟要求的推理工作负载。此部分演示如何使用实时推理，以交互方式从模型获取预测。

要部署在 Autopilot 实验中生成最佳验证指标的模型，您有多种选择。例如，在 SageMaker Studio Classic 中使用自动驾驶仪时，您可以自动或手动部署模型。您也可以 SageMaker APIs 使用手动部署自动驾驶模型。

以下选项卡显示了用于部署模型的三个选项。这些说明假定您已在 Autopilot 中创建了模型。如果您还没有模型，请参阅 [使用 AutoML API 为表格数据创建回归或分类作业](autopilot-automate-model-development-create-experiment.md)。要查看每个选项的示例，请打开各个选项卡。

## 使用 Autopilot 用户界面 (UI) 进行部署
<a name="autopilot-deploy-models-realtime-ui"></a>

Autopilot UI 包含有用的下拉菜单、切换开关、工具提示等，可帮助您浏览模型部署。您可以使用以下过程之一进行部署：自动或手动。
+ **自动部署**：自动将 Autopilot 实验中的最佳模型部署到端点

  1. 在 SageMaker Studio 经典版中@@ [创建实验](https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-automate-model-development-create-experiment.html)。

  1. 将**自动部署**值切换为**是**。
**注意**  
**如果区域中端点实例的默认资源配额或您的客户配额过于有限，则自动部署会失败。**在超参数优化 (HPO) 模式下，您需要至少两个 ml.m5.2xlarge 实例。在组合模式下，您需要至少一个 ml.m5.12xlarge 实例。如果您遇到与配额相关的故障，可以[请求提高 SageMaker AI 终端节点实例的服务限制](https://docs.aws.amazon.com/servicequotas/latest/userguide/request-quota-increase.html)。
+ **手动部署**：手动将 Autopilot 实验得到的最佳模型部署到端点

  1. 在 SageMaker Studio 经典版中@@ [创建实验](https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-automate-model-development-create-experiment.html)。

  1. 将**自动部署**值切换为**否**。

  1. 在**模型名称**下选择要部署的模型。

  1. 选择排行榜右侧的橙色**部署和高级设置**按钮。这将打开一个新选项卡。

  1. 配置端点名称、实例类型和其他可选信息。

  1.  选择橙色的**部署模型**以部署到端点。

  1. [https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/)通过导航到终端节点部分，查看终端节点创建过程的进度。该部分位于导航面板的**推理**下拉菜单中。

  1. 在终端节点状态从 “**创建**中” 更改为（如下所示）后 **InService**，返回 Studio Classic 并调用该终端节点。  
![\[SageMaker AI 控制台：终端节点页面，用于创建终端节点或检查终端节点状态。\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/autopilot/autopilot-check-progress.PNG)

## 使用部署 SageMaker APIs
<a name="autopilot-deploy-models-api"></a>

您还可以使用 **API 调用**部署模型来获得实时推理。本节使用 AWS Command Line Interface (AWS CLI) 代码片段展示了此过程的五个步骤。

有关 AWS CLI 命令和 AWS 适用于 Python 的 SDK (boto3) 的完整代码示例，请直接按照以下步骤打开选项卡。

1. **获取候选项定义**

   从中获取候选容器定义[InferenceContainers](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLCandidate.html#sagemaker-Type-AutoMLCandidate-InferenceContainers)。这些候选定义用于创建 A SageMaker I 模型。

   以下示例使用 [DescribeAutoMLJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeAutoMLJob.html)API 获取最佳候选模型的候选定义。以以下 AWS CLI 命令为例。

   ```
   aws sagemaker describe-auto-ml-job --auto-ml-job-name <job-name> --region <region>
   ```

1. **列出候选项**

   以下示例使用 [ListCandidatesForAutoMLJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ListCandidatesForAutoMLJob.html)API 列出所有候选对象。请参阅以下 AWS CLI 命令示例。

   ```
   aws sagemaker list-candidates-for-auto-ml-job --auto-ml-job-name <job-name> --region <region>
   ```

1. **创建 A SageMaker I 模型**

   使用前面步骤中的容器定义通过 [CreateModel](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModel.html)AP SageMaker I 创建 AI 模型。以以下 AWS CLI 命令为例。

   ```
   aws sagemaker create-model --model-name '<your-custom-model-name>' \
                       --containers ['<container-definition1>, <container-definition2>, <container-definition3>]' \
                       --execution-role-arn '<execution-role-arn>' --region '<region>
   ```

1. **创建端点配置** 

   以下示例使用 [CreateEndpointConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpointConfig.html)API 创建终端节点配置。以以下 AWS CLI 命令为例。

   ```
   aws sagemaker create-endpoint-config --endpoint-config-name '<your-custom-endpoint-config-name>' \
                       --production-variants '<list-of-production-variants>' \
                       --region '<region>'
   ```

1. **创建端点** 

   以下 AWS CLI 示例使用 [CreateEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpoint.html)API 创建终端节点。

   ```
   aws sagemaker create-endpoint --endpoint-name '<your-custom-endpoint-name>' \
                       --endpoint-config-name '<endpoint-config-name-you-just-created>' \
                       --region '<region>'
   ```

   使用 [DescribeEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeEndpoint.html)API 检查您的终端节点部署进度。以以下 AWS CLI 命令为例。

   ```
   aws sagemaker describe-endpoint —endpoint-name '<endpoint-name>' —region <region>
   ```

   将 `EndpointStatus` 更改为 `InService` 后，端点即可用于实时推理。

1. **调用端点** 

   以下命令结构调用端点以进行实时推理。

   ```
   aws sagemaker invoke-endpoint --endpoint-name '<endpoint-name>' \ 
                     --region '<region>' --body '<your-data>' [--content-type] '<content-type>' <outfile>
   ```

以下选项卡包含使用 AWS SDK for Python (boto3) 或 AWS CLI部署模型的完整代码示例。

------
#### [ AWS SDK for Python (boto3) ]

1. 使用以下代码示例可**获取候选项定义**。

   ```
   import sagemaker 
   import boto3
   
   session = sagemaker.session.Session()
   
   sagemaker_client = boto3.client('sagemaker', region_name='us-west-2')
   job_name = 'test-auto-ml-job'
   
   describe_response = sm_client.describe_auto_ml_job(AutoMLJobName=job_name)
   # extract the best candidate definition from DescribeAutoMLJob response
   best_candidate = describe_response['BestCandidate']
   # extract the InferenceContainers definition from the caandidate definition
   inference_containers = best_candidate['InferenceContainers']
   ```

1. 使用以下代码示例可**创建模型**。

   ```
   # Create Model
   model_name = 'test-model' 
   sagemaker_role = 'arn:aws:iam:444455556666:role/sagemaker-execution-role'
   create_model_response = sagemaker_client.create_model(
      ModelName = model_name,
      ExecutionRoleArn = sagemaker_role,
      Containers = inference_containers 
   )
   ```

1. 使用以下代码示例可**创建端点配置**。

   ```
   endpoint_config_name = 'test-endpoint-config'
                                                           
   instance_type = 'ml.m5.2xlarge' 
   # for all supported instance types, see 
   # https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ProductionVariant.html#sagemaker-Type-ProductionVariant-InstanceType    # Create endpoint config
   
   endpoint_config_response = sagemaker_client.create_endpoint_config(
      EndpointConfigName=endpoint_config_name, 
      ProductionVariants=[
          {
              "VariantName": "variant1",
              "ModelName": model_name, 
              "InstanceType": instance_type,
              "InitialInstanceCount": 1
          }
      ]
   )
   
   print(f"Created EndpointConfig: {endpoint_config_response['EndpointConfigArn']}")
   ```

1. 使用以下代码示例可**创建端点**并部署模型。

   ```
   # create endpoint and deploy the model
   endpoint_name = 'test-endpoint'
   create_endpoint_response = sagemaker_client.create_endpoint(
                                               EndpointName=endpoint_name, 
                                               EndpointConfigName=endpoint_config_name)
   print(create_endpoint_response)
   ```

   使用以下代码示例可**检查端点创建状态**。

   ```
   # describe endpoint creation status
   status = sagemaker_client.describe_endpoint(EndpointName=endpoint_name)["EndpointStatus"]
   ```

1. 使用以下命令结构可**调用端点**进行实时推理。

   ```
   # once endpoint status is InService, you can invoke the endpoint for inferencing
   if status == "InService":
     sm_runtime = boto3.Session().client('sagemaker-runtime')
     inference_result = sm_runtime.invoke_endpoint(EndpointName='test-endpoint', ContentType='text/csv', Body='1,2,3,4,class')
   ```

------
#### [ AWS Command Line Interface (AWS CLI) ]

1. 使用以下代码示例可**获取候选项定义**。

   ```
   aws sagemaker describe-auto-ml-job --auto-ml-job-name 'test-automl-job' --region us-west-2
   ```

1. 使用以下代码示例可**创建模型**。

   ```
   aws sagemaker create-model --model-name 'test-sagemaker-model'
   --containers '[{
       "Image": "348316444620.dkr.ecr.us-west-2.amazonaws.com/sagemaker-sklearn-automl:2.5-1-cpu-py3", amzn-s3-demo-bucket1
       "ModelDataUrl": "s3://amzn-s3-demo-bucket/output/model.tar.gz",
       "Environment": {
           "AUTOML_SPARSE_ENCODE_RECORDIO_PROTOBUF": "1",
           "AUTOML_TRANSFORM_MODE": "feature-transform",
           "SAGEMAKER_DEFAULT_INVOCATIONS_ACCEPT": "application/x-recordio-protobuf",
           "SAGEMAKER_PROGRAM": "sagemaker_serve",
           "SAGEMAKER_SUBMIT_DIRECTORY": "/opt/ml/model/code"
       }
   }, {
       "Image": "348316444620.dkr.ecr.us-west-2.amazonaws.com/sagemaker-xgboost:1.3-1-cpu-py3",
       "ModelDataUrl": "s3://amzn-s3-demo-bucket/output/model.tar.gz",
       "Environment": {
           "MAX_CONTENT_LENGTH": "20971520",
           "SAGEMAKER_DEFAULT_INVOCATIONS_ACCEPT": "text/csv",
           "SAGEMAKER_INFERENCE_OUTPUT": "predicted_label", 
           "SAGEMAKER_INFERENCE_SUPPORTED": "predicted_label,probability,probabilities" 
       }
   }, {
       "Image": "348316444620.dkr.ecr.us-west-2.amazonaws.com/sagemaker-sklearn-automl:2.5-1-cpu-py3", aws-region
       "ModelDataUrl": "s3://amzn-s3-demo-bucket/output/model.tar.gz", 
       "Environment": { 
           "AUTOML_TRANSFORM_MODE": "inverse-label-transform", 
           "SAGEMAKER_DEFAULT_INVOCATIONS_ACCEPT": "text/csv", 
           "SAGEMAKER_INFERENCE_INPUT": "predicted_label", 
           "SAGEMAKER_INFERENCE_OUTPUT": "predicted_label", 
           "SAGEMAKER_INFERENCE_SUPPORTED": "predicted_label,probability,labels,probabilities", 
           "SAGEMAKER_PROGRAM": "sagemaker_serve", 
           "SAGEMAKER_SUBMIT_DIRECTORY": "/opt/ml/model/code"
       } 
   }]' \
   --execution-role-arn 'arn:aws:iam::1234567890:role/sagemaker-execution-role' \ 
   --region 'us-west-2'
   ```

   有关详细信息，请参阅[创建模型](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/sagemaker/create-model.html)。

   此 `create model` 命令会返回类似以下格式的响应：

   ```
   {
       "ModelArn": "arn:aws:sagemaker:us-west-2:1234567890:model/test-sagemaker-model"
   }
   ```

1. 使用以下代码示例可**创建端点配置**。

   ```
   aws sagemaker create-endpoint-config --endpoint-config-name 'test-endpoint-config' \
   --production-variants '[{"VariantName": "variant1", 
                           "ModelName": "test-sagemaker-model",
                           "InitialInstanceCount": 1,
                           "InstanceType": "ml.m5.2xlarge"
                          }]' \
   --region us-west-2
   ```

   `create endpoint` 配置命令会返回类似以下格式的响应：

   ```
   {
       "EndpointConfigArn": "arn:aws:sagemaker:us-west-2:1234567890:endpoint-config/test-endpoint-config"
   }
   ```

1. 使用以下代码示例**创建端点**。

   ```
   aws sagemaker create-endpoint --endpoint-name 'test-endpoint' \    
   --endpoint-config-name 'test-endpoint-config' \                 
   --region us-west-2
   ```

   `create endpoint` 命令会返回类似以下格式的响应：

   ```
   {
       "EndpointArn": "arn:aws:sagemaker:us-west-2:1234567890:endpoint/test-endpoint"
   }
   ```

   使用以下 [describe-endpoint](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/describe-endpoint.html) CLI 代码示例检查端点部署的进度。

   ```
   aws sagemaker describe-endpoint --endpoint-name 'test-endpoint' --region us-west-2
   ```

   上面的进度检查将返回以下格式的响应。

   ```
   {
       "EndpointName": "test-endpoint",
       "EndpointArn": "arn:aws:sagemaker:us-west-2:1234567890:endpoint/test-endpoint",
       "EndpointConfigName": "test-endpoint-config",
       "EndpointStatus": "Creating",
       "CreationTime": 1660251167.595,
       "LastModifiedTime": 1660251167.595
   }
   ```

   将 `EndpointStatus` 更改为 `InService` 后，端点即可用于实时推理。

1. 使用以下命令结构可**调用端点**进行实时推理。

   ```
   aws sagemaker-runtime invoke-endpoint --endpoint-name 'test-endpoint' \
   --region 'us-west-2' \
   --body '1,51,3.5,1.4,0.2' \
   --content-type 'text/csv' \
   '/tmp/inference_output'
   ```

   有关更多选项，请参阅[调用端点](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/sagemaker-runtime/invoke-endpoint.html)。

------

## 部署来自不同账户的模型
<a name="autopilot-deploy-models-realtime-across-accounts"></a>

您可以从生成模型的原始账户之外的其他账户部署 Autopilot 模型。对于实施跨账户模型部署，本节介绍如何执行以下操作：   向所要部署模型所在的账户（生成账户）授予代入角色的权限。   从部署账户发出对 `DescribeAutoMLJob` 的调用以获取模型信息。   从生成账户授予对模型构件的访问权限。   

1. **向部署账户授予权限** 

   要代入生成账户中的角色，您必须向部署账户授予权限。这允许部署账户描述生成账户中的 Autopilot 作业。

   以下示例将生成账户与可信 `sagemaker-role` 实体结合使用。示例说明如何向 ID 为 111122223333 的部署账户授予，以便代入生成账户角色。

   ```
   "Statement": [
           {
               "Effect": "Allow",
               "Principal": {
                   "Service": [
                       "sagemaker.amazonaws.com"
                   ],
                   "AWS": [ "111122223333"]
               },
               "Action": "sts:AssumeRole"
           }
   ```

   ID 为 111122223333 的新账户现在可以代入生成账户的角色。

   接下来，从部署账户调用 `DescribeAutoMLJob` API 以获取生成账户创建的作业的描述。

   以下代码示例描述了部署账户中的模型。

   ```
   import sagemaker 
   import boto3
   session = sagemaker.session.Session()
   
   sts_client = boto3.client('sts')
   sts_client.assume_role
   
   role = 'arn:aws:iam::111122223333:role/sagemaker-role'
   role_session_name = "role-session-name"
   _assumed_role = sts_client.assume_role(RoleArn=role, RoleSessionName=role_session_name)
   
   credentials = _assumed_role["Credentials"]
   access_key = credentials["AccessKeyId"]
   secret_key = credentials["SecretAccessKey"]
   session_token = credentials["SessionToken"]
   
   session = boto3.session.Session()
           
   sm_client = session.client('sagemaker', region_name='us-west-2', 
                              aws_access_key_id=access_key,
                               aws_secret_access_key=secret_key,
                               aws_session_token=session_token)
   
   # now you can call describe automl job created in account A 
   
   job_name = "test-job"
   response= sm_client.describe_auto_ml_job(AutoMLJobName=job_name)
   ```

1. **向部署账户授予访问权限**，以访问生成账户中的模型构件。

   部署账户只需要访问生成账户中的模型构件以便进行部署。它们位于模型生成期间在原始 `CreateAutoMLJob` API 调用中指定的 [S3 OutputPath](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLOutputDataConfig.html#sagemaker-Type-AutoMLOutputDataConfig-S3OutputPath) 中。

   要向部署账户提供对模型构件的访问权限，请选择以下选项之一：

   1. 从生成账户向部署账户[授予访问权限](https://aws.amazon.com/premiumsupport/knowledge-center/cross-account-access-s3/)以访问 `ModelDataUrl`。

      接下来，您需要向部署账户授予代入角色的权限。请按照[实时推理步骤](https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-deploy-models.html#autopilot-deploy-models-realtime)中的说明进行部署。

   1. [将模型工件从生成账户的原始 [S3](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLOutputDataConfig.html#sagemaker-Type-AutoMLOutputDataConfig-S3OutputPath) 复制](https://aws.amazon.com/premiumsupport/knowledge-center/copy-s3-objects-account/)OutputPath到生成账户。

      要授予对模型构件的访问权限，您必须定义 `best_candidate` 模型并将模型容器重新分配给新账户。

      以下示例说明如何定义 `best_candidate` 模型并重新分配 `ModelDataUrl`。

      ```
      best_candidate = automl.describe_auto_ml_job()['BestCandidate']
      
      # reassigning ModelDataUrl for best_candidate containers below
      new_model_locations = ['new-container-1-ModelDataUrl', 'new-container-2-ModelDataUrl', 'new-container-3-ModelDataUrl']
      new_model_locations_index = 0
      for container in best_candidate['InferenceContainers']:
          container['ModelDataUrl'] = new_model_locations[new_model_locations_index++]
      ```

      分配完容器后，请按照[使用部署 SageMaker APIs](#autopilot-deploy-models-api)中的步骤进行部署。

要在实时推理中构建负载，请参阅笔记本示例来[定义测试负载](https://aws.amazon.com/getting-started/hands-on/machine-learning-tutorial-automatically-create-models)。要从 CSV 文件创建负载并调用端点，请参阅[自动创建机器学习模型](https://aws.amazon.com/getting-started/hands-on/create-machine-learning-model-automatically-sagemaker-autopilot/#autopilot-cr-room)中的**使用模型进行预测**部分。

# 运行批量推理作业
<a name="autopilot-deploy-models-batch"></a>

批量预测也称为离线推理，可根据一批观察数据生成模型预测。对于大型数据集或者在您不需要立即响应模型预测请求时，批量推理是很好的选择。与之对比的是，在线推理（[实时推理](https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-deploy-models.html#autopilot-deploy-models-realtime)）会实时生成预测。你可以使用 Python SDK、Autopilot 用户界面 (UI)、[SageMaker Python SDK](https://sagemaker.readthedocs.io/en/stable/) ([boto3) 或 () 从自动驾驶模型中AWS 进行](https://aws.amazon.com/sdk-for-python/)批量推断。 AWS Command Line Interface [AWS CLI](https://docs.aws.amazon.com/cli/)

以下选项卡显示了部署模型的三个选项：使用 APIs、Autopilot UI 或使用从不同的账户 APIs 进行部署。这些说明假定您已在 Autopilot 中创建了模型。如果您还没有模型，请参阅 [使用 AutoML API 为表格数据创建回归或分类作业](autopilot-automate-model-development-create-experiment.md)。要查看每个选项的示例，请打开各个选项卡。

## 使用 Autopilot UI 部署模型
<a name="autopilot-deploy-models-batch-ui"></a>

Autopilot UI 包含有用的下拉菜单、切换开关、工具提示等，可帮助您浏览模型部署。

下面的步骤说明如何部署 Autopilot 实验中的模型以便批量预测。

1. 登录[https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/)并从导航窗格中选择 **Studio**。

1. 在左侧导航窗格中，选择 **Studio**。

1. 在**开始使用**下，选择要在其中启动 Studio 应用程序的域。如果您的用户配置文件仅属于一个域，则看不到用于选择域的选项。

1. 选择要为其启动 Studio Classic 应用程序的用户配置文件。如果域中没有用户配置文件，请选择**创建用户配置文件**。有关更多信息，请参阅[添加用户配置文件](https://docs.aws.amazon.com/sagemaker/latest/dg/domain-user-profile-add.html)。

1. 选择**启动 Studio**。如果用户配置文件属于共享空间，请选择**打开空间**。

1. 当 SageMaker Studio Classic 主机打开时，选择 “**启动 SageMaker Studio**” 按钮。

1. 从左侧导航窗格中选择 **AutoML**。

1. 在**名称**下，选择与您要部署的模型相对应的 Autopilot 实验。这将打开新的 **Autopilot 作业**选项卡。

1. 在**模型名称**部分中，选择要部署的模型。

1. 选择 **Deploy model (部署模型)**。这将打开一个新选项卡。

1. 在页面顶部，选择**批量预测**。

1. 对于**批量转换作业配置**，请输入**实例类型**、**实例计数**和其他可选信息。

1. 在**输入数据配置**部分中，打开下拉菜单。

   1. 对于 **S3 数据类型**，请选择**ManifestFile**或 **S3** Prefix。

   1. **对于 “**分割” 类型**，选择 “**线路**”、“**录音**” **TFRecord**或 “无”。**

   1. 对于**压缩**，选择 **Gzip** 或**无**。

1. 对于 **S3 位置**，请输入数据和其他可选信息的 Amazon S3 存储桶位置。

1. 在**输出数据配置**下，输入用于存储输出数据的 S3 存储桶，然后选择如何[组合作业的输出](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TransformOutput.html#sagemaker-Type-TransformOutput-AssembleWith)。

   1. 对于**其他配置（可选）**，您可以输入 MIME 类型和 **S3 加密密钥**。

1. 对于**输入/输出筛选和数据联接（可选）**，您可以输入 JSONpath 表达式来筛选输入数据，将输入源数据与输出数据联接，然后输入 JSONpath 表达式来筛选输出数据。

   1. 有关每种过滤器的示例，请参阅 [DataProcessing API](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DataProcessing.html#sagemaker-Type-DataProcessing-InputFilter)。

1. 要对输入数据集执行批量预测，请选择**创建批量转换作业**。此时将打开一个新的**批量转换作业**选项卡。

1. 在**批量转换作业**选项卡中：在**状态**部分查找您的作业名称。然后检查作业的进度。

## 使用部署 SageMaker APIs
<a name="autopilot-deploy-models-batch-steps"></a>

要使用 SageMaker APIs 进行批量推理，需要三个步骤：

1. **获取候选项定义** 

   中的候选定义[InferenceContainers](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLCandidate.html#sagemaker-Type-AutoMLCandidate-InferenceContainers)用于创建 A SageMaker I 模型。

   以下示例说明如何使用 [DescribeAutoMLJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeAutoMLJob.html)API 获取最佳候选模型的候选定义。以以下 AWS CLI 命令为例。

   ```
   aws sagemaker describe-auto-ml-job --auto-ml-job-name <job-name> --region <region>
   ```

   使用 [ListCandidatesForAutoMLJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ListCandidatesForAutoMLJob.html)API 列出所有候选人。请参阅以下 AWS CLI 命令示例。

   ```
   aws sagemaker list-candidates-for-auto-ml-job --auto-ml-job-name <job-name> --region <region>
   ```

1. **创建 A SageMaker I 模型**

   要使用 [CreateModel](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModel.html)API 创建 SageMaker AI 模型，请使用前面步骤中的容器定义。请参阅以下 AWS CLI 命令示例。

   ```
   aws sagemaker create-model --model-name '<your-custom-model-name>' \
                       --containers ['<container-definition1>, <container-definition2>, <container-definition3>]' \
                       --execution-role-arn '<execution-role-arn>' --region '<region>
   ```

1. **创建 A SageMaker I 转换作业** 

   以下示例使用 [CreateTransformJob](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/create-transform-job.html)AP SageMaker I 创建 AI 转换作业。以以下 AWS CLI 命令为例。

   ```
   aws sagemaker create-transform-job --transform-job-name '<your-custom-transform-job-name>' --model-name '<your-custom-model-name-from-last-step>'\
   --transform-input '{
           "DataSource": {
               "S3DataSource": {
                   "S3DataType": "S3Prefix", 
                   "S3Uri": "<your-input-data>" 
               }
           },
           "ContentType": "text/csv",
           "SplitType": "Line"
       }'\
   --transform-output '{
           "S3OutputPath": "<your-output-path>",
           "AssembleWith": "Line" 
       }'\
   --transform-resources '{
           "InstanceType": "<instance-type>", 
           "InstanceCount": 1
       }' --region '<region>'
   ```

使用 [DescribeTransformJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeTransformJob.html)API 检查转换任务的进度。以以下 AWS CLI 命令为例。

```
aws sagemaker describe-transform-job --transform-job-name '<your-custom-transform-job-name>' --region <region>
```

作业完成后，在 `<your-output-path>` 中可找到预测结果。

输出文件名称格式如下：`<input_data_file_name>.out`。例如，如果您的输入文件是 `text_x.csv`，则输出文件名称是 `text_x.csv.out`。

以下选项卡显示了 SageMaker Python SD AWS K、Python SDK (boto3) 和. AWS CLI

------
#### [ SageMaker Python SDK ]

以下示例使用 **[SageMaker Python 开发工具包](https://sagemaker.readthedocs.io/en/stable/overview.html)**进行批量预测。

```
from sagemaker import AutoML

sagemaker_session= sagemaker.session.Session()

job_name = 'test-auto-ml-job' # your autopilot job name
automl = AutoML.attach(auto_ml_job_name=job_name)
output_path = 's3://test-auto-ml-job/output'
input_data = 's3://test-auto-ml-job/test_X.csv'

# call DescribeAutoMLJob API to get the best candidate definition
best_candidate = automl.describe_auto_ml_job()['BestCandidate']
best_candidate_name = best_candidate['CandidateName']

# create model
model = automl.create_model(name=best_candidate_name, 
               candidate=best_candidate)

# create transformer
transformer = model.transformer(instance_count=1, 
    instance_type='ml.m5.2xlarge',
    assemble_with='Line',
    output_path=output_path)

# do batch transform
transformer.transform(data=input_data,
                      split_type='Line',
                       content_type='text/csv',
                       wait=True)
```

------
#### [ AWS SDK for Python (boto3) ]

 以下示例使用 **AWS SDK for Python (boto3)** 进行批量预测。

```
import sagemaker 
import boto3

session = sagemaker.session.Session()

sm_client = boto3.client('sagemaker', region_name='us-west-2')
role = 'arn:aws:iam::1234567890:role/sagemaker-execution-role'
output_path = 's3://test-auto-ml-job/output'
input_data = 's3://test-auto-ml-job/test_X.csv'

best_candidate = sm_client.describe_auto_ml_job(AutoMLJobName=job_name)['BestCandidate']
best_candidate_containers = best_candidate['InferenceContainers']
best_candidate_name = best_candidate['CandidateName']

# create model
reponse = sm_client.create_model(
    ModelName = best_candidate_name,
    ExecutionRoleArn = role,
    Containers = best_candidate_containers 
)

# Lauch Transform Job
response = sm_client.create_transform_job(
    TransformJobName=f'{best_candidate_name}-transform-job',
    ModelName=model_name,
    TransformInput={
        'DataSource': {
            'S3DataSource': {
                'S3DataType': 'S3Prefix',
                'S3Uri': input_data
            }
        },
        'ContentType': "text/csv",
        'SplitType': 'Line'
    },
    TransformOutput={
        'S3OutputPath': output_path,
        'AssembleWith': 'Line',
    },
    TransformResources={
        'InstanceType': 'ml.m5.2xlarge',
        'InstanceCount': 1,
    },
)
```

批量推理作业返回以下格式的响应。

```
{'TransformJobArn': 'arn:aws:sagemaker:us-west-2:1234567890:transform-job/test-transform-job',
 'ResponseMetadata': {'RequestId': '659f97fc-28c4-440b-b957-a49733f7c2f2',
  'HTTPStatusCode': 200,
  'HTTPHeaders': {'x-amzn-requestid': '659f97fc-28c4-440b-b957-a49733f7c2f2',
   'content-type': 'application/x-amz-json-1.1',
   'content-length': '96',
   'date': 'Thu, 11 Aug 2022 22:23:49 GMT'},
  'RetryAttempts': 0}}
```

------
#### [ AWS Command Line Interface (AWS CLI) ]

1. 使用以下代码示例可**获取候选项定义**。

   ```
   aws sagemaker describe-auto-ml-job --auto-ml-job-name 'test-automl-job' --region us-west-2
   ```

1. 使用以下代码示例可**创建模型**。

   ```
   aws sagemaker create-model --model-name 'test-sagemaker-model'
   --containers '[{
       "Image": "348316444620.dkr.ecr.us-west-2.amazonaws.com/sagemaker-sklearn-automl:2.5-1-cpu-py3",
       "ModelDataUrl": "s3://amzn-s3-demo-bucket/out/test-job1/data-processor-models/test-job1-dpp0-1-e569ff7ad77f4e55a7e549a/output/model.tar.gz",
       "Environment": {
           "AUTOML_SPARSE_ENCODE_RECORDIO_PROTOBUF": "1",
           "AUTOML_TRANSFORM_MODE": "feature-transform",
           "SAGEMAKER_DEFAULT_INVOCATIONS_ACCEPT": "application/x-recordio-protobuf",
           "SAGEMAKER_PROGRAM": "sagemaker_serve",
           "SAGEMAKER_SUBMIT_DIRECTORY": "/opt/ml/model/code"
       }
   }, {
       "Image": "348316444620.dkr.ecr.us-west-2.amazonaws.com/sagemaker-xgboost:1.3-1-cpu-py3",
       "ModelDataUrl": "s3://amzn-s3-demo-bucket/out/test-job1/tuning/flicdf10v2-dpp0-xgb/test-job1E9-244-7490a1c0/output/model.tar.gz",
       "Environment": {
           "MAX_CONTENT_LENGTH": "20971520",
           "SAGEMAKER_DEFAULT_INVOCATIONS_ACCEPT": "text/csv",
           "SAGEMAKER_INFERENCE_OUTPUT": "predicted_label", 
           "SAGEMAKER_INFERENCE_SUPPORTED": "predicted_label,probability,probabilities" 
       }
   }, {
       "Image": "348316444620.dkr.ecr.us-west-2.amazonaws.com/sagemaker-sklearn-automl:2.5-1-cpu-py3", 
       "ModelDataUrl": "s3://amzn-s3-demo-bucket/out/test-job1/data-processor-models/test-job1-dpp0-1-e569ff7ad77f4e55a7e549a/output/model.tar.gz", 
       "Environment": { 
           "AUTOML_TRANSFORM_MODE": "inverse-label-transform", 
           "SAGEMAKER_DEFAULT_INVOCATIONS_ACCEPT": "text/csv", 
           "SAGEMAKER_INFERENCE_INPUT": "predicted_label", 
           "SAGEMAKER_INFERENCE_OUTPUT": "predicted_label", 
           "SAGEMAKER_INFERENCE_SUPPORTED": "predicted_label,probability,labels,probabilities", 
           "SAGEMAKER_PROGRAM": "sagemaker_serve", 
           "SAGEMAKER_SUBMIT_DIRECTORY": "/opt/ml/model/code" 
       } 
   }]' \
   --execution-role-arn 'arn:aws:iam::1234567890:role/sagemaker-execution-role' \
   --region 'us-west-2'
   ```

1. 使用以下代码示例可**创建转换作业**。

   ```
   aws sagemaker create-transform-job --transform-job-name 'test-tranform-job'\
    --model-name 'test-sagemaker-model'\
   --transform-input '{
           "DataSource": {
               "S3DataSource": {
                   "S3DataType": "S3Prefix",
                   "S3Uri": "s3://amzn-s3-demo-bucket/data.csv"
               }
           },
           "ContentType": "text/csv",
           "SplitType": "Line"
       }'\
   --transform-output '{
           "S3OutputPath": "s3://amzn-s3-demo-bucket/output/",
           "AssembleWith": "Line"
       }'\
   --transform-resources '{
           "InstanceType": "ml.m5.2xlarge",
           "InstanceCount": 1
       }'\
   --region 'us-west-2'
   ```

1. 使用以下代码示例可**检查转换作业的进度**。

   ```
   aws sagemaker describe-transform-job --transform-job-name  'test-tranform-job' --region us-west-2
   ```

   以下是来自转换作业的响应。

   ```
   {
       "TransformJobName": "test-tranform-job",
       "TransformJobArn": "arn:aws:sagemaker:us-west-2:1234567890:transform-job/test-tranform-job",
       "TransformJobStatus": "InProgress",
       "ModelName": "test-model",
       "TransformInput": {
           "DataSource": {
               "S3DataSource": {
                   "S3DataType": "S3Prefix",
                   "S3Uri": "s3://amzn-s3-demo-bucket/data.csv"
               }
           },
           "ContentType": "text/csv",
           "CompressionType": "None",
           "SplitType": "Line"
       },
       "TransformOutput": {
           "S3OutputPath": "s3://amzn-s3-demo-bucket/output/",
           "AssembleWith": "Line",
           "KmsKeyId": ""
       },
       "TransformResources": {
           "InstanceType": "ml.m5.2xlarge",
           "InstanceCount": 1
       },
       "CreationTime": 1662495635.679,
       "TransformStartTime": 1662495847.496,
       "DataProcessing": {
           "InputFilter": "$",
           "OutputFilter": "$",
           "JoinSource": "None"
       }
   }
   ```

   将 `TransformJobStatus` 更改为 `Completed` 后，您可以在中 `S3OutputPath` 查看推理结果。

------

## 部署来自不同账户的模型
<a name="autopilot-deploy-models-batch-across-accounts"></a>

要在不同于生成模型的账户的其他账户中创建批量推理作业，请按照[部署来自不同账户的模型](autopilot-deploy-models-realtime.md#autopilot-deploy-models-realtime-across-accounts)中的说明进行操作。然后，您可以按照[使用部署 SageMaker APIs](#autopilot-deploy-models-batch-steps)中的步骤创建模型和转换作业。

# 查看模型详细信息
<a name="autopilot-models-details"></a>

对于您可以获取的候选模型，Autopilot 会生成相关详细信息。这些详细信息包括以下内容：
+ 聚合 SHAP 值的图表，指示每个特征的重要性。这有助于解释模型预测。
+ 包括目标指标在内的各种训练和验证指标的摘要统计数据。
+ 用于训练和调整模型的超参数列表。

要在运行 Autopilot 作业后查看模型详细信息，请按照以下步骤操作：

1. 从左侧导航窗格中选择 “**主页**” 图标 (![\[Black square icon representing a placeholder or empty image.\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/studio/icons/house.png))，查看顶级 **Amazon SageMaker Studio Classic** 导航菜单。

1. 从主工作区选择 **AutoML** 卡片。这将打开新的 **Autopilot** 选项卡。

1. 在**名称**部分中，选择包含您要检查的 Autopilot 作业的详细信息。这将打开新的 **Autopilot 作业**选项卡。

1. **Autopilot 作业**面板在**模型名称**下列出指标值，包括各个模型的**目标**指标。**最佳模型**列在**模型名称**下的列表顶部，还会在**模型**选项卡中突出显示。

   1. 要查看模型详细信息，请选择您感兴趣的模型，然后选择**查看模型详细信息**。这将打开一个新**模型详细信息**选项卡。

1. **模型详细信息**选项卡分为四个子部份。

   1. 顶部的**解释功能**选项卡包含聚合 SHAP 值的图表，指示每个特征的重要性。接下来是该模型的指标和超参数值。

   1. **性能**选项卡包含指标统计数据和混淆矩阵。

   1. **构件**选项卡包含有关模型输入、输出和中间结果的信息。

   1. **网络**选项卡汇总了网络隔离和加密选项。
**注意**  
**性能**选项卡中仅为**最佳模型**生成特征重要性和信息。

   有关 SHAP 值如何有助于基于功能重要性来解释预测的更多信息，请查看白皮书[《了解模型的解释功能》](https://pages.awscloud.com/rs/112-TZM-766/images/Amazon.AI.Fairness.and.Explainability.Whitepaper.pdf)。 SageMaker AI 开发者指南的[模型可解释性](clarify-model-explainability.md)主题中也提供了更多信息。

# 查看 Autopilot 模型性能报告
<a name="autopilot-model-insights"></a>

Amazon SageMaker AI 模型质量报告（也称为绩效报告）为 AutoML 作业生成的最佳候选模型提供见解和质量信息。这些信息包括作业详细信息、模型问题类型、目标函数和其他与问题类型相关的信息。本指南介绍如何以图形方式查看 Amazon A SageMaker utopilot 性能指标，或者如何在 JSON 文件中以原始数据形式查看指标。

例如，在分类问题中，模型质量报告包括以下内容：
+ 混淆矩阵
+ 接收者操作特征曲线下的面积 (AUC)
+ 用于了解假阳性和假阴性的信息
+ 在真阳性和假阳性之间权衡
+ 在查准率和查全率之间权衡

Autopilot 还会提供所有候选模型的性能指标。这些指标使用所有训练数据进行计算，用于估算模型性能。默认情况下，主工作区域包括这些指标。指标的类型由所要解决的问题类型确定。

有关 Autopilot 支持的可用指标列表，请参阅 A [mazon SageMaker API 参考文档](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLJobObjective.html)。

您可以使用相关指标对候选模型进行排序，以帮助您选择和部署能满足业务需求的模型。有关这些指标的定义，请参阅 [Autopilot 候选指标](https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-metrics-validation.html#autopilot-metrics)主题。

要查看 Autopilot 作业的性能报告，请按照以下步骤操作：

1. 从左侧导航窗格中选择 “**主页**” 图标 (![\[Black square icon representing a placeholder or empty image.\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/studio/icons/house.png))，查看顶级 **Amazon SageMaker Studio Classic** 导航菜单。

1. 从主工作区选择 **AutoML** 卡片。这将打开新的 **Autopilot** 选项卡。

1. 在**名称**部分中，选择包含您要检查的 Autopilot 作业的详细信息。这将打开新的 **Autopilot 作业**选项卡。

1. **Autopilot 作业**面板在**模型名称**下列出指标值，包括各个模型的**目标**指标。**最佳模型**列在**模型名称**下的列表顶部，并在**模型**选项卡中突出显示。

   1. 要查看模型详细信息，请选择您感兴趣的模型，然后选择**查看模型详细信息**。这将打开一个新**模型详细信息**选项卡。

1. 选择**解释功能**与**构件**选项卡之间的**性能**选项卡。

   1. 在选项卡的右上角，选择**下载性能报告**按钮上的向下箭头。

   1. 向下箭头提供了两个选项用于查看 Autopilot 性能指标：

      1. 您可以下载性能报告的 PDF 文件来查看指标图表。

      1. 您可以下载 JSON 文件，以原始数据格式查看指标。

有关如何在 SageMaker Studio Classic 中创建和运行 AutoML 作业的说明，请参阅。[使用 AutoML API 为表格数据创建回归或分类作业](autopilot-automate-model-development-create-experiment.md)

性能报告分为两个部分。第一部分包含有关生成模型的 Autopilot 作业的详细信息。第二部分包含模型质量报告。

## Autopilot 作业详细信息
<a name="autopilot-model-insights-details-and-metrics-table"></a>

报告的第一部分提供了有关生成模型的 Autopilot 作业的一些常规信息。这些作业详细信息包括以下内容：
+ Autopilot 候选项名称
+ Autopilot 作业名称
+ 问题类型
+ 目标指标
+ 优化方向

## 模型质量报告
<a name="autopilot-model-quality-report"></a>

模型质量信息由 Autopilot 模型见解生成。所生成报告的内容取决于其解决的问题类型：回归、二元分类还是多元分类。报告指定了评估数据集中包含的行数，以及进行评估的时间。

### 指标表
<a name="autopilot-model-quality-report-metrics"></a>

模型质量报告的第一部分包含指标表。它们适用于模型所解决的问题类型。

下图是 Autopilot 针对回归问题生成的指标表示例。它显示指标名称、值和标准差。

![\[Amazon SageMaker Autopilot 模型见解回归指标报告示例。\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/autopilot/autopilot-model-insights-regression-metrics.png)


下图是 Autopilot 针对多元分类问题生成的指标表示例。它显示指标名称、值和标准差。

![\[Amazon SageMaker Autopilot 模型见解多类分类指标报告示例。\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/autopilot/autopilot-model-insights-multiclass-metrics-report.png)


### 图形模型性能信息
<a name="autopilot-model-quality-report-graphs"></a>

 模型质量报告的第二部分包含图形信息，用于帮助您评估模型性能。此部分的内容取决于建模中使用的问题类型。

#### 接收者操作特征曲线下面积
<a name="autopilot-model-insights-auc-roc"></a>

接收者操作特征曲线下面积表示在真阳性和假阳性之间的权衡。它是用于二元分类模型的行业标准确性指标。AUC（Area Under the Curve，曲线下面积）衡量模型为针对阳性样本进行预测，相比针对阴性样本进行预测得到更高分数的能力。AUC 指标提供了在所有可能的分类阈值中，模型性能的综合度量。

AUC 指标返回从 0 到 1 的数值。接近 1 的 AUC 值指示高度准确的机器学习模型。接近 0.5 的值指示模型的性能基本相当于随机猜测。AUC 值接近 0 表示模型已经学习了正确的模式，但做出了完全不准确的预测。接近零的值表示数据有问题。有关 AUC 指标的更多信息，请转到维基百科上的[接收者操作特征](https://en.wikipedia.org/wiki/Receiver_operating_characteristic)页面。

以下是接收者操作特性曲线下面积图示例，用于评估二元分类模型所做的预测。虚线表示对 no-better-than-random猜测进行分类的模型将得分的接收器操作特性曲线下方的区域，AUC 分数为 0.5。更准确的分类模型的曲线高于这个随机基线，其中真阳性的比率超过了假阳性。表示二元分类模型性能的接收者操作特征曲线下面积采用粗实线。

![\[Amazon SageMaker Autopilot 区域下方的接收机工作特性曲线示例。\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/autopilot/autopilot-model-insights-receiver-operating-characteristic-curve.png)


图中**假阳性率** (FPR) 和**真阳性率** (TPR) 的组成部分摘要定义如下。
+ 正确预测
  + **真阳性** (TP)：预测的值为 1，真正的值为 1。
  + **真阴性** (TN)：预测的值为 0，真正的值为 0。
+ 错误预测
  + **假阳性** (FP)：预测的值为 1，但真正的值为 0。
  + **假阴性** (FN)：预测的值为 0，但真正的值为 1。

**假阳性率** (FPR) 衡量的是被错误预测为阳性 (FP) 的真阴性 (TN) 占 FP 和 TN 之和的比例。范围为 0 至 1。值越小说明预测准确性越高：
+ FPR = FP/(FP\$1TN)

**真阳性率** (TPR) 衡量的是被正确预测为阳性的真阳性 (TP) 占 TP 和假阴性 (FN) 之和的比例。范围为 0 至 1。较大的值表示更好的预测准确度。
+ TPR = TP/(TP\$1FN)

#### 混淆矩阵
<a name="autopilot-model-insights-confusion-matrix"></a>

混淆矩阵提供了一种方法，用于可视化模型针对不同问题的二元分类和多元分类预测的准确性。模型质量报告中的混淆矩阵包含以下内容。
+ 针对实际标签的正确和错误预测的数量和百分比
+ 准确预测的数量和百分比按照从左上角到右下角沿对角线排列。
+ 不准确预测的数量和百分比按照从右上角到左下角沿对角线排列。

在混淆矩阵上，错误预测是混淆值。

下图是一个二元分类问题的混淆矩阵的示例。它包含以下信息：
+ 垂直轴分为两行，分别包含正确和错误的实际标签。
+ 水平轴分为两列，包含模型所预测的正确和错误的标签。
+ 彩色条形图为较多数量的样本分配较深的色调，以直观地指示分类到每个类别中值的数量。

在此示例中，模型正确预测了实际的 2817 个假值，正确预测了 353 个实际的真值。模型错误地将 130 个实际的真值预测为假，并将 33 个实际的假值预测为真。色调的差异表明数据集不平衡。这种不平衡是因为实际的假标签比实际的真标签多得多。

![\[Amazon SageMaker 自动驾驶二进制混淆矩阵示例。\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/autopilot/autopilot-model-insights-confusion-matrix-binary.png)


下图是一个多元分类问题的混淆矩阵的示例。模型质量报告中的混淆矩阵包含以下内容。
+ 垂直轴分为三行，包含三个不同的实际标签。
+ 水平轴分为三列，包含模型所预测的标签。
+ 彩色条形图为较多数量的样本分配较深的色调，以直观地指示分类到每个类别中值的数量。

在下面的示例中，模型正确预测了标签 **f** 的 354 个实际值、标签 **i** 的 1094 个值和标签 **m** 的 852 个值。色调的差异表明数据集不平衡，因为值 **i** 的标签比值 **f** 或 **m** 要多得多。

![\[Amazon SageMaker Autopilot 多类混淆矩阵示例。\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/autopilot/autopilot-model-insights-confusion-matrix-multiclass.png)


模型质量报告提供了一个混淆矩阵，对于多元分类问题类型，最多可容纳 15 个标签。如果与标签对应的行显示 `Nan` 值，这意味着用于检查模型预测的验证数据集不包含带有该标签的数据。

#### 增益曲线
<a name="autopilot-model-insights-precision-gain-curve"></a>

在二元分类中，增益曲线预测使用一定百分比的数据集来寻找阳性标签的累计收益。在训练期间，通过在每个十分位数将累计的阳性观察数据数量，除以数据中阳性观察数据的总数，以此来计算增益值。如果训练期间创建的分类模型代表了未用于训练的数据，则可以使用增益曲线来预测为获得一定百分比的阳性标签，而必须作为目标的数据百分比。使用的数据集百分比越大，找到的阳性标签的百分比就越高。

在下面的示例图中，增益曲线是斜率变化的线段。直线是通过从数据集中随机选择一定百分比的数据而找到的阳性标签的百分比。将数据集的 20% 作为目标后，您会发现超过 40% 的阳性标签。举个例子，您可以考虑使用收益曲线来确定在营销活动中的投放量。在我们的增益曲线示例中，要让社区中 83% 的人购买饼干，您需要向大约 60% 的社区人员发送广告。

![\[带有百分比和增益值的 SageMaker Amazon Autopilot 增益曲线示例。\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/autopilot/autopilot-model-insights-gain-curve.png)


#### 提升曲线
<a name="autopilot-model-insights-lift-curve"></a>

在二元分类中，提升曲线说明了使用经过训练的模型进行预测时，与随机猜测相比，找到阳性标签的可能性的提升。在训练期间，在每个十分位数，使用百分比增益相对于阳性标签的比率来计算提升值。如果训练期间创建的模型代表了未用于训练的数据，则使用提升曲线来预测使用模型相比随机猜测的增益。

在下面的示例图中，提升曲线是斜率变化的线段。直线是与从数据集中随机选择对应百分比相关的提升曲线。对模型的分类标签使用 40% 的数据集作为目标后，您预计找到的阳性标签数量，约为通过随机选择 40% 的未用于训练的数据所能找到的阳性标签数量的 1.7 倍。

![\[带有百分比和提升值的 SageMaker Amazon Autopilot 提升曲线示例。\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/autopilot/autopilot-model-insights-lift-curve.png)


#### 查准率-查全率曲线
<a name="autopilot-model-insights-precision-recall-curve"></a>

查准率-查全率曲线代表了在二元分类问题中，在查准率和查全率之间的权衡。

**查准率**衡量在所有阳性预测（TP 和假阳性）中，预测为阳性的实际阳性 (TP) 的比例。范围为 0 至 1。较大的值表示预测值有更好的准确性。
+ 查准率 = TP/(TP\$1FP)

**查全率**衡量在所有实际阳性预测（TP 和假阴性）中，预测为阳性的实际阳性的比例。这也被称为敏感度或真阳性率。范围为 0 至 1。值越大表示可以更好地检测样本中的阳性值。
+ 查全率 = TP/(TP\$1FN)

分类问题的目标是正确地标注尽可能多的元素。查全率高但查准率低的系统返回的假阳性百分比很高。

下图描绘了将每封电子邮件标记为垃圾邮件的垃圾邮件筛选器。它的查全率很高，但查准率低，因为查全率不能衡量假阳性。

如果您的问题对假阳性值的惩罚很低，但对错过真阳性结果的惩罚很高，则更重视的是查全率而不是查准率。例如，在自动驾驶车辆中检测即将发生的碰撞。

![\[高查全率和低查准率系统的 Autopilot 示例，将所有样本建模为阳性。\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/autopilot/autopilot-model-insights-high-recall-low-precision.PNG)


相比之下，查准率高但查全率低的系统返回的假阴性百分比很高。将每封电子邮件标记为正常电子邮件（而不是垃圾邮件）的垃圾邮件筛选器查准率高，但查全率低，因为查准率无法衡量假阴性。

如果您的问题对假阴性值的惩罚很低，但对错过真阴性结果的惩罚很高，则更重视的是查准率而不是查全率。例如，标记可疑筛选条件用于税务审计。

下图描绘了一个垃圾邮件筛选器，具有高查准率，但查全率低，因为查准率不能衡量假阴性。

![\[高查准率和低查全率系统的 Autopilot 示例，将所有样本建模为阴性。\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/autopilot/autopilot-model-insights-high-precision-low-recall.PNG)


能够同时进行高查准率和高查全率预测的模型，可以得到大量正确标注的结果。有关更多信息，请参阅维基百科中的[查准率和查全率](https://en.wikipedia.org/wiki/Precision_and_recall)。

#### 查准率-查全率曲线下面积 (AUPRC)
<a name="autopilot-model-insights-area-under-precision-recall-curve"></a>

对于二元分类问题，Amazon A SageMaker utopilot 包括精确召回曲线 (AUPRC) 下方区域的图表。AUPRC 指标提供了在所有可能的分类阈值中，同时使用查准率和查全率的模型性能综合度量。AUPRC 不考虑真阴性的数量。因此，在数据中存在大量真阴性的情况下，它对于评估模型性能会很有用。例如，对包含罕见突变的基因进行建模。

下图是 AUPRC 图表的示例。查准率的最高值 1，查全率为 0。在图表的右下角，查全率是其最高值 (1)，查准率为 0。在这两点之间，AUPRC 曲线说明了在不同阈值下精度和查全率之间的权衡。

![\[查准率-查全率曲线描绘了在不同阈值下，在查准率和查全率之间的权衡。\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/autopilot/autopilot-model-insights-binary-precision-recall.png)


#### 实际值与预测值图表
<a name="autopilot-model-insights-actual-vs-predicted-plot"></a>

实际值与预测值的图表显示了实际模型值与预测模型值之间的差异。在下面的示例图中，实线是一条最佳拟合的直线。如果模型的准确性为 100%，则每个预测点将等于其实际点，并位于这条最佳拟合线上。距离最佳拟合线的距离直观地指示了模型误差。距离最佳拟合线的距离越大，模型误差越大。

![\[最佳拟合直线图、实际值与预测值差异图以及模型误差的示例。\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/autopilot/autopilot-model-insights-actual-vs-predicted-plot.png)


#### 标准化残差图
<a name="autopilot-model-insights-standardized-residual"></a>

标准化残差图包含以下统计项：

**`residual`**  
（原始）残差显示实际值与模型的预测值之间的差异。差异越大，残差值越大。

**`standard deviation`**  
标准差用于衡量值相对平均值的差异。高标准差表明有许多值与其平均值存在很大差异。低标准差表明有许多值接近其平均值。

**`standardized residual`**  
标准化残差将原始残差除以其标准差。标准化残差以标准差为单位，在识别数据中的异常值时非常有用，无论原始残差的比例有多大。如果某个标准化残差远小于或远大于其他标准化残差，则表明模型对这些观察数据的拟合效果不佳。

标准化残差图衡量观察数据与预期值之间差异强度。实际预测值显示在 x 轴上。差值的绝对值超过 3 的点通常被视为异常值。

以下示例图表显示，大量标准化残差聚集在水平轴上 0 附近。接近零的值表示模型对这些点的拟合效果良好。图形顶部和底部的点表示模型无法很好地预测这些点。

![\[Amazon SageMaker Autopilot 标准化残差图示例。\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/autopilot/autopilot-model-insights-standardized-residual.png)


#### 残差直方图
<a name="autopilot-model-insights-residual-histogram"></a>

残差直方图包含以下统计项：

**`residual`**  
（原始）残差显示实际值与模型的预测值之间的差异。差异越大，残差值越大。

**`standard deviation`**  
标准差用于衡量值相对平均值的差异程度。高标准差表明有许多值与其平均值存在很大差异。低标准差表明有许多值接近其平均值。

**`standardized residual`**  
标准化残差将原始残差除以其标准差。标准化残差以标准差为单位。这些值在识别数据中的异常值时非常有用，无论原始残差的比例有多大。如果某个标准化残差远小于或远大于其他标准化残差，则表明模型对这些观察数据的拟合效果不佳。

**`histogram`**  
直方图是显示值出现频率的图表。

残差直方图显示标准化残差值的分布。呈钟形分布并且中心在零的直方图，指示模型不会系统性地过高或过低预测目标值的任何特定范围。

在下图中，标准化的残差值表明模型对数据的拟合效果良好。如果图表显示的值远离中心值，则表明模型不能很好地拟合这些值。

![\[标准化残值接近零表示模型与数据拟合得很好。\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/autopilot/autopilot-model-insights-residual-histogram.png)


# 为管理 AutoML 任务生成的 Autopilot 笔记本
<a name="autopilot-automate-model-development-notebook-output"></a>

Amazon A SageMaker utopilot 使用 AutoML 作业管理自动机器学习 (AutoML) 过程中的关键任务。AutoML 作业创建了三个基于笔记本的报告，这些报告描述了 Autopilot 为生成候选模型而遵循的计划。

候选模型由一个（管道、算法）对组成。首先，有一个**数据探索**笔记本，它描述了 Autopilot 从您提供的数据中了解到的信息。其次，有一个**候选项定义**笔记本，它使用与数据相关信息来生成候选项。第三，**模型见解**报告，可以帮助详细说明 Autopilot 实验排行榜中最佳模型的性能特征。

**Topics**
+ [Autopilot 数据探索报告](autopilot-data-exploration-report.md)
+ [查找并运行候选定义笔记本](autopilot-candidate-generation-notebook.md)

如果你安装了 Amazon [ SageMaker Python SDK](https://sagemaker.readthedocs.io/en/stable)，你可以在亚马逊 SageMaker 人工智能中运行这些笔记本，也可以在本地运行这些笔记本。 您可以像共享其他 SageMaker Studio Classic 笔记本电脑一样共享笔记本电脑。 这些笔记本是为你进行实验而创建的。例如，您可以在笔记本中编辑以下项目：
+ 对数据使用的预处理器 
+ 超参数优化 (HPO) 运行的次数及其并行度
+ 要尝试的算法
+ 用于 HPO 作业的实例类型
+ 超参数范围

作为一种学习手段，鼓励对候选项定义笔记本进行修改。通过此功能，您可以了解在机器学习过程中做出的决策如何影响结果。

**注意**  
当您在默认实例中运行笔记本时，会产生基准费用。而且，当您从候选笔记本运行 HPO 作业时，这些作业会使用额外的计算资源，从而产生额外的费用。

# Autopilot 数据探索报告
<a name="autopilot-data-exploration-report"></a>

Amazon SageMaker Autopilot 会自动清理和预处理您的数据集。高质量的数据可提高机器学习效率，并生成能够做出更准确预测的模型。

客户提供的数据集中会存在的问题，如果没有某些领域知识的帮助，这些问题无法自动修复。例如，对于回归问题，目标列中的大异常值可能会导致对非异常值的预测不佳。根据建模目标，可能需要移除异常值。如果意外地将目标列作为输入特征之一，则最终模型的验证结果会很好，但对未来的预测几乎没有价值。

为了帮助客户发现这类问题，Autopilot 提供了数据探索报告，其中包含对其数据潜在问题的见解。报告还就如何处理这些问题提出了建议。

每个 Autopilot 作业都会生成包含报告的数据探索笔记本。报告存储在 Amazon S3 存储桶中，可以从输出路径访问。数据探索报告的路径通常采用以下模式。

```
[s3 output path]/[name of the automl job]/sagemaker-automl-candidates/[name of processing job used for data analysis]/notebooks/SageMaker AIAutopilotDataExplorationNotebook.ipynb
```

可以使用存储在中的[https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeAutoMLJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeAutoMLJob.html)操作响应从 Autopilot API 中[DataExplorationNotebookLocation](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLJobArtifacts.html#sagemaker-Type-AutoMLJobArtifacts-DataExplorationNotebookLocation)获取数据探索笔记本的位置。

在 SageMaker Studio Classic 中运行 Autopilot 时，你可以按照以下步骤打开数据探索报告：

1. ![\[Black square icon representing a placeholder or empty image.\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/studio/icons/house.png)从*左侧导航窗格*中选择 “**主页**” 图标以查看顶级 **Amazon SageMaker Studio Classic** 导航菜单。

1. 从主工作区选择 **AutoML** 卡片。这将打开新的 **Autopilot** 选项卡。

1. 在**名称**部分中，选择包含您要检查的数据探索笔记本的 Autopilot 作业。这将打开新的 **Autopilot 作业**选项卡。

1. 在 **Autopilot 作业**选项卡的右上角选择**打开数据探索笔记本**。

数据探索报告在训练过程开始之前根据您的数据生成。通过该报告，您可以停止可能导致毫无意义结果的 Autopilot 作业。同样，在重新运行 Autopilot 之前，您可以解决数据集中的任何问题或进行改进。通过这种方法，您可以利用自己的领域专业知识来手动提高数据质量，然后再在精心策划的数据集上训练模型。

数据报告只包含静态 Markdown，可以在任何 Jupyter 环境中打开。包含报告的笔记本可以转换为其他格式，例如 PDF 或 HTML。有关转换的更多信息，请参阅[使用 nbconvert 脚本将 Jupyter 笔记本转换为其他格式](https://nbconvert.readthedocs.io/en/latest/usage.html )。

**Topics**
+ [数据集摘要](#autopilot-data-exploration-report-dataset-summary)
+ [目标分析](#autopilot-data-exploration-report-target-analysis)
+ [数据示例](#autopilot-data-exploration-report-data-sample)
+ [重复行](#autopilot-data-exploration-report-duplicate-rows)
+ [跨列相关性](#autopilot-data-exploration-report-cross-column-correlations)
+ [异常行](#autopilot-data-exploration-report-cross-anomolous-rows)
+ [缺失值、基数和描述性统计数据](#autopilot-data-exploration-report-description-statistics-and-values)

## 数据集摘要
<a name="autopilot-data-exploration-report-dataset-summary"></a>

此**数据集摘要**提供了描述数据集特征的关键统计数据，包括行数、列数、重复行百分比和缺失目标值。它旨在在 Amazon A SageMaker utopilot 检测到您的数据集存在问题并且可能需要您干预时，向您发出快速警报。这些见解以警告的形式提供，并按照严重性“高”还是“低”分类。该分类取决于问题将对模型性能产生不利影响的置信度。

高严重性和低严重性见解以弹出窗口的形式出现在摘要中。在大多数见解中给出了建议，说明如何确认数据集存在的需要您注意的问题。另外还就如何解决这些问题提出了建议。

Autopilot 提供了有关我们数据集中缺失或无效目标值的其他统计数据，以帮助您检测高严重性见解可能没有捕获的其他问题。此外，某个特定类型的列具有意外的数量，可能表明数据集中缺少某些您希望使用的列。这也可能表明数据的准备或存储方式存在问题。修复 Autopilot 提请您注意的这些数据问题，可以改进在您的数据上进行训练的机器学习模型的性能。

高严重性见解显示在摘要部分以及报告中的其他相关部分中。高严重性和低严重性见解的示例通常会根据数据报告的具体部分给出。

## 目标分析
<a name="autopilot-data-exploration-report-target-analysis"></a>

此部分显示了各种高严重性和低严重性见解，它们与目标列中值的分布相关。检查目标列是否包含正确的值。目标列中不正确的值可能会导致机器学习模型无法达到预期的业务目标。本节介绍了几个高严重性和低严重性的数据见解。下面是几个示例。
+ **异常目标值** – 回归的目标分布偏斜或不寻常，例如重尾目标。
+ **低或高的目标基数** – 不频繁的类标签数量或大量的唯一类用于分类。

对于回归和分类问题类型，将会显示无效值（如数字无穷大）、`NaN` 或者目标列中的空白空间。根据问题类型，会显示不同的数据集统计信息。对于回归问题，您可以通过目标列值的分布来验证分布是否符合预期值。

以下屏幕截图显示了 Autopilot 数据报告，其中包括数据集中的平均值、中位数、最小值、最大值、异常值百分比等统计数据。屏幕截图还包括一个直方图，显示了目标列中标签的分布。直方图在水平轴上显示**目标列值**，在垂直轴上显示**计数**。屏幕截图中的方框突出显示了**异常值百分比**部分，以指示此统计数据的显示位置。

![\[关于目标列值分布的 Autopilot 数据报告。\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/autopilot/autopilot-data-report-target-analysis.png)


图中显示有关目标值及其分布的多个统计数据。如果任何异常值、无效值或缺失百分比大于零，则会显示这些值，以便您调查数据包含不可用的目标值的原因。一些不可用的目标值会突出显示为低严重性见解警告。

在下面的示例中，` 符号被意外添加到目标列中，这使得目标中的数字值无法解析。此时显示**低严重性：“目标值无效”**警告。此示例中的警告指出“目标列中 0.14% 的标签无法转换为数值。最常见的非数字值包括：[“-3.8e-05”、“-9-05”、“-4.7e-05”、“-1.4999999999999999e-05”、“-4.3e-05”]。这通常表明数据收集或处理存在问题。Amazon SageMaker Autopilot 会忽略所有带有无效目标标签的观察结果。”

![\[Autopilot 数据报告中关于目标值无效的低严重性警告。\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/autopilot/autopilot-data-report-target-analysis-invalid-target-values.png)


Autopilot 还提供直方图，显示用于分类的标签的分布。

以下屏幕截图显示了为目标列提供的统计信息示例，包括类数、缺失值或无效值。显示每个标签类别的分布的直方图，水平轴为**目标标签**，垂直轴为**频率**。

![\[Autopilot 数据报告中分类的基数很高。\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/autopilot/autopilot-data-report-target-analysis-invalid-classification.png)


**注意**  
在报告笔记本底部的**定义**中，您可以找到此节以及其他章节中出现的所有数据的定义。

## 数据示例
<a name="autopilot-data-exploration-report-data-sample"></a>

Autopilot 会提供您的数据的实际样本，以帮助您发现数据集存在的问题。样本表水平滚动。检查样本数据，以验证数据集中是否存在所有必需的列。

Autopilot 还计算预测能力的度量，可用于识别特征与目标变量之间的线性或非线性关系。值为 `0` 表示该特征在预测目标变量时没有预测值。值为 `1` 表示对目标变量具有最高预测能力。有关预测能力的更多信息，请参阅**定义**部分。

**注意**  
不建议使用预测能力来代替特征重要性。只有当您确定预测能力是适合您的使用场景的度量时，才使用预测能力。

以下屏幕截图显示数据样本示例。最顶部的一行包含数据集中每列的预测能力。第二行包含列数据类型。随后的行包含标签。其中的列包含目标列，后面是各个特征列。每个特征列都有一个关联的预测能力，在此屏幕截图中以方框突出显示。在此示例中，包含特征 `x51` 的列对目标变量 `y` 的预测能力为 `0.68`。对特征 `x55` 的预测能力稍差，预测能力为 `0.59`。

![\[Autopilot 数据报告的数据样本预测能力。\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/autopilot/autopilot-data-report-data-sample-prediction.png)


## 重复行
<a name="autopilot-data-exploration-report-duplicate-rows"></a>

如果数据集中存在重复行，Amazon A SageMaker utopilot 会显示其中的一个样本。

**注意**  
不建议在将数据集提供给 Autopilot 之前，通过向上取样来平衡数据集。这可能会导致 Autopilot 训练的模型的验证分数不准确，并且生成的模型可能无法使用。

## 跨列相关性
<a name="autopilot-data-exploration-report-cross-column-correlations"></a>

Autopilot 使用 Pearson 相关系数（衡量两个特征之间线性相关性的指标）来填充相关矩阵。在相关矩阵中，在水平轴和垂直轴上绘制数字特征，Pearson 相关系数绘制在它们的交点处。两个特征之间的相关性越高，系数也越高，最大值为 `|1|`。
+ 值为 `-1` 表示特征完全呈负相关。
+ 当特征与其自身相关时，值为 `1`，表示完全正相关。

您可以使用相关矩阵中的信息来移除高度相关的特征。较少数量的特征减少了模型过度拟合的可能性，并可以通过两种方式降低生产成本。它减少了所需的 Autopilot 运行时间，并且对于某些应用程序来说，可以降低数据收集过程的成本。

以下屏幕截图展示了有 `7` 个特征的相关矩阵示例。每个特征都以矩阵形式显示在水平轴和垂直轴上。Pearson 的相关系数显示在两个特征之间的交点处。每个特征交点都有与之相关的色调。相关性越高，色调越暗。最暗的色调占据了矩阵的对角线，此处每个特征都与其自身相关，代表着完全相关。

![\[Autopilot 数据报告的数据互相关矩阵。\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/autopilot/autopilot-data-report-data-cross-column-statistics.png)


## 异常行
<a name="autopilot-data-exploration-report-cross-anomolous-rows"></a>

Amazon SageMaker Autopilot 会检测您的数据集中哪些行可能存在异常。然后，它为每行分配一个异常分数。具有负异常分数的行被视为异常。

以下屏幕截图显示了 Autopilot 分析对包含异常分数的行的输出。包含异常分数的列出现在每行的数据集列旁边。

![\[带有异常行的 Autopilot 数据集，显示负异常分数。\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/autopilot/autopilot-data-report-data-anomalous-rows.png)


## 缺失值、基数和描述性统计数据
<a name="autopilot-data-exploration-report-description-statistics-and-values"></a>

Amazon SageMaker Autopilot 会检查并报告数据集中各个列的属性。在数据报告呈现此分析的每个部分中，内容按顺序排列。这样您就可以先检查最“可疑”的值。使用这些统计数据，您可以改进单个列的内容，从而进一步提高 Autopilot 生成的模型的质量。

Autopilot 在包含分类值的列中计算分类值的几个统计数据。这包括唯一条目的数量，对于文本是唯一单词的数量。

Autopilot 在包含数字值的列中计算数字值的几个标准统计数据。下图描绘了这些统计数据，包括平均值、中值、最小值和最大值，以及数值类型百分比和异常值的百分比。

![\[Autopilot 数据报告有关带有数值的列的统计信息。\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/autopilot/autopilot-data-report-data-descriptive-statistics.png)


# 查找并运行候选定义笔记本
<a name="autopilot-candidate-generation-notebook"></a>

候选项定义笔记本包含每个建议的预处理步骤、算法和超参数范围。

您可以通过两种方式之一选择要训练的候选模型并进行调整。第一种，通过运行笔记本的各个部分。第二种，通过运行整个笔记本来优化所有候选模型以确定最佳候选模型。如果您运行整个笔记本，则在作业完成后，只会显示最佳候选模型。

要从 SageMaker Studio Classic 运行自动驾驶，请按照以下步骤打开候选人定义笔记本：

1. ![\[Black square icon representing a placeholder or empty image.\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/studio/icons/house.png)从左侧导航窗格中选择 “**主页**” 图标以查看顶级 **Amazon SageMaker Studio Classic** 导航菜单。

1. 从主工作区选择 **AutoML** 卡片。这将打开新的 **Autopilot** 选项卡。

1. 在**名称**部分中，选择包含您要检查的候选项定义笔记本的 Autopilot 作业。这将打开新的 **Autopilot 作业**选项卡。

1. 在 **Autopilot 作业**选项卡的右上角，选择**打开候选项生成笔记本**。这将打开 **Amazon A SageMaker utopilot 候选人定义笔记本**的全新只读预览。

要运行候选项定义笔记本，请按照下述步骤操作：

1. 在 **Amazon A SageMaker utopilot 候选人定义**笔记本选项卡的右上角选择 “导入**笔记本**”。这将打开一个选项卡，用于设置新的笔记本环境来运行笔记本。

1. 选择现有 SageMaker **图像**或使用**自定义图像**。

1. 选择**内核**、**实例类型**和可选的**启动脚本**。

现在，您可以在这个新环境中运行笔记本。

# 在生成的容器中配置推理输出
<a name="autopilot-automate-model-development-container-output"></a>

Autopilot 生成一个有序 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ContainerDefinition.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ContainerDefinition.html) 列表。这可用于构建模型以部署在机器学习管道中。此模型可用于在线托管和推理。

客户可以使用 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ListCandidateForAutoMLJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ListCandidateForAutoMLJob.html) API 列出推理容器定义。表示最佳候选模型的推理容器定义列表也在 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeAutoMLJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeAutoMLJob.html) 响应中提供。

## 回归和分类问题类型的推理容器定义
<a name="autopilot-problem-type-container-output"></a>

Autopilot 会生成特定于[训练模式](https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-model-support-validation.html#autopilot-training-mode)和作业[问题类型的](https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-datasets-problem-types.html#autopilot-problem-types)推理容器。

### 超参数优化 (HPO) 模式的容器定义
<a name="autopilot-problem-type-container-output-hpo"></a>
+ **回归**：HPO 生成两个容器：

  1. 一个是特征工程容器，它将原始特征转换为回归算法用来进行训练的特征。

  1. 另一个是算法容器，它转换特征并为数据集生成回归分数。
+ **分类**：HPO 生成三个容器：

  1. 一个是特征工程容器，它将原始特征转换为分类算法用来进行训练的特征。

  1. 一个是算法容器，它生成具有最高概率的 `predicted_label`。此容器还可以生成与推理响应中分类结果关联的各种概率。

  1. 一个是特征工程容器，用于对算法预测进行后处理。例如，它可以对预测的标签执行逆变换，然后将其更改为原始标签。

### 组合模式的容器定义
<a name="autopilot-problem-type-container-output-ensemble"></a>

在组合模式下，回归和分类问题类型都只有一个推理容器。此推理容器会转换特征并根据问题类型生成预测。

## 每种问题类型的推理响应
<a name="autopilot-problem-type-inference-response"></a>

### 分类模型的推理响应
<a name="autopilot-problem-type-inference-response-classification"></a>

对于分类推理容器，您可以使用四个预定义的键来选择推理响应的内容：
+ `predicted_label`：预测正确标签的可能性最高的标签，由 Autopilot 确定。
+ `probability`: 
  + **HPO 模型：**二元分类的 `True` 类的概率。`predicted_label` 的多元分类的概率。
  + **组装模型：** `predicted_label` 的二元分类和多元分类的概率。
+ `probabilities`：所有相应类的概率列表。
+ `labels`：所有标签的列表。

例如，对于二元分类问题，如果您传递了推理响应键 `['predicted_label', 'probability', 'probabilities', 'labels']` 并且输出响应显示为 `[1, 0.1, "[0.9, 0.1]", "['1', '0']"]`，则应将其解释如下：

1. `predicted_label` 等于 `1`，因为标签“1”的概率更高（在本例中为 `0.9`）。

1. 对于 HPO 模型，`probability` 等于 `0.1`，这是 Autopilot 选择 `positive_class`（在本例中为 `0`）的概率。

   对于组合模型，`probability` 等于 `0.9`，这是 `predicted_label` 的概率。

1. `probabilities` 列出了 `labels` 中每个标签的 `probability`。

1. `labels` 是数据集中的唯一标签，其中第二个标签（在本例中为“0”）是 Autopilot 选择的 `positive_class`。

默认情况下，推理容器配置为仅由 `predicted_label` 生成。要选择其他推理内容，您可以更新 `inference_response_keys` 参数以包含最多以下三个环境变量：
+ `SAGEMAKER_INFERENCE_SUPPORTED`：设置此项是为了提示您每个容器支持哪些内容。
+ `SAGEMAKER_INFERENCE_INPUT`：此项应设置为容器在输入负载中需要的键。
+ `SAGEMAKER_INFERENCE_OUTPUT`：此项应填充为容器输出的一组键。

### HPO 模式下分类模型的推理响应
<a name="autopilot-problem-type-inference-response-classification-hpo"></a>

此部分介绍如何使用超参数优化 (HPO) 模式，配置来自分类模型的推理响应。

要在 HPO 模式下选择推理响应内容，请执行以下操作：将 `SAGEMAKER_INFERENCE_INPUT` 和 `SAGEMAKER_INFERENCE_OUTPUT` 变量添加到在 HPO 模式下为分类问题生成的第二个和第三个容器中。

第二个容器（算法）支持的键是 predicted\$1label、probability 和 probabilities。请注意，有意不将 `labels` 添加到 `SAGEMAKER_INFERENCE_SUPPORTED` 中。

第三个分类模型容器支持的键是 `predicted_label`、`labels`、`probability` 和 `probabilities`。因此，`SAGEMAKER_INFERENCE_SUPPORTED` 环境包含这些键的名称。

要更新用于接收 `predicted_label` 和 `probability` 的推理容器的定义，请使用以下代码示例。

```
containers[1]['Environment'].update({'SAGEMAKER_INFERENCE_OUTPUT': 'predicted_label, probability'})
containers[2]['Environment'].update({'SAGEMAKER_INFERENCE_INPUT': 'predicted_label, probability'})
containers[2]['Environment'].update({'SAGEMAKER_INFERENCE_OUTPUT': 'predicted_label, probability'})
```

以下代码示例更新用于接收 `predicted_label`、`probabilities` 和 `labels` 的推理容器的定义。请不要将 `labels` 传递到第二个容器（算法容器），因为它由第三个容器独立生成。

```
containers[1]['Environment'].update({'SAGEMAKER_INFERENCE_OUTPUT': 'predicted_label,probabilities'})
containers[2]['Environment'].update({'SAGEMAKER_INFERENCE_INPUT': 'predicted_label,probabilities'})
containers[2]['Environment'].update({'SAGEMAKER_INFERENCE_OUTPUT': 'predicted_label, probabilities,labels'})
```

以下可折叠部分提供了适用于 Python 的 SageMaker SDK 适用于 Python (Boto3) 的 AWS SDK 和适用于 Python 的开发工具包的代码示例。每个部分都说明了如何在 HPO 模式下为相应的代码示例选择推理响应的内容。

#### 适用于 Python (Boto3) 的 AWS SDK
<a name="autopilot-problem-type-inference-response-classification-hpo-boto3"></a>

```
import boto3

sm_client = boto3.client('sagemaker', region_name='<Region>')

role = '<IAM role>'
input_data = '<S3 input uri>'
output_path = '<S3 output uri>'

best_candidate = sm_client.describe_auto_ml_job(AutoMLJobName='<AutoML Job Name>')['BestCandidate']
best_candidate_containers = best_candidate['InferenceContainers']
best_candidate_name = best_candidate['CandidateName']

best_candidate_containers[1]['Environment'].update({'SAGEMAKER_INFERENCE_OUTPUT': 'predicted_label, probability'})
best_candidate_containers[2]['Environment'].update({'SAGEMAKER_INFERENCE_INPUT': 'predicted_label, probability'})
best_candidate_containers[2]['Environment'].update({'SAGEMAKER_INFERENCE_OUTPUT': 'predicted_label, probability'})

# create model
reponse = sm_client.create_model(
    ModelName = '<Model Name>',
    ExecutionRoleArn = role,
    Containers = best_candidate_containers
)

# Lauch Transform Job
response = sm_client.create_transform_job(
    TransformJobName='<Transform Job Name>',
    ModelName='<Model Name>',
    TransformInput={
        'DataSource': {
            'S3DataSource': {
                'S3DataType': 'S3Prefix',
                'S3Uri': input_data
            }
        },
        'ContentType': "text/CSV",
        'SplitType': 'Line'
    },
    TransformOutput={
        'S3OutputPath': output_path,
        'AssembleWith': 'Line',
    },
    TransformResources={
        'InstanceType': 'ml.m4.xlarge',
        'InstanceCount': 1,
    },
)
```

#### SageMaker Python 软件开发工具包
<a name="autopilot-problem-type-inference-response-classification-hpo-sdk"></a>

```
from sagemaker import AutoML

aml = AutoML.attach(auto_ml_job_name='<AutoML Job Name>')
aml_best_model = aml.create_model(name='<Model Name>',
                                  candidate=None,
                                  inference_response_keys**=['probabilities', 'labels'])

aml_transformer = aml_best_model.transformer(accept='text/csv',
                                            assemble_with='Line',
                                            instance_type='ml.m5.xlarge',
                                            instance_count=1,)

aml_transformer.transform('<S3 input uri>',
                          content_type='text/csv',
                          split_type='Line',
                          job_name='<Transform Job Name>',
                          wait=True)
```

### 组合模式下分类模型的推理响应
<a name="autopilot-problem-type-inference-response-classification-ensemble"></a>

此部分介绍如何使用组合模式，配置来自分类模型的推理响应。

在**组合模式**下，要选择推理响应的内容，请更新 `SAGEMAKER_INFERENCE_OUTPUT` 环境变量。

分类模型容器支持的键是 `predicted_label`、`labels`、`probability` 和 `probabilities`。这些键包含在 `SAGEMAKER_INFERENCE_SUPPORTED` 环境中。

要更新推理容器定义以接收 `predicted_label` 和 `probability`，请参阅以下代码示例。

```
containers[0]['Environment'].update({'SAGEMAKER_INFERENCE_OUTPUT': 'predicted_label, probability'})
```

以下可折叠部分提供的代码示例，可用于在组合模式下选择推理响应内容。该示例使用 适用于 Python (Boto3) 的 AWS SDK。

#### 适用于 Python (Boto3) 的 AWS SDK
<a name="autopilot-problem-type-inference-response-classification-ensembling-boto3"></a>

```
import boto3
sm_client = boto3.client('sagemaker', region_name='<Region>')

role = '<IAM role>'
input_data = '<S3 input uri>'
output_path = '<S3 output uri>' 

best_candidate = sm_client.describe_auto_ml_job(AutoMLJobName='<AutoML Job Name>')['BestCandidate']
best_candidate_containers = best_candidate['InferenceContainers']
best_candidate_name = best_candidate['CandidateName']

*best_candidate_containers[0]['Environment'].update({'SAGEMAKER_INFERENCE_OUTPUT': 'predicted_label, probability'})
*
# create model
reponse = sm_client.create_model(
    ModelName = '<Model Name>',
    ExecutionRoleArn = role,
    Containers = best_candidate_containers
)

# Lauch Transform Job
response = sm_client.create_transform_job(
    TransformJobName='<Transform Job Name>',
    ModelName='<Model Name>',
    TransformInput={
        'DataSource': {
            'S3DataSource': {
                'S3DataType': 'S3Prefix',
                'S3Uri': input_data
            }
        },
        'ContentType': "text/CSV",
        'SplitType': 'Line'
    },
    TransformOutput={
        'S3OutputPath': output_path,
        'AssembleWith': 'Line',
    },
    TransformResources={
        'InstanceType': 'ml.m4.xlarge',
        'InstanceCount': 1,
    },
)
```

以下可折叠部分提供的代码示例与 HPO 的 Python SageMaker 开发工具包示例相同。提供此示例是为了便于您参考。

#### SageMaker Python 软件开发工具包
<a name="autopilot-problem-type-inference-response-classification-ensembling-sdk"></a>

以下 HPO 代码示例使用 SageMaker 适用于 Python 的软件开发工具包。

```
from sagemaker import AutoML

aml = AutoML.attach(auto_ml_job_name='<AutoML Job Name>')
aml_best_model = aml.create_model(name='<Model Name>',
                                  candidate=None,
                                  *inference_response_keys**=['probabilities', 'labels'])*

aml_transformer = aml_best_model.transformer(accept='text/csv',
                                            assemble_with='Line',
                                            instance_type='ml.m5.xlarge',
                                            instance_count=1,)

aml_transformer.transform('<S3 input uri>',
                          content_type='text/csv',
                          split_type='Line',
                          job_name='<Transform Job Name>',
                          wait=True)
```