报错解决-Unrecognized CachingAllocator option: 1

前言

在服务器上跑Bert模型的时候,出现了如下的报错:


分析:Traceback (most recent call last):
  File "d:\xay\model\bert-short.py", line 136, in <module>
    model.to(device)
  File "C:\py\Anaconda3\envs\py39\lib\site-packages\torch\nn\modules\module.py", line 1152, in to
    return self._apply(convert)
  File "C:\py\Anaconda3\envs\py39\lib\site-packages\torch\nn\modules\module.py", line 802, in _apply
    module._apply(fn)
  File "C:\py\Anaconda3\envs\py39\lib\site-packages\torch\nn\modules\module.py", line 802, in _apply
    module._apply(fn)
  File "C:\py\Anaconda3\envs\py39\lib\site-packages\torch\nn\modules\module.py", line 802, in _apply
    module._apply(fn)
  [Previous line repeated 1 more time]
  File "C:\py\Anaconda3\envs\py39\lib\site-packages\torch\nn\modules\module.py", line 825, in _apply
    param_applied = fn(param)
  File "C:\py\Anaconda3\envs\py39\lib\site-packages\torch\nn\modules\module.py", line 1150, in convert
    return t.to(device, dtype if t.is_floating_point() or t.is_complex() else None, non_blocking)
  File "C:\py\Anaconda3\envs\py39\lib\site-packages\torch\cuda\__init__.py", line 302, in _lazy_init
    torch._C._cuda_init()
RuntimeError: Unrecognized CachingAllocator option: 1

尝试了很多办法都没有解决,例如更换pytorch版本、pytorchvision等,最终解决方法如下:

os.environ["PYTORCH_CUDA_ALLOC_CONF"] = "max_split_size_mb:256"

插入此行代码可以解决问题,原因是使用PyTorch进行深度学习训练时,由于动态内存分配策略,显存中的内存块可能会变得非常碎片化。这导致即使有足够的总显存,也可能出现"CUDA: Out of Memory"错误,因为无法找到足够大的连续空间来分配新的内存请求。

max_split_size_mb 是 PYTORCH_CUDA_ALLOC_CONF 环境变量中的一个重要参数,它定义了CUDA内存分配器在分配内存时可以拆分的最大块大小(以MB为单位)。通过设置这个参数,可以减少显存碎片化的程度,因为它限制了分配器拆分大块连续显存的概率,从而减少了因碎片化导致的内存分配问题。

通过设置 max_split_size_mb,可以优化PyTorch的CUDA内存分配策略,减少显存碎片化,从而避免"CUDA: Out of Memory"错误。具体的设置值需要根据实际情况进行调整,以达到最佳效果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小蓝学不会嵌入式!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值