pytorch 在GPU上运行多个进程时出现内存问题

i1icjdpr  于 2022-12-04  发布在  其他
关注(0)|答案(1)|浏览(446)

此问题可与my other question相关查看。
我尝试并行运行多个机器学习进程(使用bash)。这些进程是使用PyTorch编写的。在运行了一定数量的并发程序(在我的例子中是10个)之后,我得到了以下错误:

RuntimeError: Unable to find a valid cuDNN algorithm to run convolution

如所提到的in this answer
...这可能是因为达到了VRAM内存限制(从错误消息来看,这相当不直观)。
对于我的PyTorch模型训练案例,减少批量大小是有帮助的。您可以尝试这样做,或者减少模型大小以消耗更少的VRAM。
我尝试了提到的here解决方案,以强制每个进程的GPU内存使用限制,但这个问题仍然存在。
如果只有一个进程或进程数较少,则不会出现此问题。由于在一个时刻只有一个上下文运行,为什么会导致内存问题?
这个问题发生在有/没有MPS的情况下。我认为它可能发生在MPS,但不是否则,因为MPS可能并行运行多个流程。

5anewei6

5anewei61#

既然在一个时刻只有一个上下文运行,为什么这会导致内存问题?
上下文切换不会将GPU“设备”内存(即DRAM)的内容转储到其他位置。如果您用完了此设备内存,上下文切换也不会缓解这种情况。
如果您运行多个进程,每个进程使用的内存将增加(就像在CPU空间中一样),GPU上下文切换(或MPS或时间片)不会以任何方式减轻这种情况。
如果使用GPU运行足够多的进程,最终会耗尽资源,这是完全可以预料的。GPU上下文切换、MPS或时间分片都不会以任何方式影响每个进程的内存利用率。

相关问题