python - 在 PyTorch 中,如何在训练后完全释放模型的 gpu 内存并做其他事情
问题描述
训练时,模型需要梯度并消耗大量 gpu 内存,训练后,我想并行评估不同步骤/时期的模型性能(多处理),其中每个子过程为没有梯度的模型加载不同的参数。为了产生尽可能多的子进程,我想完全释放前一个模型占用的 gpu 内存(在训练阶段)。
我已经尝试del model
过torch.empty_cache()
很多建议,但nvidia-smi
仍然显示 gpu 内存未释放,这将阻止我创建预期的评估子进程(引发错误CUDA out of memory
)。
所以任何人都可以帮助我从 gpu 中完全删除模型吗?另外,我不介意在每个子流程中重复加载模型,因为训练中的模型远大于评估中的模型。或者告诉我为什么我的提议不现实。
解决方案
推荐阅读
- c++ - 在 C++ 中读取带空格的字符串
- python - Python 数据类型表现有些不同
- c++ - i+=(i&-i) 是做什么的?它是便携式的吗?
- xamarin - 如何在 Windows 10 的 Visual Studio 2017 中检查 Mono 版本?
- vuejs2 - 使用按钮触发表单文件引导 vue
- java - selenium webDriver (Firefox):连接被拒绝
- java - 进程无法访问文件,因为它正被另一个进程使用
- dart - Flutter ListView 项目点击监听器
- swift - 当金属中的旋转形状发生变化时
- python - 我可以做些什么来映射我的元素并添加它们以计算最大平方和?