AWS SageMaker训练报错:无法解析Augmented Manifest文件第1行
报错原因与修复方案
核心排查方向1:文件编码带UTF-8 BOM头
这是该报错最高发的诱因:
- 若使用Windows自带记事本、部分默认带BOM配置的文本编辑器保存manifest文件,会在文件最开头插入3字节的UTF-8 BOM标记(十六进制值
0xEF 0xBB 0xBF)。SageMaker的Augmented Manifest解析器不兼容BOM头,会直接判定第一行开头字符非法,哪怕后续JSON内容完全符合规范,也会抛出第一行解析失败的错误。 - 修复方案:用VS Code、Notepad++等专业编辑器打开manifest文件,将编码切换为*UTF-8 无BOM(UTF-8 without BOM)*后重新保存,再上传到S3替换原有文件即可。
核心排查方向2:标注类型配置与场景不匹配
从你提供的第一行内容看,存在格式配置和使用场景不匹配的问题:
- 你的
source-ref直接指向单张PNG图片,属于静态图片目标检测场景,但你使用了视频帧目标检测专用的video-frame-object-detection作为标注键名,且metadata中的type字段值填写为programmatically-created-labels,不符合SageMaker的解析规则:- 静态图片目标检测的标注键名可自定义,但对应metadata的
type字段必须为groundtruth/object-detection video-frame-object-detection是视频帧序列检测场景专用字段,要求manifest结构包含视频源路径、帧序号等额外属性,直接套用到单图检测场景会触发结构解析失败
- 静态图片目标检测的标注键名可自定义,但对应metadata的
- 修复方案:
- 调整标注键名与type字段,适配单图目标检测场景,修改后的合法行示例如下:
{"source-ref": "s3://test-bucket/test-data/test/bucket/10done.png", "bounding-box": {"annotations": [{"class_id": 1, "top": 880, "left": 43, "width": 2499, "height": 324}], "image_size": [{"width": 2543, "height": 2543, "depth": 3}]}, "bounding-box-metadata": {"class-map": {"0": "Good", "1": "Bad"}, "human-annotated": "no", "creation-date": "2022-06-09T11:01:27.440682", "type": "groundtruth/object-detection"}}
- 启动训练任务时,确认
label-name参数填写的是你实际使用的标注键名(比如上述示例中的bounding-box)。
核心排查方向3:行首尾存在不可见特殊字符
- 若通过复制粘贴内容生成manifest文件,很可能在第一行开头、行尾带入零宽空格、全角空格、不可见控制字符,导致JSON解析器无法识别合法的JSON对象边界。
- 修复方案:手动删除第一行首尾的所有不可见字符,确保行首第一个字符为
{,行尾最后一个字符为},无多余符号。
内容的提问来源于stack exchange,提问作者MontyP
相关产品推荐
相关产品推荐

