解决方法:

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博客

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐