学习笔记

老显卡畅跑ComfyUI大模型优化指南

本指南针对4GB/6GB显存的低配老显卡,系统性介绍ComfyUI优化技巧:从启动参数调优、模型轻量化、节点工作流简化到内存管理,让老显卡也能高效运行SDXL等大模型,实现流畅出图。

圆圈网 4

文章正文

核心问题

如何在显存有限的低配置老显卡上优化ComfyUI,流畅运行Stable Diffusion等大模型?


前言

ComfyUI以其节点式工作流和高度可定制性成为AI绘画的热门工具,但对显存的要求常让老显卡用户望而却步。4GB或6GB显存的显卡(如GTX 1060、RTX 2060等)在运行SDXL或配合ControlNet时,极易出现显存溢出(OOM)。本文将从多个维度提供经过验证的优化方案,让你的老显卡也能高效出图。

核心优化思路

低配置优化的关键在于降低显存峰值占用减少不必要的计算,主要策略包括:
- 利用ComfyUI的显存管理参数
- 选择轻量模型与精度模式
- 精简工作流,避免冗余节点
- 运用系统层面的共享内存兜底

启动参数调优

ComfyUI提供了几个关键的显存控制参数,在启动命令后添加即可生效。

--lowvram 与 --novram

  • --lowvram:将模型权重保存在系统内存中,仅在需要时加载到显存。这会略微降低速度,但能大幅节约显存,适合4GB显卡。
  • --novram:极端模式,权重完全保留在CPU内存,不常驻显存,速度最慢,是6GB以下显存的最后手段。

示例启动命令:

python main.py --lowvram

--gpu-only

如果显存大于8GB,可使用--gpu-only将所有模型保留在显存,加快切换速度,但低配置不要启用。

--cpu 与 --force-fp16

  • --cpu:完全用CPU生成,极其缓慢,仅用于测试。
  • --force-fp16:强制使用半精度浮点数,能减少约一半的模型显存占用,且对画质影响较小,强烈推荐老显卡启用。
python main.py --lowvram --force-fp16

模型与数据类型优化

选择轻量Checkpoint

SD 1.5模型通常占用约2GB显存,而SDXL占用约5GB。4GB显卡建议使用SD 1.5模型,6GB可尝试SDXL但需配合低参数。此外,许多社区优化版模型(如DreamShaper、NeverEnding Dream)本身就是fp16削减版,体积更小。

使用FP16/INT8量化VAE

VAE解码也会消耗大量显存。选用fp16版本的VAE,或通过ComfyUI的“Load VAE”节点强制使用fp16模式。某些极端情况下,可关闭VAE的tiling选项,分块解码减少峰值。

ControlNet与LoRA加载策略

  • ControlNet模型建议使用fp16精简版,并只加载当前所需的单一ControlNet。
  • LoRA模型占用较小,但叠加过多仍会增加显存。尽量避免在一次生成中使用超过2个LoRA。

工作流节点优化

合理的节点设计能显著降低显存峰值。

减小潜空间尺寸

生成图片的潜空间尺寸直接影响显存占用。在“Empty Latent Image”节点中:
- SD 1.5推荐最大64的倍数,如512x512或512x768。
- SDXL推荐1024x1024,但低配置可设为768x768或更低,随后使用Upscale节点放大,避免一次性生成大图。

调整采样参数

采样步数(Steps)对显存影响不大,但采样器(Sampler)的选择和批次大小(Batch Size)至关重要:
- Batch Size 必须设为1,绝对不能开多批次,这会使显存翻倍。
- 避免使用高消耗采样器(如DPM++ 2M Karras),低配置推荐Euler aDDIM

移除冗余节点

  • 关闭预览图像节点(Preview Image),预览会缓存解码后的图片,占用显存。需要查看结果时,再用“Save Image”节点输出。
  • 删除工作流中未连接但加载的模型节点(如多余的ControlNet加载器、被绕过的Upscale模型)。

使用共享显存(Shared Memory)

在启动参数中添加--use-split-cross-attention可启用分块注意力计算,减少显存尖峰。再结合--medvram--lowvram,能使SDXL在6GB显卡上运行。

python main.py --lowvram --force-fp16 --use-split-cross-attention

系统级兜底优化

如果上述方法仍导致OOM,可开启操作系统的显存溢写(Swap)。

Windows下启用共享GPU内存

Windows会自动将部分系统内存作为共享GPU内存,但默认可能较小。可在NVIDIA控制面板调整为“偏好系统内存回退”或通过注册表扩大。当专用显存占满时,会使用共享内存,尽管速度变慢,但能避免崩溃。

Linux下设置Swap空间

如果使用Linux,建议预留8GB以上的Swap分区,确保CUDA在显存不足时可换出冷数据。

进阶技巧

FreeU节点

ComfyUI的FreeU节点可在不增加显存的情况下提升画质,相当于免费的性能提升。添加FreeU_V2节点至模型与采样器之间,参数默认即可。

级联生成工作流

对于SDXL等大模型,可设计“低分辨率生图→图生图放大”的级联流程。首先生成512x512的基础图,然后用Upscale和Img2Img循环放大,每一步显存占用都保持在低位。

监视显存使用

在ComfyUI界面右下角开启“显存监视”面板,实时观察峰值。也可以安装gpustat命令行工具,在生成时另开终端监控:

gpustat -i 1

总结

通过合理组合--lowvram--force-fp16、精简模型、优化节点和使用分块注意力,即使是4GB显存的老显卡也能顺利运行ComfyUI的大部分工作流。关键在于对显存占用有清晰认知,并善用共享内存作为最后防线。希望本指南能帮助老硬件发挥余热,流畅体验AI绘画的乐趣。

文章标签

ComfyUI 优化 低配置 老显卡 Stable Diffusion 显存