【问题标题】:How to specify a name for the output file of a SageMaker Batch Transform job?如何为 SageMaker 批量转换作业的输出文件指定名称?
【发布时间】:2020-03-02 01:08:05
【问题描述】:

我在 AWS SageMaker 中设置了批量转换作业。目前,这使用一些输入数据和预训练模型。工作的编排是使用 lambda 中的 boto3 python 库完成的。

我遇到的困难是指定输出文件名称的好方法,在我们的例子中是predictions.csv。理想情况下,我们希望为该名称添加时间戳。

我尝试的第一件事是通过参数将文件名应用于pandas.to_csv() 函数。但是,仅进行此更改 SageMaker 会失败并出现以下错误:

TypeError:视图函数未返回有效响应。该函数要么返回 None,要么在没有 return 语句的情况下结束。

这是一个非常奇怪的错误,特别是考虑到导致它的代码更改。

我还尝试将文件名应用于output_path 参数,该参数是SageMaker transformer 对象的一部分。这旨在仅指定 S3 文件夹路径,并在末尾添加文件名只会导致一个奇怪的 s3 文件夹(例如output/stillafolder.csv/predictions.csv)。

我发现允许我更改输出文件名的唯一方法是更改​​输入文件名,作为我观察到的一种行为(尽管我没有找到任何关于此的文档)是输出文件名将默认情况下匹配输入文件名。

这对我目前的目的来说不是很好,所以任何建议都将不胜感激!

【问题讨论】:

    标签: python pandas amazon-sagemaker


    【解决方案1】:

    根据SageMaker Developer Documentation

    对于用作转换作业输入的每个 S3 对象,批量转换将带有 .out 后缀的转换后数据存储在输出前缀位置的相应子文件夹中。

    ,您不能告诉 SageMaker 生成特定的文件名。它将获取输入文件并将.out 附加到每个文件。 python SDK中的output_path映射到我上面链接的S3OutputPath数据字段,其目的是指定不同的bucket和文件夹结构,而不是文件名本身。

    如果您需要特定的文件名,您应该在 SageMaker 调用之后添加一个 S3 调用,以将结果文件移动到您想要的名称/位置。如果您输入了多个文件并且想要一个输出,则需要添加代码来连接输出。

    【讨论】:

      猜你喜欢
      • 2021-04-19
      • 1970-01-01
      • 1970-01-01
      • 2020-10-06
      • 1970-01-01
      • 2020-10-25
      • 2021-02-09
      • 2018-05-31
      • 1970-01-01
      相关资源
      最近更新 更多