在没有GPU机器时,普通的多核CPU,做ocr预测某个长PDF时,默认只使用一个核,有点慢, 已有的资源没用好。
这样设置:
from paddleocr import PaddleOCR
ocr_model = PaddleOCR(use_angle_cls=True, lang="ch", enable_mkldnn=True, cpu_threads=8)
而不是设置 use_mp和total_process_num。 这两个参数 在调用 tools/infer/predict_system.py时,会启动多进程,把需要处理的一串文件 分割成多个任务(image_file_list[args.process_id::args.total_process_num]),分别用total_process_num个进程处理。
注意后两个参数,会先判断enable_mkldnn, 为true才使用后面的cpu_threads
需要在实例化PaddleOCR时就设置好,不能:
ocr_model = PaddleOCR(use_angle_cls=True, lang="ch")
再在后面设置
ocr_model.args.enable_mkldnn=True
ocr_model.args.cpu_threads=4
enable_mkldnn=True后,接下来会走如下代码。
config.set_cpu_math_library_num_threads(args.cpu_threads)
则在后面调用C的部分计算时,能用到CPU的多核 加速计算。
另个,这个参数只能用于预测流程。训练流程用不了。在paddleocr里是这样。
虽然 看到一些mkldnn的介绍,在训练和预测流程中都能使用。另外加速的部分也可能只是所有计算中的一部分,不是最耗时的操作,那可能也看不到效果。
问了一下大模型:(参考)
enable_mkldnn这个参数,为什么只能在预测流程中使用,训练流程中不起作用?
参数"enable_mkldnn"是用于开启MKL-DNN(Math Kernel Library-DNN)加速的选项。MKL-DNN是一个开源的库,用于优化深度学习推理过程中的计算性能。
在预测流程中,我们仅需要执行模型的推理过程,而不需要进行梯度计算和参数更新,因此可以使用MKL-DNN来加速推理过程,提高预测速度和效率。
然而,在训练流程中,我们需要进行大量的反向传播和梯度更新,以优化模型的参数。MKL-DNN并不能提供在训练过程中所需的计算优化,因此"enable_mkldnn"参数在训练流程中无法起到作用。
总结来说,"enable_mkldnn"参数只能在预测流程中使用,因为它仅适用于优化推理过程的计算性能,而在训练过程中需要更复杂的计算操作,无法通过MKL-DNN进行加速。
------------------------------
看到一张图 有点意思:

你像哪种? 如果你实际月薪2k,心里想的是月薪5w的事,将来你有机会成为月薪5w的人。
如果月薪1w的人想着月薪1w的事:凭运气得到的东西会凭实力还回去。有点高追求, 想点有意义的事吧!
在没有GPU的情况下,使用PaddleOCR进行OCR预测时,可以通过设置`enable_mkldnn=True`和`cpu_threads`来利用多核CPU加速。MKL-DNN主要用于优化推理过程,提高预测效率,但在训练流程中不适用,因为训练涉及复杂的反向传播和梯度更新。
4163

被折叠的 条评论
为什么被折叠?



