使用 Amazon A SageMaker I 进行批量转换以进行推理 - 亚马逊 SageMaker AI

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

使用 Amazon A SageMaker I 进行批量转换以进行推理

当您需要执行以下操作时,请使用批量转换:

  • 预处理数据集以从数据集中删除可能干扰训练或推理的噪声或偏差。

  • 从大型数据集获取推理。

  • 当您不需要持续性终端节点时运行推理。

  • 将输入记录与推理相关联,以帮助解释结果。

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

使用批量转换从大型数据集中获取推理

批量处理在指定参数的限制内自动管理大型数据集的处理。例如,在 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 分别处理每个输入文件。它不会组合来自不同输入文件的小批次来符合 MaxPayloadInMB 限制。

要在创建批处理转换作业时将输入文件拆分为小批量,请LineSplitType参数值设置为。 SageMaker 在以下情况下,AI 会在单个请求中使用整个输入文件:

  • SplitType 设置为 None

  • 输入文件无法分割成小批次。

.请注意,批量转换不支持包含换行符的 CSV 格式输入。您可以使用 BatchStrategyMaxPayloadInMB 参数控制较小批处理的大小。MaxPayloadInMB 不得超过 100 MB。如果指定可选的 MaxConcurrentTransforms 参数,则 (MaxConcurrentTransforms * MaxPayloadInMB) 的值也不得超过 100 MB。

如果批处理转换任务成功处理了输入文件中的所有记录,就会创建一个输出文件。输出文件具有相同的名称和 .out 文件扩展名。对于 input1.csvinput2.csv 等多个输入文件,输出文件将分别名为 input1.csv.outinput2.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

如果将 SplitType 设置为 Line,则您可以将 AssembleWith 参数设置为 Line,将输出记录与行分隔符连接起来。这并不会更改输出文件的数量。输出文件的数量等于输入文件的数量,并且使用 AssembleWith 不会合并文件。如果不指定 AssembleWith 参数,输出记录默认以二进制格式连接。

当输入数据非常大并且使用 HTTP 分块编码传输时,要将数据流式传输到算法,请将 MaxPayloadInMB 设置为 0。Amazon SageMaker AI 内置算法不支持此功能。

有关使用 API 创建批量转换作业的信息,请参阅 CreateTransformJob API。有关批量变换输入和输出对象之间关系的更多信息,请参阅 OutputDataConfig。有关如何使用批量转换的示例,请参阅(可选)利用批量转换进行预测

加快批量转换作业

如果使用 CreateTransformJob API,您可以通过使用最佳参数值来缩短完成批量转换作业所需的时间。这包括 MaxPayloadInMBMaxConcurrentTransformsBatchStrategy 等参数。MaxConcurrentTransforms 的理想值等于批量转换作业中的计算工作线程数。

如果您使用的是 SageMaker AI 控制台,请在 Batc h 转换作业配置页面的其他配置部分中指定这些最佳参数值。 SageMaker AI 会自动为内置算法找到最佳参数设置。对于自定义算法,通过 execution-parameters 端点提供这些值。

使用批量转换测试生产变体

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

批量转换示例笔记本

有关使用批量转换的笔记本示例,请参阅使用 PCA 和 DBSCAN Movie 集群进行批量变换。本笔记本使用主体成分分析 (PCA) 模型进行批量转换,以减少用户项目审查矩阵中的数据。然后,它展示了如何应用基于密度的空间集群算法(DBSCAN)对电影进行集群分析。

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