Home
avatar

.𝙃𝙖𝙣

训练 SD 模型 LoRA:从准备数据集到出第一版效果

这篇接在前面那篇爬图后面,算是一次比较完整的 LoRA 训练记录。

前面为了准备数据集,我已经折腾过一轮浏览器翻页、抓图、批量下载。图有了以后,事情才真正开始。因为“能下到图”和“能训出一个可用的 LoRA”,中间还隔着一整套实际问题:数据集要不要清、标签怎么打、训练参数怎么设、底模怎么选、效果怎么看。

1. 这次训练 LoRA 的起点很直接:业务需要多风格

当时我手里已经有一个自己觉得还比较稳的底模。

平时测试出图时,这个底模在基础人物和整体稳定性上都还可以,所以一开始我并没有太多“换底模”的冲动。

真正把 LoRA 这件事推到眼前的,是业务侧对风格的需求。

因为实际场景里,出图不可能永远只停在一种风格上。项目一旦开始往不同内容方向走,人物、画风、场景质感、整体氛围都会开始分叉。如果每次都只靠 prompt 硬拽,很多效果能靠近,但不够稳,也不够省心。

所以当时我对 LoRA 的理解很朴素:

底模负责通用能力,LoRA 负责把某一类风格或特征往前推一截。

这也是我第一次比较认真地把“模型训练”这件事从听说,变成自己真的去做。

2. 图虽然已经爬下来了,但离“能训练”其实还差不少

前面那轮爬虫,解决的是数据集来源问题。

但数据真正放到训练里时,我很快就发现,能不能训和能不能下,是两回事。

因为训练并不只看数量。

更关键的是:

  • 图是不是同一类风格
  • 主体够不够集中
  • 重复图多不多
  • 质量参差会不会太大
  • 有没有明显脏图、糊图、构图完全失控的图

这些问题在下载阶段看得不一定明显,到了训练阶段就会开始变得很刺眼。

所以我当时做的第一件事,不是立刻开训,而是先把图再看一轮。

重点主要放在这几件事上:

  • 删掉明显质量太差的图
  • 尽量保留风格一致一点的图
  • 把特别偏离主题的图剔掉
  • 控制重复度太高的样本

这一步挺花时间,但很值。

因为 LoRA 训练本身就很容易被数据集质量带偏。前面省下来的时间,后面往往会在效果调不出来时加倍还回去。

3. 那时候我对 LoRA 的理解还很初级,但至少先抓住了一个点:它更像“补特征”,不是重练一个模型

刚开始接触训练时,我对 LoRA 的理解并不深。

那时候最容易冒出来的误解,其实是把它想得太“大”。

好像一说训练,就像在重新造一个模型。

后来边看边做,我至少先抓住了一个比较实用的理解:

LoRA 更像是在底模的基础上,额外学一组特征偏移。

这样一来,很多事情就顺了不少。

比如:

  • 为什么底模选择会影响最终效果
  • 为什么同样的数据,挂在不同底模上味道会有差别
  • 为什么 LoRA 更适合学风格、角色特征、局部表达,而不是代替底模本身

这个理解虽然还不算特别深,但对当时的我来说已经够用了。至少我不会再把“训练 LoRA”想成一件特别玄的事,而是开始把它看成一个可测试、可调整的流程。

4. 真开始训练以后,我最先碰到的与其说是“训不动”,不如说是“参数一多,根本不知道先看哪个”

这应该是第一次训练最真实的一层体验。

因为你一打开训练相关的东西,很快就会看到一堆参数:

  • epoch
  • learning rate
  • network dim
  • network alpha
  • batch size
  • image repeat
  • resolution

这些词单看都还能接受,但放在一起以后,人会很容易乱。

那时候我最明显的感受不是“训练好难”,而是:

我根本不知道调哪一个最先有意义。

所以我后来没有一上来就想把所有参数都搞懂,而是先给自己定了一个更现实的目标:

先跑出第一版,再去看它具体坏在哪里。

这个顺序对我很重要。

因为如果第一步就卡在“我要完全理解所有参数以后再开始”,那这件事会很难往前推进。

5. 我当时对参数的处理方式,更多是先抓影响最大的几个点

那一阶段我对训练参数的态度很务实。

先不追求全懂,先抓住几个会明显影响效果的关键点。

第一,底模先别乱换

因为 LoRA 是挂在底模上的,底模一换,很多判断都会跟着乱。

所以当时我更倾向于:

  • 先固定一个自己觉得相对稳的底模
  • 后面先在同一个基础上看 LoRA 差异

这样至少判断不会飘。

第二,数据集质量优先于盲调参数

这点到现在我都觉得对。

参数当然重要,但如果数据本身很散,后面很多调整都像在给问题加滤镜,不是在解决问题本身。

第三,先出一版样,再看问题类型

比如:

  • 是整体风格没学到
  • 还是人物特征抓得不够
  • 是颜色味道不对
  • 还是局部细节在乱

先分清问题类型,后面调参数才有方向。

6. 这次训练最有意思的地方,不是“终于跑起来了”,而是开始能把效果问题往训练链上拆

前面做生图时,我已经开始学着把问题拆成:

  • 环境问题
  • 模型边界问题
  • 结构控制问题
  • 工作流问题

到了 LoRA 训练这里,这个习惯又往前走了一步。

因为训练效果不好时,问题来源会更多:

  • 数据集本身不稳
  • 标签不准
  • 底模不合适
  • 参数过强或过弱
  • 样本风格不够集中

这时候如果还只停在“这个 LoRA 效果不行”,其实等于什么都没判断。

我当时最有收获的一点,就是开始能把训练结果反过来拆问题。

比如:

  • 风格味道淡,可能是特征没学够
  • 画面一股脏劲,可能是数据本身杂或者过拟合开始冒头
  • 某些局部很像,但整体不稳,可能是样本集中度不够

这些判断当时未必每次都准,但至少开始有方向了。

7. 我那时候对“效果评估”的理解,也从“像不像”变成了“稳不稳”

一开始看训练结果,最直观的反应当然还是:

  • 像不像目标风格
  • 漂不漂亮
  • 有没有学到我想要的味道

但训了几轮以后,我会更在意另一个问题:

它稳不稳。

因为项目里真正能用的,不是偶尔抽中一张神图,而是:

  • prompt 稍微变化时还能不能维持风格
  • 主体变了以后味道还在不在
  • 同类场景里结果是不是大体一致
  • 一挂 LoRA 就不会立刻把底模原本的稳定性搞散

这个理解挺重要。

因为它让我开始不再只盯着几张“最好看的图”,而是更愿意去看一整批结果的平均表现。

对业务来说,这个视角比“偶尔出一张很强的图”更有意义。

8. 回头看,这次训练 LoRA 对我最大的作用,不只是多了一组模型,而是把“模型能力”这件事摸得更具体了

如果只从结果上说,这次训练当然是为了拿到一个能用的 LoRA。

但回头看,它真正带给我的收获不只是结果文件本身。

更重要的是,我开始对“模型能力是怎么长出来的”这件事有了更具体的感受。

以前看别人讲底模、LoRA、风格词、训练参数,很多东西会觉得都在一个比较抽象的层面。

自己真正跑过以后,很多理解会落下来:

  • 数据集质量会直接决定训练上限
  • 底模不是背景板,它会参与最后的表达
  • LoRA 学到的东西不是魔法,它会受样本、参数和底层能力一起影响
  • 结果好不好,很多时候不能只怪某一个参数

这个阶段我开始觉得,模型训练这件事没以前那么神秘了。

它还是复杂,但至少不再只是“别人调出来的效果”。

9. 这次训练也顺手把前面几篇内容串起来了

现在回头看,这篇其实和前面几篇是连着的。

前面爬虫那篇,解决的是:

  • 数据怎么来

这篇 LoRA 训练,接的是:

  • 数据来了以后,怎么把它推进成模型能力的一部分

再往后到 vchoo,又会继续变成:

  • 模型能力怎么接进业务系统里

所以这篇虽然表面上只是在讲训练,但它其实也是这条时间线里挺关键的一步。

因为它把我从“使用模型”往“开始动模型”推进了一下。

10. 这篇先记一个阶段结论

这次训练 SD 模型 LoRA,我现在先记几个比较明确的点:

  1. 数据集能不能下回来,只是训练链的第一步
  2. LoRA 训练最先要抓的是数据质量、样本集中度和底模选择
  3. 第一次训练时,不用急着把所有参数都搞透,先跑出第一版再拆问题更实际
  4. 效果评估不能只看“像不像”,还得看“稳不稳”
  5. 这次训练带给我的真正收获,不只是一个 LoRA 文件,而是对模型能力形成过程有了更具体的理解

这篇先写到这里。

因为训练只是中间一环,最后还是得回到“这东西放进业务以后,到底好不好用”这个问题上。

SD1.5 LoRA AI 训练 数据集