模型报错截图
在运行代码中,代码能够运行。此时说明cuda的内存是足够支撑项目运行,但是运行中途cuda内存报错。对此在网上进行寻求答案。
cuda内存不够原因:
1:batchsize设置太大:
解决方法:减少batchsize的大小,尽可能的减少一批数据的加载
2:内存泄漏:
代码在每次迭代中都留下了未清理的数据,这些数据将累积并最终耗尽所有可用的 GPU 内存。这可能是因为某些变量没有被及时释放,或者某些操作导致了额外的内存占用。
解决方法:使用 torch.cuda.empty_cache()
清理未引用的 CUDA 内存,以及确保及时删除不再需要的变量。
torch.cuda.empty_cache()
代码使用注意事项
1:这个操作只会释放 PyTorch 未使用的缓存内存,不会释放已经分配给张量的内存。
2: 通常在模型评估或模型训练的特定时刻(如每个 epoch 后)调用此函数,而不是在每个训练步骤中调用。(建议在epoch循环中使用,每结束一个epoch就释放缓存)
原因:频繁调用 torch.cuda.empty_cache()
可能会导致性能下降,因为释放内存并不是没有成本的操作。
声明:
此次文章只为记录研究学习期间遇到的问题以及解决方法用。目的仅供记录学习。
此次信息来源网络,本人不承担任何法律后果。
内容错误部分,还请谅解。目前我的问题已解决,但是你要和我犟,那就是你对,对对对!