问题:
作业在 5 分钟后反复失败并出现错误
客户端错误: train_lst通道中缺少 .lst 文件。
上下文:
在 AWS 控制台中工作,我有一个图像的二元分类任务。我已经根据指南在其文件名中标记了这些类。
最终,我开始遇到错误,这些错误表明对于这种特定算法,需要.lst
文件来收集标签,因为"内容类型"被指定为图像,这显然需要一个 lst 文件。
示例数据:
我正在尝试匹配我在StackOverflow和在线其他地方看到的示例。trn_list.lst
的当前迭代如下所示:
292 t 1 t dog-292.jpeg
214 t 1 t dog-214.jpeg
290 t 0 t cat-290.jpeg
288 t 1 t dog-288.jpeg
160 t 1 t dog-160.jpeg
18 t 0 t cat-18.jpeg
215 t 1 t dog-215.jpeg
254 t 1 t dog-254.jpeg
53 t 1 t dog-53.jpeg
337 t 0 t cat-337.jpeg
284 t 0 t cat-284.jpeg
177 t 1 t dog-177.jpeg
192 t 1 t dog-192.jpeg
228 t 0 t cat-228.jpeg
305 t 0 t cat-305.jpeg
258 t 1 t dog-258.jpeg
75 t 0 t cat-75.jpeg
148 t 0 t cat-148.jpeg
268 t 1 t dog-268.jpeg
281 t 1 t dog-281.jpeg
24 t 1 t dog-24.jpeg
328 t 1 t dog-328.jpeg
99 t 1 t dog-99.jpeg
存储桶没有子文件夹,所以我只是将 .lst 放在
在一次迭代中,我允许创建 .lst 的 R 程序在写出时将t
替换为实际的选项卡。在其他迭代中,我在那里留下了实际的分隔符(t
)。似乎没有影响它(?
当您使用 SageMaker 训练作业时,您实际上是将 Docker 映像部署到 EC2 实例集群。Docker 有一个 python 文件,它以类似于您在机器上训练它的方式运行训练代码。在训练代码中,当它希望查找数据(例如要训练的图像和用于该训练的元数据)时,您引用的是本地文件夹。
"魔术"是如何从 S3 获取数据,以便在本地可用于训练实例。这是使用训练作业配置中的通道定义完成的。每个通道定义在训练实例上创建一个本地文件夹,并将数据从 S3 复制到该本地文件夹。您需要匹配名称以及 S3 位置和文件格式。
以下是 SageMaker 中通道定义的文档: https://docs.aws.amazon.com/sagemaker/latest/dg/API_Channel.html
对于用于图像分类的内置算法的具体示例,如果使用图像格式进行训练,请指定train
、validation
、train_lst
和validation_lst
通道作为CreateTrainingJob
请求的InputDataConfig
参数的值。指定训练通道和验证通道的单个图像数据(.jpg 或 .png 文件)。在每个train_lst和validation_lst通道中指定一个 .lst 文件。将所有四个频道的内容类型设置为application/x-image
。
在此处查看更多详细信息:https://docs.aws.amazon.com/sagemaker/latest/dg/image-classification.html#IC-inputoutput