Tensorflow服务:何时使用它而不是Flask服务中的简单推理?

时间:2018-01-30 17:28:19

标签: python tensorflow flask tensorflow-serving

我正在服务使用对象检测API训练的模型。我是这样做的:

  • 按照basic tutorial

  • 中的说明在端口9000上创建Tensorflow服务
  • 使用tensorflow_serving.apis中的predict_pb2创建一个调用此服务的python代码,类似于this

  • 在Flask服务器内调用此代码,以使该服务可用于HTTP

不过,我可以通过以下方式更轻松地完成任务:

如您所见,我本可以跳过Tensorflow服务的使用。

那么,在我的案例中使用Tensorflow服务有什么好的理由吗?如果没有,我应该使用它的情况是什么?

2 个答案:

答案 0 :(得分:3)

我相信与Tensorflow相比,与Flask相比,您更喜欢Tensorflow服务的原因大部分与性能有关:

  • Tensorflow Serving在常规情况下使用gRPC和Protobuf Flask Web服务使用REST和JSON。 JSON依靠HTTP 1.1而 gRPC使用HTTP / 2(there are important differences)。此外, Protobuf是一种二进制格式,用于序列化数据和it is more efficient than JSON
  • 将TensorFlow服务can batch requests用于同一模型,该模型更适合使用硬件(例如GPU)。
  • TensorFlow Serving可以管理模型版本控制

几乎所有内容都在很大程度上取决于您拥有的用例和您的方案,因此考虑利弊和您的需求非常重要。 TensorFlow Serving具有强大的功能,但是也可以将这些功能实现为与Flask配合使用(例如,您可以创建批处理机制)。

答案 1 :(得分:3)

Flask用于处理请求/响应,而Tensorflow服务则专门为在生产中服务于灵活的ML模型而构建。

让我们在某些情况下进行以下操作:

  • 在以下位置为多种产品(多种关系)提供多种模型 同时。
  • 查看哪种型号对您的产品有影响(A / B测试)。
  • 更新生产中的模型权重,就像保存新的一样容易 建模到文件夹。
  • 具有与用C / C ++编写的代码相同的性能。

通过使用Flask向TF服务发送请求,您始终可以免费使用所有这些优势。