【问题标题】:TF-Serving: how to send a model version along with a responseTF-Serving:如何发送模型版本和响应
【发布时间】:2018-12-05 19:21:40
【问题描述】:

前言。我正在解决一个经典的分类任务,用户给我发了一张图像,我对其进行分类并将类的名称发回给他,另外将结果保存在数据库中。为了使一切高效,我在返回类 id 的机器上运行 tensorflow-serving,至于 {class: name} 映射,它在 Web 服务器端维护。

现在问题如何保持这些{class: name} 映射与 TF 模型同步?假设,我有一个二分类任务:{0: "tree", 1: "car"}。在我的模型的第二个版本中,我交换了这两个类,即地图变成了{0: "car", 1: "tree"},为什么不呢?如果我在 Web 服务器端持有静态映射,那么我会将所有树归类为汽车,反之亦然。

问题。解决这个同步问题的正确方法是什么?

在你开始回答之前,让我回答几个非常合理的问题:

  1. :为什么我们不能将此映射移动到 TensorFlow 服务端?
    A:假设,我们在 tf 端弄乱了命名。然后有一段时间我们将写入数据库错误的名称。当我们发现这一点时,我们需要去数据库并重命名所有内容。在 Web 服务器端进行映射使这根本不是问题。我们将更改此映射,仅此而已,因为我们在数据库中只存储了类 ID。
  2. :如果模型被更改并且所有类都被打乱了怎么办?
    A:当然,我们需要对所有模型进行版本化,并为每个模型存储一个映射。

如果我们采用建议的方法,那么随响应一起发送模型版本就足够了。我可以在 tf-serving 中做到这一点吗?欢迎其他解决此问题的想法和方法。

【问题讨论】:

    标签: tensorflow tensorflow-serving


    【解决方案1】:

    我想您有某种服务来包装 TensorFlow Server 并向用户公开,您可以在其中实现一些额外的逻辑。

    TF Serving 提供metadata API(通过 REST 或 RPC),允许您请求当前托管模型的 SignatureDef。我不确定这是否足以满足您的需求,因为 SignatureDef 在您描述的场景中可能保持不变。但是,method_name 似乎允许一些 customization

      // Extensible method_name information enabling third-party users to mark a
      // SignatureDef as supporting a particular method. This enables producers and
      // consumers of SignatureDefs, e.g. a model definition library and a serving
      // library to have a clear hand-off regarding the semantics of a computation.
    

    也许您可以将您的版本控制绑定到此method_name,并在您每次启动服务时请求它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-06-13
      • 2017-07-15
      • 2022-10-06
      • 2023-04-06
      • 1970-01-01
      • 2019-11-27
      • 1970-01-01
      • 2020-10-21
      相关资源
      最近更新 更多