部署TF Hub模型至AWS SageMaker时遇‘no SavedModel bundles found’错误求助
解决SageMaker部署TF Hub模型时的
no SavedModel bundles found!错误 问题概述
部署TF Hub的Inception V3特征向量模型(TF2.0 SavedModel v5)到AWS SageMaker时,端点创建失败,CloudWatch日志抛出ValueError: **no SavedModel bundles found!**,模型包为直接从TF Hub下载的tar.gz文件。
核心原因
SageMaker的TensorFlow推理容器对SavedModel的目录结构有严格要求:
- 要么tar包解压后,根目录直接包含
saved_model.pb和variables文件夹 - 要么根目录下存在一个数字命名的子目录(如
1/),该子目录内包含上述核心文件
但TF Hub下载的模型tar.gz解压后,所有核心文件都被包裹在一个带有模型名称的子目录(如imagenet_inception_v3_feature_vector_5/)中,不符合容器的预期结构,导致无法识别模型。
解决步骤
重新打包模型文件
- 下载并解压TF Hub的模型tar.gz文件
- 方式一:进入解压后的模型子目录,直接将
saved_model.pb和variables文件夹打包为新的tar.gz文件(避免包含外层目录) - 方式二:在解压后的根目录下创建数字命名的子目录(如
1/),将所有核心文件移动到该子目录后,再打包整个根目录
更新S3中的模型包
- 将重新打包后的tar.gz文件上传到目标S3路径,覆盖原有文件或上传至新路径
重新部署资源
- 删除之前失败的端点、端点配置和模型资源
- 使用新的模型包S3 URL重新创建模型,再依次创建端点配置和端点
本地验证方法
可以通过以下命令检查重新打包后的tar包结构是否符合要求:
tar -tf your-new-model.tar.gz
符合要求的输出示例:
saved_model.pb variables/ variables/variables.data-00000-of-00001 variables/variables.index
或者:
1/saved_model.pb 1/variables/ 1/variables/variables.data-00000-of-00001 1/variables/variables.index
额外注意事项
- 确保SageMaker执行角色拥有目标S3路径的读取权限
- 确认使用的推理镜像版本(此处为2.10.0-gpu)与模型的TensorFlow版本(TF2.0)兼容
内容的提问来源于stack exchange,提问作者Exess7
相关产品推荐
相关产品推荐

