论坛下载了Yolo的改进模型,运行代码开始报错:

RuntimeError: CUDA out of memory. Tried to allocate 2.00 MiB (GPU 0; 4.00 GiB total capacity; 3.49 GiB already allocated; 0 bytes free; 3.50 GiB reserved in total by PyTorch) If
 reserved memory is >> allocated memory try setting max_split_size_mb to avoid fragmentation.  See documentation for Memory Management and PYTORCH_CUDA_ALLOC_CONF
 

网上有以下解决方案:

方法1: 修改batchsize

        改小batchsize数值,一般情况下设置为8,运行没有问题的话可以适当增加,一般为2的整数倍。

方法2:推理阶段/验证阶段加上with torch.no_grad():

        添加消除梯度代码,减少运算内存

方法3:代码清理内存

import torch,gc
del variables
gc.collect()
torch.cuda.empty_cache()

        报错代码上方添加以上内容,手动清理内存

方法4:检查是否使用GPU训练

其它方法:

        如果以上方法都未能解决这个问题,可以尝试使用较小的网络模型,例如原本使用yolov5l的模型可以适当减小,使用yolov5m或者s的模型,这样可以极大的减小运算量。改进模型中,有些不是特别必要的层级运算可以减少,释放内存。

        

 

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐