TensorFlow 2.0模型部署AWS SageMaker端点遇镜像缺失等问题求助
解决AWS SageMaker部署TensorFlow 2.0模型的镜像问题
首先,咱们先搞定最核心的镜像找不到的问题——你遇到的The image '...sagemaker-tensorflow:2.0-cpu-py2' does not exist报错,本质是TensorFlow 2.0的SageMaker官方镜像只支持Python 3,没有Python 2版本的,而你的代码默认用了py2,所以才找不到。
修正部署代码
把你的TensorFlowModel初始化代码加上py_version='py3'参数,指定用Python 3的镜像,就能解决镜像不存在的问题:
from sagemaker.tensorflow.model import TensorFlowModel # 加上py_version='py3'指定Python3镜像 sagemaker_model = TensorFlowModel( model_data='s3://sagemaker-eu-west-1-273649867642/model/model.tar.gz', role=role, framework_version='2.0', entry_point='train.py', py_version='py3' # 关键参数,必须加! ) %%time predictor = sagemaker_model.deploy(initial_instance_count=1, instance_type='ml.m4.xlarge')
AWS确实有官方的TF 2.0 SageMaker镜像,只是你之前没明确指定Python版本,导致它去找不存在的py2镜像。
关于旧版本镜像ping超时的问题
你用TF 1.4/1.8版本部署出现ping超时,是因为你的模型是TF 2.0的,和旧版本TensorFlow的运行环境不兼容,模型加载时可能卡住或者崩溃,导致SageMaker的健康检查(ping)超时。所以必须用和模型版本匹配的TF 2.0环境,不能用旧版本。
自己创建TF 2.0镜像的方法(如果官方镜像满足不了需求)
如果官方镜像的配置不符合你的需求,确实可以自定义镜像,步骤大概是这样:
- 基于官方的TensorFlow 2.0基础镜像(比如
tensorflow/tensorflow:2.0.0-py3),安装SageMaker推理所需的依赖(比如sagemaker-tensorflow-inference包)。 - 编写Dockerfile,定义镜像的启动命令和推理入口。
- 把镜像推送到AWS ECR容器仓库。
- 在部署时用
Model类而不是TensorFlowModel,指定自定义镜像的URI。
不过一般来说,官方的TF 2.0镜像已经足够满足大部分部署需求,优先用官方的更省心。
AWS官方TF 2.0镜像的说明
AWS很早就推出了TensorFlow 2.x系列的官方SageMaker镜像,支持CPU、GPU等多种实例类型,只是注意:
- 所有TF 2.x的镜像都只支持Python 3,没有Python 2版本(符合你收到的 deprecation提示)。
- 不同区域的镜像URI可能略有不同,但SageMaker的TensorFlowModel类会自动根据你的区域拉取正确的镜像,不用手动指定URI,只要正确设置
framework_version和py_version就行。
内容的提问来源于stack exchange,提问作者Phil
相关产品推荐
相关产品推荐

