【问题标题】:How to select batch size automatically to fit GPU?如何自动选择批量大小以适应 GPU?
【发布时间】:2017-12-21 07:35:34
【问题描述】:

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

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

更新

如果我打印网络摘要,它会显示“可训练参数”的数量。我不能从这个值估计吗?例如,拿这个,乘以批量大小,加倍梯度等?

【问题讨论】:

  • 从萨尔瓦多给出的链接中,您还需要计算保存图像及其转换的中间内存。一共是3*4*(中间内存*num_image+可训练参数)/1024**3GB
  • 理想情况下,我认为应该是可能的。每个层都应该通过接受输入大小以及是否在训练模式和模型类应该只通过调用其各个层占用的内存来计算总内存来提供它将占用的内存量。只需要这些框架(pytorch/.tensorflow)来添加这个功能。

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


【解决方案1】:

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

更多信息可以在here找到。

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 2017-09-27
        • 2021-05-31
        • 2020-08-23
        • 1970-01-01
        • 1970-01-01
        • 2014-04-18
        • 1970-01-01
        • 2020-03-17
        • 1970-01-01
        相关资源
        最近更新 更多