Chapter 06

LoRA / Embedding / Hypernetwork

Checkpoint 定底子,LoRA 定特色——一个 Checkpoint + 几个 LoRA 是 SD 生态的"搭乐高"玩法。这章讲 LoRA 的原理、强度、触发词,叠加多个 LoRA 的技巧,以及 Embedding / Hypernetwork 这些轻量方案的定位。

一、为什么需要 LoRA:全量微调太贵

如果你想让 SD 学一个新角色(比如你家的猫),最朴素的办法是"全量微调":重新训练整个 U-Net。问题:

LoRA(Low-Rank Adaptation)的思路:不改原模型,在关键层旁边挂一组"低秩小矩阵",训练时只更新这组小矩阵。数学上:

原 Attention 层权重:W (比如 1280×1280 = 1.6M 参数) LoRA 分解:ΔW = A × B A: 1280×r (r = rank,通常 4-128) B: r×1280 r=16 时,A+B 共 40960 参数,是 W 的 2.5% 推理时:输出 = (W + α × A × B) × x (α 是强度) 训练时:只更新 A, B,W 冻结

产出一个几 MB - 几百 MB 的 LoRA 文件,加载时叠加到 base checkpoint 上——小、便于分享、可叠加。

二、ComfyUI 里加载 LoRA

Load Checkpoint ──MODEL──▶ Load LoRA ──MODEL──▶ KSampler ──CLIP ──▶ Load LoRA ──CLIP ───▶ CLIP Text Encode ──VAE──────────────────────────▶ VAE Decode │ strength_model = 0.8 strength_clip = 0.8 lora_name = miku_v2.safetensors

Load LoRA 节点把 MODEL 和 CLIP 都"叠加上"LoRA 的影响:

串联多个 LoRA

Load Checkpoint ──▶ Load LoRA #1(character, 0.8) ──▶ Load LoRA #2(style, 0.6) ──▶ Load LoRA #3(lighting, 0.4) ──▶ KSampler

LoRA Loader 可以串联任意多个——上一个的 MODEL/CLIP 输出接下一个的输入。

叠加多个 LoRA 的风险
3 个以上 LoRA 容易"打架"——画面变糊、配色崩、细节乱。诊断方法:逐个 LoRA 把 strength 调到 0,看画面变化,找出是哪个造成问题。多 LoRA 的安全区:每个强度 0.6-0.8,总和 ≤ 2.5。

三、LoRA 分类:你会在 Civitai 看到这些标签

Character LoRA(角色)
学某个具体角色的样貌(动漫角色、明星)。触发词通常是角色名。强度 0.7-0.9。
Style LoRA(画风)
学某种艺术风格(水彩、油画、某画师)。触发词可能是 by [artist name]。强度 0.5-0.8。
Concept LoRA(概念)
学一个抽象概念(如"机甲少女"、"蒸汽朋克")。强度 0.5-0.7。
Clothing / Object LoRA
学特定服装(如"明末汉服")、道具(特定武器)。强度 0.6-0.9。
Pose LoRA(姿态)
学固定动作(侧躺、蹲姿)。强度 0.5-0.8。
Slider LoRA(滑块)
双向控制某个连续属性(年龄、胖瘦、表情强度)。负权重 = 反方向,可以 -2.0 到 +2.0。
Detail Tweaker(细节增强)
通用"加锐"LoRA,没有特定概念,加 0.3-0.5 强度提升整体细节。著名的有 "add_detail"。
LCM / Turbo LoRA(加速)
不改风格,把任意 checkpoint 变成"4-8 步就能出图"——见第七节。

四、触发词:LoRA 的激活钥匙

大部分 LoRA 需要你在 prompt 里显式写出触发词才会起作用——否则它就"沉睡"着。查触发词两个地方:

例子:Hatsune Miku LoRA,触发词 "hatsune miku"

prompt 里必须写:
1girl, solo, hatsune miku, blue hair, twin tails, ...

如果忘写,加载了 LoRA 但画面还是普通女孩——LoRA 没被激活。
有些 LoRA 不需要触发词
——整个模型每次都激活(比如 detail tweaker 类)。Civitai 页面写着 "No trigger word needed" 或触发词字段为空。这类 LoRA 加载时直接起效。

五、LyCORIS 家族:LoRA 的变种

LyCORIS(LoRA beyond Conventional methods)是一组扩展格式,在原 LoRA 基础上改进:

类型特点文件大小
LoRA(原版)只改 attention 的 Q/K/V10-200 MB
LoCon同时改卷积层略大
LoHA用 Hadamard 积分解,参数量更省更小
LoKrKronecker 积分解更小
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 对比

维度EmbeddingLoRA
文件大小几 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 / 批量预览时必装

类似家族:

八、多 LoRA 叠加技巧

1. 强度总和控制

经验公式:所有 LoRA 的 strength 之和 ≤ 2.5。超了画面开始糊。

2. 同类型 LoRA 互斥

两个 character LoRA 叠加 = 人物样貌混血(可能好看也可能崩),两个 style LoRA 叠加 = 风格融合(通常能用)。

3. LoRA 分层加载(进阶)

custom node LoRA Loader (Block Weight) 可以指定 LoRA 只作用于 U-Net 的某些层:

某些 character LoRA 只开 OUT 层可以保面部但不锁姿态,拓展性变大。

4. AND 语法分区 LoRA

配合第 5 章的 ConditioningSetArea,可以做到"画面左半用角色 A 的 LoRA,右半用角色 B 的 LoRA"——双人合照的工业方案。

九、触发 LoRA 但感觉没用?排查清单

  1. 模型架构不匹配:SD1.5 LoRA 加载不到 SDXL 上,反之亦然。Civitai 页面看 Base Model 字段必须匹配
  2. Pony LoRA 加到普通 SDXL:Pony LoRA 必须配 Pony base。反过来 SDXL LoRA 给 Pony 用也崩
  3. strength 设成 0:常见误操作,检查节点参数
  4. 触发词漏写或拼错:trigger 是 "sci_fi_suit" 你写成 "scifi suit" 没用
  5. LoRA 文件损坏:下载不完整——Civitai 右键复制下载链接,用 aria2 重下
  6. CLIP 分支没接:Load LoRA 节点的 CLIP 输出要接到 CLIP Text Encode,忘连就只有半效
  7. Flux 用 SDXL LoRA:Flux 生态有专属 LoRA(flux-lora-*),不通用

十、自己训 LoRA 的最短路径

几句话版——真要训练用专门工具 Kohya_ss / OneTrainer / Fluxgym:

  1. 准备 15-50 张训练集:同一角色/风格,分辨率一致,每张自动打标(WD14 tagger)
  2. 选 Base Model:SDXL Base 1.0(最通用)或匹配你下游用的 checkpoint
  3. 参数:rank=32,alpha=16,learning_rate=1e-4,epochs=10-20,batch=2
  4. 训练:24GB 4090 上 SDXL LoRA 30 张数据约 30-60 分钟
  5. 验证:每 5 epoch 存一个,用相同 prompt+seed 对比选最好的
Flux LoRA 训练的好消息
2024 底起 ai-toolkitfluxgym 让 Flux LoRA 训练平民化——12GB 显卡可训,1 小时出一个不错的 character LoRA。Flux LoRA 的风格化能力远超 SDXL LoRA。

十一、反模式

  1. LoRA 强度拉到 1.5+ 硬加:画面糊/偏色。降回 0.7-0.9,配合好 prompt。
  2. 叠 5+ 个 LoRA:互相打架。2-3 个是甜点。
  3. 忘写触发词:加载了等于没加载。
  4. Pony LoRA + SDXL 通用 base:不兼容。
  5. 负向用长串 embedding:SDXL 上效果有限,SD1.5 才真正吃这套。
  6. 下的 LoRA 不删:硬盘很快 100GB+。3 个月没用的删掉,要用再下。
  7. Character LoRA 强度 1.0 全程:在 img2img/inpaint 里 1.0 会锁死构图,改 0.5-0.7 更灵活。
  8. 不记 LoRA 触发词:文件名必须带关键信息。

十二、本章小结

记住:
① LoRA = 低秩微调,不改 base 只挂"侧枝"——可叠加、可分享、大小可控。
② 触发词必写,强度 0.6-0.9 起步,总和不超 2.5。多 LoRA 冲突时逐个 debug。
③ LyCORIS/LoCon/LoHA 是 LoRA 的变种,ComfyUI 统一加载,不用特别关心。
④ LCM/Hyper-SD/Turbo LoRA 是"加速类"——任何 checkpoint 变 4-8 步出图,批量/实时场景必备。