Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

gpu下rec出问题 #61

Open
xlg-go opened this issue Jul 27, 2023 · 24 comments
Open

gpu下rec出问题 #61

xlg-go opened this issue Jul 27, 2023 · 24 comments

Comments

@xlg-go
Copy link

xlg-go commented Jul 27, 2023

大佬您好,最近用您mast分支代码,
paddle版本是2.5.0,
cuda 11.8.0,cudnn 8.6,trt8.5,
rec结果不对,
不知道怎么回事,您有空帮忙看下?
PaddleOcrRecognizerResult { Text = Y08&01728308, Score = 0.27904937 }
Y08&01728308 不知道是什么,反正正确的结果应该是 15

gpu和trt加速,结果都不对,
只有mkldnn下正常。

@sdcb
Copy link
Owner

sdcb commented Jul 31, 2023

请用nuget包试试,master上是最新版

@xlg-go
Copy link
Author

xlg-go commented Jul 31, 2023

请用nuget包试试,master上是最新版

试了

image image

@sdcb
Copy link
Owner

sdcb commented Aug 1, 2023

需要看看你的代码和图片

@xlg-go
Copy link
Author

xlg-go commented Aug 1, 2023

需要看看你的代码和图片

首先再次感谢大佬,百忙之中抽空。

  1. 环境:
    ubuntu 20.04,
    paddle 2.5.1 或者 2.5.0 或者 develop,
    cuad12.0.1-cudnn8.9.1-trt8.6.1 或者 cuda11.8.0-cudnn8.6-trt8.5,
    paddleSharp 是您master分支,
    全程是在docker容器中运行。

    倘若将paddleSharp版本换成nuget上的最新版(v2.6.05),就会报如下错误:

image
  1. c# 代码结构如下图:
image
  1. 以下是识别打印的日志:
    rlt 既是识别结果,原本TestImgs文件夹下有多张图片,由于github限制,故只留了一张。
image
  1. 以下是代码zip包:
    ConsoleApp1.zip

@sdcb
Copy link
Owner

sdcb commented Aug 3, 2023

在Linux上执行的话,你需要卸载Sdcb.PaddleInference.runtime.win64.mkl这个包,同时我也想看看你的dockerfile是怎么写的?

@xlg-go
Copy link
Author

xlg-go commented Aug 3, 2023

在Linux上执行的话,你需要卸载Sdcb.PaddleInference.runtime.win64.mkl这个包,同时我也想看看你的dockerfile是怎么写的?

我是用vs studio发布的,如下图:
image

去掉Sdcb.PaddleInference.runtime.win64.mkl,也不行哦!

下面是我的dockerfile:
dockerfile-ubuntu2004-cuda-cudnn-trt-cvsharp-pd-dotnetruntime.txt

ldd libpaddle_inference_c.so 和 ldd libOpenCvSharpExtern.so,都不缺少依赖。

基于官方镜像 paddlepaddle/paddle:2.5.1-gpu-cuda12.0-cudnn8.9-trt8.6,也是不行的!

当然,如果是 paddle 2.4,在 ubuntu2004-cuda11.8.0-cudnn8.6.0-trt8.5.1-cvsharp4.7.0-pd2.4.2-dotnetruntime6.0.14 环境下,就没问题,运行的很好。很棒!!!

我估计就是到 paddle 2.5,是不是有什么新特性啥的。最后,感谢大佬,万分感谢,社区有您,丰富多彩!!!

@sdcb
Copy link
Owner

sdcb commented Aug 4, 2023

呃,我重新看了一下,我说错了,用linux你并不需要卸载Sdcb.PaddleInference.runtime.win64.mkl

@sdcb
Copy link
Owner

sdcb commented Aug 4, 2023

我看到了你的dockerfile,写得非常好,其实2.4和2.5在使用GPU模式下有一点区别,见这里:
这是2.5的:

public static extern void PD_ConfigEnableUseGpu(IntPtr pd_config, ulong memory_pool_init_size_mb, int device_id, PD_PrecisionType precision_mode);

这是2.4的:

public static extern void PD_ConfigEnableUseGpu(IntPtr pd_config, ulong memory_pool_init_size_mb, int device_id);

可见2.5相比2.4的C API多了一个参数,因此使用2.4的Sdcb.PaddleInference必须配套2.4的动态库,2.5的也必需相应配套,会不会是跟这个有关?

@xlg-go
Copy link
Author

xlg-go commented Aug 4, 2023

您master分支就是配套 paddle 2.5的 libpaddle_inference_c.so 吧?我是用您master分支生成的dll,然后配套2.5的libpaddle_inference_c.so

还有就是,精度是Float32的,和您这里默认的是一致的:
image

最后,感谢大佬夸奖~~~哈哈!!!

@sdcb
Copy link
Owner

sdcb commented Aug 4, 2023

对,master分支对应的是2.5版本,新加了这一参数,如果它与配套运行的GPU版本号不一致,则肯定会有问题,你的问题算得到解决了吗?

@xlg-go
Copy link
Author

xlg-go commented Aug 7, 2023

对,master分支对应的是2.5版本,新加了这一参数,如果它与配套运行的GPU版本号不一致,则肯定会有问题,你的问题算得到解决了吗?

算是没解决吧~~~~~
cuda,cudnn,trt版本严格对标paddle官方的,问题依旧;
就连用官方的镜像,依旧是有问题的;
不知道怎么解决了,反正现在用 paddle 2.4.2,配合您的2.6.05版本,也能用,现就这样吧。
image

@xlg-go
Copy link
Author

xlg-go commented Aug 7, 2023

对,master分支对应的是2.5版本,新加了这一参数,如果它与配套运行的GPU版本号不一致,则肯定会有问题,你的问题算得到解决了吗?

对了,您说的GPU版本号是什么意思?这是什么?这还认GPU吗?

@sdcb
Copy link
Owner

sdcb commented Aug 9, 2023

看到了,你是使用的这个版本的包对吧:paddlepaddle/paddle:2.5.1-gpu-cuda12.0-cudnn8.9-trt8.6
基于这个包,你使用这个版本:2.6.0.6-preview.8能不能用呢?

@xlg-go
Copy link
Author

xlg-go commented Aug 31, 2023

大佬,有没有考虑基于c++ lib?而不是c lib?感觉还是c lib底层有问题,当然这都是我的猜测哈!

paddlesharp是您的master最新代码。当然即使是用您nuget包Sdcb.PaddleOCR 2.7.0,也是如此。
环境是 ubuntu2204-cuda12.0.0-cudnn8.9.1-trt8.6.1-cvsharp4.7.0-pd2.5.1-dotnetruntime6.0.14

  • 这个是mkldn下, 模型的输出,预测结果是对的:
image
  • 这个是gpu下,模型的输出,预测结果是错的:
image

@sdcb
Copy link
Owner

sdcb commented Sep 1, 2023

你的问题可以持续关注,只是C++的lib很能直接被C#调用,必须要走C

@sdcb
Copy link
Owner

sdcb commented Sep 1, 2023

会不会是cuda12兼容不佳?要不要换成cuda11.8或者10.2试试?你是什么显卡?

@xlg-go
Copy link
Author

xlg-go commented Sep 1, 2023

会不会是cuda12兼容不佳?要不要换成cuda11.8或者10.2试试?你是什么显卡?

我还怀疑是不是2.5.1版本的paddle,它是用gcc12.2编译的有关?但我用cuda11.8和2.5.1的环境,也是不行的。当然gcc8.2编译的2.5.1也同样不行!
综上,我怀疑可能是和底层c lib有关。毕竟最近用飞将,确实有很多问题,其中不乏一些都是官方的bug!兼容性还是不如pytorch这些!

我在2080ti,3090这些卡,都是不行的!

@xlg-go
Copy link
Author

xlg-go commented Sep 1, 2023

你的问题可以持续关注,只是C++的lib很能直接被C#调用,必须要走C

我有关注到,Python的包,里面用的好像就是c++ lib吧?毕竟Python用的人多,所以感觉会不会c++方面bug是不是少一点!愚见!!!

@sdcb
Copy link
Owner

sdcb commented Sep 5, 2023

会不会是cuda12兼容不佳?要不要换成cuda11.8或者10.2试试?你是什么显卡?

我还怀疑是不是2.5.1版本的paddle,它是用gcc12.2编译的有关?但我用cuda11.8和2.5.1的环境,也是不行的。当然gcc8.2编译的2.5.1也同样不行! 综上,我怀疑可能是和底层c lib有关。毕竟最近用飞将,确实有很多问题,其中不乏一些都是官方的bug!兼容性还是不如pytorch这些!

我在2080ti,3090这些卡,都是不行的!

Linux上没试过,但Windows上3080TI用GPU是没问题的

@xlg-go
Copy link
Author

xlg-go commented Sep 6, 2023

会不会是cuda12兼容不佳?要不要换成cuda11.8或者10.2试试?你是什么显卡?

我还怀疑是不是2.5.1版本的paddle,它是用gcc12.2编译的有关?但我用cuda11.8和2.5.1的环境,也是不行的。当然gcc8.2编译的2.5.1也同样不行! 综上,我怀疑可能是和底层c lib有关。毕竟最近用飞将,确实有很多问题,其中不乏一些都是官方的bug!兼容性还是不如pytorch这些!

我在2080ti,3090这些卡,都是不行的!

Linux上没试过,但Windows上3080TI用GPU是没问题的

感觉对Windows友好一些,我再想想办法

@BigerPatax
Copy link

兄弟们 有结果吗 我这边是用gpu和trt得不到结果或者乱码

@xlg-go
Copy link
Author

xlg-go commented Jan 5, 2024

兄弟们 有结果吗 我这边是用gpu和trt得不到结果或者乱码

近期比较忙,paddle只是后备方案,主选还是pytorch转onnx转trt。
近期又有一个新方案,基于paddle c++版本,外面再包一层c++,貌似没什么问题,后期有时间了再测试一下。

@BigerPatax
Copy link

兄弟们 有结果吗 我这边是用gpu和trt得不到结果或者乱码

近期比较忙,paddle只是后备方案,主选还是pytorch转onnx转trt。 近期又有一个新方案,基于paddle c++版本,外面再包一层c++,貌似没什么问题,后期有时间了再测试一下。

我这边用了openvino C#版的部署 CPU推理效果还可以 文字框不多的基本都在100ms以内

@xlg-go
Copy link
Author

xlg-go commented Jan 5, 2024

兄弟们 有结果吗 我这边是用gpu和trt得不到结果或者乱码

近期比较忙,paddle只是后备方案,主选还是pytorch转onnx转trt。 近期又有一个新方案,基于paddle c++版本,外面再包一层c++,貌似没什么问题,后期有时间了再测试一下。

我这边用了openvino C#版的部署 CPU推理效果还可以 文字框不多的基本都在100ms以内

gpu总归是个问题,我严重怀疑是paddle本身的问题。毕竟是百度

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants