PaddlePaddle / Paddle

PArallel Distributed Deep LEarning: Machine Learning Framework from Industrial Practice (『飞桨』核心框架,深度学习&机器学习高性能单机、分布式训练和跨平台部署)
http://www.paddlepaddle.org/
Apache License 2.0
22.28k stars 5.61k forks source link

同CPU下,paddle-gpu在use_gpu=False时,无法使用多线程 #69388

Open PureWaterCatt opened 1 week ago

PureWaterCatt commented 1 week ago

请提出你的问题 Please ask your question

问题: 我在没有gpu驱动的docker环境下,以及有gpu的环境,使用相同的代码运行,前者可以开启多线程qps为10.2/s,而后者则是单线程qps只有1.1/s

代码

import io

import numpy as np
from PIL import Image
from fastapi import File, UploadFile
from paddleocr import PaddleOCR

# Paddleocr目前支持的多语言语种可以通过修改lang参数进行切换
# 例如`ch`, `en`, `fr`, `german`, `korean`, `japan`
ocr = PaddleOCR(use_angle_cls=True, lang="ch", enable_mkldnn=True,
                cpu_threads=16, use_gpu=False)  # need to run only once to download and load model into memory

async def single(file: UploadFile = File(...)):
    # 读取文件的二进制内容z`
    image_bytes = await file.read()

    # 将字节流转换为PIL图像
    image = Image.open(io.BytesIO(image_bytes))

    # 将PIL图像转换为numpy数组
    image_np = np.array(image)
    result = ocr.ocr(image_np, cls=True)
    for idx in range(len(result)):
        res = result[idx]
        if res is None or len(res) != 1:
            return '未识别'
        else:
            return res
zhwesky2010 commented 1 week ago

@PureWaterCatt 你好,在有GPU的环境下,可以查看下显存的变化,看GPU是否真的没有生效

PureWaterCatt commented 1 week ago

@PureWaterCatt 你好,在有GPU的环境下,可以查看下显存的变化,看GPU是否真的没有生效

我的描述有些问题,后者是在有GPU的环境禁止GPU,结果只能单线程运行,而只有CPU的环境同样的代码可以多线程