首页 > 解决方案 > 从 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 同步完成之前就开始加载可服务的同步问题造成的。

有什么线索吗?谢谢!

标签: tensorflowkubernetestensorflow-serving

解决方案


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

尝试先上传变量目录。


推荐阅读