解决方法:
1.直接上大显存显卡,当然能上就不在这了,哈哈,看下面的方法;
2.调小batch_size,1都不行,再看看下面;
3.在验证模型代码前面,插入with torch.no_grad():
因为在验证和测试的时候,是不需要计算梯度的。
4.pin_memory 由true改成false,有时候很有效!亲测
pin_memory当为True,会加快训练速度;
pin_memory是锁页内存,创建DataLoader时,设置pin_memory=True,则意味着生成的Tensor数据最开始是属于内存中的锁页内存,这样将内存的Tensor转义到GPU的显存就会更快一些。
5.使用代码清理内存
import torch
torch.cuda.empty_cache()
!pip install GPUtil
import torch
from GPUtil import showUtilization as gpu_usage
from numba import cuda
def free_gpu_cache():
print("Initial GPU Usage")
gpu_usage()
torch.cuda.empty_cache()
cuda.select_device(0)
cuda.close()
cuda.select_device(0)
print("GPU Usage after emptying the cache")
gpu_usage()
free_gpu_cache()
参考:
Solving "CUDA out of memory" Error | Data Science and Machine Learning | Kaggle
pytorch: 四种方法解决RuntimeError: CUDA out of memory. Tried to allocate ... MiB_xiyou__的博客-CSDN博客