
当你在 Civitai 上看到别人用同一个角色画出几百张神还原的图,或者把任意提示词都自动染上某种独特画风时,背后多半站着一个叫 LoRA 的小文件。它通常只有几十 MB,却能让庞大的 Stable Diffusion 模型”记住”一个特定的角色、画风或概念。更妙的是,你不需要一台动辄上万元的服务器,用一张消费级显卡,花一两个小时,就能训练出属于自己的 LoRA——让 AI 画出你设计的原创角色,或者复刻你自己的绘画风格。本文将从原理讲起,带你彻底搞懂 LoRA 是什么、怎么用、从哪下载,并手把手讲清楚如何用 kohya_ss 训练自己的 LoRA,包括数据集准备、打标、底模选择、关键超参,以及过拟合/欠拟合的判断与对策。
一、LoRA 是什么:给大模型打的”轻量补丁”
LoRA 的全称是 Low-Rank Adaptation(低秩适配),最早由微软在 2021 年针对大语言模型提出,后来被引入到 Stable Diffusion 社区,迅速成为最流行的模型微调方式。要理解它,先看看”全量微调”有多重,再看 LoRA 有多轻。
所谓全量微调(fine-tuning),就是把整个模型的所有权重都拿来重新训练。Stable Diffusion 的 UNet 有十几亿参数,全量微调不仅需要海量显存和算力,产出的也是一个和原模型一样几个 GB 大的新 checkpoint。对个人用户来说门槛极高。
LoRA 的核心洞察是:模型在适配一个新概念时,权重的”改变量”其实是低秩的——也就是说,这个变化可以用两个很小的矩阵相乘来近似表达,而不需要改动原始的大矩阵。具体做法是,冻结原模型的所有权重,只在某些层(主要是注意力层)旁边插入两个小矩阵 A 和 B(一个把维度降下来、一个再升回去),训练时只更新这两个小矩阵。原模型的权重 W 保持不动,最终的等效权重是 W + B×A。由于 A、B 远小于 W,需要训练和保存的参数量骤减到原来的千分之几,这就是为什么 LoRA 文件能小到几十 MB,训练也能在普通显卡上完成。
使用时,推理框架会把 LoRA 的增量”叠加”回底模,于是底模就临时获得了 LoRA 教给它的新能力;不用时卸载即可,原底模毫发无损。这种”即插即用、互不破坏”的特性,让一个底模能搭配成千上万个 LoRA 自由组合。
二、怎么用 LoRA:加载、触发词与权重
用别人训练好的 LoRA 非常简单。把下载的 .safetensors 文件放进对应目录(WebUI 是 models/Lora,ComfyUI 是 models/loras),刷新即可。
在 WebUI 中:点击生成按钮下方的”Lora”标签页,会列出所有 LoRA,点一下就会在提示词框里插入一段 <lora:模型名:0.8> 的语法。其中 0.8 就是权重。很多角色/画风 LoRA 还需要配合 触发词(trigger word)——也就是训练时用来代表这个概念的关键词,必须把它写进正向提示词,LoRA 才会被激活。触发词通常写在 Civitai 的模型页面里,务必查看。
在 ComfyUI 中:使用 Load LoRA 节点,它接在 Load Checkpoint 之后,输出修改过的 MODEL 和 CLIP 再往下接。节点上有 strength_model 和 strength_clip 两个权重,分别控制对生图网络和文本理解的影响。
权重调节是关键技巧。权重 1.0 表示满强度,但很多 LoRA 在 1.0 时会过强、画面僵硬或画质下降。实战中常把权重设在 0.6~0.9 区间试探,找到”概念出来了但不至于喧宾夺主”的平衡点。
多 LoRA 叠加:你完全可以同时挂多个 LoRA,比如一个角色 LoRA + 一个画风 LoRA。但叠加时容易互相干扰,社区经验是让其中一个占主导、其余压到 0.4 以下,效果通常最好;同类型(比如两个都是强画风)的 LoRA 叠加要格外小心冲突。
三、从哪下载 LoRA
最大的社区是 Civitai,上面有海量的角色、画风、概念 LoRA,每个模型页都标注了适用底模(SD1.5 / SDXL / Pony / Flux 等)、推荐权重、触发词和示例图。下载前一定要确认底模版本匹配——SD1.5 的 LoRA 不能用在 SDXL 底模上。此外 Hugging Face 上也有不少开源 LoRA。下载时注意:看示例图判断质量、看评论区避坑、留意授权协议(尤其涉及商用时)。
四、训练自己的 LoRA:数据集是地基
训练 LoRA,七成功夫在数据集。一句话原则:质量与多样性,远比数量重要。
数量:角色 LoRA 通常 15~40 张精选图就够;画风 LoRA 可以多一些(几十到上百张)。新手最常犯的错是堆量——五张同一个姿势的图几乎教不会模型什么,反而会把它推向过拟合。
多样性:对角色 LoRA,要涵盖不同角度(正面/侧面/背面)、不同表情、不同姿势、不同景别(特写/半身/全身)和不同背景。这样模型才能学到”这个人本身长什么样”,而不是”这个人只会摆这一个姿势穿这一件衣服”。
质量:高清、主体清晰、不要有水印和多余文字。背景太杂可以适当裁剪或抠图。分辨率建议向底模看齐(SD1.5 用 512,SDXL 用 1024)。
五、打标(captioning):教模型”什么该学、什么该忘”
打标是给每张图配一段文字描述(保存为同名 .txt)。它的作用机制很微妙,新手必须理解:你在标注里写出来的东西,会被模型当作”可变的、由提示词控制的”;你没写出来的东西,会被模型当作”这个概念的固有特征”吸收进 LoRA。
这条原则直接决定打标策略:
- 角色 LoRA:你希望角色的”长相”被固化,所以不要描述他的五官、发色等本质特征;但要把会变化的东西标出来——服装、姿势、表情、背景、角度。再加一个独特的触发词(如
myhero1girl)作为这个角色的”钩子”。这样推理时写触发词就召回长相,写不同服装就能换装。 - 画风 LoRA:你希望”风格”被固化、而”画的内容”保持自由,所以要详细描述每张图画的是什么(人、物、场景),但不必描述风格本身。这样风格被当作共性吸收,内容仍可由提示词自由指定。
打标工具:kohya_ss 内置了自动打标功能,二次元图用 WD14 Tagger(输出 danbooru 风格的标签)、写实图用 BLIP(输出自然语言描述)。自动打标后建议人工过一遍,删掉错误标签、补上触发词、删除你想固化的特征标签。
六、底模选择
训练 LoRA 时要选一个”底模”作为训练基础,并且训练用什么底模,使用时也最好用同系底模,效果最匹配。
- SD 1.5 系:训练快、显存需求低(6GB 可战)、教程多,适合入门和二次元。
- SDXL 系:画质更高、细节更好,但训练更吃显存(建议 12GB 以上)和时间,1024 分辨率更适合写实。
- Pony / Illustrious 等二次元专用底模:在动漫角色和画风训练上非常流行。
- Flux:质量天花板,但训练资源消耗大;社区已有 8GB 显存的优化教程,但门槛仍偏高。
一个实用建议:用一个”通用、干净”的底模训练(而不是某个高度风格化的融合模),这样训出来的 LoRA 泛化性更好、能适配更多底模。
七、关键超参:学习率、步数、network dim 与 alpha
这是新手最头疼也最关键的部分。下面给出经过社区验证的稳妥起点。
| 参数 | 作用 | 推荐起点 |
|---|---|---|
| Network Dim(Rank,秩) | LoRA 容量,越大能学越复杂的概念,但文件更大、更易过拟合 | 角色 8~32;画风可 32~64 |
| Network Alpha | 缩放 LoRA 影响,影响有效学习强度 | 设为 Rank 的一半(如 Rank16 → Alpha8)或 1 |
| Learning Rate(学习率) | 每步权重更新幅度 | 1e-4 起步(范围约 3e-6~8e-5/1e-4) |
| Epochs / Steps(轮数/步数) | 整个数据集被学习的遍数 | 10~20 epoch,总步数约 1000~2500 |
| Batch Size | 每步同时处理的图数 | 显存允许下 1~2 起步 |
| Optimizer(优化器) | 权重更新算法 | AdamW8bit;新手友好可用 Prodigy/DAdaptation 自适应学习率 |
Network Dim 与 Alpha:Dim 决定”信息容量”。角色这种相对简单的概念用 8~32 足矣,盲目调高只会增大文件、加剧过拟合。Alpha 是个缩放因子,社区惯例是设为 Dim 的一半(如 Dim 32 / Alpha 16),这是稳妥的默认搭配。
学习率:可以从 1e-4 起步。学习率越高学得越快,但太高会”学过头”、丢失灵活性,也可能学不进细节;太低则训练缓慢、概念学不进去。如果不确定,使用 Prodigy 这类自适应优化器(学习率设 1),让它自动调,对新手很友好。
步数:总步数 ≈ 图片数 × repeats × epoch ÷ batch size。关注”总步数”而非单一参数,一般 1000~2500 步是常见区间,角色少图时偏低、画风多图时偏高。
八、过拟合与欠拟合:怎么判断、怎么救
训练结果不理想,九成是这两个问题之一。学会看症状才能对症下药。
过拟合(Overfitting)= 学过头、死记硬背。模型背下了训练图本身而非学会泛化。典型症状:
- 生成图和训练集里的某张图几乎一模一样(包括背景、姿势)。
- 换个和训练标注不同的提示词就崩,灵活性极差。
- 画面僵硬、细节糊、色彩怪异,或反复出现训练图里的元素。
对策:减少 epoch/步数、降低学习率、降低 network dim、增加数据多样性、加入正则化(regularization)图片,以及——非常重要——保存多个中间 checkpoint,挑一个”还没学过头”的。社区一条经验是:当 loss 不再下降或样本图开始变差时,就该停了。
欠拟合(Underfitting)= 没学够、学不进。典型症状:角色根本不像、画风没体现、加了触发词也几乎没变化。对策:增加 epoch/步数、适当提高学习率、检查数据集质量与打标是否合理(触发词是否一致、是否误删了关键标签)。
最佳实践是开启训练中途定期出样本图,肉眼盯着进度——你会看到模型从”完全不像”逐渐”越来越像”,再到”开始僵硬复制”。最理想的那个 epoch,往往就在”像了但还灵活”的拐点上。
九、角色、画风、概念 LoRA 的差异
三类 LoRA 目标不同,数据和打标策略也不同,可以用”谁 / 怎么画 / 什么东西”来记。
- 角色 LoRA(Who):教模型”某个特定的人/角色长什么样”。数据需多角度多姿势同一人,打标隐去长相、保留可变项。最大风险是把服装/背景也一起记死,所以服装一定要标出来、要多换。
- 画风 LoRA(How):教模型”某种线条/配色/笔触/质感”。数据是不同主题但同一风格的图,打标详细描述内容、不描述风格。
- 概念 LoRA(What):教一个模型原本不会的具体事物、动作或物件(某种姿势、某件道具、某种服饰)。介于两者之间,按”想固化的别标、想可变的要标”原则处理。
十、显存与时间:我的设备够吗
这是大家最关心的现实问题。粗略参考:
- SD1.5 LoRA:6GB 显存可训(开启各种省显存选项如 gradient checkpointing、8bit Adam),常见 8GB/12GB 卡很轻松。一个 20~30 图的角色 LoRA,通常 30 分钟~1.5 小时。
- SDXL LoRA:建议 12GB 以上(16GB 更舒适),1024 分辨率耗时明显更长,可能 1~3 小时。
- Flux LoRA:资源消耗最大,虽有 8GB 优化方案但速度慢、设置复杂。
没有显卡或显存不足?可以用云端方案:RunDiffusion、ThinkDiffusion、MimicPC、阿里云 PAI ArtLab 等都提供在线 kohya 训练环境;Google Colab 也有现成 notebook。按小时付费,训练完即停,对偶尔训一次的人很划算。
十一、训练工具:kohya_ss 实操要点
社区事实标准是 kohya_ss(带 GUI),它把命令行训练脚本封装成可视化界面。基本流程:
- 安装 kohya_ss GUI,准备好图片文件夹。
- 用 Utilities → Captioning → WD14/BLIP 自动打标,再人工修正、加触发词。
- 按 kohya 要求建好数据集目录结构(文件夹名形如
N_触发词,N 是 repeats 重复次数)。 - 在 LoRA 标签页选好底模、设置上面表格里的超参,指定输出目录。
- 设置每隔几个 epoch 保存一次(便于挑最佳),开始训练。
- 训练结束后,把每个 epoch 的 LoRA 拿进 WebUI/ComfyUI 用同一组提示词出图对比,挑泛化最好的那个。
除了 kohya_ss,也有 OneTrainer、AI-Toolkit(尤其常用于 Flux)等工具,思路相通。
十二、常见坑清单
- 底模版本不匹配:用 SDXL 底模训、却拿到 SD1.5 里用,必然失败。训练与使用底模要对齐。
- 数据集堆量不堆质:大量重复/低质图只会过拟合,宁缺毋滥、宁多样勿单调。
- 打标方向反了:角色 LoRA 把长相也标出来,导致长相变得”可变”而不稳定。
- 触发词不统一或太常见:触发词要独特、且每张图标注一致,否则召回不出来。
- 只训一个 epoch 就用:没保存中间版本,结果不是欠拟合就是过拟合,无从挑选。
- 学习率拍脑袋拉很高:图崩、细节糊,先用保守值或自适应优化器。
- 用时权重一律给 1.0:很多 LoRA 在 0.7~0.8 才最自然。
十三、常见问答(FAQ)
Q:训练一个 LoRA 要准备多少张图?角色 15~40 张精选图即可,重点是多样性;画风可以更多。
Q:训练好的 LoRA 能用在别的底模上吗?同系底模(如都是 SD1.5)通常能用,但效果会有差异;跨大版本(SD1.5↔SDXL)不行。用通用底模训练泛化性更好。
Q:LoRA、LyCORIS、Dreambooth、Textual Inversion 有什么区别?它们都是定制化手段。Textual Inversion(embedding)只学一个新”词”,体积极小但能力有限;Dreambooth 接近全量微调,效果强但重;LoRA 是轻量微调的最佳平衡;LyCORIS 是 LoRA 的进阶变体(如 LoHa/LoKr),结构更灵活。
Q:为什么我的角色总是穿同一件衣服?典型的服装过拟合——数据里服装太单一,且打标时没把服装标出来。多准备不同服装的图,并在标注中写明服装。
十四、上手路线建议
给新手的路线:第一步,先学会用别人的 LoRA——去 Civitai 下一个角色 LoRA,搞懂触发词和权重调节,建立直觉;第二步,准备一个简单的角色数据集(20 张左右、姿势多样),用 SD1.5 底模 + kohya_ss 跑通你的第一个 LoRA;第三步,学会看样本图判断过/欠拟合并挑选最佳 epoch;第四步,尝试画风 LoRA,体会”打标策略相反”的差异;第五步,进阶到 SDXL/Flux,并研究自适应优化器、正则化等进阶技巧。
LoRA 真正动人的地方,是它把”训练一个 AI 模型”从科研机构的专利,变成了每个创作者都能在自家显卡上完成的事。当你第一次看到 AI 准确画出你设计的原创角色、复刻出你独有的笔触时,那种”我教会了 AI”的成就感是无可替代的。从用好一个 LoRA 开始,一步步走到训练出你的专属画风与角色,这条路并不远。
延伸阅读:Step-by-Step SD LoRA Training Guide with Kohya-SS、Detailed Stable Diffusion LoRA training guide、Thoughts on LoRA Training(Hugging Face)、kohya_ss GitHub。