如何在服务器中的推论之间保持TensorFlow开放

时间:2018-07-28 21:45:57

标签: php android python tensorflow server

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

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

我们只想在后台加载一个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. 在同一时间,服务器已加载TensorFlow的 n个实例(在这种情况下为2个),而不是一个。

用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中。

1 个答案:

答案 0 :(得分:0)

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

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

为每种类型的进程间通信(管道,套接字)提供完整的示例超出了此问题的范围,但这足以让您入门。