0

我正在运行多个 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 变量,但只是在设置值时进行尝试。有关如何设置的任何细节都会非常有帮助。谢谢

4

2 回答 2

0

如果您对所有流程使用相同的模型,请考虑使用 OV 多流推理。使用它,您可以加载单个网络,然后创建多个推断请求。使用它,您将获得更好的 CPU 利用率(如果与跨多个内核运行一个推断请求相比)并产生更好的吞吐量。

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

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

于 2019-04-17T21:02:53.570 回答
0

在多个网络推断的情况下,您可以尝试设置OMP_WAIT_POLICYPASSIVE.

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

于 2019-04-06T06:52:36.107 回答