ComfyUI 在低显存显卡上运行 SDXL 模型的核心方案是启用启动参数 `--lowvram` 并配合 Tiled VAE 解码节点。适用场景为显存低于 8GB 的环境,风险边界在于生成速度会显著下降且 FP8 量化可能轻微影响画质。
先说结论:低显存运行 SDXL 必须牺牲速度换取空间,通过强制显存卸载和分块解码避免溢出。
- 先定位:确认显存瓶颈是在模型加载阶段还是 VAE 解码阶段。
- 先做:添加 `--lowvram` 启动参数并在工作流中插入 Tiled VAE 节点。
- 再验证:监控生成过程是否出现 CUDA out of memory 报错。
命令速用版
在 ComfyUI 启动脚本中添加以下参数,强制开启低显存模式。
python main.py `--lowvram`如果使用的是 Windows 一键包,编辑 run_nvidia_gpu.bat 文件,在 python 命令后追加参数。
为什么会这样
SDXL 模型显存占用高主要因为基础模型体积大且 VAE 解码需要连续显存块。低显存显卡无法一次性容纳完整模型权重和解算中间值,系统默认策略会尝试全量加载导致溢出。开启低显存模式后,程序会将未使用的模型层卸载到系统内存,VAE 分块解码则将大图切割为小块处理,降低峰值显存需求。
分步处理
第一步:修改启动配置。找到 ComfyUI 目录下的启动脚本,Windows 用户编辑 bat 文件,Linux 用户编辑 sh 文件,在 python 执行命令后加入 `--lowvram` 参数。保存后重启 ComfyUI 服务。
第二步:调整工作流节点。在 VAE Decode 节点前插入 Tiled VAE 节点,或者直接使用支持分块解码的 VAE 解码器。设置 tile_size 为 512 或更低,根据显存余量调整。
第三步:选用量化模型。下载 FP8 版本的 SDXL Checkpoint 文件,在 Load Checkpoint 节点加载。注意确认当前 ComfyUI 版本支持 FP8 权重读取,旧版本可能无法识别。
第四步:设置系统虚拟内存。确保操作系统页面文件设置在 SSD 上且大小充足,防止系统内存不足导致进程被杀。
怎么验证是否生效
打开任务管理器或 GPU 监控软件,观察显存占用曲线。成功生效时,显存占用会维持在显卡容量范围内,不会出现瞬间尖峰后崩溃。生成日志中不应出现 CUDA out of memory 错误提示。如果生成速度极慢但能完成出图,说明显存卸载机制正在工作。
常见坑
Tiled VAE 可能导致图像出现拼接痕迹,需要调整 tile_size 或启用 blend 参数消除接缝。FP8 模型在部分旧版 ComfyUI 中加载失败,需更新到最新主分支版本。系统内存 swap 频繁读写会导致生成时间成倍增加,这是正常现象而非故障。部分自定义节点不兼容低显存模式,报错时需逐个禁用排查。
常见问题
6GB 显存能稳定运行 SDXL 吗
可以运行但速度较慢,必须开启 `--lowvram` 并使用 Tiled VAE。公开资料中没有看到可靠的量化数据保证所有工作流都能成功,复杂工作流仍可能溢出。
VAE 解码报错内存不足怎么办
优先检查是否已启用 Tiled VAE 节点,未分块解码是低显存报错的最常见原因。尝试降低生成分辨率或减小 tile_size 数值。
FP8 模型会影响画质吗
会有轻微影响但通常肉眼难以察觉,相比无法生成,画质损失是可接受的权衡。建议对比同一种子下的 FP16 和 FP8 生成结果确认接受度。
参考来源
- ComfyUI GitHub Repository, README.md, https://github.com/comfyanonymous/ComfyUI