Pytorch1.7.0在win11+3080ti下报显存不足,但是明明显存是够的

Pytorch1.7.0在win11+3080ti下报显存不足,但是明明显存是够的

img


求帮忙

先看 GPU 有没有问题,尝试分配一个 8G 的大空间:

t = torch.zeros(1024, 1024, 1024)
t = t.cuda()

如果这命令没问题,说明 显卡、cuda 和 pytorch 都没问题。

至于显存不够,我查到的资料解释,pytorch 的 cuda 报错时候的剩余显存并不可靠,倘若同时申请超量的显存,也会出现你这种情况。但是问题是不会改变的,就是你显存不够了。这种情况下,尝试以下方法:

  • 减少 batch_size,这个方法最可能奏效
  • 减少 dataloader 的 worker 数
  • 减少网络参数
  • 不要存储过多的 tensor,尤其是存储整个 epoch 的每次 train step 的结果。如果确实需要,也应在 no_grad 环境中进行
  • 多 gpu 环境下,确保调用的 gpu 设备没错
  • 内存不够,也可能导致 cuda 申请内存失败
  • 换用其他 memory-friendly 的训练方式

总之,尝试调一调后,使用 nvidia-smi 监控一下显存使用,再看看情况吧。

调一下虚拟内存