我通过TF Serving为TF模型提供服务,并在K8S集群中进行了专门部署。我正在使用与TF服务相同的命名空间中部署的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同步完成之前就开始加载可服务对象。
有什么线索吗? 谢谢!
答案 0 :(得分:0)
当您的新模型版本包含变量时,可能会发生。 参考:https://github.com/tensorflow/serving/issues/1086。
尝试先上传变量dir。