如在提到的文档/教程中一样,我们可以调用Estimator.fit()
来启动Training Job。
该方法的必需参数将是inputs
,即s3 /对培训文件的文件引用。示例:
estimator.fit({'train':'s3://my-bucket/training_data})
training-script.py
parser.add_argument('--train', type=str, default=os.environ['SM_CHANNEL_TRAIN'])
我希望os.environ['SM_CHANNEL_TRAIN']
是S3路径。但是,它返回/opt/ml/input/data/train
。
有人知道为什么吗?
更新
我还尝试调用estimator.fit('s3:// my-bucket / training_data')。 而且,训练实例无法获得SM_CHANNEL_TRAIN环境变量。实际上,我根本没有在环境变量中看到s3 URI。
答案 0 :(得分:1)
在SageMaker中运行培训作业时,包含您提供的培训数据的S3 URL最终会从指定的URL复制到Docker容器(又名培训作业)中。因此,环境变量SM_CHANNEL_TRAIN指向从提供的S3 URL复制的训练数据的本地路径。
答案 1 :(得分:0)
最可能的原因是,如果您希望参数os.environ['SM_CHANNEL_TRAIN']
不会提供带有s3://
前缀的路径,那么您希望它从s3中提取数据。如果没有该前缀,它将在映像中搜索自己的本地文件系统以查找该路径。