首页 > 解决方案 > 在 PyTorch 中,如何在训练后完全释放模型的 gpu 内存并做其他事情

问题描述

训练时,模型需要梯度并消耗大量 gpu 内存,训练后,我想并行评估不同步骤/时期的模型性能(多处理),其中每个子过程为没有梯度的模型加载不同的参数。为了产生尽可能多的子进程,我想完全释放前一个模型占用的 gpu 内存(在训练阶段)。

我已经尝试del modeltorch.empty_cache()很多建议,但nvidia-smi仍然显示 gpu 内存未释放,这将阻止我创建预期的评估子进程(引发错误CUDA out of memory)。

所以任何人都可以帮助我从 gpu 中完全删除模型吗?另外,我不介意在每个子流程中重复加载模型,因为训练中的模型远大于评估中的模型。或者告诉我为什么我的提议不现实。

标签: pythonmultiprocessingpytorch

解决方案


推荐阅读