ComfyUI 如何在低显存显卡上运行 SDXL 模型工作流

文章导读
ComfyUI 在低显存显卡上运行 SDXL 模型的核心方案是启用启动参数 `--lowvram` 并配合 Tiled VAE 解码节点。适用场景为显存低于 8GB 的环境,风险边界在于生成速度会显著下降且 FP8 量化可能轻微影响画质。
📋 目录
  1. 命令速用版
  2. 为什么会这样
  3. 分步处理
  4. 怎么验证是否生效
  5. 常见坑
  6. 常见问题
  7. 参考来源
A A

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 命令后追加参数。

ComfyUI 如何在低显存显卡上运行 SDXL 模型工作流

为什么会这样

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 权重读取,旧版本可能无法识别。

ComfyUI 如何在低显存显卡上运行 SDXL 模型工作流

第四步:设置系统虚拟内存。确保操作系统页面文件设置在 SSD 上且大小充足,防止系统内存不足导致进程被杀。

怎么验证是否生效

打开任务管理器或 GPU 监控软件,观察显存占用曲线。成功生效时,显存占用会维持在显卡容量范围内,不会出现瞬间尖峰后崩溃。生成日志中不应出现 CUDA out of memory 错误提示。如果生成速度极慢但能完成出图,说明显存卸载机制正在工作。

常见坑

Tiled VAE 可能导致图像出现拼接痕迹,需要调整 tile_size 或启用 blend 参数消除接缝。FP8 模型在部分旧版 ComfyUI 中加载失败,需更新到最新主分支版本。系统内存 swap 频繁读写会导致生成时间成倍增加,这是正常现象而非故障。部分自定义节点不兼容低显存模式,报错时需逐个禁用排查。

ComfyUI 如何在低显存显卡上运行 SDXL 模型工作流

常见问题

6GB 显存能稳定运行 SDXL 吗

可以运行但速度较慢,必须开启 `--lowvram` 并使用 Tiled VAE。公开资料中没有看到可靠的量化数据保证所有工作流都能成功,复杂工作流仍可能溢出。

VAE 解码报错内存不足怎么办

优先检查是否已启用 Tiled VAE 节点,未分块解码是低显存报错的最常见原因。尝试降低生成分辨率或减小 tile_size 数值。

FP8 模型会影响画质吗

会有轻微影响但通常肉眼难以察觉,相比无法生成,画质损失是可接受的权衡。建议对比同一种子下的 FP16 和 FP8 生成结果确认接受度。

参考来源

  • ComfyUI GitHub Repository, README.md, https://github.com/comfyanonymous/ComfyUI