You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS SageMaker目标检测微调训练报错:找不到annotations.json文件

解决SageMaker Quick Start目标检测微调时的FileNotFoundError问题

针对你遇到的FileNotFoundError: [Errno 2] No such file or directory: '/opt/ml/input/data/training/annotations.json'错误,以下是排查和解决方向:

  • 检查输入通道映射配置
    SageMaker训练作业会将S3数据挂载到/opt/ml/input/data/<通道名>路径下。如果你的S3结构是images/和annotations/两个独立目录,需确认训练作业是否配置了对应通道:

    • 若脚本期望annotations.json直接在training通道根目录,你需要将S3中annotations/下的文件直接放到训练通道指向的S3前缀(而非嵌套在annotations/子目录);
    • 若支持多通道输入,需分别创建training(指向S3的images/)和annotations(指向S3的annotations/)通道,并在训练脚本中修改标注文件的读取路径为/opt/ml/input/data/annotations/abc.json。
  • 验证S3数据的路径与权限

    • 确认S3 URI是否正确,比如标注文件的路径是否为s3://你的桶名/xxx/annotations/abc.json,无多余层级;
    • 检查SageMaker执行角色是否拥有该S3路径的s3:GetObject和s3:ListBucket权限。
  • 匹配模型的标注文件要求
    部分SageMaker Quick Start目标检测模型要求:

    • 标注文件必须命名为annotations.json(而非你的abc.json);
    • 标注文件与图片放置在同一目录下。
      可查看该模型的官方说明,确认格式要求,必要时重命名标注文件或调整目录结构。
  • 调试容器内的数据结构
    可以创建一个调试训练作业,用简单脚本列出容器内数据挂载情况,确认文件位置是否符合预期:

    import os
    def walk_dir(path):
        for root, dirs, files in os.walk(path):
            rel_path = os.path.relpath(root, path)
            indent = '  ' * rel_path.count(os.sep)
            print(f'{indent}{os.path.basename(root)}/')
            for f in files:
                print(f'  {indent}{f}')
    walk_dir('/opt/ml/input/data/')
    

    运行后查看日志,就能明确数据实际挂载的结构。

  • 排查容器潜在Bug
    若以上步骤都无问题,可换用同系列的其他Quick Start模型(如SSD Mobilenet V2)测试。若同样报错,大概率是容器的问题,可联系AWS技术支持,或改用自定义容器进行微调。

内容的提问来源于stack exchange,提问作者Dylan Pierce

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 19:21:06