OpenVINO在运行多个推理引擎时无法获得最佳性能

时间:2019-03-28 04:38:22

标签: python-multithreading openvino

我正在运行多个python进程(在本例中为4个,使用多处理模块)来进行人员检测(使用ssd mobilenet模型),每个进程都有其自己的OpenVINO推理引擎。每个过程的FPS都非常低(不超过10)。我怀疑CPU没有得到最佳利用,因为每个引擎产生的线程数量很多,这增加了开销,也增加了跨进程共享CPU。
同样对于单进程,我将OMP_NUM_THREADS设置为4时达到60fps。

My CPU details are:-
2 Sockets 
4 cores each socket 
1 thread each core 
Total - 8 CPUs

那会是

  1. 在这种情况下OMP_NUM_THREADS的最佳值?
  2. 如何避免在每个进程之间共享CPU?

目前,我正在使用OMP_NUM_THREADS和KMP_AFFINITY变量,但是只是在设置值时进行了跟踪操作。关于如何设置的任何细节将非常有帮助。谢谢

2 个答案:

答案 0 :(得分:0)

在进行多个网络推断的情况下,您可以尝试将OMP_WAIT_POLICY设置为PASSIVE

顺便说一句,OpenVINO 2019R1从OpenMP移到了TBB。在深度学习网络管道的情况下,它可能会提供更好的效率。

答案 1 :(得分:0)

如果所有进程都使用相同的模型,请考虑使用OV多流推理。使用此功能,您可以加载单个网络,然后创建多个推断请求。使用它可以提高CPU利用率(与在多个内核上运行一个推断请求相比),从而提高吞吐量。

要了解如何使用多流推理,请查看inference_engine / samples / python_samples / benchmark_app / benchmark示例

同样,您可以使用基准样本进行网格搜索以找到最佳配置(流数,批处理大小)。