3

在训练深度学习模型时,我发现如果我将训练和验证(测试)批量大小设置为相同,例如 32、64、...、512,GPU 并没有得到充分利用。

然后我检查了 NVIDIA Titan X 规格:

  1. NVIDIA CUDA® 内核:3584
  2. 内存:12GB GDDR5X

为了减少 CNN 模型的测试时间,我想尽可能多地增加一个批次中的样本数量。我试过了:

  • 将每批次的样本数设置为 3584,cuda out of memory 错误。
  • 将每批次的样本数设置为 2048,cuda out of memory 错误。
  • 将每批次的样本数设置为 1024,有效。但我不确定 GPU 是否被充分利用。

问题:

如何轻松选择每批次的样本数量以充分利用 GPU 进行深度模型前向运算?

4

1 回答 1

3

用于watch nvidia-smi检查您的进程正在使用多少 GPU 内存。

供参考:

来自 Nitish Shirish Keskar、Dheevatsa Mudigere、Jorge Nocedal、Mikhail Smelyanskiy、Ping Tak Peter Tang。关于深度学习的大批量训练:泛化差距和尖锐最小值。 https://arxiv.org/abs/1609.04836

随机梯度下降法及其变体是许多深度学习任务的首选算法。这些方法在小批量状态下运行,其中对一部分训练数据(通常是 32--512 个数据点)进行采样以计算梯度的近似值。在实践中已经观察到,当使用更大的批次时,模型的质量会显着下降,这是通过其泛化能力来衡量的。 已经有人尝试调查大批量方案中这种泛化下降的原因,但这种现象的确切答案是迄今为止未知的。在本文中,我们提供了充足的数值证据来支持这样的观点,即大批量方法倾向于收敛到训练和测试函数的急剧最小化 - 并且急剧的最小值导致较差的泛化。相比之下,小批量方法始终收敛到平坦的最小化器,我们的实验支持一个普遍持有的观点,即这是由于梯度估计中的固有噪声。我们还讨论了几种有助于大批量方法消除泛化差距的经验策略,并以一组未来的研究思路和开放性问题作为结论。

[…]

缺乏泛化能力是由于大批量方法倾向于收敛到训练函数的急剧最小化。这些最小化器的特点是在 $\nabla^2 f(x)$ 中具有较大的正特征值,并且往往泛化能力较差。相比之下,小批量方法收敛到以 $\nabla^2 f(x)$ 的小正特征值为特征的平面最小化器。我们观察到,深度神经网络的损失函数景观是这样的,即大批量方法几乎总是被具有尖锐最小值的区域所吸引,并且与小批量方法不同,它们无法逃脱这些最小值的盆地。

[…]

在此处输入图像描述

于 2016-10-01T16:12:34.340 回答