深度学习时的gpu和cpu使用率

在pytorch环境下进行深度学习,在没有其他后台的情况下,cpu的占用率在50%左右,gpu只有5%左右,但cuda的使用率能达到70%。此时的速度很慢,数据集大概700张图片左右,一个epoch就需要将近4分钟。

img


这种情况是正常的吗?还是说是没有设置好?
另外跑了400个epoch后,loss保持在0.01左右,这个loss怎么样?
ps:笔记本的配置是R7-4800H+RTX2060(6GB),环境为py3.9,pytorch1.8.1,cuda11.1

简单来说,gpu的利用率是指平均利用率而不是瞬时。所以你这个是显卡有调用,但是由于显卡计算速度快,而数据读到显卡里面慢的问题。也就是显卡计算完毕之后是在等待cpu指令然后内存给数据,他是空闲状态才导致利用率低的。所以你这个目前瓶颈是在IO这里,看情况应该是内存不够大,导致没法一次性加载多个batch数据等待GPU计算,导致GPU计算完毕之后是空闲状态,这种情况只能加内存,笔记本双通道如果都满了的话就没法子了,也不建议一次换16*2的内存(土豪请无视)。你可以将num worker设置的再大一些看下情况。
另外,你这个模型本身应该也是挺大的吧,700张图像4分钟还算可以接受的范围啊。

最后,笔记本本来就不适合训练,只适合学习的,偶尔跑跑还行,要想训练出结果,还得是台式机或者服务器,毕竟显卡对比桌面GPU性能啥的基本上都给你砍了一半左右

参考下面的方法,如果不错还请 点击 "采纳“
这种情况下的GPU利用率低可能是由于PyTorch没有正确地使用CUDA加速。可以在代码中检查是否正确使用了CUDA,例如:

import torch
print(torch.cuda.is_available()) # check if CUDA is available
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")

此外,可以尝试更换CUDA版本以提高利用率。

至于loss值,这很难说是否正常,因为它受到许多因素的影响,例如模型架构、数据预处理、超参数等。但是,保持在0.01左右的loss一般被认为是较低的。

cpu的占用率在50%左右,gpu只有5%左右,但cuda的使用率能达到70%:正常。具体说,不是说 GPU 不够好,相反是 GPU 够了。
数据集大概700张图片左右,一个epoch就需要将近4分钟:有点慢,原因与 CPU、内存(不是现存)、系统都有关系。