Webui 显卡有显存,会报错:CUDA out of memory

Webui 显卡明明有显存,会报错:CUDA out of memory

网上找了很多资料,都没有能解决这个问题 ,后来发现和电脑虚拟内存设置有关,这里记录一下具体的解决方法:

什么是 CUDA Out of Memory 错误?

基本定义
CUDA内存不足是指,当你在深度学习或GPU编程中分配了超过GPU显存容量的内存时,CUDA驱动程序无法再分配新的内存块,从而引发错误。这是由GPU硬件资源的限制导致的常见问题,尤其是在处理大数据集或超大型神经网络模型时。

出错提示如下:

torch.cuda.OutOfMemoryError: CUDA out of memory. Tried to allocate 30.00 MiB. GPU 0 has a total capacty of 16.00 GiB of which 12.25 GiB is free. Of the allocated memory 2.43 GiB is allocated by PyTorch, and 126.88 MiB is reserved by PyTorch but unallocated.
出现这个问题是因为主机虚拟内存设置的比较小或者没设置,导致电脑可和显存进行交换的内存不足, 从而会报CUDA out of memory

在运行 PyTorch 程序时,数据通常会先加载到主机的 物理内存(RAM) 中,然后再传输到显存。如果主机的 RAM
不足,操作系统会将部分数据存放到 虚拟内存(通常是硬盘上的交换空间)中。

当你加载非常大的数据集、模型或进行大量的预处理时,如果 RAM 不足,操作系统会将部分数据移动到虚拟内存中。

遇到这种情况,可以将电脑主机虚拟内存的设置调大来解决
点击

电脑 -&

### 解决PyTorch CUDA Out of Memory Error 当遇到 `CUDA out of memory` 错误时,通常是因为显存分配不合理或者存在碎片化问题。为了优化内存管理和减少显存碎片化的可能性,可以通过调整环境变量 `PYTORCH_CUDA_ALLOC_CONF` 中的参数来实现。 #### 调整 `max_split_size_mb` `max_split_size_mb` 是用于控制显存分割大小的一个重要参数。如果预留的显存远大于实际使用的显存,则可能表明出现了严重的显存碎片化现象。此时可以尝试设置该参数以改善这一情况[^1]: ```bash export PYTORCH_CUDA_ALLOC_CONF="max_split_size_mb:128" ``` 上述命令将最大分割大小设置为 128MB。具体数值可以根据实际情况进行调整,建议从小到大逐步测试最佳值[^2]。 #### 配置其他选项 除了 `max_split_size_mb` 外,还可以考虑以下配置项来进一步优化显存管理: - **backend**: 控制显存分配器的行为模式,默认为 `cuda`。 - **garbage_collection_threshold**: 设置垃圾回收触发阈值,单位百分比。较高的值会延迟释放未使用的显存片段。 - **memory_fraction**: 显卡显存的比例上限,限制模型运行过程中可占用的最大显存量。 完整的配置示例如下所示: ```bash export PYTORCH_CUDA_ALLOC_CONF="max_split_size_mb:128,garbage_collection_threshold:0.8,memory_fraction:0.9" ``` 此配置表示: - 将单次分配的最大分片设为 128 MB; - 当超过 80% 的显存被标记为不可用时启动垃圾收集机制; - 总共允许程序最多使用 GPU 显存容量的 90%[^3]。 #### Python脚本中的应用 如果不想通过环境变量全局生效,也可以在Python代码内部动态修改这些配置。例如,在训练前加入如下代码即可局部作用于当前进程: ```python import os os.environ['PYTORCH_CUDA_ALLOC_CONF'] = 'max_split_size_mb:128' ``` 这样做的好处是可以针对特定任务单独定制不同的策略而不会影响其他部分的工作流。 --- ### 注意事项 尽管合理调节以上参数有助于缓解某些场景下的 OOM(Out Of Memory)错误,但如果数据集规模过大或模型复杂度过高仍然可能导致硬件资源耗尽的情况发生。因此还需要综合评估并适当简化网络结构、降低批量尺寸(batch size),甚至升级计算设备作为备选方案之一。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值