在pytorch环境下进行深度学习,在没有其他后台的情况下,cpu的占用率在50%左右,gpu只有5%左右,但cuda的使用率能达到70%。此时的速度很慢,数据集大概700张图片左右,一个epoch就需要将近4分钟。
这种情况是正常的吗?还是说是没有设置好?
另外跑了400个epoch后,loss保持在0.01左右,这个loss怎么样?
ps:笔记本的配置是R7-4800H+RTX2060(6GB),环境为py3.9,pytorch1.8.1,cuda11.1
在pytorch环境下进行深度学习,在没有其他后台的情况下,cpu的占用率在50%左右,gpu只有5%左右,但cuda的使用率能达到70%。此时的速度很慢,数据集大概700张图片左右,一个epoch就需要将近4分钟。
简单来说,gpu的利用率是指平均利用率而不是瞬时。所以你这个是显卡有调用,但是由于显卡计算速度快,而数据读到显卡里面慢的问题。也就是显卡计算完毕之后是在等待cpu指令然后内存给数据,他是空闲状态才导致利用率低的。所以你这个目前瓶颈是在IO这里,看情况应该是内存不够大,导致没法一次性加载多个batch数据等待GPU计算,导致GPU计算完毕之后是空闲状态,这种情况只能加内存,笔记本双通道如果都满了的话就没法子了,也不建议一次换16*2的内存(土豪请无视)。你可以将num worker设置的再大一些看下情况。
另外,你这个模型本身应该也是挺大的吧,700张图像4分钟还算可以接受的范围啊。
最后,笔记本本来就不适合训练,只适合学习的,偶尔跑跑还行,要想训练出结果,还得是台式机或者服务器,毕竟显卡对比桌面GPU性能啥的基本上都给你砍了一半左右