更改模型文件在 AWS SageMaker 训练作业上的保存位置
Change model file save location on AWS SageMaker Training Job
我正在尝试 运行 在 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'
如果我在训练脚本中硬编码输出路径,也会发生同样的情况。
那么主要的问题是,我怎样才能在我选择的存储桶中获取输出文件?
您可以在定义估算器时使用参数output_path
。如果您使用
model_dir
我猜你必须事先创建那个桶,但你的优势是可以在训练期间实时保存工件(如果实例在 S3 上有权限)。你可以看看我的 repo 这个具体案例。
我正在尝试 运行 在 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'
如果我在训练脚本中硬编码输出路径,也会发生同样的情况。
那么主要的问题是,我怎样才能在我选择的存储桶中获取输出文件?
您可以在定义估算器时使用参数output_path
。如果您使用
model_dir
我猜你必须事先创建那个桶,但你的优势是可以在训练期间实时保存工件(如果实例在 S3 上有权限)。你可以看看我的 repo 这个具体案例。