【问题标题】:OpenVINO unable to get optimum performance while running multiple inference enginesOpenVINO 在运行多个推理引擎时无法获得最佳性能
【发布时间】:2019-03-28 04:38:22
【问题描述】:

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

【问题讨论】:

    标签: python-multithreading openvino


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-05-17
        • 1970-01-01
        • 1970-01-01
        • 2016-04-14
        • 2021-11-26
        • 1970-01-01
        相关资源
        最近更新 更多