pytorch 从 gpu 中删除模型

Cha*_*der 15 gpu pytorch allennlp

我想在基于 Pytorch 的项目中进行交叉验证。而且我也没有找到pytorch提供的删除当前模型和清空GPU内存的方法。你能告诉我该怎么做吗?

blu*_*nox 11

在 PyTorch 中释放内存的工作方式与普通 Python 垃圾收集器一样。这意味着一旦对Python 对象的所有引用都消失了,它将被删除。

您可以使用del运算符删除引用:

del model
Run Code Online (Sandbox Code Playgroud)

你必须确保没有对相应对象的引用,否则内存不会被释放。

所以一旦你删除了你的所有引用model,它应该被删除并释放内存。

如果您想了解有关内存管理的更多信息,可以在这里查看:https : //pytorch.org/docs/stable/notes/cuda.html#cuda-memory-management

  • @drevicko你可以看一下[这里](https://pytorch.org/docs/stable/tensors.html#torch.Tensor.cpu):“返回CPU内存中这个对象的副本。” (如果尚未在 CPU 上)。就像上面说的:如果你想释放 GPU 上的内存,你需要删除指向 GPU 对象的所有引用。然后它会自动释放。因此,假设“model”位于 GPU 上:如果您不保留对模型的任何其他引用,“model=model.cpu()”将释放 GPU 内存,但“model_cpu=model.cpu()”将保留您的 GPU 内存。 GPU 模型。 (2认同)