如果TensorFlow表示如何处理批量大小"如果有更多内存,可能会有性能提升"

时间:2017-08-07 20:43:28

标签: python performance tensorflow gpu tensorflow-gpu

我尝试在Nvidia K80上为CNN模型增加batch_size时遇到以下错误:

2017-08-07 20:33:38.573318: W tensorflow/core/common_runtime/bfc_allocator.cc:217] Allocator (GPU_0_bfc) ran out of memory trying to allocate 3.04GiB. The caller indicates that this is not a failure, but may mean that there could be performance gains if more memory is available.

我想知道在遇到这种情况时最快的选择是什么:

  • 尽管发出警告,不要做任何事情让模特训练。
  • 按批次缩小批量大小和学习率,但按相同因子进行更多迭代,以便在批量较小和迭代次数较多的情况下提供相同的结果(遵循线性缩放规则正如this paper)中讨论的那样。

1 个答案:

答案 0 :(得分:1)

如果继续进行培训(上面的第一个项目符号),当操作系统交换数据时,您会遇到一些效率损失(颠簸)。选项2是正确的(根据我的经验):减少批量大小以有效利用可用内存,并增加迭代来补偿。

关键训练量是在时期而非迭代中测量的。如果将批量减小2倍,则迭代次数增加2倍,结果几乎相同。