通过设置PYTORCH_CUDA_ALLOC_CONF中的max_split_size_mb解决Pytorch的显存碎片化导致的CUDA:Out Of Memory问题, ‘dtype‘

问题所在,rvc音频转换,模型推理过程出现的问题。

allocated memory try setting max_split_size_mb to avoid fragmentation.  See documentation for Memory Management and PYTORCH_CUDA_ALLOC_CONF

if data.dtype in [np.float64, np.float32, np.float16]:
AttributeError: 'NoneType' object has no attribute 'dtype'

RuntimeError: CUDA out of memory. Tried to allocate 6.19 GiB (GPU 0; 24.00 GiB total capacity; 11.39 GiB already allocated; 3.43 GiB free; 17.62 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

Time taken: 4.06sTorch active/reserved: 17927/18124 MiB, Sys VRAM: 24576/24576 MiB 

解决过程

方法一:

首先检索到的是一文读懂 PyTorch 显存管理机制一文中的这一段:
关于阈值max_split_size_mb,直觉来说应该是大于某个阈值的 Block 比较大,适合拆分成稍小的几个 Block,但这里却设置为小于这一阈值的 Block 才进行拆分。个人理解是,PyTorch 认为,从统计上来说大部分内存申请都是小于某个阈值的,这些大小的 Block 按照常规处理,进行拆分与碎片管理;但对大于阈值的 Block 而言,PyTorch 认为这些大的 Block 申请时开销大(时间,失败风险),可以留待分配给下次较大的请求,于是不适合拆分。默认情况下阈值变量max_split_size_mb为 INT_MAX.
在终端打开gpu功能界面
1. nvidia-smi
2. echo $PYTORCH_CUDA_ALLOC_CONF
得到的结果是:
$PYTORCH_CUDA_ALLOC_CONF
TLDR:对于显存碎片化引起的CUDA OOM,解决方法是将PYTORCH_CUDA_ALLOC_CONFmax_split_size_mb设为较小值。

max_split_size_mb测试结果
4120可以
5120可以
6120可以
7120报错
8120报错
212000报错

 set PYTORCH_CUDA_ALLOC_CONF=max_split_size_mb:32

或者添加临近值

set PYTORCH_CUDA_ALLOC_CONF=max_split_size_mb:6120
 

方法二:

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

方法三:

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

gc.collect()
torch.cuda.empty_cache()

方法四:

在测试阶段和验证阶段前插入代码 with torch.no_grad()(目的是该段程序不计算参数梯度),如下:
def test(model,dataloader):
    model.eval()
    with torch.no_grad():#这里添加
        for batch in tqdm(dataloader):

 

方法五:

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

将"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。

方法六:

方法七:

更改一下配置,降低参数

参考文献

  1. 一文读懂 PyTorch 显存管理机制
  2. CUDA报错:Out of Memory
  3. pytorch显存管理
  4. CUDA semantics — PyTorch 1.13 documentation
泰迪狒
关注 关注
  • 7
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
如何设置 max_split_size_mb 以避免 Pytorch 碎片
我的博客,不一样的自我表达
06-24 6550
本文旨在全面了解 PyTorch 的内存碎片,并指导您为 max_split_size_mb 设置适当的值。当内存分配和释放的方式在分配的块之间留下小的、不可用的间隙时,就会出现内存碎片。随着内存变得碎片,较小的空闲内存块会分散在各处,这使得为较大的张量分配连续内存变得困难。该set_max_split_size_mb函数采用两个参数:model(PyTorch 模型)和max_split_size_mb(以兆字节为单位的所需值max_split_size_mb)。
深入解析PyTorchCUDA内存管理与优策略
AI天才研究院
05-26 361
深度学习训练和推理过程,GPU的内存管理是一个至关重要的环节。尤其在使用PyTorch框架时,合理管理和优CUDA内存可以显著提升模型的性能和稳定性。然而,CUDA内存不足(Out of Memory, OOM)错误是开发者经常遇到的问题。本文将详细解析CUDA内存管理的核心概念、算法原理、数学模型,并提供实际的代码实例、应用场景、工具和资源推荐,帮助开发者更好地理解和解决CUDA内存不足的问题。随着深度学习模型的不断发展和复杂,GPU内存管理将面临越来越大的挑战。
Pytorch GPU显存充足却显示out of memory解决方式
12-23
今天在测试一个pytorch代码的时候显示显存不足,但是这个网络框架明明很简单,用CPU跑起来都没有问题,GPU却一直提示out of memory. 在网上找了很多方法都行不通,最后我想也许是pytorch版本的问题,原来我的pytorch版本是0.4.1,于是我就把这个版本卸载,然后安装了pytorch1.1.0,程序就可以神奇的运行了,不会再有OOM的提示了。虽然具体原因还不知道为何,这里还是先mark一下,具体过程如下: 卸载旧版本pytorch: conda uninstall pytorch 安装pytorch1.1.0,按照官网上的办法,我的CUDA版本是9.0: conda
torch.OutOfMemoryError: CUDA out of memory. Tried to allocate 2.70 GiB. GPU 0 has a total capacity o
最新发布
hello!
09-15 692
这个报错信息表明的PyTorch代码在执行反向传播()时遇到了CUDA内存不足的问题。具体来说,GPU 0的内存已经耗尽,无法分配额外的2.70 GiB内存。
一文读懂 PyTorch 显存管理机制
数据派THU
06-15 873
来源:数据STUDIO 本文约3600字,建议阅读9分钟为什么报错信息里提示显存够,但还是遇到了 OOM?显存的多级分配机制是怎样的?为什么要这样设计?剖析 PyTorch 显存管理机制主要是为了减少「显存碎片」带来的影响。一个简单示例为:如上图所示,假设当前想分配 800MB 显存,虽然空闲的总显存有 1000MB,但是上方图的空闲显存由地址不连续的两个 500MB 的块组成,不够分配这 80...
kohya_ss 给PYTORCH_CUDA_ALLOC_CONF 分配内存
weixin_32579395的博客
07-29 108
python,cuda,环境变量相关学习资料:https://edu.51cto.com/video/3832.htmlhttps://edu.51cto.com/video/4645.htmlhttps://edu.51cto.com/video/2083.html如何为PyTorch CUDA分配内存配置 作为一...
PYTORCH_CUDA_ALLOC_CONF max_split_size_mb | Shell ( Linux ) 环境下的解决措施
Spike99的博客
03-01 1万+
通过设置PYTORCH_CUDA_ALLOC_CONFmax_split_size_mb解决Pytorch显存碎片导致CUDA:Out Of Memory问题
显存充足却提示out of memory(allocated memory try setting max_split_size_mb to avoid fragmentation)
睦生
10-28 8494
在训练模型的过程,遇到如下问题显存有一半以上的空间却仍然报out of memory的错误。本文总结网上的相关解决方案,由于这些方案对本问题均无效,本文经过实践提出了一种新的解决方法。
报错!if reserved memory>>allocated memory try setting max_split_size_mb==128mbCUDA老是用到爆!
qq_53639230的博客
10-25 1594
遇到这个错表明需要整理碎片显存,释放出能够用于运行的容量。能解决大部分的显存问题!这样应该就能成功运行啦!希望我的解答有所帮助!
CUDA out of memory. If reserved memory is >> allocated memory try setting max_split_size_mb to avoid
凡士林的博客
10-08 2338
我是在每个batch前向前都运行如下代码。
我应该如何设置PYTORCH_CUDA_ALLOC_CONF
05-02
PYTORCH_CUDA_ALLOC_CONF是一个环境变量,用于配置PyTorch在GPU上的内存分配方式。它的作用是控制PyTorch在GPU上分配内存时的策略,以优内存使用和性能。 如果你想设置PYTORCH_CUDA_ALLOC_CONF,可以按照以下步骤...
PYTORCH_CUDA_ALLOC_CONF怎样设置
05-04
`PYTORCH_CUDA_ALLOC_CONF` 是一个环境变量,用于设置 PyTorch 在 GPU 上分配内存的配置。它允许用户在 PyTorch 分配 GPU 内存时指定一些参数,以优内存使用和性能。 设置 `PYTORCH_CUDA_ALLOC_CONF` 的方法如下...
allocated memory try setting max_split_size_mb to avoid fragmentation. See documentation for Memory Management and PYTORCH_CUDA_ALLOC_CONF
04-30
这个错误信息通常是由于GPU显存碎片引起的,可以尝试设置`max_split_size_mb`来避免碎片。具体操作可以参考PyTorch的内存管理文档以及`PYTORCH_CUDA_ALLOC_CONF`的文档说明。此外,还可以尝试使用`torch.cuda....
windows pytorch_cuda_alloc_conf
09-22
Windows 系统pytorch_cuda_alloc_conf 是一个用于配置 PyTorchCUDA(Compute Unified Device Architecture)框架上进行 GPU 内存分配的相关工具。PyTorch 是一个在深度学习领域非常流行的开源机器学习...
See documentation for Memory Management and PYTORCH_CUDA_ALLOC_CONF这个问题该怎么解决
04-30
For example, PYTORCH_CUDA_ALLOC_CONF="0:4096,1:4096" sets a limit of 4096 MB for both the default and the pinned memory allocations. To set the PYTORCH_CUDA_ALLOC_CONF variable, you can use the ...
yolov7的export.py转换时显存报错 If reserved memory is >> allocated memory try setting max_split_size_mb to a
热门推荐
小菜鸟
12-07 1万+
报错内容:export failure: CUDA out of memory. Tried to allocate 20.00 MiB (GPU 0; 4.00 GiB total capacity; 2.45 GiB already allocated; 0 bytes free; 2.54 GiB reserved in total by PyTorch) If reserved memory is >> allocated memory try setting max_split_size_mb t
torch.cuda.OutOfMemoryError: CUDA out of memory. Tried to allocate 12.00 MiB (GPU 0; 1.96 GiB total ...
weixin_35755823的博客
02-03 1万+
这是一个CUDA内存错误,代表GPU内存不足,无法分配12.00 MiB的内存。您可以尝试设置max_split_size_mb以避免内存碎片,以获得更多的内存。请参考PyTorch的内存管理文档以获得更多信息和PYTORCH_CUDA_ALLOC_CONF的配置。 ...
python碎片知识(更新)
m0_52384281的博客
02-03 110
python碎片知识(日更)
写文章

热门文章

  • 通过设置PYTORCH_CUDA_ALLOC_CONF中的max_split_size_mb解决Pytorch的显存碎片化导致的CUDA:Out Of Memory问题, ‘dtype‘ 9018
  • __init__() got an unexpected keyword argument ‘options‘ 2872
  • 【无标题】selenium.common.exceptions.SessionNotCreatedException: Message: session not created: This versi 1693
  • 在pycharm中的terminal运行前面的PS如何修改成自己环境 1181
  • runtimeerror: input type (torch.cuda.floattensor) and weight type (torch.floattensor) should be the 886

最新评论

  • 通过设置PYTORCH_CUDA_ALLOC_CONF中的max_split_size_mb解决Pytorch的显存碎片化导致的CUDA:Out Of Memory问题, ‘dtype‘

    CSDN-Ada助手: 恭喜您撰写了第8篇博客!标题非常吸引人,我很期待阅读您关于解决Pytorch显存碎片化导致的CUDA: Out Of Memory问题的方法。您的博客内容对于那些在使用Pytorch时遇到显存问题的人来说肯定非常有帮助。在下一篇博客中,我建议您可以分享一些关于如何优化Pytorch代码以减少显存占用的技巧。谢谢您的付出,期待您的下一篇博客!

大家在看

  • Windows Server 远程桌面断开导致锁屏问题及解决方案 1
  • 足浴店+闸机+智能衣柜+门票系统一体化管理系统解决方案——未来之窗行业应用跨平台架构

最新文章

  • 错误类型:python、pycharm错误类型
  • 在pycharm中的terminal运行前面的PS如何修改成自己环境
  • 【无标题】selenium.common.exceptions.SessionNotCreatedException: Message: session not created: This versi
2023年1篇
2022年7篇

目录

目录

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家湛江玻璃钢雕塑市场行情上海主题商场美陈生产厂家玻璃钢雕塑国际象棋株洲动物玻璃钢雕塑玻璃钢蘑菇雕塑公司湖滨玻璃钢雕塑内蒙古玻璃钢卡通雕塑小鸟报价承德动物玻璃钢雕塑昆山春季商场美陈广州特色玻璃钢雕塑多少钱资阳商场美陈广东户外商场美陈市场焦作玻璃钢彩绘雕塑吉林创意玻璃钢雕塑市场温州玻璃钢雕塑摆件有哪些珠海玻璃钢艺术雕塑环保玻璃钢雕塑价格玻璃钢酒店雕塑厂家玻璃钢卡通动物雕塑厂家价格上海雕像玻璃钢雕塑卖酒翁玻璃钢雕塑郑州玻璃钢不锈钢镂空雕塑定做革命主题玻璃钢雕塑供应临沂玻璃钢马雕塑新上沈阳玻璃钢雕塑加工厂玻璃钢鹿雕塑现货清远玻璃钢艺术雕塑佛像玻璃钢雕塑怎么制作室外玻璃钢花盆厂家锦州玻璃钢雕塑多少钱香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化