tensorflow - 从 S3 加载新版本模型时出现 Tensorflow Serving 错误
问题描述
我正在通过 TF Serving 为 TF 模型提供服务,并在 K8S 集群中进行了专门部署。我正在使用部署在与 TF Serving 相同的命名空间中的 MinIO 实例。
我使用以下环境变量对其进行了配置,以便让 TF Serving 访问 S3 并同步正确的文件
- name: MODEL_NAME
value: model-name
- name: S3_ENDPOINT
value: minio:9000
- name: S3_USE_HTTPS
value: '0'
- name: S3_VERIFY_SSL
value: '0'
- name: AWS_REGION
value: 'us-west-1'
- name: AWS_ACCESS_KEY_ID
valueFrom:
secretKeyRef:
key: AWS_ACCESS_KEY_ID
name: minio-secret
- name: AWS_SECRET_ACCESS_KEY
valueFrom:
secretKeyRef:
key: AWS_SECRET_ACCESS_KEY
name: minio-secret
- name: MODEL_BASE_PATH
value: s3://ROOT-BUCKET
- name: TF_CPP_MIN_LOG_LEVEL
value: '2'
一切顺利,我已经能够查询服务器并正确预测,但是当我加载新版本时,我总是收到以下错误:
'{ "error": "Failed to process element: 0 key: decoder_state_input_h:0 of \\\'instances\\\' list. Error: Invalid argument: JSON object: does not have named input: decoder_state_input_h:0" }'
杀死 POD(又名重新启动 TF 服务)会导致新版本的正确恢复。此问题似乎是由于 TF 服务甚至在 S3 同步完成之前就开始加载可服务的同步问题造成的。
有什么线索吗?谢谢!
解决方案
当您的新模型版本有变量时可能会发生。参考:https ://github.com/tensorflow/serving/issues/1086 。
尝试先上传变量目录。
推荐阅读
- javascript - 如何将此 if else 转换为 switch case
- sql - 如何修复 SQL Server 代理作业中的 SSIS 脚本任务调用错误?
- javascript - 在对象日寻找共性
- c++ - 如何在 C++ 中制作堆栈列表?
- javascript - 使用反应钩子访问 ComponentWillUnmount 中的道具
- reactjs - 使用下拉列表中的选定值显示更改时正确的组件?
- machine-learning - CreateML 活动分类器连续预测
- python - 在 UDP 客户端上显式设置端口号
- go - 在基于通道的管道中使用上下文超时
- javascript - Google Drive Api 中的 Acess_token 为空