Apple Silicon Mac 报 MPS backend out of memory:统一内存被 MPS 缓存吃满 / 全站资源搜索
搜索 更新 2026-10-02
报错 099 硬件、驱动、操作系统与非 N 卡环境 有来源可查

Apple Silicon Mac 报 MPS backend out of memory——统一内存被 MPS 缓存吃满

报错原文(原样)
RuntimeError: MPS backend out of memory (MPS allocated: 8.72 GB, other allocations: 110.16 MB, max allowed: 9.07 GB). Tried to allocate 405.00 MB on private pool. Use PYTORCH_MPS_HIGH_WATERMARK_RATIO=0.0 to disable upper limit for memory allocations (may cause system failure).
检索关键词 MPS backend out of memory、PYTORCH_MPS_HIGH_WATERMARK_RATIO、max allowed、private pool、KSampler、Apple Silicon
先看这一句 Mac(M1/M2/M3/M4)上跑到 KSampler 或 VAE 解码阶段报 MPS backend out of memory;提高分辨率或换更大的模型必崩。
适用版本 仅 macOS + Apple Silicon(MPS)。官方文档要求 macOS 12.0 或更高(MPS 自动检测在 macOS 12.3+),macOS 14.5+ 另有黑图 bug 需 --force-upcast-attention。 · 核实日期 2026-09-26 · 状态 已核实
适用环境:全部主流环境

现象与触发场景

常见触发场景:

  • 8GB/16GB 统一内存的 Mac 跑 SDXL / Flux 等高分辨率工作流
  • 同时开了浏览器、设计软件等占用统一内存的程序
  • VAE 解码阶段瞬时内存峰值超过可用统一内存

根因

  • MPS 后端使用统一内存,显存与内存是同一池子;PyTorch 的 MPS 分配器会把已释放的缓存留在池里(缓存分配),导致“看着没占用却报 OOM”。
  • VAE 解码阶段会产生瞬时大峰值,是 Mac 上最常爆内存的节点。
  • Torch 在 MPS 上对高水位比例有默认限制,超过比例就直接报 MPS backend out of memory。

解决步骤

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

  1. 按报错提示放宽 MPS 分配上限(或改小工作负载)
    报错本身给出了办法:设置环境变量 PYTORCH_MPS_HIGH_WATERMARK_RATIO 来调整上限;设为 0.0 表示不限制(报错原文同时警告可能造成系统不稳定/崩溃,因此更稳妥的做法是设成一个比默认更高的比例而不是 0.0)。Apple Silicon 是统一内存,显存与内存同一个池子,所以要同时关掉其他吃内存的程序。
    set PYTORCH_MPS_HIGH_WATERMARK_RATIO=0.0
    PYTORCH_MPS_HIGH_WATERMARK_RATIO=0.0 python main.py
  2. 降低峰值:VAE 走 CPU、用低显存模式、减小分辨率与 batch
    VAE 解码是 Mac 上最容易爆内存的节点,官方文档给出的参数是 --cpu-vae 把 VAE 放到 CPU 计算;再配合 --lowvram / --novram 让模型更激进卸载,并显著下调分辨率与 batch。MPS 在后端不支持的算子上会自动回退 CPU,所以 VAE 走 CPU 通常也能显著降峰值。
    python main.py --cpu-vae
    python main.py --lowvram
    python main.py --novram
  3. 处理 macOS 14.5+ 的黑图问题;MPS 反复出问题时退回 CPU 模式
    官方文档指出 macOS 14.5 及以后有已知 bug 会导致黑图,需要 --force-upcast-attention 强制上采样注意力;若 MPS 仍然频繁 OOM 或出错,官方建议退回 CPU 模式(慢但稳定)。
    python -c "import torch; print(torch.backends.mps.is_available())"
    python main.py --force-upcast-attention
    python main.py --cpu

验证是否修好

同一工作流不再报 MPS backend out of memory 并正常出图;活动监视器里 ComfyUI 进程内存占用保持在统一内存容量之内。

补充说明

报错原文逐字取自 Comfy-Org/ComfyUI issue #5810 的 Debug Logs(本采集已通过 GitHub API 核实该 issue 正文,同 issue 中 M4 Max 用户报出 MPS allocated: 88.02 GiB, max allowed: 88.13 GiB 的同类报错)。该 issue 目前仍为 open,评论里没有官方最终解法,因此第一条解法直接采用报错自带的 PYTORCH_MPS_HIGH_WATERMARK_RATIO 提示。官方文档给出的 MPS 相关参数为 --force-upcast-attention、--cpu-vae、--cpu。

来源

按可信度排列:官方 issue / 官方文档 > 节点仓库 issue > 社区帖 > 中文社区文章。 链接以纯文本给出(本站不做站外跳转),需要核对时请自行复制到浏览器打开。
  1. [222] (官方 issue) KSampler MPS backend out of memory · Issue #5810 · Comfy-Org/ComfyUI https://github.com/Comfy-Org/ComfyUI/issues/5810
  2. [215] (官方文档) GPU Troubleshooting - ComfyUI(Apple Silicon (MPS) 一节) https://mintlify.wiki/Comfy-Org/ComfyUI/guides/gpu-troubleshooting
  3. [136] (官方文档) Common Issues and Solutions - ComfyUI(macOS 黑图 / --force-upcast-attent https://mintlify.wiki/Comfy-Org/ComfyUI/guides/common-issues
  4. 热门自定义节点/工作流专有报错(11 条)

这条报错要用到的东西

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

环境与依赖配置包依赖版本组合清单 / 环境自检脚本说明 待挂载

同一类别的其他条目

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

返回报错库