tensorflow - 你可以在同一个 tensorflow/serving 二进制文件中提供来自不同 tensorflow 版本的模型吗?
问题描述
假设我有两个保存的模型,一个来自 tensorflow 1.8,另一个来自 tensorflow 2.2。为这两者提供服务可能会遇到兼容性问题。
是否可以在同一个 tensorflow/serving 二进制文件中同时提供这两个服务?
我的直觉表明没有人不能,至少不容易。
我不是 bazel 文件方面的专家,但我认为编译 tensorflow/serving 需要构建和链接 tensorflow 核心库。我不确定是否可以将两个不同版本的 tensorflow 核心库链接在一起。
我想可以在两个不同的发布点1.8.0 和2.2.0中编译 tensorflow/serving 二进制 文件,并分别在您的基础设施中部署这两个二进制文件。然后需要在模型发现层和请求路由层管理哪个模型需要加载到哪个 tensorflow/serving 二进制文件中,以及哪个预测请求应该与哪个 tensorflow/serving 端点对话。
解决方案
我绝对不是 TensorFlow 深层内部运作的专家,所以对此持保留态度。但我认为你想做的事情实际上可能很容易。
我非常近似(并且可能完全不正确)的理解是 TensorFlow API 是一种包装器,它创建一个表示您想要执行的任何计算的图形,并且编译后的图形至少在某些版本之间是交叉兼容的,甚至如果用于创建和操作它的 API 不是。
根据经验,我已经能够将使用 TensorFlow 1.15.x 构建的模型放入 2.3.0 上的 TensorFlow Serving 中,完全没有问题。
推荐阅读
- scala - 在Scala中根据if条件赋值
- discord - 类型错误:cmd.run 不是函数
- javascript - react-cropper URL 太长了
- java - 如何通过蓝牙低功耗从 %8.5f 类型向我的 android 应用程序发送两个字节的浮点数
- spring - Spring RestTemplate:403 异常(有时)
- sql - SQL 查询以查找通过 ID 附加到单个用户的两个值
- reactjs - 反应时重新渲染太多
- java - PanacheMongo persistOrUpdate() DBRef $ref 字段后面必须跟一个 $id 字段
- mysql - SQL - 自定义日期组
- mysql - 在不引用别名但使用 SUM(CASE) 的情况下过滤 MySQL 输出