通过 Docker 提供的 TF 模型缺少模型信息,如果请求则返回 404

问题描述 投票:0回答:1

我有一个训练有素的模型,我正在尝试通过 Docker 容器中的张量流服务来部署图像分类器。当我运行 python 代码通过 REST 请求时,我收到 404 响应。请求如下所示:

json_response = requests.post('http://localhost:8501/models/model_name:predict', data=data)
json_response.raise_for_status()

prediction = json_response.json()['predictions'][0]
print(prediction)

使用curl检查模型信息后,我得到以下响应:

<HTML><HEAD>
<TITLE>404 Not Found</TITLE>
</HEAD><BODY>
<H1>Not Found</H1>
</BODY></HTML>

我按照 tensorflow 网站上关于使用 docker 提供服务的说明进行操作,并且在设置过程中没有出现任何错误。

我相信这可能与我保存模型的方式有关,因为 tf_serving 指南中的示例有效,但我使用了 tensorflow 中概述的 SavedModel 格式,其代码如下:

tmpdir = tempfile.mkdtemp()
save_path = os.path.join(tmpdir, "model_name/1/")

print(list(model.signatures.keys()))  # ["serving_default"]

infer = model.signatures["serving_default"] # 5 classes
print(infer.structured_outputs)

tf.saved_model.save(model, save_path)

之前代码的打印语句:

['serving_default']
{'dense_2': TensorSpec(shape=(None, 5), dtype=tf.float32, name='dense_2')}

在张量流 SavedModel 指南中,它显示了名为“预测”的结构化输出,这可能是问题的一部分。

作为参考,我正在使用冻结的 MobileNetV2 的迁移学习,并添加了一些层。

我对 Tensorflow 和 Tensorflow Serving 都很陌生,所以如果这是一个我可能错过的简单问题,请原谅我。

python docker rest tensorflow tensorflow-serving
1个回答
0
投票

您是如何开始服务的?确保您的发布请求中的模型名称与模型配置中的名称相同。

© www.soinside.com 2019 - 2024. All rights reserved.