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

SageMaker自定义数据集训练报错:指定文件路径不存在

解决SageMaker训练任务中FileNotFoundError的问题

核心原因

训练代码transfer_learning.py里硬编码了数据路径/opt/ml/input/data/training/train/data.csv,但SageMaker从S3同步过来的数据结构不匹配,导致文件找不到。

具体修复步骤

1. 调整S3数据集的目录结构

确保你的training_dataset_s3_path对应的S3路径下存在train/data.csv层级。比如:

  • 正确S3路径示例:s3://your-bucket/dataset/train/data.csv,此时SageMaker会将整个train目录同步到/opt/ml/input/data/training/下,最终路径与代码中硬编码的路径完全匹配。
  • 如果当前S3路径直接指向data.csv(如s3://your-bucket/dataset/data.csv),需在S3中将data.csv移动到train子目录下。

2. 修改训练代码的文件读取路径

若不想调整S3结构,直接修改transfer_learning.py中的读取逻辑:

  • 替换硬编码路径:
# 原代码
pd.read_csv('/opt/ml/input/data/training/train/data.csv')
# 修改后
pd.read_csv('/opt/ml/input/data/training/data.csv')
  • 更推荐的灵活写法(通过环境变量获取数据目录):
import os
training_data_dir = os.environ['SM_CHANNEL_TRAINING']
data_path = os.path.join(training_data_dir, 'data.csv')
pd.read_csv(data_path)

这种方式无需依赖固定目录结构,适配不同的S3数据组织形式。

3. 验证数据通道与权限

  • 确认fit方法中的通道映射{"training": training_dataset_s3_path}正确,该映射会将S3数据同步到/opt/ml/input/data/training/目录,无需修改。
  • 检查SageMaker执行角色(aws_role)是否具备目标S3路径的s3:GetObject和s3:ListBucket权限,避免因权限不足导致数据未同步,引发文件不存在错误。

内容的提问来源于stack exchange,提问作者Ashish Jha

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 11:26:52