【问题标题】:Change model file save location on AWS SageMaker Training Job更改 AWS SageMaker 训练作业上的模型文件保存位置
【发布时间】: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


    【解决方案1】:

    您可以在定义估算器时使用参数output_path。如果您使用 model_dir 我想您必须事先创建该存储桶,但您的优势是可以在训练期间实时保存工件(如果实例在 S3 上具有权限)。你可以看看我的repo 这个具体案例。

    【讨论】:

      猜你喜欢
      • 2020-05-25
      • 2020-11-18
      • 2021-02-08
      • 1970-01-01
      • 1970-01-01
      • 2023-02-20
      • 1970-01-01
      • 2020-06-29
      • 2018-10-04
      相关资源
      最近更新 更多