pytorch跑Unet代码,gpu利用率在0%-20%闪现,主要问题是GPU一直在等cpu处理的数据传输过去。利用top查看cup的利用率也是从0省道100%且显然cup的线程并不多,能处理出的数据也不多。在一般的程序中,除了加载从dataloader中数据和model的运行需要gpu,其余更多的dataset、dataloader、loss的计算和日志的输出很多部分都需要cup的计算。
所以,可以提升的方面包括 从class dataset的优化、dataloader的优化和其他部分代码的优化。当然代码的优化是一个长期的考验代码能力的问题。那么短期的提升在于对dataloader的优化:
1.batchsize调大 提高GPU内存占用率
2.num_works 调到适当值,一般情况下为8、16是比较合适的值。太小就会出现我上述讲道的一些问题。太大的话cpu线程增加会导致gpu的利用率降低。因为模型需要将数据平均分配到几个子线程去进行预处理,分发等数据操作,设高了反而影响效率。(具体原因请参考,分析很全面的一篇文章)
3.pin_memory =True 省掉了将数据从CPU传入到缓存RAM里面,再给传输到GPU上;为True时是直接映射到GPU的相关内存块上,省掉了一点数据传输时间。
pytorch 提高gpu利用率
于 2021-04-08 10:36:11 首次发布
本文讨论了在使用PyTorch运行Unet模型时遇到的GPU利用率低的问题,主要原因是GPU等待CPU传输数据。建议通过增大batch size和调整num_workers来优化dataloader,同时启用pin_memory以减少数据传输时间。此外,还提到对classdataset、dataloader和其他代码部分的优化也是提升性能的关键。
Qwen3-32B-Chat 私有部署镜像 | RTX4090D 24G 显存 CUDA12.4 优化版
本镜像基于 RTX 4090D 24GB 显存 + CUDA 12.4 + 驱动 550.90.07 深度优化,内置完整运行环境与 Qwen3-32B 模型依赖,开箱即用。
您可能感兴趣的与本文相关的镜像
Qwen3-32B-Chat 私有部署镜像 | RTX4090D 24G 显存 CUDA12.4 优化版
Qwen
文本生成
Qwen3
本镜像基于 RTX 4090D 24GB 显存 + CUDA 12.4 + 驱动 550.90.07 深度优化,内置完整运行环境与 Qwen3-32B 模型依赖,开箱即用。

3753

被折叠的 条评论
为什么被折叠?



