如果我在tensorflow中运行VRAM,是否可以使用CPU RAM?

数据挖掘 机器学习 神经网络 张量流
2022-03-15 04:22:16

我想训练一个在 tensorflow 上运行的模型。我有一个 GPU,但它只有 6GB 的 VRAM。所以我想知道是否可以使用一些 CPU 的 RAM 来卸载 GPU?我知道它会慢得多,我可以减少批量大小和层数等。可以做到吗?

1个回答

如果我理解正确,您实际上是在寻找一种将 CPU 的 RAM 用作 GPU RAM 的交换的方法。不幸的是,这并不容易完成,可能需要一些低级的工作。因此,如果您正在寻找一个简单的参数来添加到您的 keras 模型中,据我所知没有。一些选项:

  • 一些较旧的tensorflow API 支持此功能(例如dynamic_rnn - 请参阅swap_memory参数)。然而,这些现在已被弃用,有利于等效的 keras 层,据我所知,它不支持此功能。理论上你可以使用兼容模式来利用它。
  • 您可以预先指定每个张量将加载到哪个设备上这不等同于交换,但您可以卸载一些计算,以便在 CPU 上定期执行。你可以用tf.device做到这一点。
  • 与上述相同的想法通常应用于加载和预处理数据,这是在 CPU 上完成的,而与训练操作有关的一切都由 GPU 处理。这很方便,因为您可以在 GPU 训练模型的同时让 CPU 加载批处理。我知道这与您的要求相去甚远,因为它要求您的模型完全适合 GPU,但它适合将工作卸载到 CPU 的一般主题。tf.data.Dataset完全支持这一点
  • 使用诸如梯度检查点之类的技巧来减少模型的内存占用(以计算速度为代价)。这与将工作卸载到 CPU 没有任何关系,但它可以帮助您将模型放入内存中。