Python 为什么在NN培训中GPU的使用率会很低?

Python 为什么在NN培训中GPU的使用率会很低?,python,machine-learning,pytorch,Python,Machine Learning,Pytorch,我正在用pytorch在我的GPU上运行NN训练。 但奇怪的是,GPU的使用率“有限”在50-60%左右。 这是对计算资源的浪费,但我不能把它提高一点 我确信硬件是好的,因为同时运行我的2个进程,或者训练一个简单的NN(例如DCGAN)都可以占用95%或更多的GPU。(这就是它应该的样子) 我的NN包含几个卷积层,它应该使用更多的GPU资源 此外,我想数据集的数据传输速度已经足够快了,因为我在dataloader实例中使用了workers=64,并且我的磁盘工作得很好 我只是对正在发生的事情感到

我正在用pytorch在我的GPU上运行NN训练。 但奇怪的是,GPU的使用率“有限”在50-60%左右。 这是对计算资源的浪费,但我不能把它提高一点

我确信硬件是好的,因为同时运行我的2个进程,或者训练一个简单的NN(例如DCGAN)都可以占用95%或更多的GPU。(这就是它应该的样子) 我的NN包含几个卷积层,它应该使用更多的GPU资源

此外,我想数据集的数据传输速度已经足够快了,因为我在dataloader实例中使用了workers=64,并且我的磁盘工作得很好

我只是对正在发生的事情感到困惑

开发详细信息:

GPU:Nvidia GTX 1080 Ti


操作系统:Ubuntu 64位

我只能猜测,无需进一步研究,但可能是您的网络在层大小方面较小(不是层数),因此培训的每一步都不足以占用所有GPU资源。或者至少数据大小和传输速度(到gpu内存)之间的比率不好,gpu大部分时间处于空闲状态


tl;dr:gpu作业的长度不足以证明内存传输的合理性

您是否增加了批处理大小,但仍然看到相同的使用情况?请尝试使用profiler@UmangGupta刚才我试过了。使用率开始在74%-85%之间浮动,有时会达到90%+。不确定更大的批次是否会停止使用浮动。这不是我期望的解决方案,但仍然很有帮助,谢谢。我的NN包含一个1*1转换层。你认为这就是问题所在吗?因为同时运行2个进程可能会占用95%或更多的GPU。你认为应用类似Dataparallel的数据加载器可以解决这个问题吗?