deeplabv3-plus-pytorch icon indicating copy to clipboard operation
deeplabv3-plus-pytorch copied to clipboard

CPU负载太高了,GPU每次只会有个小尖峰

Open ZJDATY opened this issue 1 year ago • 16 comments

image 如何才能改进,能继续升级优化下代码吗。 cpu是i7,9700.。显卡是泰坦V。目前cpu全程满负载,显卡每次就工作一小会。多线程开到了6线程,参数怎么设置都跑不满GPU,代码需要怎么进行优化呢。来减少CPU的占用。

ZJDATY avatar Apr 15 '23 02:04 ZJDATY

还有一个问题不知道是不是代码bug还是硬件bug。多线程是比较吃内存的,本身机器的内存才16G,所以我虚拟内存就设置的很大,多线程现在开的6,开到7,它第一步batch开始时,加载一会,python就会报错 0x0000000指令引用”0x0000000”内存,该内存不能为written 我看那个时候内存是跑满的,但是虚拟内存里空间还很大,猜测可能是数据加载的太快,导致它没法往虚拟内存里转移数据,所以内存就爆了,python报错。所以有没有途径让它可以占用大内存,但是不要涨的那么快,让他有时间把数据写到虚拟内存里。有一个想法,监控剩余内存,可用很少的时候就加载停一下。

image

ZJDATY avatar Apr 15 '23 02:04 ZJDATY

dataloader那里的数据增强, 作者是用numpy和pil实现的, 估计是在cpu上跑的, 看看能不能改成GPU处理?

NGC13009 avatar Apr 15 '23 08:04 NGC13009

不看3d看cuda

bubbliiiing avatar Apr 17 '23 16:04 bubbliiiing

内存16G应该也不太够 读取的数据也需要放m2固态

bubbliiiing avatar Apr 17 '23 16:04 bubbliiiing

不看3d看cuda

最新版的cuda驱动取消了cuda的专门图表, 把cuda消耗合并到"3D"里了

NGC13009 avatar Apr 19 '23 06:04 NGC13009

大量时间都是cpu在读取图片了,有什么可以缓存图片的方法吗

1920230345 avatar Apr 21 '23 02:04 1920230345

大量时间都是cpu在读取图片了,有什么可以缓存图片的方法吗

@bubbliiiing B导 官方的 yolov8 那个 好像可以把图片预缓存起来 能不能搞一下 用这个deeplab 也这么搞

ZJDATY avatar Apr 23 '23 04:04 ZJDATY

内存16G应该也不太够 读取的数据也需要放m2固态

@bubbliiiing 现在 上了 两个 16G的内存条了 图片都在固态里面,可能固态垃圾吧。 还是全程CPU跑满 ,GPU在看戏。

ZJDATY avatar Apr 23 '23 05:04 ZJDATY

dataloader那里的数据增强, 作者是用numpy和pil实现的, 估计是在cpu上跑的, 看看能不能改成GPU处理?

这里我删了,差不多提高五分之一到4分之一的时间。但还是很慢,是因为语义分割训练就是很慢,还是说因为其他原因呢

xiaozggggg avatar Aug 24 '23 12:08 xiaozggggg

我统计了一下主要花费时间的地方,当我设置fp16混合精度训练的时候,在utils_fit.py文件中scaler.step(optimizer)这里花费的时间很长,当不用混合精度训练的时候,在total_loss += loss.item()这里花费时间很长。 想请问一下大伙,有没有遇到同样的问题。 @bubbliiiing

xiaozggggg avatar Aug 24 '23 12:08 xiaozggggg

很多时间都在计算反向梯度0 0

bubbliiiing avatar Aug 24 '23 16:08 bubbliiiing

我统计了一下主要花费时间的地方,当我设置fp16混合精度训练的时候,在utils_fit.py文件中scaler.step(optimizer)这里花费的时间很长,当不用混合精度训练的时候,在total_loss += loss.item()这里花费时间很长。 想请问一下大伙,有没有遇到同样的问题。 @bubbliiiing

我之前毕设的时候研究了好久怎么训练快点……发现不管咋样这玩意都会卡很久,感觉就是图太大,激活值矩阵太大,算的慢

bubbliiiing avatar Aug 24 '23 16:08 bubbliiiing

dataloader那里的数据增强, 作者是用numpy和pil实现的, 估计是在cpu上跑的, 看看能不能改成GPU处理?

这里我删了,差不多提高五分之一到4分之一的时间。但还是很慢,是因为语义分割训练就是很慢,还是说因为其他原因呢

我受到启发,图片直接在提前预处理好,输入的图就时resize之后的,也没做数据增强,进数据增强的程序直接返回输入的image和label,一个batch,直接从46s降到15s。就是不知道不做数据增强的话,实际效果会损失多少,还有待我的测试。

ZJDATY avatar Aug 26 '23 03:08 ZJDATY

dataloader那里的数据增强, 作者是用numpy和pil实现的, 估计是在cpu上跑的, 看看能不能改成GPU处理?

这里我删了,差不多提高五分之一到4分之一的时间。但还是很慢,是因为语义分割训练就是很慢,还是说因为其他原因呢

我受到启发,图片直接在提前预处理好,输入的图就时resize之后的,也没做数据增强,进数据增强的程序直接返回输入的image和label,一个batch,直接从46s降到15s。就是不知道不做数据增强的话,实际效果会损失多少,还有待我的测试。

输入域和输出域差不多应该没太大问题

bubbliiiing avatar Aug 27 '23 12:08 bubbliiiing

我统计了一下主要花费时间的地方,当我设置fp16混合精度训练的时候,在utils_fit.py文件中scaler.step(optimizer)这里花费的时间很长,当不用混合精度训练的时候,在total_loss += loss.item()这里花费时间很长。 想请问一下大伙,有没有遇到同样的问题。 @bubbliiiing

我想起来一件事情,用更新版本的torch会好一些,甚至torch2都行。

bubbliiiing avatar Aug 27 '23 12:08 bubbliiiing

我统计了一下主要花费时间的地方,当我设置fp16混合精度训练的时候,在utils_fit.py文件中scaler.step(optimizer)这里花费的时间很长,当不用混合精度训练的时候,在total_loss += loss.item()这里花费时间很长。 想请问一下大伙,有没有遇到同样的问题。 @bubbliiiing

我想起来一件事情,用更新版本的torch会好一些,甚至torch2都行。

那我重新把cuda和cudnn都换一下吗

xiaozggggg avatar Aug 28 '23 07:08 xiaozggggg