当前位置: 首页 > news >正文

网站 搭建 亚洲服务器南昌seo营销

网站 搭建 亚洲服务器,南昌seo营销,网站开发平台及常用开发工具,沈阳专业做网站解决CUDA out of memory. 项目场景原因分析&解决方案① GPU空间没有释放解决一 换GPU解决二 杀掉进程 ② 更换GPU后仍未解决法一:调小batch_size法二:定时清内存法三(常用方法):设置测试&验证不计算参数梯度法…

解决CUDA out of memory.

  • 项目场景
  • 原因分析&解决方案
    • ① GPU空间没有释放
      • 解决一 换GPU
      • 解决二 杀掉进程
    • ② 更换GPU后仍未解决
      • 法一:调小batch_size
      • 法二:定时清内存
      • 法三(常用方法):设置测试&验证不计算参数梯度
      • 法四(使用的别人的代码时):将"pin_memory": True改为False


请添加图片描述

🌈你好呀!我是 是Yu欸
🌌 2024每日百字篆刻时光,感谢你的陪伴与支持 ~
🚀 欢迎一起踏上探险之旅,挖掘无限可能,共同成长!

前些天发现了一个人工智能学习网站,内容深入浅出、易于理解。如果对人工智能感兴趣,不妨点击查看。

如果你喜欢我的文章,欢迎三连给我鼓励和支持:👍点赞 📁 关注 💬评论,我会给大家带来更多有用有趣的文章。
分享「《PYTHON自然语言处理(中文版)》.pdf」,点击链接即可保存。
链接:https://pan.quark.cn/s/a2cfaaaf586a
提取码:t3pK

项目场景

跑bert-seq2seq的代码时,出现报错

RuntimeError: CUDA out of memory. Tried to allocate 870.00 MiB (GPU 2; 23.70 GiB total capacity; 19.18 GiB already allocated; 323.81 MiB free; 21.70 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

运行时错误:CUDA内存不足。试图分配870.00 MiB (GPU 2;23.70 GiB总容量;19.18 GiB已经分配;323.81 MiB空闲;如果分配的内存是>,>分配的内存尝试设置max_split_size_mb以避免碎片。请参阅文档了解内存管理和PYTORCH_CUDA_ALLOC_CONF

在这里插入图片描述

参考:
https://blog.csdn.net/qq_37555071/article/details/108346569
https://blog.csdn.net/xiyou__/article/details/118529350


原因分析&解决方案

① GPU空间没有释放

可能为PyTorch占用的GPU空间没有释放,导致下次运行时,出现CUDA out of memory。
命令行输入 nvidia-smi,显示GPU的使用情况,以及占用GPU的应用程序

nvidia-smi

在这里插入图片描述
此时发现仅GPU:0有4778MIB的占用
有两种解决方案

解决一 换GPU

将代码中的默认0,换成指定2

# device = "cuda" if torch.cuda.is_available() else 'cpu'
device = torch.device('cuda:2')

解决二 杀掉进程

windows系统输入taskkill -PID 进程号 -F 结束占用的进程,比如

taskkill -PID 7072 -F

linux系统输入kill 进程号 结束占用的进程,比如

kill 7072

在这里插入图片描述

然后再次输入 nvidia-smi 查看GPU使用情况


② 更换GPU后仍未解决

法一:调小batch_size

设到4基本上能解决问题,如果还不行,该方法pass。

法二:定时清内存

在报错处、代码关键节点(一个epoch跑完…)插入以下代码(目的是定时清内存):

import torch, gcgc.collect()
torch.cuda.empty_cache()

法三(常用方法):设置测试&验证不计算参数梯度

在测试阶段和验证阶段前插入代码 with torch.no_grad()(目的是该段程序不计算参数梯度),如下:

def test(model,dataloader):model.eval()with torch.no_grad(): ###插在此处for batch in tqdm(dataloader):……

法四(使用的别人的代码时):将"pin_memory": True改为False

如果怎么修改,都会出现题中bug,甚至跑了几轮之后突然出现 cuda out of
memory,查看代码中是否存在一下代码(通常出现在main.py 或者数据加载的py文件中:

kwargs = {'num_workers': 6, 'pin_memory': True} if torch.cuda.is_available() else {}

将"pin_memory": True改为False,具体原因原博:

pin_memory就是锁页内存,创建DataLoader时,设置pin_memory=True,则意味着生成的Tensor数据最开始是属于内存中的锁页内存,这样将内存的Tensor转义到GPU的显存就会更快一些。
主机中的内存,有两种存在方式,一是锁页,二是不锁页,锁页内存存放的内容在任何情况下都不会与主机的虚拟内存进行交换(注:虚拟内存就是硬盘),而不锁页内存在主机内存不足时,数据会存放在虚拟内存中。显卡中的显存全部是锁页内存,当计算机的内存充足的时候,可以设置pin_memory=True。当系统卡住,或者交换内存使用过多的时候,设置pin_memory=False。因为pin_memory与电脑硬件性能有关,pytorch开发者不能确保每一个炼丹玩家都有高端设备,因此pin_memory默认为False。

http://www.fp688.cn/news/161370.html

相关文章:

  • 做旧工艺品网站代写平台在哪找
  • 卧龙区网站制作东莞推广服务
  • vps可以同时做ss和网站吗重庆网站seo服务
  • 网站首页快照汽车宣传软文
  • 网站开发合同模板下载天津网站seo设计
  • 群晖 做网站服务器营销网站类型
  • 一个公司做两个网站可以吗网站建设的数字化和互联网化
  • 怎样做班级网站怎么根据视频链接找到网址
  • 网站开发之美 pdf惠州市seo广告优化营销工具
  • 黄埔定制型网站建设合肥seo推广公司哪家好
  • 咖啡网站设计建设百度搜索高级搜索
  • 忘记网站后台地址广西网络推广公司
  • 湖北网站备案需要多久近三天发生的重要新闻
  • 东莞的网站建设公司哪家好开发一个网站需要多少钱
  • 新网站该如何做网站优化呢腾讯营销平台
  • 沧浪企业建设网站方法夸克搜索
  • 宝丰网站建设产品软文范例软文
  • 做网站如果被忽悠了咋办商丘seo推广
  • 工业设计考研学校排名百度关键词优化首选667seo
  • 网站开发的发展趋势今日新闻摘抄10条简短
  • 陕西农产品网站建设谷歌商店下载安装
  • 自己做电商网站.公司注册
  • 网络建站一般多少钱seo网站推广批发
  • 博物馆网站建设目的腾讯新闻最新消息
  • 上海企业网站优化多少钱百度官方免费下载
  • wordpress xml插件qq关键词排名优化
  • 南平网站建设wzjseo重庆seo优
  • 网站做第三方登录域名seo站长工具
  • 深圳东风大厦 网站建设百度注册入口
  • 利用淘宝视频服务做视频网站自媒体