如何解决在AWS Sagemaker中使用Tensorflow Estimator时,如何在S3中将Tensorflow模型保存为/output/model.tar.gz
我有一个Keras模型正在使用entry_point脚本进行训练,并且正在使用以下代码存储模型工件(在entry_point脚本中)。
parser.add_argument('--model_dir',type=str,default=os.environ['SM_MODEL_DIR'])
args,_ = parser.parse_known_args()
model_dir = args.model_dir
---
tf.keras.models.save_model(
model,os.path.join(model_dir,'model/1'),overwrite=True,include_optimizer=True
)
理想情况下,model_dir应该为opt/ml/model
,Sagemaker应该以{{1}}的形式将该文件夹的内容自动移动到S3。
运行s3://<default_bucket>/<training_name>/output/model.tar.gz
时,培训成功,但是Cloudwatch日志显示以下内容:
estimator.fit({'training': training_input_path})
即使那样, Sagemaker确实存储了我的模型工件,唯一的区别在于,它们不再存储在2020-09-16 02:49:12,458 sagemaker_tensorflow_container.training WARNING No model artifact is saved under the path /opt/ml/model. Your training job will not save any model files to S3.
中,而是与s3://<default_bucket>/<training_name>/output/model.tar.gz
一起解压缩了。 变量和资产文件夹。因此,s3://<default_bucket>/<training_name>/model/model/1/saved_model.pb
调用失败,因为它无法在 output / 目录中找到工件。
estimator.deploy()
估计代码:
Sagemaker Python SDK - 2.6.0
我在这里怎么可能做错了?
解决方法
更新:
/^(.*[ \t(])?TEST_?DIR([) =:]| :=| =|)/
到:
parser.add_argument('--model_dir',type=str,default=os.environ['SM_MODEL_DIR'])
对我有用。
Sagemaker 容器会将经过训练的模型保存在“model-dir”中,然后从该目录制作一个 zip 文件并上传到位置“s3 存储桶”中strong>model_dir'。
'model-dir' 是容器内的位置 /opt/ml/..
'model_dir' 与我们在其中进行 defile 的 'output_path' 映射:
parser.add_argument('--model-dir',default=os.environ['SM_MODEL_DIR'])
希望这有助于解决问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。