[PaddlePaddle/PaddleOCR]显存占用远大于模型大小

2024-05-10 656 views
2

请提供下述完整信息以便快速定位问题/Please provide the following information to quickly locate the problem

  • 系统环境/System Environment:
  • 版本号/Version:Paddle: PaddleOCR: 问题相关组件/Related components:
  • 运行指令/Command Code:
  • 完整报错/Complete Error Message:

问题:

  1. 看着下载的模型也只有20M,但显存占用在810M,为什么这么大呢?是一次占用了最大可能的大小?能否设置?
  2. 多路并发的时候,怎么共享权重呢?目前我并发了4个,就得占4个810M的显存,怎么样让4个线程共享同一个模型参数?

回答

8

显存的占用不仅仅取决于模型的大小,还与模型结构、批量大小等有关。

6

显存的占用不仅仅取决于模型的大小,还与模型结构、批量大小等有关。

训练ppocrV4的rec(hgent)和det(teacher)需要多大显存啊,老师,btach size较小的情况下

8

为什么cpu内存占用也会增加好几个G。按理说,模型不是全都加载到GPU了吗?

5

为什么cpu内存占用也会增加好几个G。按理说,模型不是全都加载到GPU了吗?

读取图像是从内存到显存的,跟bs有关

0

就是在不跑的时候,也会占用好几个G. 从模型初始化到就绪,发现一直占着好几G的cpu内存. GPU占810M,CPU内存占2个G左右。从启动以后就一直占着,不跑也一直占着。就算跑,一副图也不会占这么大把?

3

显存的占用不仅仅取决于模型的大小,还与模型结构、批量大小等有关。

训练ppocrV4的rec(hgent)和det(teacher)需要多大显存啊,老师,btach size较小的情况下

微调det db++的情况下batch size 16的情况下 显存大概消耗 18G, 这两个模型可以根据机器情况测一下

2

我可能忘说了,是在推理的情况下,不是在训练的情况下

9

显存的占用不仅仅取决于模型的大小,还与模型结构、批量大小等有关。

训练ppocrV4的rec(hgent)和det(teacher)需要多大显存啊,老师,btach size较小的情况下

微调det db++的情况下batch size 16的情况下 显存大概消耗 18G, 这两个模型可以根据机器情况测一下

谢谢老师

9

我可能忘说了,是在推理的情况下,不是在训练的情况下

我这边也很大,你可以用异步并发的方式,起一个服务调一个卡就可以了

8

就是为什么CPU内存占用会这么多,跑GPU不是应该全都加载到GPU上了吗?是什么导致CPU占用?

9

就是在不跑的时候,也会占用好几个G. 从模型初始化到就绪,发现一直占着好几G的cpu内存. GPU占810M,CPU内存占2个G左右。从启动以后就一直占着,不跑也一直占着。就算跑,一副图也不会占这么大把?

框架的加载,数据的预处理后处理等等都是在CPU阶段执行的,因此会占用比较大的内存,显存占用是正常的,输入图像大小的不同,也会导致推理阶段显存使用的不同。

6

但没有跑推理时,也一直占用着,主要是框架的一些占用吗?

5

框架会自动分配一块显存用于推理,这块显存 / 内存被框架占有了,在未预测时候不会给系统,看起来占用多,但是下次推理会更快。

只有在退出进程后才会完全释放。

5

好,谢谢