【问题标题】:How to keep TensorFlow open between inferences in server如何在服务器中的推理之间保持 TensorFlow 开放
【发布时间】:2023-03-09 00:15:01
【问题描述】:

我们正在尝试在服务器上使用 TensorFlow (TF) 来推断图像。

android app将jpeg图片发送到我的机器,php api执行我的android inference(python)脚本并返回分数,大约需要6s,但是我们意识到加载TF需要很长时间,但是一个进行推理的时间很短,例如一个请求占用 10% 的资源,另一个占用 10% 的资源,因此它只有 20% 只用于同时进行两个推理,以及两个 TF 模型。

我们只想在后台加载一个 TF 实例:

  1. 设备发送 jpeg,并将其传递给 TF。
  2. B设备发送jpeg,传给TF。
  3. TF 取第一个 A,第二个 B,并依次进行推理。
  4. 返回分数。

在同一时刻,服务器只加载了 1 个 TF 实例。

我们在做什么:

  1. 设备发送 jpeg,加载 TF 实例,进行推理并将其传递给 TF。
  2. B 设备发送 jpeg,加载 TF 实例,进行推理并将其传递给 TF。
  3. 在同一时刻,服务器加载了 n 个实例,在本例中为 2 个 TensorFlow,而不是只有一个。

在 php 中调用 TensorFlow api.php

shell_exec("python3 myinferece.py image=image_path")

以及 TF 推理: inference.py

with tf.Session(graph=graph) as sess:
scores = sess.run(our_params)

最终代码部署在aws中。

【问题讨论】:

    标签: php android python tensorflow server


    【解决方案1】:

    要完成保持 TensorFlow 运行并接受多个推理请求的任务,您将需要某种形式的进程间通信。

    例如,您可以让 TF Python 程序通过管道等待新的输入,而 PHP 程序则在每次有新请求进入时通过管道发送这些值。

    为每种类型的进程间通信(管道、套接字)提供一个完整的例子感觉超出了这个问题的范围,但这应该足以让你开始。

    【讨论】:

    • 非常感谢您的努力,您给了我们一个好主意。如果您手头有一些源代码或示例,那就太好了!
    • @BigPoppa 如果我给了你一个好主意,也许接受我的回答?
    • 是的,Ofc,但我们是根据你的套接字想法制作的,我们有快速的推理时间,但我想知道你要说什么
    猜你喜欢
    • 2012-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-19
    • 1970-01-01
    • 1970-01-01
    • 2011-03-05
    • 1970-01-01
    相关资源
    最近更新 更多