先明白核心坑(90% 人踩这里)
原生 Comfy 不会自动合并两张卡显存!不是 16G+16G=32G
默认行为:全部模型优先加载到 GPU0(主卡),副卡 GPU1 闲置;主卡先爆显存 OOM。
两种并行模式完全不同:
- 任务并行(最稳、推荐,不容易 OOM):开 2 个独立 Comfy 进程,每张卡单独跑任务
- 模型并行(单张图拆分到双卡,难度高,极易 OOM):单工作流把 UNet 分层放两张卡,依赖插件,PCIe 带宽不足还会卡死
一、立刻生效:启动参数 + 环境变量(优先尝试)
Windows 启动脚本开头添加;Linux 写在python main.py前面
bat
:: Windows CMD
set PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True
:: 解决显存碎片导致明明有空余却报OOM(最重要一条)
:: 显存策略三选一
python main.py --medvram
:: 显存紧张优先用:--lowvram
:: 显存充足:--highvram(不推荐双卡默认使用)
Linux
bash
export PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True
python main.py --medvram
重要参数说明
--lowvram:模型分片,计算时来回卸载模型,牺牲速度换取显存--medvram:平衡模式,日常首选- 不要同时加
--cuda-device 0,1直接单进程双卡跑图(极易主卡塞满 OOM)
二、方案 A【最稳定,强烈推荐:双进程任务并行】
适用场景:批量出图、同时跑多个工作流,基本杜绝莫名 OOM
原理:两个独立 Comfy 进程,各自独占一张显卡,互不抢占显存
Windows 示例启动脚本
进程 1(GPU0,端口 8188) run_0.bat
bat
set CUDA_VISIBLE_DEVICES=0
set PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True
python main.py --port 8188 --medvram
进程 2(GPU1,端口 8189) run_1.bat
bat
set CUDA_VISIBLE_DEVICES=1
set PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True
python main.py --port 8189 --medvram
打开两个网页:127.0.0.1:8188 / 127.0.0.1:8189,分别调度两张显卡。
✅ 优点:无显存争抢、兼容性最强、不会莫名 OOM
❌ 局限:单一张图无法同时利用两张卡加速
三、方案 B【单工作流双卡跑一张图:模型并行】
如果你想要一张图同时占用两张卡(FLUX/SD3 大模型刚需),必须插件,原生不支持。
插件选择
- ComfyUI-MultiGPU(最流行)
- 安装:
custom_nodes克隆git clone https://github.com/cozycat93/ComfyUI-MultiGPU - 使用节点:
UNETLoaderDisTorch2MultiGPU - 参数:
compute_device=cuda:0,donor_device=cuda:1;设置virtual_vram_gb分配副卡承载的模型显存 - ⚠️ 警告:两张显卡显存规格尽量一致;大小差距很大极易失衡 OOM
- 安装:
- 新版 Comfy 内置
MultiGPU WorkUnits适合 SDXL、视频模型;仅支持同规格显卡,CFG 拆分并行,不适合超大 UNet。
风险:双卡之间频繁传输张量,PCIe 带宽低时速度暴跌;分配不合理直接主卡 OOM。
四、快速降显存压力通用优化(无论哪种方案都要做)
- 模型量化 FLUX/SD3 使用 FP8 / GGUF 量化 UNet,显存直接降低 30%~50%
- 工作流设置
- 关闭不必要 ControlNet、多 LoRA;不要一次性加载多个大模型常驻显存
- VAE 使用 FP16;启用 xformers / SageAttention(Forge 版本优先)
- Forge 用户重点优化 plaintext
--use-sage-attention大幅降低扩散过程中间张量显存占用,解决高分辨率 OOM - 清理模型缓存 设置
--model-cache-capacity 3,限制常驻模型数量,防止越跑显存越高
五、常见 OOM 原因排查清单
- ❌ 错误用法:单进程设置
CUDA_VISIBLE_DEVICES=0,1直接跑标准工作流 → 现象:GPU0 爆满,GPU1 空闲,然后 OOM;原生不会自动分摊 UNet - ❌ 显存碎片:nvidia-smi 看还有空余显存,仍然报错 OOM → 修复:务必开启
PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True - ❌ 同时运行其他 AI 程序(LLM、语音模型占用 GPU0),显存抢占
- ❌ 双卡型号不一致(如 8G+16G)使用 MultiGPU 模型并行,负载失衡
- ❌ 连续生成大量图片,模型缓存不释放,显存持续上涨 → 重启 Comfy,或者降低缓存上限
六、建议优先级排序
- 优先尝试【方案 A:双进程隔离显卡】,稳定性最高
- 如果需要单张图双卡加速 → 使用 ComfyUI-MultiGPU 模型并行,配合 FP8 量化
- 全部启动脚本加上
expandable_segments环境变量 +--medvram
正文完
可以使用微信扫码关注公众号(ID:xzluomor)