gpt4 book ai didi

python - 在 AWS Sagemaker 中使用 Tensorflow Estimator 时如何在 S3 中保存 Tensorflow 模型(作为/output/model.tar.gz)

转载 作者:行者123 更新时间:2023-12-04 13:33:00 24 4
gpt4 key购买 nike

我有一个使用 entry_point 脚本训练的 Keras 模型,我使用以下代码段来存储模型工件(在 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 应该自动将此文件夹的内容移动到 S3 为 s3://<default_bucket>/<training_name>/output/model.tar.gz当我运行 estimator.fit({'training': training_input_path}) ,训练成功,但是Cloudwatch日志显示如下:
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.
即便如此, Sagemaker 确实存储 我的模型工件,唯一的区别是不是将它们存储在 s3://<default_bucket>/<training_name>/output/model.tar.gz 中,它们现在解压后存储为 s3://<default_bucket>/<training_name>/model/model/1/saved_model.pb以及变量和 Assets 文件夹。正因为如此, estimator.deploy()调用失败,因为它无法在 output/目录中找到工件。
Sagemaker Python SDK - 2.6.0
估算器代码:
from sagemaker.tensorflow import TensorFlow

tf_estimator = TensorFlow(entry_point='autoencoder-model.py',
role=role,
instance_count=1,
instance_type='ml.m5.large',
framework_version="2.3.0",
py_version="py37",
debugger_hook_config=False,
hyperparameters={'epochs': 20},
source_dir='/home/ec2-user/SageMaker/model',
subnets=['subnet-1', 'subnet-2'],
security_group_ids=['sg-1', 'sg-1'])
我在这里做错了什么?

最佳答案

更新:

parser.add_argument('--model_dir', type=str, default=os.environ['SM_MODEL_DIR'])
至:
parser.add_argument('--model-dir', type=str, default=os.environ['SM_MODEL_DIR']) 
会为我工作。
Sagemaker 容器会将经过训练的模型保存在“ ”中模型目录 ' 然后从此目录制作一个 zip 文件并上传到 ' s3 存储桶 ' 位置 ' 模型目录 '。
' 模型目录 ' 是容器内的位置 /opt/ml/..
' 模型目录 ' 与 ' 映射输出路径 ' 我们在:
tf_estimator = TensorFlow(entry_point='autoencoder-model.py', role=role,output_path=output_path,.....)
希望这将有助于解决问题。

关于python - 在 AWS Sagemaker 中使用 Tensorflow Estimator 时如何在 S3 中保存 Tensorflow 模型(作为/output/model.tar.gz),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63912759/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com