CUDA内存不足错误,无法减少批量大小

我想在我的 GPU 设备上运行一些实验,但出现此错误:

运行时错误:CUDA 内存不足。尝试分配 3.63 GiB(GPU 0;15.90 GiB 总容量;13.65 GiB 已分配;1.57 GiB 空闲;PyTorch 总共保留 13.68 GiB)

我在这里阅读了可能的解决方案,常见的解决方案是:

这是因为小批量数据不适合 GPU 内存。只需减少批量大小。当我为 cifar10 数据集设置批量大小 = 256 时,我遇到了同样的错误;然后我设置batch size=128,就解决了。

但就我而言,这是一个研究项目,我想拥有特定的超参数,我无法减少任何东西,例如批量大小。

有没有人对此有解决方案?

回答

Shai 的回答是合适的,但我想提供另一种解决方案。最近,我一直在观察 Nvidia AMP - 自动混合精度的惊人结果,这是 fp16 与 fp32 优势的完美结合。一个积极的副作用是它也显着加快了训练速度。

在 tensorflow 中只有一行代码: opt = tf.train.experimental.enable_mixed_precision_graph_rewrite(opt)

更多细节在这里

您还可以将 AMP 与 Shai 的解决方案叠加使用。

  • fp16 使用 fp32 的一半内存。使用混合精度时,我通常会看到内存使用量减少 20-40%,有时还会减少一点。

以上是CUDA内存不足错误,无法减少批量大小的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>