OpenVINO не может получить оптимальную производительность при работе с несколькими механизмами вывода - PullRequest
0 голосов
/ 28 марта 2019

Я запускаю несколько процессов 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, но просто пытаюсь установить значения. Любая деталь о том, как установить, будет действительно полезна Спасибо

Ответы [ 2 ]

0 голосов
/ 18 апреля 2019

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

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

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

0 голосов
/ 06 апреля 2019

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

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

...