我正在运行多个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
那会是
目前,我正在使用OMP_NUM_THREADS和KMP_AFFINITY变量,但是只是在设置值时进行了跟踪操作。关于如何设置的任何细节将非常有帮助。谢谢
答案 0 :(得分:0)
在进行多个网络推断的情况下,您可以尝试将OMP_WAIT_POLICY
设置为PASSIVE
。
顺便说一句,OpenVINO 2019R1从OpenMP移到了TBB。在深度学习网络管道的情况下,它可能会提供更好的效率。
答案 1 :(得分:0)
如果所有进程都使用相同的模型,请考虑使用OV多流推理。使用此功能,您可以加载单个网络,然后创建多个推断请求。使用它可以提高CPU利用率(与在多个内核上运行一个推断请求相比),从而提高吞吐量。
要了解如何使用多流推理,请查看inference_engine / samples / python_samples / benchmark_app / benchmark示例
同样,您可以使用基准样本进行网格搜索以找到最佳配置(流数,批处理大小)。