【问题标题】:On single gpu, can TensorFlow train a model which larger than GPU memory?在单个 GPU 上,TensorFlow 可以训练比 GPU 内存更大的模型吗?
【发布时间】:2020-12-09 18:38:18
【问题描述】:

如果我有一个 8GB RAM 的 GPU,并且我有一个 10GB 的 TensorFlow 模型(不包括训练/验证数据),TensorFlow 可以训练模型吗?

如果是,TensorFlow 是如何做到这一点的?

注意事项:

  1. 我不是在寻找分布式 GPU 训练。我想了解单 GPU 案例。
  2. 我不关心训练/验证数据的大小。

【问题讨论】:

  • Tensorflow2.0 如果您安装了适当的驱动程序,则会自动检测并使用 GPU-s。鉴于此,您还必须将 tf.data.Dataset 用于该大小的数据集。然后,Tensorflow 会自动将数据块加载到 GPU 内存中。这是你需要的吗?
  • @tornikeo 没有。我试图在我的笔记中强调。我不关心数据及其大小。我对模型大小(例如所有权重等)以及如果它大于 GPU RAM 会发生什么感兴趣。
  • 我的错。我误读了第二个注释。如果模型不适合 GPU 内存,tensorflow 仍将使用 CPU 训练模型,但速度要慢得多。您应该尝试使用较低的精度,使用tf.float32 或设计更小的模型。

标签: python tensorflow memory gpu ram


【解决方案1】:

不,您不能训练大于 GPU 内存的模型。 (可能有一些我不知道的辍学方式,但一般不建议这样做)。此外,您甚至需要比您保留的所有参数更多的内存,因为您的 GPU 需要保留参数以及每一步执行反向传播的导数。

更不用说这需要更小的批量大小,因为数据集的剩余空间更少。

【讨论】:

    最近更新 更多