我通过在K8S集群中使用专用部署的TF服务来为TF模型提供服务。我正在使用一个部署在与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同步完成之前就开始加载可服务对象。
有什么线索吗?谢谢!
发布于 2020-12-09 16:23:45
当你的新模型版本有变量时可能会发生。参考:https://github.com/tensorflow/serving/issues/1086。
尝试先上传变量dir。
https://stackoverflow.com/questions/57092002
复制相似问题