ppocr WARNING #14310
ppocr WARNING
#14310
Replies: 2 comments 1 reply
-
这个并不影响性能,应该是有三个模型要infer所以跑了三次。 |
Beta Was this translation helpful? Give feedback.
1 reply
-
十分感谢 已搞明白
发自我的iPhone
…------------------ Original ------------------
From: Wang Xin ***@***.***>
Date: Mon,Dec 2,2024 9:12 PM
To: PaddlePaddle/PaddleOCR ***@***.***>
Cc: a1468884069 ***@***.***>, Author ***@***.***>
Subject: Re: [PaddlePaddle/PaddleOCR] ppocr WARNING (Discussion #14310)
根据您的问题描述和提供的背景信息,以下是可能的原因分析以及解决方案:
问题分析
您提到的主要问题是:
PaddleOCR 每次初始化都会输出 ppocr WARNING,检查 GPU 的过程浪费时间。
环境变量已经设置为使用 GPU,但 PaddleOCR 初始化仍然有额外的开销。
从描述来看,以下几点可能是问题的根源:
环境配置问题:CUDA、cuDNN 或 TensorRT 版本可能与 paddlepaddle-gpu 不完全兼容。
PaddleOCR 初始化机制:每次运行时重新加载模型或检查硬件环境。
日志级别:PaddleOCR 的默认日志级别可能输出了额外的警告信息,增加初始化时间。
GPU 设置问题:虽然您明确指定了 GPU,但可能 PaddleOCR 或 PaddlePaddle 在初始化时仍然进行了不必要的环境检查。
解决方案
以下是逐步排查和优化建议:
1. 设置环境变量以避免重复检查
PaddleOCR 和 PaddlePaddle 在初始化时可能检查所有可用的 GPU。如果您的设备只有一块 GPU,可以通过设置以下环境变量来限制 GPU 使用:
export CUDA_VISIBLE_DEVICES=0
这将确保 PaddleOCR 只使用指定的 GPU(编号为 0 的 GPU)。如果您已经设置过该变量,可以进一步检查是否生效:
import os print(os.environ.get("CUDA_VISIBLE_DEVICES")) # 应输出 "0"
2. 调整 PaddleOCR 的初始化逻辑
您提到每次运行都会重新初始化 PaddleOCR 对象。如果多次调用 OCR,可以考虑复用已加载的 PaddleOCR 实例,而不是每次都重新初始化。以下是示例代码:
from paddleocr import PaddleOCR # 初始化 PaddleOCR 对象(只执行一次) ocr = PaddleOCR(use_gpu=True, gpu_mem=500) # 多次调用 OCR 识别 result1 = ocr.ocr('image1.jpg') result2 = ocr.ocr('image2.jpg')
这样可以避免重复加载模型和初始化 GPU,显著减少时间消耗。
3. 降低日志级别
ppocr WARNING 和其他调试信息可能是由于日志级别设置过高导致的。可以通过以下方式隐藏不必要的日志:
import logging logging.getLogger("ppocr").setLevel(logging.ERROR)
如果您使用的是命令行工具,可以通过设置 --show_log=False 禁用日志输出:
python tools/infer/predict_system.py --show_log=False
4. 确保 CUDA、cuDNN、TensorRT 版本兼容
根据提供的信息,您使用的是:
CUDA 12.6
paddlepaddle-gpu==3.0.0b1
paddleocr==2.9.1
需要确认 CUDA、cuDNN 和 PaddlePaddle 版本是否完全兼容。根据 PaddlePaddle 官方兼容性表,paddlepaddle-gpu==3.0.0b1 在 Linux 环境下通常搭配 CUDA 11.8 或 CUDA 12.x。
以下是推荐配置:
CUDA: 11.8 或 12.1(推荐 11.8,社区测试更充分)
cuDNN: 8.6 或更高版本
TensorRT: 8.5 或更高版本
您可以通过以下命令检查 CUDA 和 cuDNN 的版本是否正确:
nvcc --version # 检查 CUDA 版本 cat /usr/include/cudnn_version.h | grep CUDNN_MAJOR -A 2 # 检查 cuDNN 版本
5. 使用 TensorRT 加速并避免卡顿
如果您启用了 TensorRT(use_tensorrt=True),但初始化过程卡住,可能是 TensorRT 的兼容性或模型优化时间问题导致的。可以尝试以下方法:
确保您的 TensorRT 版本与 PaddlePaddle 兼容(推荐 TensorRT 8.5+)。
在 PaddleOCR 初始化时,设置 use_tensorrt=False,以排除 TensorRT 的影响: ocr = PaddleOCR(use_gpu=True, use_tensorrt=False)
如果确实需要 TensorRT 加速,第一次运行可能需要较长时间进行模型优化。优化完成后,后续运行应该会更快。
6. 更新或降级 PaddleOCR 和 paddlepaddle-gpu
如果问题仍然存在,可以尝试降级到更稳定的版本。例如: pip install paddleocr==2.8.1 paddlepaddle-gpu==2.6.1
如果您需要使用最新功能,可以尝试升级到最新的稳定版本。
7. 参考相关讨论和 Issue
根据您提供的相关讨论和 Issue,可以参考以下内容:
PaddleOCR GPU 初始化问题:提到环境兼容性和初始化时间问题。
TensorRT 初始化卡住:可能涉及 TensorRT 的版本问题。
CUDA OOM 问题:可以通过 paddle.device.cuda.empty_cache() 或降低 gpu_mem 参数来缓解显存不足问题。
总结
通过以下步骤,您可以显著优化 PaddleOCR 的运行效率:
设置 CUDA_VISIBLE_DEVICES=0 限制 GPU 使用。
复用 PaddleOCR 对象,避免重复初始化。
降低日志级别,隐藏不必要的 ppocr WARNING。
检查 CUDA、cuDNN、TensorRT 的版本兼容性。
在必要时禁用 TensorRT,或等待模型优化完成。
根据需求选择合适的 PaddleOCR 和 paddlepaddle-gpu 版本。
希望这些建议能帮助您解决问题!如果问题仍然存在,请提供更多日志或错误信息以进一步分析。
Response generated by 🤖 feifei-bot | chatgpt-4o-latest
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you authored the thread.Message ID: ***@***.***>
|
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
每次运行都会初始化PaddleOCR对象 会输出ppocr WARNING 检查三遍我使用的那块GPU很浪费时间 电脑上就只有一块GPU 系统环境也设置了变量为 0 怎么解决该问题 paddleocr 2.9.1 paddlepaddle-gpu 3.0.0b1 CUDA 12.6
Beta Was this translation helpful? Give feedback.
All reactions