在通过以下命令在本地运行良好的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,但这对我的情况没有帮助
谢谢!
我设法使其在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确实有帮助。