GCP与TensorFlow运行时错误:预测请求失败问题排查
解决Cloud ML Engine与Datalab TensorFlow版本不匹配导致的预测报错问题
你猜的完全没错,TensorFlow版本不兼容就是引发这个问题的核心原因。Cloud ML Engine v1.4的运行环境只支持TensorFlow 1.4.x系列版本的模型,而Datalab v1.5默认搭载的是TensorFlow 1.5.x版本——两个版本在模型文件的底层结构、内置操作符的实现上存在差异,直接把高版本训练的模型放到低版本环境运行,自然会出现预测报错。
结合你的测试结果(用AWS SageMaker TF1.4训练的模型能正常运行),这里给你两个可行的解决方向:
方案一:在Datalab中降级TensorFlow版本重新训练
如果你不需要依赖TensorFlow 1.5的新特性,最简单的办法就是把Datalab里的TensorFlow降到1.4.x版本,重新训练模型:
- 在Datalab的Notebook中执行降级命令:
!pip install tensorflow==1.4.1 - 重启Notebook的kernel,确保新的TensorFlow版本生效;
- 重新运行你的训练代码,生成适配Cloud ML Engine v1.4的模型文件后,再重新部署即可。
方案二:升级Cloud ML Engine的运行环境版本
如果你的模型必须用到TensorFlow 1.5的功能,不想修改训练环境,可以在部署模型时指定Cloud ML Engine使用对应版本的运行环境:
用gcloud命令部署时,添加--runtime-version 1.5参数,示例命令如下:
# 创建模型(如果还没创建) gcloud ml-engine models create YOUR_MODEL_NAME --regions YOUR_REGION # 创建版本并指定TF1.5运行环境 gcloud ml-engine versions create YOUR_VERSION_NAME --model YOUR_MODEL_NAME --origin gs://YOUR_MODEL_BUCKET_PATH --runtime-version 1.5 --framework TENSORFLOW
这样Cloud ML Engine就会用TensorFlow 1.5的环境来加载和运行你的模型,和Datalab的训练版本完全匹配。
额外提醒
后续训练和部署模型时,尽量保持训练环境和部署环境的TensorFlow版本一致,能避免很多类似的兼容性坑。如果不确定模型是否兼容,可以先在本地用目标版本的TensorFlow加载模型测试预测,确认没问题后再上传部署。
内容的提问来源于stack exchange,提问作者user1058210
相关产品推荐
相关产品推荐

