ComfyUI 出现显存不足(Out of Memory, OOM)是常见问题,尤其是在生成高分辨率图片或运行复杂工作流时。以下是按优先级排列的解决方案,从最立竿见影到进阶优化:
这是解决 ComfyUI 显存问题最有效的方法。在启动 ComfyUI 时,添加特定的命令行参数。
在启动脚本(如 run_nvidia_gpu.bat 或终端命令)中加入以下参数:
--lowvram --medvram --precision full --no-half--lowvram: 强制模型在生成过程中频繁在 RAM 和 VRAM 之间交换数据。虽然速度会变慢,但能极大降低显存峰值占用。--medvram: 中等显存优化,比 --lowvram 激进程度稍低。--precision full --no-half: 使用全精度(FP32)而非半精度(FP16)。这会增加显存占用,但有时能解决半精度导致的报错或黑图。注意: 如果你显存极小(如 6G 以下),通常建议用半精度(默认),但如果遇到报错,可以尝试这个组合。通常只加 --lowvram 即可。
在 ComfyUI 的 Web 界面中,点击右侧的 "Settings" (设置) 图标,调整以下选项:
将预览方式从 auto 改为 latent2rgb 或 none。
auto 可能会使用 taesd 解码器,这会占用额外显存。关闭预览或仅使用潜空间预览可以省下不少显存。这是导致显存爆炸的最常见原因,请重点检查:
这是最直接的办法。如果你在用 8G 显存跑 1024x1024 以上的图,很容易爆。尝试降低到 512x512 或 768x768 测试。
将 KSampler 或 KSampler (Advanced) 中的 batch_size 设为 1。一次生成多张图非常吃显存。
如果你使用了 Empty Latent Image,确保 batch_size 是 1。
如果你在使用 ControlNet,确保预处理节点(如 Canny、Depth)没有开启“预览”输出,或者将预处理后的图像直接连入 ControlNet 应用节点,不要同时输出到屏幕预览。
确保工作流中只加载了一个 Checkpoint(大模型)。不要试图在一个流程里切换或对比多个模型,除非你显存非常大。
下载模型时,优先选择 FP16 版本(通常文件大小在 2GB-6GB 左右,如 sd_xl_base_1.0.safetensors)。尽量避免使用 FP32 版本(体积巨大,显存占用翻倍)。
--lowvram 使用。Load Checkpoint 还是 Load LoRA?尽量使用 Load LoRA 而不是将 LoRA 熔合进 Checkpoint,因为熔合会生成一个新的大权重矩阵,占用更多显存。
关闭 Chrome(浏览器很吃显存)、游戏、OBS 等。
确保 NVIDIA 驱动是最新版本(Studio 驱动通常比 Game Ready 驱动更稳定)。
确保你的 Windows 虚拟内存是开启的,并且设置在 SSD 上,大小建议设置为物理内存的 1.5 倍左右。当显存不够时,系统会借用内存,内存不够会借用硬盘(虚拟内存)。
如果你显存非常小(如 GTX 1060 6G, RTX 3050 4G):
使用 Tiled VAE Decode 和 Tiled KSampler 节点。这允许你生成高分辨率图片,但分块处理,显存占用会维持在低位。
尝试使用 GGUF 格式的模型(需要安装 ComfyUI-GGUF 插件)。这种格式可以将模型量化到极低精度(如 Q4),极大降低显存需求,但可能会轻微损失画质。
run_nvidia_gpu.bat,加上 --lowvram。none 或 latent2rgb。如果以上都试了还不行,可能是你的显卡确实无法支持当前的工作流(例如 4G 显存跑 SDXL 高分辨率),建议换用 SD 1.5 模型或升级硬件。