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%,有时还会减少一点。