You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GPU显存显示为空但触发CUDA out of memory错误,如何无需重启解决

无root临时修复方案

  • 先清理所有ray残留进程,大部分情况下是ray的僵尸worker没有被主进程回收,占用了CUDA上下文导致OOM:
ps aux | grep ray | grep -v grep | awk '{print $2}' | xargs kill -9
  • 手动清理CUDA残留缓存与IPC内存片段:
import torch
for dev_id in [0, 1]:
    with torch.cuda.device(f"cuda:{dev_id}"):
        torch.cuda.empty_cache()
        torch.cuda.ipc_collect()
  • 调整ray tune运行参数,避免进程复用积累显存/上下文泄漏:在你的tune启动代码中添加reuse_actors=False参数,禁止同一个worker进程跑多轮trial;同时在单trial训练代码的末尾添加上方的CUDA缓存清理逻辑,每轮trial跑完主动释放显存资源。
  • 启动训练前先设置环境变量修正CUDA设备编号逻辑,避免设备编号和PCI地址不匹配导致的映射错误:
export CUDA_DEVICE_ORDER=PCI_BUS_ID
# 之后再执行你的训练启动命令

根因说明与长期修复建议

你遇到的是NVIDIA 460.x版本驱动的已知CUDA上下文泄漏bug,该版本驱动在配合多进程训练框架(如ray)使用时,会出现进程退出后CUDA主上下文不释放的问题,且nvidia-smi无法观测到对应的显存占用。如果可以联系管理员将NVIDIA驱动升级到470.x及以上的LTS版本,即可彻底解决该问题。
dmesg中输出的mapping multiple BARs日志也验证了多卡地址映射存在冲突,设置CUDA_DEVICE_ORDER=PCI_BUS_ID可以大幅降低该问题的触发概率。

内容的提问来源于stack exchange,提问作者Kjyong

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 07:27:04