Sagemaker中的Training Job在将S3中的文件定位到Docker映像路径时出错

时间:2019-03-02 04:34:29

标签: amazon-sagemaker

我正在尝试使用在AWS CLI中运行的scikit_bring_your_own / container / decision_trees / train模式,我没有任何问题。尝试在“创建Sagemaker培训作业”中进行复制,但在将数据从S3加载到Docker映像路径时遇到问题。

在CLI命令中,我们使用了docker run -v $ {pwd)/ test_dir:/ opt / ml --rm $ {image}火车,从那里需要引用输入。

在培训工作中,提到了模型工件的S3存储桶位置和输出路径。

在异常中输入错误,如在火车中-“ container / decision_trees / train” 引发ValueError(('{}中没有文件。\ n'+                               “这通常表示错误地指定了频道({}),\ n'+                               'S3中的数据规范指定错误或角色指定\ n'+                               '无权访问数据。'。format(training_path,channel_name)) 追溯(最近一次通话): 火车中的“ / opt / program / train”文件,第55行 '没有访问数据的权限。'。format(training_path,channel_name))

所以不理解是否需要进行任何调整或缺少任何访问权限。

请帮助

1 个答案:

答案 0 :(得分:0)

如果您像这样在CreateTrainingJob API中设置InputDataConfig

"InputDataConfig": [ 
  { 
     "ChannelName": "train",
     "DataSource": { 
        "S3DataSource": { 
           "S3DataDistributionType": "FullyReplicated",
           "S3DataType": "S3Prefix",
           "S3Uri": "s3://<bucket>/a.csv"
        }
     },
     "InputMode": "File",
  },
  { 
     "ChannelName": "eval",
     "DataSource": { 
        "S3DataSource": { 
           "S3DataDistributionType": "FullyReplicated",
           "S3DataType": "S3Prefix",
           "S3Uri": "s3://<bucket>/b.csv"
        }
     },
     "InputMode": "File",
  }
]

SageMaker从S3将上面指定的数据下载到Docker容器中的/ opt / ml / input / data / channel_name目录中。在这种情况下,算法容器应该能够在以下位置找到输入数据

/opt/ml/input/data/train/a.csv
/opt/ml/input/data/eval/b.csv

您可以在https://docs.aws.amazon.com/sagemaker/latest/dg/your-algorithms-training-algo.html

中找到更多详细信息