从S3加载模型的新版本时,Tensorflow服务错误

时间:2019-07-18 10:04:06

标签: tensorflow kubernetes tensorflow-serving

我通过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同步完成之前就开始加载可服务对象。

有什么线索吗? 谢谢!

1 个答案:

答案 0 :(得分:0)

当您的新模型版本包含变量时,可能会发生。 参考:https://github.com/tensorflow/serving/issues/1086

尝试先上传变量dir。