1

因此,当一批一张图像需要 15GB 时,训练 DNN 模型可能会很痛苦。速度对我来说不是那么重要,但要适应更大的批次(和模型)。所以我想知道是否有一个带有 CUDA Unified Memory fork 的 PyTorch 或类似的东西来适应巨型模型(每个 GPU RAM 有 16gb,但 CPU 端有 250gb 似乎相当合理)?

4

1 回答 1

1

如果你不关心它花费的时间,但需要大批量,你可以使用更慢的方法。假设您需要一批 128 个样本,但您的 gpu 内存仅适合 8 个样本。您可以创建 8 个样本的较小批次,然后平均它们的梯度。

对于您评估的每小批 8 个样本,您将.grad每个参数的 保留在 cpu 内存中。您为每个模型参数保留一个毕业生列表。在您收集了 16 批 8 个样本(总共 128 个样本)的 grads 后,您可以平均每个参数的梯度并将结果放回.grad每个参数的属性中。

然后你可以调用.step()你的优化器。这应该会产生与使用大量 128 个样品完全相同的结果。

于 2020-07-09T10:47:14.520 回答