

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

# 使用 Amazon A SageMaker I 进行批量转换以进行推理
<a name="batch-transform"></a>

当您需要执行以下操作时，请使用批量转换：
+ 预处理数据集以从数据集中删除可能干扰训练或推理的噪声或偏差。
+ 从大型数据集获取推理。
+ 当您不需要持续性终端节点时运行推理。
+ 将输入记录与推理相关联，以帮助解释结果。

要在执行推理前筛选输入数据，或要将输入记录与有关这些记录的推理相关联，请参阅[将预测结果与输入记录关联](batch-transform-data-processing.md)。例如，您可以筛选输入数据，为创建和解释有关输出数据的报告提供上下文。

**Topics**
+ [使用批量转换从大型数据集中获取推理](#batch-transform-large-datasets)
+ [加快批量转换作业](#batch-transform-reduce-time)
+ [使用批量转换测试生产变体](#batch-transform-test-variants)
+ [批量转换示例笔记本](#batch-transform-notebooks)
+ [将预测结果与输入记录关联](batch-transform-data-processing.md)
+ [批量转换中的存储](batch-transform-storage.md)
+ [问题排查](batch-transform-errors.md)

## 使用批量转换从大型数据集中获取推理
<a name="batch-transform-large-datasets"></a>

批量处理在指定参数的限制内自动管理大型数据集的处理。例如，在 S3 存储桶中存储一个数据集文件 `input1.csv`。输入文件的内容可能如下示例所示。

```
Record1-Attribute1, Record1-Attribute2, Record1-Attribute3, ..., Record1-AttributeM
Record2-Attribute1, Record2-Attribute2, Record2-Attribute3, ..., Record2-AttributeM
Record3-Attribute1, Record3-Attribute2, Record3-Attribute3, ..., Record3-AttributeM
...
RecordN-Attribute1, RecordN-Attribute2, RecordN-Attribute3, ..., RecordN-AttributeM
```

当批量转换作业启动时， SageMaker AI 会启动计算实例并在它们之间分配推理或预处理工作负载。批量转换功能按照键对输入中的 Amazon S3 对象进行分区，并将 Amazon S3 对象映射到实例。当您有多个文件时，一个实例可能处理 `input1.csv`，而另一个实例可能处理名为 `input2.csv` 的文件。如果只有一个输入文件，但初始化了多个计算实例，则只有一个实例会处理输入文件。其余实例处于闲置状态。

您也可以将输入文件拆分为较小的批处理。例如，您可以通过仅包含其中两个记录，以便从 `input1.csv` 创建一个小批次。

```
Record3-Attribute1, Record3-Attribute2, Record3-Attribute3, ..., Record3-AttributeM
Record4-Attribute1, Record4-Attribute2, Record4-Attribute3, ..., Record4-AttributeM
```

**注意**  
SageMaker AI 分别处理每个输入文件。它不会组合来自不同输入文件的小批次来符合 [https://docs.amazonaws.cn/sagemaker/latest/APIReference/API_CreateTransformJob.html#SageMaker-CreateTransformJob-request-MaxPayloadInMB               ](https://docs.amazonaws.cn/sagemaker/latest/APIReference/API_CreateTransformJob.html#SageMaker-CreateTransformJob-request-MaxPayloadInMB               ) 限制。

要在创建批处理转换作业时将输入文件拆分为小批量，请`Line`将[https://docs.amazonaws.cn/sagemaker/latest/APIReference/API_TransformInput.html#SageMaker-Type-TransformInput-SplitType             ](https://docs.amazonaws.cn/sagemaker/latest/APIReference/API_TransformInput.html#SageMaker-Type-TransformInput-SplitType             )参数值设置为。 SageMaker 在以下情况下，AI 会在单个请求中使用整个输入文件：
+ `SplitType` 设置为 `None`。
+ 输入文件无法分割成小批次。

.请注意，批量转换不支持包含换行符的 CSV 格式输入。您可以使用 `[BatchStrategy](https://docs.amazonaws.cn/sagemaker/latest/APIReference/API_CreateTransformJob.html#sagemaker-CreateTransformJob-request-BatchStrategy)` 和 `[MaxPayloadInMB](https://docs.amazonaws.cn/sagemaker/latest/APIReference/API_CreateTransformJob.html#sagemaker-CreateTransformJob-request-MaxPayloadInMB)` 参数控制较小批处理的大小。`MaxPayloadInMB` 不得超过 100 MB。如果指定可选的 `[MaxConcurrentTransforms](https://docs.amazonaws.cn/sagemaker/latest/APIReference/API_CreateTransformJob.html#sagemaker-CreateTransformJob-request-MaxConcurrentTransforms)` 参数，则 `(MaxConcurrentTransforms * MaxPayloadInMB)` 的值也不得超过 100 MB。

如果批处理转换任务成功处理了输入文件中的所有记录，就会创建一个输出文件。输出文件具有相同的名称和 `.out` 文件扩展名。对于 `input1.csv` 和 `input2.csv` 等多个输入文件，输出文件将分别名为 `input1.csv.out` 和 `input2.csv.out`。批量转换作业将输出文件存储在 Amazon S3 中的指定位置，如 `s3://amzn-s3-demo-bucket/output/`。

输出文件中的预测按与输入文件中对应的记录相同的顺序列出。输出文件 `input1.csv.out` 的内容（基于早前显示的输入文件）如下所示。

```
Inference1-Attribute1, Inference1-Attribute2, Inference1-Attribute3, ..., Inference1-AttributeM
Inference2-Attribute1, Inference2-Attribute2, Inference2-Attribute3, ..., Inference2-AttributeM
Inference3-Attribute1, Inference3-Attribute2, Inference3-Attribute3, ..., Inference3-AttributeM
...
InferenceN-Attribute1, InferenceN-Attribute2, InferenceN-Attribute3, ..., InferenceN-AttributeM
```

如果将 [https://docs.amazonaws.cn/sagemaker/latest/APIReference/API_TransformInput.html#SageMaker-Type-TransformInput-SplitType             ](https://docs.amazonaws.cn/sagemaker/latest/APIReference/API_TransformInput.html#SageMaker-Type-TransformInput-SplitType             ) 设置为 `Line`，则您可以将 [https://docs.amazonaws.cn/sagemaker/latest/APIReference/API_TransformOutput.html#SageMaker-Type-TransformOutput-AssembleWith             ](https://docs.amazonaws.cn/sagemaker/latest/APIReference/API_TransformOutput.html#SageMaker-Type-TransformOutput-AssembleWith             ) 参数设置为 `Line`，将输出记录与行分隔符连接起来。这并不会更改输出文件的数量。输出文件的数量等于输入文件的数量，并且使用 `AssembleWith` 不会合并文件。如果不指定 `AssembleWith` 参数，输出记录默认以二进制格式连接。

当输入数据非常大并且使用 HTTP 分块编码传输时，要将数据流式传输到算法，请将 [https://docs.amazonaws.cn/sagemaker/latest/APIReference/API_CreateTransformJob.html#SageMaker-CreateTransformJob-request-MaxPayloadInMB](https://docs.amazonaws.cn/sagemaker/latest/APIReference/API_CreateTransformJob.html#SageMaker-CreateTransformJob-request-MaxPayloadInMB) 设置为 `0`。Amazon SageMaker AI 内置算法不支持此功能。

有关使用 API 创建批量转换作业的信息，请参阅 [https://docs.amazonaws.cn/sagemaker/latest/APIReference/API_CreateTransformJob.html](https://docs.amazonaws.cn/sagemaker/latest/APIReference/API_CreateTransformJob.html) API。有关批量变换输入和输出对象之间关系的更多信息，请参阅 [https://docs.amazonaws.cn/sagemaker/latest/APIReference/API_OutputDataConfig.html](https://docs.amazonaws.cn/sagemaker/latest/APIReference/API_OutputDataConfig.html)。有关如何使用批量转换的示例，请参阅[（可选）利用批量转换进行预测](ex1-model-deployment.md#ex1-batch-transform)。

## 加快批量转换作业
<a name="batch-transform-reduce-time"></a>

如果使用 [https://docs.amazonaws.cn/sagemaker/latest/APIReference/API_CreateTransformJob.html](https://docs.amazonaws.cn/sagemaker/latest/APIReference/API_CreateTransformJob.html) API，您可以通过使用最佳参数值来缩短完成批量转换作业所需的时间。这包括 [https://docs.amazonaws.cn/sagemaker/latest/APIReference/API_CreateTransformJob.html#SageMaker-CreateTransformJob-request-MaxPayloadInMB](https://docs.amazonaws.cn/sagemaker/latest/APIReference/API_CreateTransformJob.html#SageMaker-CreateTransformJob-request-MaxPayloadInMB)、[https://docs.amazonaws.cn/sagemaker/latest/APIReference/API_CreateTransformJob.html#SageMaker-CreateTransformJob-request-MaxConcurrentTransforms](https://docs.amazonaws.cn/sagemaker/latest/APIReference/API_CreateTransformJob.html#SageMaker-CreateTransformJob-request-MaxConcurrentTransforms) 或 [https://docs.amazonaws.cn/sagemaker/latest/APIReference/API_CreateTransformJob.html#SageMaker-CreateTransformJob-request-BatchStrategy](https://docs.amazonaws.cn/sagemaker/latest/APIReference/API_CreateTransformJob.html#SageMaker-CreateTransformJob-request-BatchStrategy) 等参数。`MaxConcurrentTransforms` 的理想值等于批量转换作业中的计算工作线程数。

如果您使用的是 SageMaker AI 控制台，请在 Batc **h 转换作业****配置页面的其他配置**部分中指定这些最佳参数值。 SageMaker AI 会自动为内置算法找到最佳参数设置。对于自定义算法，通过 [execution-parameters](https://docs.amazonaws.cn/sagemaker/latest/dg/your-algorithms-batch-code.html#your-algorithms-batch-code-how-containe-serves-requests) 端点提供这些值。

## 使用批量转换测试生产变体
<a name="batch-transform-test-variants"></a>

要测试不同的模型或超参数设置，请为每个新的模型变体创建单独的转换作业并使用验证数据集。对于每个转换作业，为输出文件指定一个唯一的模型名称及位于 Amazon S3 中的位置。要分析结果，请使用 [推理管道日志和指标](inference-pipeline-logs-metrics.md)。

## 批量转换示例笔记本
<a name="batch-transform-notebooks"></a>

有关使用批量转换的笔记本示例，请参阅[使用 PCA 和 DBSCAN Movie 集群进行批量变换](https://sagemaker-examples.readthedocs.io/en/latest/sagemaker_batch_transform/introduction_to_batch_transform/batch_transform_pca_dbscan_movie_clusters.html)。本笔记本使用主体成分分析 (PCA) 模型进行批量转换，以减少用户项目审查矩阵中的数据。然后，它展示了如何应用基于密度的空间集群算法（DBSCAN）对电影进行集群分析。

 有关创建和访问可用于在 SageMaker AI 中运行示例的 Jupyter 笔记本实例的说明，请参阅。[Amazon SageMaker 笔记本实例](nbi.md)创建并打开笔记本实例后，选择**SageMaker示例**选项卡以查看所有 SageMaker AI 示例的列表。使用 NTM 算法的主题建模示例笔记本位于**高级功能**部分中。要打开笔记本，请选择其 **Use (使用)** 选项卡，然后选择 **Create copy (创建副本)**。