从 SageMaker 批量预测作业输出多个 csv 文件



我正在处理AWS SageMaker (SKlearn(批量转换作业,其中预测数据很大,因此我需要使用小批量(其中输入.csv被拆分为较小的.csv文件(。

我有这个工作并输出一个带有 id 和预测的.csv文件。但是,我正在尝试实现一种方法,使我可以从批处理转换作业中总共获得三个输出文件 - 这些文件是不同的.csv文件,每个文件以略有不同的方式聚合。

我的问题是我不确定如何指示 SageMaker 输出多个文件。我尝试了以下代码作为entry_point文件中提交的预测方法:

def output_fn(prediction, accept):
output_one = prepare_one(prediction)
output_two, output_three = prepare_others(output_one)
return output_one, output_two, output_three

我目前正在处理的几个想法/问题:

  • 我认为批处理策略会导致问题。由于额外的输出是总预测的聚合,但 SageMaker 将分别处理每个小批量(我假设?
  • 我可以简单地使用boto3并使用它保存额外的文件,并将 SageMaker 输出视为仅output_one

任何帮助将不胜感激

  1. 在 SageMaker 批处理中,输出文件是到输入文件的一对一映射,这意味着单个输入不能有多个输出文件。

"如果批量转换作业成功处理输入文件中的所有记录,它将创建一个具有相同名称和 .out 文件扩展名的输出文件。对于多个输入文件,例如 input1.csv 和 input2.csv,输出文件命名为 input1.csv.out 和 input2.csv.out。(https://docs.aws.amazon.com/sagemaker/latest/dg/batch-transform.html#batch-transform-large-datasets(

  1. 在这种情况下,您可能不需要手动将输入拆分为批次。由于您的输入是CSV,您只需将"SplitType"设置为"行",Batch将自动按换行符拆分您的输入,并将每行作为记录。然后,您可以将"批处理策略"设置为"多记录"并调整"MaxPayloadInMB"以控制迷你批处理的大小。因此,您的模型将在每个 HTTP 推理请求中看到 N 条记录,其中"N * size_of_each_record <= MaxPayloadInMB"。

希望这有帮助!

相关内容

  • 没有找到相关文章

最新更新