回到笔记
工具教程AI

在 Apple 芯片 Mac 上训练 LoRA

从 kohya 环境、素材裁切与打标,到训练目录、底模、优化器和 Rank 参数,梳理一条可执行的 LoRA 训练流程。

这篇笔记记录的是在 Apple 芯片 Mac 上用 kohya 系工具训练 Stable Diffusion LoRA 的基本思路。训练脚本和依赖更新频繁,具体安装命令应以所用仓库的当前说明为准。

先明确训练目标

LoRA 可以学习人物、物件、服装或画风。不同目标需要不同素材:

  • 人物:角度、表情、景别和光线要有变化;
  • 物件:保留稳定外观,同时覆盖不同背景与视角;
  • 画风:题材要多样,避免模型把具体人物或构图误学成风格。

素材数量不是越多越好。重复、模糊、严重压缩或构图几乎相同的图片,会放大偏差。

数据准备

  1. 清理低质量和重复图片;
  2. 按底模支持的分辨率裁切,必要时启用 buckets;
  3. 为图片生成 caption,再逐张修正;
  4. 把希望模型学习的概念写进 caption;
  5. 准备少量未参与训练的提示词,用于阶段性对照。

Caption 不需要描述每个像素,但要把主体、服装、动作、场景和风格中真正变化的部分说清楚。触发词应短、稳定,并尽量避免与常见词冲突。

参数怎么理解

Rank 与 Alpha

Rank 决定 LoRA 的表达容量。更高并不必然更好:容量太小可能学不住,太大则增加文件体积和过拟合风险。Alpha 用于缩放更新强度,通常结合 Rank 一起观察。

学习率

UNet 和文本编码器可以使用不同学习率。人物或物件训练时,文本编码器过强容易破坏原有词义;不确定时先采用保守配置,再看对照图调整。

Steps、Epoch 与重复次数

这三个参数共同决定每张图片被看到多少次。不要只复制别人的总步数,应根据数据量计算,并在训练过程中定期采样。出现以下现象时可能已经过拟合:

  • 不论提示词如何变化,构图都很接近训练图;
  • 触发词污染其他概念;
  • 皮肤、背景或服装出现固定纹理;
  • 较高权重下画面迅速崩坏。

优化器与精度

Apple 芯片主要使用 MPS,生态兼容性不如 CUDA 完整。选择优化器、混合精度和缓存策略时,优先以“能够稳定完成一轮训练”为基线,再逐项优化速度。

Mac 上常见问题

  • 安装失败:确认 Python、PyTorch 和训练脚本支持的版本组合;
  • MPS 算子缺失:尝试关闭相关优化,必要时回退到 CPU;
  • 内存不足:降低 batch size、分辨率或 Rank,启用 latent cache;
  • 训练突然变慢:观察是否发生内存交换;
  • 输出全黑或异常:先用最小数据集和默认配置排除环境问题。

[!TIP] 保存一份完整的训练配置、依赖锁定和样例提示词。只有输入条件可复现,参数对比才有意义。

验收而不是“看起来像”

至少用三组提示词检查:

  1. 接近训练分布,确认概念学到了;
  2. 明显不同的场景和构图,检查泛化;
  3. 不使用触发词,检查底模是否被污染。

同时比较多个 LoRA 权重。真正可用的模型,不只是能复刻素材,而是在不同提示词中仍保留目标特征,并允许底模继续发挥。