【发布时间】:2021-04-18 08:25:06
【问题描述】:
我正在尝试在 AWS 上运行自定义 python/sklearn sagemaker 脚本,基本上是从这些示例中学习:https://github.com/aws/amazon-sagemaker-examples/blob/master/sagemaker-python-sdk/scikit_learn_randomforest/Sklearn_on_SageMaker_end2end.ipynb
一切正常,如果定义参数,训练模型并输出文件:
parser.add_argument('--model-dir', type=str, default=os.environ.get('SM_MODEL_DIR'))
parser.add_argument('--train', type=str, default=os.environ.get('SM_CHANNEL_TRAIN'))
parser.add_argument('--test', type=str, default=os.environ.get('SM_CHANNEL_TEST'))
# train the model...
joblib.dump(model, os.path.join(args.model_dir, "model.joblib"))
并使用以下方式调用工作:
aws_sklearn.fit({'train': 's3://path/to/train', 'test': 's3://path/to/test'}, wait=False)
在这种情况下,模型存储在不同的自动生成的存储桶中,这是我不想要的。我想在我从中获取数据的同一个 s3 存储桶中获取输出(.joblib 文件)。所以我添加了参数model-dir:
aws_sklearn.fit({'train': 's3://path/to/train', 'test': 's3://path/to/test', `model-dir`: 's3://path/to/model'}, wait=False)
但它会导致错误:
FileNotFoundError: [Errno 2] No such file or directory: 's3://path/to/model/model.joblib'
如果我在训练脚本中对输出路径进行硬编码,也会发生同样的情况。
所以主要问题是,我如何才能在我选择的存储桶中获取输出文件?
【问题讨论】:
标签: python amazon-web-services amazon-s3 scikit-learn amazon-sagemaker