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

Python 从SageMaker批量预测作业输出多个csv文件,python,amazon-web-services,csv,amazon-sagemaker,Python,Amazon Web Services,Csv,Amazon Sagemaker,我正在从事AWS SageMaker SKlearn批处理转换工作,其中预测数据很大,因此我需要使用小批处理,其中输入的.csv被拆分为较小的.csv文件 我让它工作并输出一个带有ID和预测的.csv文件。但是,我正在尝试实现一种方法,使我可以从批处理转换作业中总共获得三个输出文件-这是不同的.csv文件,每个文件以稍微不同的方式聚合 我的问题是我不知道如何指示SageMaker输出多个文件。我尝试了以下代码作为入口点文件中提交的预测方法: 我目前正在处理的几个想法/问题: 我认为批处理策略会引

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

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

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

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

我认为批处理策略会引起问题。由于附加输出是总预测的聚合,但我想SageMaker会单独处理每个小批量? 我可以简单地使用boto3并使用它保存额外的文件,并将SageMaker输出视为唯一的输出吗 任何帮助都将不胜感激

在SageMaker批处理中,输出文件是到输入文件的一对一映射,这意味着您不能为单个输入拥有多个输出文件。 如果批处理转换作业成功处理输入文件中的所有记录,它将创建一个具有相同名称和.out文件扩展名的输出文件。对于多个输入文件,如input1.csv和input2.csv,输出文件名为input1.csv.out和input2.csv.out

在这种情况下,您可能不需要手动将输入拆分为批。由于您的输入是CSV,您可以简单地设置为行,批处理将自动按换行分割您的输入,并将每行作为记录。然后,可以将设置为MultiRecord并调整以控制小批量的大小。因此,您的模型将看到N条记录,其中N*每条记录的大小
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