如何自动选择批量大小以适应GPU?

时间:2017-07-16 20:02:09

标签: tensorflow out-of-memory deep-learning gpu keras

我正在使用GPU训练深度神经网络。如果我使样本太大,批量太大,或者网络太深,我会出现内存不足错误。在这种情况下,有时可以制作较小的批次并仍然进行培训。

是否可以计算培训所需的GPU大小并确定预先选择的批量大小?

更新

如果我打印网络摘要,它会显示"可训练参数的数量"。我不能从这个值估算出来吗?例如,取这个,乘以批量大小,对于渐变等加倍?

3 个答案:

答案 0 :(得分:4)

PyTorch Lightning 最近添加了一个名为“自动批量大小”的功能,特别是为此!它计算可以放入 GPU 内存的最大批量大小 :)

可以在here找到更多信息。

原始公关:https://github.com/PyTorchLightning/pytorch-lightning/pull/1638

答案 1 :(得分:2)

不,不可能自动执行此操作。因此,如果您希望尽可能多地使用批次,则需要经过大量的试验和错误才能找到合适的尺寸。

Stanford's CNN class提供了一些如何估算内存大小的指导,但所有建议都与CNN有关(不知道你训练的是什么)。

答案 2 :(得分:0)

我认为萨尔瓦多在这里意味着分析计算最合适的批量大小是不可能的,但是,因为所有东西都在ML中,它只是另一个超参数,可以添加到你的网格搜索自动计算。只需评估您的模型的损失或准确度(但是您测量性能),以获得最佳和最稳定(最不可变)的测量,给出几个批量大小,比如一些2的幂,例如64,256,1024等。然后继续使用最好的发现批量大小。请注意,批量大小可能取决于您的模型的体系结构,机器硬件等。例如,如果您将建模从本地PC移动到某个云计算引擎(GCP,AWS,Azure,...),那么批量大小太大了,你的电脑的RAM变得很容易适用于几乎无限的RAM / CPU / GPU(注意成本)。