OpenVINO не удается получить оптимальную производительность при запуске нескольких механизмов вывода

#python-multithreading #openvino

#python-многопоточность #openvino

Вопрос:

Я запускаю несколько процессов python (в данном случае 4 с использованием многопроцессорного модуля) для обнаружения человека (используя модель ssd mobilenet), каждый из которых имеет свой собственный механизм вывода OpenVINO. Я получаю очень низкий FPS (не более 10) для каждого процесса. Я подозреваю, что процессоры не используются оптимально, потому что количество потоков, создаваемых каждым движком, велико, что увеличивает накладные расходы, а также совместное использование процессоров между процессами.
Также для одного процесса я увеличиваю скорость до 60 кадров в секунду, установив OMP_NUM_THREADS равным 4.

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

Итак, что было бы

  1. Оптимальное значение для OMP_NUM_THREADS в этом случае?
  2. Как я могу избежать совместного использования процессоров в каждом процессе?

В настоящее время я играю с переменными OMP_NUM_THREADS и KMP_AFFINITY, но просто выполняю поиск по установке значений. Любая подробная информация о том, как установить, была бы действительно полезна. Спасибо

Ответ №1:

В случае вывода по нескольким сетям вы можете попытаться установить OMP_WAIT_POLICY значение PASSIVE .

Кстати, OpenVINO 2019R1 перешел с OpenMP на TBB. Это может повысить эффективность в случае конвейера сетей глубокого обучения.

Ответ №2:

В случае, если вы используете одну и ту же модель для всех процессов, рассмотрите возможность использования многопоточного вывода OV. Используя это, вы можете загрузить одну сеть, а затем создать несколько запросов на вывод. Используя это, вы получите лучшую загрузку процессора (по сравнению с выполнением одного запроса вывода на нескольких ядрах) и, как результат, лучшую пропускную способность.

Чтобы понять, как использовать многопоточный вывод, взгляните на inference_engine /samples /python_samples /benchmark_app /benchmark sample

Также вы можете использовать эталонный образец для выполнения поиска по сетке, чтобы найти оптимальную конфигурацию (количество потоков, размер пакета).