Performance 使用CPU vs GPU训练模型-速度vs内存

Performance 使用CPU vs GPU训练模型-速度vs内存,performance,tensorflow,cpu,ram,Performance,Tensorflow,Cpu,Ram,我正在试着训练在那里找到的模型 使用通过以下方式生成的数据集(约340000个带有转录本的小型wav音频样本)。 当我使用GPU进行训练时,训练速度相对较快,但是如果不达到OOM,我无法将批量训练设置为25以上。 当我使用CPU进行训练时,训练速度要慢得多,但我可以轻松地将batch_train_大小设置为250(可能高达700,但尚未尝试)。 我对GPU上的小批量大小限制如何影响训练质量感到困惑,或者提高EPOC的数量是否会抵消这种影响…换句话说,10000 EPOC上有25个样本,500 E

我正在试着训练在那里找到的模型 使用通过以下方式生成的数据集(约340000个带有转录本的小型wav音频样本)。

当我使用GPU进行训练时,训练速度相对较快,但是如果不达到OOM,我无法将批量训练设置为25以上。
当我使用CPU进行训练时,训练速度要慢得多,但我可以轻松地将batch_train_大小设置为250(可能高达700,但尚未尝试)。

我对GPU上的小批量大小限制如何影响训练质量感到困惑,或者提高EPOC的数量是否会抵消这种影响…
换句话说,10000 EPOC上有25个样本,500 EPOC上有500个样本


GPU是GTX 1060,内存为6Gb,CPU是双XEON 2630l v4(1.7Ghz的2*10超线程内核),内存为128Gb。

当批量较大时,可以更好地估计梯度,反之亦然。然而,有点嘈杂的渐变并不总是不好的。它们帮助网络摆脱(可能的)坏的局部极小值,或者换句话说,它给优化器一个机会去探索其他可能更好的局部极小值。据我所知,没有办法知道最佳批量大小。拇指规则是考虑批量大小从32到128,但这又取决于应用程序、使用的GPU数量等。 关于速度,我的猜测是,GPU总是会赢,即使批量大小比GPU小20倍。您可以通过简单地测量处理一定数量的样本(而不是批次)所需的时间来确定时间。如果您观察到批量大小正在影响验证的准确性和收敛性,那么您可能会考虑转移到CPU上


一句话:做上面的测试,但根据我掌握的信息,我想说的是使用GPU培训。

我在一个项目中使用卷积神经网络对批量大小进行了实验,发现了一些有趣的东西:批量大小是一个正则化器

我有一个网络(在本例中是卷积的,但重点是你的情况),我有一个小的和大的数据集

我对网络中的20多个超参数进行了全面的超参数搜索(为此需要几天的培训),包括批量大小、L2正则化、退出、卷积参数、完全连接层中的神经元等。超参数搜索是在保留的验证数据集上进行判断的

当我拥有小数据集(10个数千个样本)时,超参数搜索更倾向于L2和辍学的正则化,这些值在验证集上产生了更好的结果。它还支持较低的批量

当我有一个大数据集(数百万个样本)时,数据集本身就足够大,可以避免过度拟合。超参数搜索有利于较低的L2正则化和辍学率(事实上,它选择了98%的辍学保持概率)。这一次,它倾向于大批量生产

这是出乎意料的,我没有看到太多的文献将批量大小作为正则化参数,但在这些实验中,结果对我来说非常清楚

所以直接说到你的观点,它可能会有一点不同,但是你可以用其他正则化技术来补偿。通过更快的训练和测试更多的超参数组合,你将获得更多的里程数,而不是专注于批量大小,牺牲你进行大量实验的能力。

研究批量大小和学习率的关系。 它们不是降低学习率,而是以相同的因子增加批量大小

在相同数量的训练周期后,它达到了同等的测试精度,但参数更新较少,导致更大的并行性和更短的训练时间


简而言之,如果您使用更大的批量,您可以使用更大的学习率来减少培训时间。

您的问题是什么?批量大小如何影响性能?取决于您谈论的性能:-是的,如果您将性能视为模型的质量(语音识别中的低错误率)。-如果您将性能视为培训所需的时间,则不会。我意识到GPU的速度会快得多,但我想知道小规模的训练批(由6Gb内存限制强加)是否不会影响未来型号的整体质量。