PaddleOCR icon indicating copy to clipboard operation
PaddleOCR copied to clipboard

显存占用远大于模型大小

Open charliedream1 opened this issue 10 months ago • 14 comments

请提供下述完整信息以便快速定位问题/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个线程共享同一个模型参数?

charliedream1 avatar Apr 29 '24 03:04 charliedream1

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

UserWangZz avatar Apr 29 '24 08:04 UserWangZz

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

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

zhanghengjiayou avatar Apr 30 '24 05:04 zhanghengjiayou

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

charliedream1 avatar Apr 30 '24 06:04 charliedream1

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

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

zhanghengjiayou avatar Apr 30 '24 06:04 zhanghengjiayou

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

charliedream1 avatar Apr 30 '24 06:04 charliedream1

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

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

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

UserWangZz avatar Apr 30 '24 06:04 UserWangZz

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

charliedream1 avatar Apr 30 '24 06:04 charliedream1

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

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

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

谢谢老师

zhanghengjiayou avatar Apr 30 '24 06:04 zhanghengjiayou

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

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

zhanghengjiayou avatar Apr 30 '24 06:04 zhanghengjiayou

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

charliedream1 avatar Apr 30 '24 06:04 charliedream1

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

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

UserWangZz avatar Apr 30 '24 06:04 UserWangZz

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

charliedream1 avatar Apr 30 '24 06:04 charliedream1

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

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

tink2123 avatar Apr 30 '24 09:04 tink2123

好,谢谢

charliedream1 avatar Apr 30 '24 14:04 charliedream1

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

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

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

svtr rec模型,batch size=1要多大显存

nissansz avatar Jun 01 '24 22:06 nissansz