你可以在同一个 tensorflow/serving 二进制文件中提供来自不同 tensorflow 版本的模型吗?

Posted

技术标签:

【中文标题】你可以在同一个 tensorflow/serving 二进制文件中提供来自不同 tensorflow 版本的模型吗?【英文标题】:Can you serve models from different tensorflow versions in the same binary of tensorflow/serving? 【发布时间】:2020-11-11 05:38:45 【问题描述】:

假设我有两个保存的模型,一个来自 tensorflow 1.8,另一个来自 tensorflow 2.2。为这两者提供服务可能会遇到compatibility issues。

是否可以在同一个 tensorflow/serving 二进制文件中同时提供这两个服务?


我的直觉表明没有人不能,至少不容易。

我不是 bazel 文件方面的专家,但我认为编译 tensorflow/serving 需要构建和链接 tensorflow 核心库。我不确定是否可以将两个不同版本的 tensorflow 核心库链接在一起。

我想可以在两个不同的发布点 1.8.0 和 2.2.0 中编译 tensorflow/serving 二进制文件,并将这两个二进制文件分别部署在您的基础架构中。然后需要在模型发现层和请求路由层管理哪个模型需要加载到哪个 tensorflow/serving 二进制文件中,以及哪个预测请求应该与哪个 tensorflow/serving 端点对话。

【问题讨论】:

【参考方案1】:

我绝对不是 TensorFlow 深层内部工作原理的专家,因此请谨慎对待。但我认为你想做的事情实际上可能很容易。

我非常近似(并且可能完全不正确)的理解是,TensorFlow API 是一种包装器,它创建一个表示您想要执行的任何计算的图形,并且编译后的图形至少在一些版本,即使用于创建和操作它的 API 不是。

根据经验,我已经能够将使用 TensorFlow 1.15.x 构建的模型放入 2.3.0 上的 TensorFlow Serving 中,完全没有问题。

【讨论】:

以上是关于你可以在同一个 tensorflow/serving 二进制文件中提供来自不同 tensorflow 版本的模型吗?的主要内容,如果未能解决你的问题,请参考以下文章

你可以在同一个查询中使用 NOT IN 和 NOT EXISTS 吗?

为啥你可以在 for 循环中循环一个隐式元组,但在 Python 中却不能?

你真的可以用 Django 扩大规模吗……鉴于你只能使用一个数据库? (在 models.py 和 settings.py 中)

你可以在 gitlab 管道中存储一个值,以便以后的管道可以访问它吗?

text 当你需要在你的mac上创建一个android分区,这样你就可以做dev

你可以在 Mongo 中为 $addToSet 指定一个键吗?