RuntimeError: MPS backend out of memory (MPS allocated: 35.34 GB, other allocations: 938.78 MB, max allowed: 36.27 GB). Tried to allocate 25.00 MB on private pool. Use PYTORCH_MPS_HIGH_WATERMARK

该 Issue 实际记录的是在 M1 Mac 上让 Kohya SS 的 LoRA 训练和 WebUI 跑通的配置过程,并非单一报错修复。若训练阶段出现 RuntimeError: MPS backend out of memory (MPS allocated: 35.34 GB, other a

快速结论:该 Issue 实际记录的是在 M1 Mac 上让 Kohya SS 的 LoRA 训练和 WebUI 跑通的配置过程,并非单一报错修复。若训练阶段出现 RuntimeError: MPS backend out of memory (MPS allocated: 35.34 GB, other allocations: 938.78 MB, max allowed: 36.27 GB). Tried to allocate 25.00 MB on private pool. Use PYTORCH_MPS_HIGH_WATERMARK 这类 MPS 显存不足报错,优先排查 PyTorch 安装来源、训练分辨率、数据格式和张量常驻显存的缓存选项;但该具体报错文本并未在本 Issue 讨论链中原样出现,以下排查需结合原帖中已验证的 M1 配置思路使用。

适用环境:Mac Studio(M1 系列,32 GB 内存)上的 Kohya SS;讨论中围绕 CPU 版 PyTorch nightly 安装、AdamW 优化器、512 px 图像、10 张训练图、4 epoch 的 LoRA/LoCon 训练进行;未确认具体 Python、macOS、CUDA(M1 无 CUDA)或显卡型号版本。

最快修复方案:暂无确认的一步修复方案。Issue 中原帖者验证跑通的做法是:先按 setup.sh 完成环境安装,卸载自带的 tensorboard/tensorflow/torch 等相关包,改用 pip install torch torchvision torchaudio torchmetrics、pip install tensorflow,再安装 PyTorch nightly CPU 轮子,随后安装 requirements.txt 并通过 ./gui.sh 启动;训练时使用其分享的 LoCon 参数,其中关闭 xformers,并建议把训练图从 PNG 改为 JPG 以降低内存占用。

注意事项:上述命令与版本均来自 Issue 作者自述,属于个人可复现经验,并非官方保证;PyTorch nightly 轮子会随时间变化,直接照抄可能得到不同版本。关闭 xformers 和改 JPG 是作者针对其 M1 32 GB 环境的建议,未在其他机型验证。回复中用户曾遇到新的报错,原帖者判断是其未采用分享的参数设置,说明参数不一致仍可能触发问题。

问题场景

用户在 M1 Mac 上运行 Kohya SS,希望通过 GUI 训练 LoRA(讨论中使用 Kohya LoCon 类型),目标是在没有 NVIDIA GPU、只能依赖 CPU/MPS 的环境里完成训练。原帖标题为“finally i got running and training LoRA on M1 mac”,正文给出了一整套从克隆仓库到启动 GUI 的安装流程,并附上其成功训练的 512 px、10 张图、40 repeat、4 epoch 的 AdamW 配置。后续评论中另一位 M1 Pro 32 GB 用户询问加速建议,原帖者贴出完整参数 JSON;又有用户反馈出现新报错,原帖者认为其未使用分享的参数。

报错原文

RuntimeError: MPS backend out of memory (MPS allocated: 35.34 GB, other allocations: 938.78 MB, max allowed: 36.27 GB). Tried to allocate 25.00 MB on private pool. Use PYTORCH_MPS_HIGH_WATERMARK

说明:该 MPS 显存报错文本不在本 Issue 的标题、正文或评论中原样出现,此处作为相关问题背景保留;Issue 评论中提到的实际现象是用户反馈“got a new issue”并附截图,具体报错内容需以截图为准。

原因分析

可能原因一:PyTorch 安装来源与 M1 不匹配。原帖者的流程中先卸载 setup.sh 装上的 torch 系列包,再安装 CPU/nightly 版本,说明默认安装可能引入了不适用于该环境的构建,影响 MPS 后端可用性与内存管理。

可能原因二:训练参数与显存预算不匹配。原帖者分享的配置为 train_batch_size 1、max_resolution “768,768”、network_dim 128、network_alpha 192、conv_dim 64、conv_alpha 96、cache_latents true、max_data_loader_n_workers “0”、num_cpu_threads_per_process 2、mixed_precision “no”。这些组合在 32 GB 统一内存的 M1 上属于较重配置,显存/统一内存吃紧时容易触发 MPS 分配失败。

可能原因三:训练图片格式与尺寸。原帖者明确建议改用 JPG、不要用 PNG,理由是 PNG 文件更大、占用更多内存;并建议先从小图(512 px、10 张)开始试训。

可能原因四:启用了 xformers。原帖者要求将其设为 false,在 M1 Mac 上该加速组件未必可用或未必带来收益。

环境排查

  • 确认是否为 Apple Silicon(M1 系列)Mac,以及统一内存容量(讨论中为 32 GB)。
  • 确认 PyTorch、torchvision、torchaudio、torchmetrics、tensorflow 的安装来源与版本是否与 setup.sh 默认安装一致,是否按原帖流程替换为 CPU/nightly 轮子。
  • 确认 Kohya SS 的 requirements.txt 已完整安装,GUI 启动时是否显示 “All requirements satisfied.”。
  • 确认训练参数中 xformers 是否为 false、mixed_precision 设置、max_resolution、train_batch_size、network_dim/conv_dim 等是否与原帖分享值一致。
  • 确认训练图片格式(JPG 还是 PNG)与单张分辨率,先检查是否使用了 512 px 小图集做最小验证。
  • 确认是否设置了 PYTORCH_MPS_HIGH_WATERMARK_RATIO 等 MPS 相关环境变量;Issue 中未给出该项的具体取值或验证结论。

解决步骤

  1. 先建立干净的虚拟环境:原帖流程为 python -m venv venv 后 source venv/bin/activate,再执行 ./setup.sh。可优先尝试。
  2. 卸载可能冲突的包:pip uninstall tensorboard tensorboard-data-server tensorboard-plugin-wit tensorflow tensorflow-estimator tensorflow-macos torch torchaudio torchmetrics torchvision。可优先尝试。
  3. 重新安装依赖:pip install torch torchvision torchaudio torchmetrics 和 pip install tensorflow;随后安装 PyTorch nightly CPU 轮子,再补装 tensorflow 与 torchmetrics,并执行 pip install -U -r requirements.txt。可优先尝试。
  4. 启动 GUI:./gui.sh,看到 “All requirements satisfied.” 与本地 URL 后进入训练配置页。
  5. 按原帖分享的 LoCon 参数配置训练,重点核对 xformers 为 false、train_batch_size 为 1、network_dim/conv_dim 与分享值一致;原帖者反馈该组合在其 32 GB M1 上可运行。可优先尝试。
  6. 把训练图片改为 JPG,并先用 512 px、10 张左右的小数据集试训,确认流程稳定后再扩大规模。可优先尝试。
  7. 若仍出现 MPS 内存分配失败,逐项下调分辨率、网络维度或批量大小并重新试训;Issue 中未对其他参数组合给出验证结论。

验证方法

GUI 启动后应显示 “All requirements satisfied.” 并给出本地访问地址;训练开始后观察进度输出是否正常推进并在 4 epoch 内完成,生成输出目录下的 LoRA 权重文件(save_model_as 为 safetensors)。若不再出现 MPS 内存分配报错且训练正常结束,可视为该环境配置生效。建议先用小图集完成一轮,再切换到正式数据集。

参考来源

bmaltais/kohya_ss #1248

原帖附带的日文教程链接:note.com/beautiful_aigirl(Issue 作者称在其环境可用)。

GamsGo AI

AI 工具推荐

想把多个 AI 模型放在一个入口?

GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。

了解 GamsGo AI

推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 33489

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注