Почему python tesserocr не использует 4 ядра процессора в AWS Batch?

Я пытаюсь заставить библиотеку python tesserocr работать на 4 ядрах. Согласно документам Tesseract, я понимаю, что он поддерживает до 4 ядер. У меня есть задание tesserocr python3.x, запущенное в AWS Batch (докер-контейнер на основе amazonlinux: последний образ) на экземпляре c4.x2large, который имеет 8 виртуальных ЦП, все они были выделены для пакетного задания во время отправки.

Тесты показывают, что максимальная загрузка процессора составляет 30%, то есть 2,5 vCPU, то есть около 1,25 физических ядер (каждые 2 vCPU являются грубыми 1 физическим ядром).

Я также пробовал OMP_NUM_THREADS=4, OMP_THREAD_LIMIT=4 переменных среды (на основе некоторых онлайн-форумов), но ни одно значение не повлияло на производительность.

Как я могу использовать tesserocr для масштабирования до всех 4 ядер (8 vCPU)?

1 ответ

Потоки Python не 1:1 с vCPU / ядрами.

Если вы посмотрите на спецификации для c4.x2large Например, он говорит, что вы можете запустить до 2 потоков на ядро. И эта машина имеет 8 виртуальных ЦП.

Чтобы потенциально использовать все 8 виртуальных ЦП, вы можете попробовать установить OMP_NUM_THREADS=16, OMP_THREAD_LIMIT=16, Однако, как основной tesserocr Реализация будет иметь огромное влияние на то, насколько хорошо он масштабируется в контексте машины.

Другие вопросы по тегам