Почему 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
Реализация будет иметь огромное влияние на то, насколько хорошо он масштабируется в контексте машины.