CUDA显存不足导致ComfyUI加载SDXL模型报错,需通过--normalvram启动、分离VAE、删除未用LoRA/ControlNet、换用4bit量化模型及启用内存高效注意力等综合优化。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

LiblibAI下载的Checkpoint模型在本地ComfyUI中加载时报“CUDA out of memory”,说明GPU显存无法容纳该模型参数+VAE+LoRA+ControlNet等全部组件,尤其常见于SDXL类大模型(如sdxl_lightning_4step.safetensors)在单张RTX 4090(24GB)上直接加载失败。
确认当前显存瓶颈来源
启动ComfyUI后,先不加载工作流,仅执行以下操作:打开终端→运行python main.py --gpu-only→等待界面就绪→在浏览器中打开http://127.0.0.1:8188 →点击右上角“Manager”→选择“System Info”。
重点查看“VRAM Total”和“VRAM Free”数值。若Free显存<3500MB,说明基础环境已吃紧;若Free>6000MB但加载模型仍报OOM,则大概率是模型本身精度或VAE配置导致显存瞬时峰值超限——【SDXL模型默认启用FP16+VAE-Tiling时,显存峰值可达22GB以上】。
强制启用显存优化加载模式
方法一:修改ComfyUI启动参数
关闭当前ComfyUI,在终端中用以下命令重启:python main.py --lowvram --cpu。该组合强制禁用GPU加速推理,所有计算交由CPU完成,完全规避显存限制,但生成速度极慢,仅用于验证模型文件是否完整可读。
方法二:精准启用--normalvram模式
更实用的选择是:python main.py --normalvram。此模式保留GPU加速,但禁用部分高显存缓存策略,对SD1.5类模型效果显著;对SDXL模型需配合下一步操作才有效。
注意:不要使用--highvram——它会预分配全部显存,反而加剧OOM概率。
精简模型加载链路
第一步:分离VAE加载逻辑
在ComfyUI工作流中,找到“CheckpointLoaderSimple”节点→双击打开设置面板→取消勾选“vae”选项。这会让模型加载时不自动绑定VAE,后续单独用“VAELoader”节点按需加载轻量VAE(如sdxl_vae_fp16.safetensors),避免默认VAE(如sdxl_vae.safetensors)占用额外3–4GB显存。
第二步:禁用未使用的LoRA/ControlNet
检查工作流中所有LoRAApply、ControlNetLoader节点→若对应模型文件实际未下载或暂不启用,直接右键删除该节点。每个未启用的ControlNetLoader节点仍会尝试预加载权重,造成隐性显存占用。
第三步:替换为量化版Checkpoint
回到LiblibAI该模型详情页→查找“量化版本”标签→下载标注“4bit”或“Q4_K_M”的safetensors文件→将其放入models/checkpoints/目录→在CheckpointLoaderSimple中下拉选择该量化模型。实测显示,sdxl_lightning_4step的4bit量化版显存占用从18.2GB降至9.7GB,且生成质量无明显损失。
启用梯度检查点与混合精度
① 定位ComfyUI根目录下的main.py文件,用文本编辑器打开;
② 在第28行附近找到import torch语句,在其下方新增两行:
torch.backends.cuda.enable_mem_efficient_sdp(True)
torch.set_float32_matmul_precision('high')
③ 保存文件,重启ComfyUI。这两行指令分别启用NVIDIA的内存高效注意力机制和FP16矩阵乘法精度控制,对SDXL模型前向推理显存峰值降低约12%。
④ 若你使用的是PyTorch 2.4+版本,还需确保环境变量已设置:export TORCH_CUDA_ARCH_LIST="8.6"(针对RTX 30/40系显卡),否则上述优化可能不生效。


















