本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 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
限制。
要在创建批处理转换作业时将输入文件拆分为小批量,请Line
将SplitType
参数值设置为。 SageMaker 在以下情况下,AI 会在单个请求中使用整个输入文件:
-
SplitType
设置为None
。 -
输入文件无法分割成小批次。
.请注意,批量转换不支持包含换行符的 CSV 格式输入。您可以使用 BatchStrategy
和 MaxPayloadInMB
参数控制较小批处理的大小。MaxPayloadInMB
不得超过 100 MB。如果指定可选的 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
如果将 SplitType
设置为 Line
,则您可以将 AssembleWith
参数设置为 Line
,将输出记录与行分隔符连接起来。这并不会更改输出文件的数量。输出文件的数量等于输入文件的数量,并且使用 AssembleWith
不会合并文件。如果不指定 AssembleWith
参数,输出记录默认以二进制格式连接。
当输入数据非常大并且使用 HTTP 分块编码传输时,要将数据流式传输到算法,请将 MaxPayloadInMB
设置为 0
。Amazon SageMaker AI 内置算法不支持此功能。
有关使用 API 创建批量转换作业的信息,请参阅 CreateTransformJob
API。有关批量变换输入和输出对象之间关系的更多信息,请参阅 OutputDataConfig
。有关如何使用批量转换的示例,请参阅(可选)利用批量转换进行预测。
加快批量转换作业
如果使用 CreateTransformJob
API,您可以通过使用最佳参数值来缩短完成批量转换作业所需的时间。这包括 MaxPayloadInMB
、MaxConcurrentTransforms
或 BatchStrategy
等参数。MaxConcurrentTransforms
的理想值等于批量转换作业中的计算工作线程数。
如果您使用的是 SageMaker AI 控制台,请在 Batc h 转换作业配置页面的其他配置部分中指定这些最佳参数值。 SageMaker AI 会自动为内置算法找到最佳参数设置。对于自定义算法,通过 execution-parameters 端点提供这些值。
使用批量转换测试生产变体
要测试不同的模型或超参数设置,请为每个新的模型变体创建单独的转换作业并使用验证数据集。对于每个转换作业,为输出文件指定一个唯一的模型名称及位于 Amazon S3 中的位置。要分析结果,请使用 推理管道日志和指标。
批量转换示例笔记本
有关使用批量转换的笔记本示例,请参阅使用 PCA 和 DBSCAN Movie 集群进行批量变换
有关创建和访问可用于在 SageMaker AI 中运行示例的 Jupyter 笔记本实例的说明,请参阅。Amazon SageMaker 笔记本实例创建并打开笔记本实例后,选择SageMaker示例选项卡以查看所有 SageMaker AI 示例的列表。使用 NTM 算法的主题建模示例笔记本位于高级功能部分中。要打开笔记本,请选择其 Use (使用) 选项卡,然后选择 Create copy (创建副本)。