一、为什么需要 LoRA:全量微调太贵
如果你想让 SD 学一个新角色(比如你家的猫),最朴素的办法是"全量微调":重新训练整个 U-Net。问题:
- SDXL 全量微调要 24GB VRAM + 几十个小时
- 产出一个 6GB 的新 Checkpoint,想换角色就换 6GB
- 你家猫和朋友家狗想叠加? Checkpoint 不能叠,必须重训
LoRA(Low-Rank Adaptation)的思路:不改原模型,在关键层旁边挂一组"低秩小矩阵",训练时只更新这组小矩阵。数学上:
产出一个几 MB - 几百 MB 的 LoRA 文件,加载时叠加到 base checkpoint 上——小、便于分享、可叠加。
二、ComfyUI 里加载 LoRA
Load LoRA 节点把 MODEL 和 CLIP 都"叠加上"LoRA 的影响:
strength_model——U-Net 上 LoRA 的强度,1.0 是完整叠加strength_clip——Text Encoder 上 LoRA 的强度,很多 LoRA 这个设 0 也行,因为训练时 CLIP 没动
串联多个 LoRA
LoRA Loader 可以串联任意多个——上一个的 MODEL/CLIP 输出接下一个的输入。
3 个以上 LoRA 容易"打架"——画面变糊、配色崩、细节乱。诊断方法:逐个 LoRA 把 strength 调到 0,看画面变化,找出是哪个造成问题。多 LoRA 的安全区:每个强度 0.6-0.8,总和 ≤ 2.5。
三、LoRA 分类:你会在 Civitai 看到这些标签
by [artist name]。强度 0.5-0.8。四、触发词:LoRA 的激活钥匙
大部分 LoRA 需要你在 prompt 里显式写出触发词才会起作用——否则它就"沉睡"着。查触发词两个地方:
- Civitai LoRA 页面的"Trigger Words"字段
- ComfyUI 加载 LoRA 后,很多 custom node 能自动读出触发词(如
LoRA Info节点)
例子:Hatsune Miku LoRA,触发词 "hatsune miku"
prompt 里必须写:
1girl, solo, hatsune miku, blue hair, twin tails, ...
如果忘写,加载了 LoRA 但画面还是普通女孩——LoRA 没被激活。
——整个模型每次都激活(比如 detail tweaker 类)。Civitai 页面写着 "No trigger word needed" 或触发词字段为空。这类 LoRA 加载时直接起效。
五、LyCORIS 家族:LoRA 的变种
LyCORIS(LoRA beyond Conventional methods)是一组扩展格式,在原 LoRA 基础上改进:
| 类型 | 特点 | 文件大小 |
|---|---|---|
| LoRA(原版) | 只改 attention 的 Q/K/V | 10-200 MB |
| LoCon | 同时改卷积层 | 略大 |
| LoHA | 用 Hadamard 积分解,参数量更省 | 更小 |
| LoKr | Kronecker 积分解 | 更小 |
| DyLoRA | 动态 rank,推理时可调 | — |
ComfyUI 统一用 Load LoRA 节点加载所有这些(原生支持),你不用关心具体格式——放 models/loras/ 就行。
六、Embedding(Textual Inversion)
比 LoRA 更轻——只在 CLIP 里学一个新"词向量",U-Net 完全不动。几 KB 到几百 KB。
ComfyUI 里使用
放到 models/embeddings/,在 prompt 里用 embedding:文件名 调用:
正向:
1girl, embedding:easynegative_inverse, long hair, ...
负向(embedding 最常用场景):
embedding:easynegative, embedding:bad-hands-5, blurry
Embedding vs LoRA 对比
| 维度 | Embedding | LoRA |
|---|---|---|
| 文件大小 | 几 KB-几百 KB | 几 MB-几百 MB |
| 学习能力 | 只学 CLIP 能表达的概念 | 学 U-Net 权重,能力强 |
| 典型场景 | 负向模板、抽象概念 | 角色、风格、物体 |
| 训练难度 | 容易 | 中等 |
| 2025 主流度 | 下降 | 绝对主流 |
实话:2025 年 Embedding 用得越来越少,LoRA 几乎替代。主要还活跃在"通用负向模板"场景(easynegative, verybadimagenegative)。
七、LCM LoRA / Turbo LoRA(加速神器)
这是 2024 出现的特殊类型——不改画风,把任何 SDXL checkpoint 变成 4-8 步出图。原理是把"蒸馏模型"的知识打包成 LoRA。
LCM LoRA 使用:
1. Load Checkpoint(任意 SDXL)
2. Load LoRA(lcm-lora-sdxl.safetensors,strength_model=1.0)
3. KSampler:
sampler = lcm
scheduler = sgm_uniform
steps = 4-8
cfg = 1.0-2.0
实测数据:Juggernaut XL + LCM LoRA,8 步出图耗时从 6s → 1.2s,质量损失肉眼可忽略。做实时 demo / 批量预览时必装。
类似家族:
- Hyper-SD LoRA:字节跳动出品,1/2/4/8 步版本,质量比 LCM 略好
- DMD2 LoRA:更新的蒸馏方法,4 步质量接近原 25 步
- Flux-Schnell 不需要 LoRA——它本身就是蒸馏版,4 步直跑
八、多 LoRA 叠加技巧
1. 强度总和控制
经验公式:所有 LoRA 的 strength 之和 ≤ 2.5。超了画面开始糊。
2. 同类型 LoRA 互斥
两个 character LoRA 叠加 = 人物样貌混血(可能好看也可能崩),两个 style LoRA 叠加 = 风格融合(通常能用)。
3. LoRA 分层加载(进阶)
custom node LoRA Loader (Block Weight) 可以指定 LoRA 只作用于 U-Net 的某些层:
- IN (encoder) 层——影响构图
- MID 层——影响语义
- OUT (decoder) 层——影响细节
某些 character LoRA 只开 OUT 层可以保面部但不锁姿态,拓展性变大。
4. AND 语法分区 LoRA
配合第 5 章的 ConditioningSetArea,可以做到"画面左半用角色 A 的 LoRA,右半用角色 B 的 LoRA"——双人合照的工业方案。
九、触发 LoRA 但感觉没用?排查清单
- 模型架构不匹配:SD1.5 LoRA 加载不到 SDXL 上,反之亦然。Civitai 页面看 Base Model 字段必须匹配
- Pony LoRA 加到普通 SDXL:Pony LoRA 必须配 Pony base。反过来 SDXL LoRA 给 Pony 用也崩
- strength 设成 0:常见误操作,检查节点参数
- 触发词漏写或拼错:trigger 是 "sci_fi_suit" 你写成 "scifi suit" 没用
- LoRA 文件损坏:下载不完整——Civitai 右键复制下载链接,用 aria2 重下
- CLIP 分支没接:
Load LoRA节点的 CLIP 输出要接到CLIP Text Encode,忘连就只有半效 - Flux 用 SDXL LoRA:Flux 生态有专属 LoRA(flux-lora-*),不通用
十、自己训 LoRA 的最短路径
几句话版——真要训练用专门工具 Kohya_ss / OneTrainer / Fluxgym:
- 准备 15-50 张训练集:同一角色/风格,分辨率一致,每张自动打标(WD14 tagger)
- 选 Base Model:SDXL Base 1.0(最通用)或匹配你下游用的 checkpoint
- 参数:rank=32,alpha=16,learning_rate=1e-4,epochs=10-20,batch=2
- 训练:24GB 4090 上 SDXL LoRA 30 张数据约 30-60 分钟
- 验证:每 5 epoch 存一个,用相同 prompt+seed 对比选最好的
2024 底起
ai-toolkit 和 fluxgym 让 Flux LoRA 训练平民化——12GB 显卡可训,1 小时出一个不错的 character LoRA。Flux LoRA 的风格化能力远超 SDXL LoRA。
十一、反模式
- LoRA 强度拉到 1.5+ 硬加:画面糊/偏色。降回 0.7-0.9,配合好 prompt。
- 叠 5+ 个 LoRA:互相打架。2-3 个是甜点。
- 忘写触发词:加载了等于没加载。
- Pony LoRA + SDXL 通用 base:不兼容。
- 负向用长串 embedding:SDXL 上效果有限,SD1.5 才真正吃这套。
- 下的 LoRA 不删:硬盘很快 100GB+。3 个月没用的删掉,要用再下。
- Character LoRA 强度 1.0 全程:在 img2img/inpaint 里 1.0 会锁死构图,改 0.5-0.7 更灵活。
- 不记 LoRA 触发词:文件名必须带关键信息。
十二、本章小结
① LoRA = 低秩微调,不改 base 只挂"侧枝"——可叠加、可分享、大小可控。
② 触发词必写,强度 0.6-0.9 起步,总和不超 2.5。多 LoRA 冲突时逐个 debug。
③ LyCORIS/LoCon/LoHA 是 LoRA 的变种,ComfyUI 统一加载,不用特别关心。
④ LCM/Hyper-SD/Turbo LoRA 是"加速类"——任何 checkpoint 变 4-8 步出图,批量/实时场景必备。