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

加载Hugging Face预训练模型时CUDA内存不足异常求助

问题分析与解决方案

先理清楚错误里的关键矛盾:你指定了使用GPU2,但报错信息显示的是GPU0——这是因为CUDA_VISIBLE_DEVICES=2会让PyTorch把物理GPU2映射为它能识别的GPU0,所以实际要排查的是物理GPU2的显存状态。

总显存15.78GiB但可用仅618MiB,大概率是这些原因:

  • 系统进程隐性占用:如果服务器带桌面环境,Xorg这类显示服务会占用数GiB显存,但nvidia-smi可能不会将其标记为用户进程,需要专门查看对应GPU的进程列表。
  • 残留进程未清理:之前运行的Python脚本可能没完全退出,后台残留进程偷偷占了显存。
  • 硬件预留显存:部分GPU会预留少量显存给视频解码、显示输出等功能,但一般不会占这么多,可作为次要排查点。

直接试试这些解决办法:

  1. 强制清空GPU缓存
    在加载模型前添加代码,释放PyTorch未主动回收的显存:

    import torch
    torch.cuda.empty_cache()
    
  2. 优化模型加载逻辑
    启用低内存模式,同时用半精度加载模型(显存占用直接减半),修改代码为:

    import torch
    model = AutoModelForSeq2SeqLM.from_pretrained(
        MODEL_CHECKPOINT,
        low_cpu_mem_usage=True
    ).to("cuda", dtype=torch.float16)
    

    mt5-base半精度下显存占用约1.1GiB,完全能在15GiB的GPU中放下。

  3. 排查物理GPU2的真实占用
    运行命令查看该GPU的完整进程和显存使用情况:

    nvidia-smi -i 2
    

    如果发现Xorg等系统进程占了大量显存,要么关闭桌面环境,要么切换到无GUI的终端会话运行脚本。

  4. 调整显存分配策略
    在脚本开头添加环境变量配置,让PyTorch更高效地分配显存块:

    os.environ['PYTORCH_CUDA_ALLOC_CONF'] = 'max_split_size_mb:128'
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 17:13:33