使用批量转换 - Amazon SageMaker
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

使用批量转换

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

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

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

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

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

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

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

Batch 转换自动管理大型数据集的处理。在指定参数的限制范围内. 例如,假设您有一个数据集文件,input1.csv、存储在 S3 存储桶中. 输入文件的内容可能如下示例所示:

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 会初始化计算实例,并在它们之间分配推理或预处理工作负载。Batch 转换按照键对输入中的 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 单独处理每一个输入文件。它不会组合来自不同输入文件的小批次来符合MaxPayloadInMB 限制。

要在创建批量转换作业时将输入文件拆分成小批量,请将SplitType参数值为Line. 如果SplitType设置为None如果输入文件无法拆分成小批量,SageMaker 会在单个请求中使用整个输入文件。请注意,Batch 转换不支持包含嵌入换行符的 CSV 格式输入。您可以通过使用BatchStrategyMaxPayloadInMB参数。MaxPayloadInMB不得大于 100 MB。如果你指定可选MaxConcurrentTransforms参数,然后为的值(MaxConcurrentTransforms * MaxPayloadInMB)也不得超过 100 MB。

如果批量转换作业成功处理输入文件中的所有记录,它会创建一个文件扩展名为 .out 的同名输出文件。对于 input1.csvinput2.csv 等多个输入文件,输出文件将分别名为 input1.csv.outinput2.csv.out。批量转换作业将输出文件存储在 Amazon S3 的指定位置,如。s3://awsexamplebucket/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

要将多个输出文件的结果合并为单一输出文件,设置AssembleWith参数为Line.

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

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

加快批量转换作业

如果您使用的是CreateTransformJobAPI,您可以使用最佳的参数值来减少完成批量转换作业所需的时间。例如MaxPayloadInMBMaxConcurrentTransforms,或者BatchStrategy. 的理想价值MaxConcurrentTransforms等于批处理转换作业中的计算工作人员的数量。如果您使用的是 SageMaker 控制台,则可以在其他配置的 部分Batch 转换作业配置页. SageMaker 会自动找到内置算法的最佳参数设置。对于自定义算法,请通过执行参数终端节点。

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

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

批量转换错误

SageMaker 使用 Amazon S3分段上传 API使用将批量转换作业的结果上传到 Amazon S3。如果出现错误,则系统会从 Amazon S3 中删除上传的结果。在某些情况下(如发生网络中断时),未完成的分段上传可能会保留在 Amazon S3 中。为避免产生存储费用,我们建议您将 S3 存储桶策略添加到 S3 存储桶生命周期规则中。此策略会删除可能存储在 S3 存储桶中的未完成分段上传。有关更多信息,请参阅对象生命周期管理

如果批量转换作业因数据集存在问题而无法处理输入文件,SageMaker 会将该作业标记为。failed. 如果输入文件包含错误记录,则转换作业不会为该输入文件创建输出文件,因为这样做的话,将无法与输入文件中的转换后数据保持相同的顺序。当数据集具有多个输入文件时,即使转换作业无法处理其中一个输入文件,它也会继续处理这些文件。处理后的文件仍会生成可用的结果。

超过了MaxPayloadInMB限制会导致错误。如果大型数据集无法拆分,可能会发生这种情况,SplitType参数设置为none,或者数据集中的单个记录超过限制。

如果您使用的是自己的算法,则当算法在输入文件中找到错误记录时,您可以使用占位符文本,如 ERROR。例如,如果数据集中的最后一条记录是错误的,算法会在输出文件中放入占位符文本来替代该记录。

批量转换示例笔记本

对于将批量转换与主成分分析 (PCA) 模型结合使用以减少用户项查看矩阵中的数据,然后将应用程序的基于密度的空间聚类以及噪声 (DBSCAN) 算法应用于聚类电影的示例笔记本 ,请参阅使用 PCA 和 DBSCAN电影聚类进行批量转换。有关创建和访问可用于在 SageMaker 中运行示例的 Jupyter 笔记本实例的说明,请参阅。使用 Amazon SageMaker 笔记本实例. 创建并打开笔记本实例后,请选择SageMaker 示例选项卡以查看所有 SageMaker 示例的列表。主题建模示例笔记本的主题建模使用NTM 算法位于高级功能部分。要打开笔记本,请选择其 Use (使用) 选项卡,然后选择 Create copy (创建副本)