【问题标题】:Why python tesserocr not using 4 CPU cores on AWS Batch?为什么 python tesserocr 不在 AWS Batch 上使用 4 个 CPU 内核?
【发布时间】:2019-05-17 07:23:48
【问题描述】:

我正在尝试让 tesserocr python 库在 4 个内核上运行。根据 tesseract 文档,我知道它最多支持 4 个内核。我在具有 8 个 vCPU 的 c4.x2large 实例上的 AWS Batch(基于 amazonlinux:latest 映像的 docker 容器)中运行了一个 tesserocr python3.x 作业,所有这些作业在提交时都分配给了批处理作业。

基准测试显示 CPU 最高为 30%,即 2.5 个 vCPU,即大约 1.25 个物理内核(每个 2 个 vCPU 大约是 1 个物理内核)。

我也尝试过 OMP_NUM_THREADS=4、OMP_THREAD_LIMIT=4 环境变量(基于一些在线论坛),但没有任何值对性能有任何影响。

如何通过 tesserocr 扩展到所有 4 个内核(8 个 vCPU)?

【问题讨论】:

    标签: docker amazon-ecs python-tesseract aws-batch


    【解决方案1】:

    Python 线程与 vCPU/内核不是 1:1。

    如果您查看 c4.x2large 实例的规范,它会说每个内核最多可以运行 2 个线程。那台机器有 8 个 vCPU。

    可能使用所有 8 个 vCPU,您可以尝试设置 OMP_NUM_THREADS=16OMP_THREAD_LIMIT=16。然而,底层tesserocr 的实现方式将对它在机器环境中的扩展程度产生巨大影响。

    【讨论】:

    • 澄清我的问题:似乎那些环境变量没有任何影响。我尝试了 12、16、24 - 运行时或 CPU 利用率没有变化。这些设置是否适用于 Amazon Linux docker 容器?这些可能需要一些特殊的 tesseract 构建/设置吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-10
    • 1970-01-01
    • 1970-01-01
    • 2023-02-10
    • 1970-01-01
    • 2016-02-27
    • 2023-04-03
    相关资源
    最近更新 更多