模型叠加导致 OOM:ControlNet + IPAdapter + 多个 LoRA 把显存吃满 / 全站资源搜索
搜索 更新 2026-10-02
报错 018 显存与内存不足(OOM) 有来源可查

模型叠加导致 OOM:ControlNet + IPAdapter + 多个 LoRA 把显存吃满

报错原文(原样)
torch.cuda.OutOfMemoryError: Allocation on device 0 would exceed allowed memory. (out of memory)
(occurs when adding ControlNet / IPAdapter / multiple LoRAs on top of an SDXL or Flux workflow)
(注:以上为转述文本,非逐字原文。)
检索关键词 ControlNet、IPAdapter、LoRA、Allocation on device 0 would exceed allowed memory、SAMLoader、多个模型同时加载
先看这一句 单纯出图没问题,一加上 ControlNet、IPAdapter 或叠两个以上 LoRA 就 OOM;显存越高越明显(24GB 卡上也会出现)。
适用版本 全版本通用;在 16GB/24GB 卡上同样会因叠加而 OOM(issue #9547 的后续评论中在 24GB A40 上复现)。 · 核实日期 2026-09-26 · 状态 已核实
适用环境:Windows 便携版、秋叶/绘世整合包、ComfyUI Desktop、Linux + 云 GPU、Docker/服务器

现象与触发场景

常见触发场景:

  • Flux/SDXL 工作流叠 2 个 ControlNet(一个管姿势、一个管风格)
  • IPAdapter 与 ControlNet 同时使用
  • 一次挂载多个 LoRA(模型合并 + 多个 LoRA)
  • 使用了 SAMLoader 之类的分割/检测模型且设备模式设为 GPU

根因

  • 每多一个 ControlNet/IPAdapter 就多一份完整的附加权重与特征注入开销,这些权重会各自尝试驻留显存,叠加后远超基础工作流。
  • LoRA 会以 patch 形式附加到基础模型上,加载多个 LoRA 会额外保留 patch 数据与合并缓冲。
  • 官方 issue 中维护者 ltdrdata 针对同类 OOM 直接给出的建议是把 SAMLoader 的 device mode 改成 CPU,说明辅助模型默认占 GPU 是常见浪费点。

解决步骤

已按「最可能有效」排序。请从上往下做,每做完一步用「验证」确认,不要一次改五处。

  1. 把辅助模型(SAM / 检测器 / 放大模型)切到 CPU 或按需卸载
    在节点上把 device 参数改成 CPU,或使用带 CPU 选项的加载节点。官方 issue #1918 中维护者 ltdrdata 的原话建议即为此:Do you use SAMLoader? In that case change device mode to 'CPU'.。辅助模型不参与采样,放 CPU 只影响少量速度。
    # 节点参数:SAMLoader -> device = CPU
    # 分割/检测类节点:把 device 从 cuda 改为 cpu
  2. 减少同时挂载的 ControlNet / LoRA 数量,串行执行而不是全塞一个工作流
    把“姿势 ControlNet + 风格 ControlNet”拆成两次运行(第一次出图,第二次 img2img 再注入),或把多个 LoRA 用 LoraLoader 串行合并后再跑。每减少一个附加模型就少一份权重常驻。
    # 把 2 个 ControlNetApply 拆到两个 KSampler 阶段,中间用 VAE Encode/Decode 落盘
    # 多个 LoRA 串行:LoraLoader -> LoraLoader -> ... 保证同一时刻只有一个在合并
  3. 开启激进卸载并降低基础分辨率给附加模型腾空间
    --disable-smart-memory 让基础模型在不用时退回内存,把显存让给 ControlNet/IPAdapter;同时把基础分辨率降一档(如 1024 -> 832),因为附加模型的开销与分辨率相关。官方排障文档把“降低分辨率 + 使用显存优化参数 + 关闭无关程序”列为标准组合。
    python main.py --disable-smart-memory --reserve-vram 1
    python main.py --disable-smart-memory --cache-none

验证是否修好

加回 ControlNet/IPAdapter 后工作流能完整跑完;用 nvidia-smi 观察峰值不再顶到上限。

补充说明

issue #2855 报告 SDXL 在 8GB 显存上“勉强能放”,加 ControlNet 基本不可能,并附了 IPAdapter 使用前后显存占用对比截图(作者观察约 1-1.5GB 显存未被正确释放),该结论为重负载下的用户观测。

来源

按可信度排列:官方 issue / 官方文档 > 节点仓库 issue > 社区帖 > 中文社区文章。 链接以纯文本给出(本站不做站外跳转),需要核对时请自行复制到浏览器打开。
  1. [51] (官方 issue) torch.cuda.OutOfMemoryError: Allocation on device 0 would exceed allow https://github.com/Comfy-Org/ComfyUI/issues/1918
  2. [54] (官方 issue) Strange VRAM consumption (SDXL barely fits in 8GB VRAM) · Issue #2855 https://github.com/Comfy-Org/ComfyUI/issues/2855
  3. [55] (官方 issue) Current memory manager is a garbage · Issue #15443 https://github.com/Comfy-Org/ComfyUI/issues/15443
  4. [6] (官方文档) How to Troubleshoot and Solve ComfyUI Issues - ComfyUI Documentation https://docs.comfy.org/troubleshooting/overview

这条报错要用到的东西

按本条报错所属的类别(显存与内存不足(OOM))列出站内相关的下载包与板块入口。 它们不是「必须下载才能修好」,而是这一类问题里最常要动到的东西;具体怎么做,以上面的解决步骤为准。

ComfyUI 权重库(167 个文件 / 约 1187 GB)按 ComfyUI 的 models 目录分好类的 167 个权重文件 / 每个文件一份说明(放哪、被哪些工作流引用) 待挂载
权重库同一个模型常有更小的量化版本,换一个能省一大截显存 板块 工作流换一条依赖更轻的工作流 板块

同一类别的其他条目

这个解法对你有效吗 记录只存在你自己的浏览器里,不需要注册账号。

返回报错库