训练时GPU显存太小问题、batchsize 的大小跟GPU的显存的关系

参考链接:https://blog.csdn.net/lien0906/article/details/78863118

问题:

tensorflow/core/common_runtime/bfc_allocator.cc:661] Chunk at 0x523cd7d00 of size 2048

tensorflow/core/common_runtime/bfc_allocator.cc:661] Chunk at 0x523cd8500 of size 9437184

tensorflow/core/common_runtime/bfc_allocator.cc:661] Chunk at 0x5245d8500 of size 2048

解决:尝试降低网络的深度和宽度、batch size 的大小 

深度学习中神经网络的显存占用,我们可以得到如下公式:

显存占用 = 模型显存占用 + batch_size × 每个样本的显存占用

  • 时间更宝贵,尽可能使模型变快(减少 flop)

  • 显存占用不是和 batch size 简单成正比,模型自身的参数及其延伸出来的数据也要占据显存

  • batch size 越大,速度未必越快。在你充分利用计算资源的时候,加大 batch size 在速度上的提升很有限

尤其是 batch-size,假定 GPU 处理单元已经充分利用的情况下:

  • 增大 batch size 能增大速度,但是很有限(主要是并行计算的优化)

  • 增大 batch size 能减缓梯度震荡,需要更少的迭代优化次数,收敛的更快,但是每次迭代耗时更长。

  • 增大 batch size 使得一个 epoch 所能进行的优化次数变少,收敛可能变慢,从而需要更多时间才能收敛(比如 batch_size 变成全部样本数目)

你可能感兴趣的:(深度学习)