【问题标题】:In tensorflow serving, what are general rules for model name在张量流服务中,模型名称的一般规则是什么
【发布时间】:2019-05-03 22:54:52
【问题描述】:

我正在尝试提供经过训练的 tensorflow 保存模型,并且我希望预测 url 是这样的:

localhost:8501/v1/models/<model_name>:predict, where model_name is like "something1/something2"

我所做的是将model_name参数设置为something1/something2 然后运行

docker run --rm -p 8501:8501 \
    -v "$LOCAL_MODEL_DIR:/models/${MODEL_NAME}" \
    -e MODEL_NAME=${MODEL_NAME} \
    -t tensorflow/serving

该命令似乎工作正常, 但是当我将预测发布到localhost:8501/v1/models/something1/something2:predict

我收到了这个错误:

{ "error": "Malformed request: POST /v1/models/something1/something2:predict" }

  • tf serving docker image 似乎可以正常服务模型,我想我发布的 URL 有误?
  • 当我将模型名称更改为不包含正斜杠时,一切正常

【问题讨论】:

  • 我在对 REST API 使用斜杠时也做了同样的观察,主要问题显然是 / 是那里的保留字符。请注意,当我改用 gRPC 接口时,它对我有用,因此它不是一般的“TF Serving 不支持模块名称中的斜杠”的事情。然而,在 HTTP 请求中转义斜杠的明显解决方法(使用 %2F 代替)并没有为我解决这个问题,因为 TFS 显然没有解码这些。

标签: tensorflow tensorflow-serving


【解决方案1】:

您的观察 =>“当我将模型名称更改为不包含正斜杠时,一切正常”是非常好的一个。

所以,要准确回答您的问题,型号名称的一般规则是

  1. 不允许使用“*、#、/ 等特殊符号”
  2. 不允许使用空格。示例:“新模型”
  3. 我们计划保存模型的路径的文件夹结构中涉及的所有文件夹都不应该有空格。

通常,当你导出一个模型时,它会保存在一个路径中,例如,像,

"/usr/local/google/home/abc/Jupyter_Notebooks/export/1554294699",其中 1554294699 是模型保存时的时间戳。

因此,在推理过程中,我们只需将模型名称指定为 export 就足够了。

在推理和预测期间,Tensorflow Serving 负责从该文件夹中挑选模型的最新版本。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-02-29
    • 2021-05-03
    • 2020-06-04
    • 2011-10-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-04
    相关资源
    最近更新 更多