本地预测正常运行时,无法在ML Engine上获得预测

时间:2019-01-27 06:49:23

标签: tensorflow-serving google-cloud-ml

在通过以下命令在本地运行良好的Google Cloud ML-Engine上运行模型时,我遇到了一些麻烦:

  

gcloud ml-engine本地预测--model-dir> / my / model / directory --json-instances /tmp/test.json

给出以下结果:

CLASSES       SCORES
[u'0', u'1']  [0.04031550511717796, 0.9596844911575317]

我还通过save_model_cli验证了模型和输入:

  

saved_model_cli运行--dir / my / model / directory --tag_set服务--signature_def服务_默认--input_exprs'inputs = [“文本消息”]'--tf_debug

哪个给我:

Result for output key classes:
[[b'0' b'1']]
Result for output key scores:
[[1.0000000e+00 1.4367239e-08]]

以上与我通过Python代码获得的预测几乎相同。

现在,我已将save_model.pd部署到ML-Engine中,并尝试通过此链接所述的HTTPS调用来运行它:https://cloud.google.com/ml-engine/docs/v1/predict-request

我的请求如下:

  

POST https://ml.googleapis.com/v1/projects/my-project/models/my-model/versions/my-version:predict

但是我得到的只是以下错误消息:

  

{      “错误”:“预测失败:模型执行期间错误:AbortionError(code = StatusCode.FAILED_PRECONDITION,详细信息= \”从容器:本地主机读取资源变量dnn / logits / bias / part_0时出错。这可能意味着该变量未初始化找不到>:资源localhost / dnn / logits / bias / part_0 / N10tensorflow3VarE不存在。\ n \ t [[{{node dnn / logits / bias / ReadVariableOp}} => ReadVariableOp_output_shapes = [1] ,dtype = DT_FLOAT,_device = \“ / job:localhost /副本:0 / task:0 / device:CPU:0 \”]] \“)”   }

通过以下命令运行在线预测时出现相同的错误:

  

gcloud ml-engine预测--model = my_model_name --version = my_version_name --json-instances =。/ test.json

输出为:

  

{     “错误”:“预测失败:模型执行期间错误:AbortionError(code = StatusCode.FAILED_PRECONDITION,详细信息= \”从容器:本地主机读取资源变量dnn / logits / bias / part_0时出错。这可能意味着该变量未初始化找不到:资源localhost / dnn / logits / bias / part_0 / N10tensorflow3VarE不存在。\ n \ t [[{{node dnn / logits / bias / ReadVariableOp}} => ReadVariableOp_output_shapes = [1], dtype = DT_FLOAT,_device = \“ / job:localhost /副本:0 / task:0 / device:CPU:0 \”]] \“)”   }

命令

  

gcloud ml-engine模型描述my_model   返回以下内容:

defaultVersion:
  createTime: '2019-01-24T06:20:48Z'
  deploymentUri: gs://<my-bucket>
  framework: TENSORFLOW
  isDefault: true
  machineType: mls1-c1-m2
  name: <my-model>/<my-version>
  pythonVersion: '2.7'
  runtimeVersion: '1.12'
  state: READY
description: Classify urgency of a voicemail message
name: my_model_name
regions:- us-central1

我正在python 2.7中本地使用tensorflow 1.12。

我也在云服务器上运行过一项工作:

  

gcloud ml-engine作业提交预测[...]

这就是我在日志中得到的(在Cloud ML Job中):

  

error_detail:{     详细信息:“由于模型数据不正确,无法加载模型。标签:> ['serve']   传递的save_path不是有效的检查点:gs:// cml-782035949213-> 1548310990035505 / models / urgency_classifier / urgency_classifier_25012019 /> 10885858792860527262 / model / variables / variables“
    input_snippet:“ {” inputs“:”这是一条测试消息“}。”
   }

我应该怎么做才能使我的模型在Google Cloud ML Engine中工作?

注意:我也读过this post,但这对我的情况没有帮助

谢谢!

编辑2019年1月1日至30日

我设法使其在Docker容器上工作。我将保存的模型和变量导出到文件夹中,并配置了docker以通过以下命令运行它:

  

docker run -p 8501:8501 --mount type = bind,source = my / path / to / saved / model,target = / models / -e MODEL_NAME = -t tensorflow / serving&

我现在可以使用curl或邮递员获得预测:

  

curl -d'{“ instances”:[“这是一条测试消息”]}'-X POST http://localhost:8501/v1/models/:预测

这给了我以下结果:

{
"predictions": [
    {
        "classes": ["0", "1"],
        "scores": [0.0959636, 0.904036]
    }
]
}

我们现在将这个实例部署在云服务器上,然后从那里调用我们的模型。

这个link确实有帮助。

0 个答案:

没有答案