SageMaker Estimator.fit() 没有将 'train' 输入传递给训练实例

SageMaker Estimator.fit() didn't pass the 'train' input to the Training instance

正如文档/教程中提到的那样,我们可以调用 Estimator.fit() 来启动训练作业。

该方法的必需参数是 inputs,即对训练文件的 s3/文件引用。示例:

estimator.fit({'train':'s3://my-bucket/training_data})

训练-script.py

parser.add_argument('--train', type=str, default=os.environ['SM_CHANNEL_TRAIN'])

我希望 os.environ['SM_CHANNEL_TRAIN'] 成为 S3 路径。但是,它 returns /opt/ml/input/data/train.

有人知道为什么吗?

更新

我也试过打电话给estimator.fit('s3://my-bucket/training_data')。 不知何故,训练实例没有获得 SM_CHANNEL_TRAIN 环境变量。事实上,我根本没有看到环境变量中的s3 URI。

这很可能是因为您的参数 os.environ['SM_CHANNEL_TRAIN'] 没有提供带有 s3:// 前缀的路径,如果您希望它从 s3 中提取数据。如果没有该前缀,它将改为在映像中搜索自己的本地文件系统以查找该路径。

当 运行 在 SageMaker 中训练作业时,包含您提供的训练数据的 S3 URL 最终会从指定的 [=18] 复制到 docker 容器(又名训练作业)中=].因此,环境变量 SM_CHANNEL_TRAIN 指向从提供的 S3 URL 复制的训练数据的本地路径。

https://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateTrainingJob.html#SageMaker-CreateTrainingJob-request-InputDataConfig