InvokeAI切换模型时CUDA内存不足异常(剩余显存充足)
解决InvokeAI运行Stable Diffusion时的PyTorch/CUDA内存分配错误
针对RTX 2080(8GB显存)运行InvokeAI时出现的显存剩余充足却触发小容量分配失败、连带CPU内存分配错误问题,可按以下步骤排查修复:
1. 清理PyTorch显存缓存
显存碎片是这类假显存不足报错的常见原因,手动清理缓存可快速释放碎片空间:
- 在InvokeAI的终端交互界面中执行:
torch.cuda.empty_cache() - 编辑InvokeAI启动脚本,在模型切换、生成任务结束后自动调用该命令,避免碎片累积。
2. 调整InvokeAI显存优化参数
针对8GB显存的显卡,强制启用轻量化显存分配策略:
- 启动InvokeAI时添加参数:
--xformers,启用xFormers显存优化,减少碎片和占用 - 启用低显存模式:添加
--medvram(中等显存优化)或--lowvram(低显存优化),让模型分层加载到显存,避免一次性占用过多资源 - 关闭GUI冗余功能:在设置中禁用实时预览、自动保存高分辨率历史图,减少后台显存消耗
3. 修复PyTorch与CUDA版本不兼容
版本不匹配会导致显存分配逻辑异常:
- 卸载现有PyTorch:
pip uninstall torch torchvision torchaudio -y - 安装适配RTX 2080的版本(支持CUDA 11.8):
pip install torch==2.0.1+cu118 torchvision==0.15.2+cu118 --index-url https://download.pytorch.org/whl/cu118 - 验证安装:执行
torch.cuda.is_available(),返回True则说明适配成功
4. 解决CPU内存连带报错
CPU内存不足会触发连锁分配失败:
- 启动InvokeAI时限制CPU内存使用:
--cpu-memory-limit 16G(根据你的物理内存调整,比如16G或32G) - 关闭后台占用内存的程序(浏览器、办公软件、视频工具等),释放CPU内存空间
5. 调整系统与PyTorch底层设置
- 确保系统虚拟内存充足:设置为物理内存的1.5-2倍,避免显存溢出到CPU内存时无空间可用
- 禁用可能导致碎片的优化:在InvokeAI配置文件中添加
torch.backends.cuda.enable_mem_efficient_sdp(False),部分场景下该优化会加剧显存碎片
内容的提问来源于stack exchange,提问作者Aresiel
相关产品推荐
相关产品推荐

