⬡ 节点流学园

🖼️ 03-核心工作流

LoRA:轻量插件的加载与叠加

核心lora插件风格叠加

一句话定义

LoRA(Low-Rank Adaptation)= 给大模型打的小补丁文件(10-500MB):不动底模,只插入少量低秩矩阵,就能教会它一个新角色、一种画风或一个概念——ComfyUI 用 LoraLoader 串在模型链上即插即用。

为什么重要

生态里 90% 的"特定能力"(某明星脸、某游戏画风、某品牌商品)以 LoRA 形式分发;它也是个人定制最现实的入口(不用训练大模型,只需收集/训练小补丁)。

前置知识

模型文件与目录组织(loras 目录)、KSampler 全参数解剖:seed/steps/cfg/denoise(采样参数)。

核心概念

  • LoraLoader 节点:输入 MODEL+CLIP,输出改造后的 MODEL+CLIP;参数 strength_model / strength_clip(常用 0.6-1.0,负值反向削弱)。
  • 链式叠加:多个 LoraLoader 串联,各自带权重;串联顺序对结果有影响(后挂的在前者的修改上继续改)。
  • 触发词:多数 LoRA 需要 prompt 中出现特定触发词(如 lora_name_style)才生效——模型页会写明(模型资源获取与社区);风格 LoRA 常自动生效,人物 LoRA 几乎必带触发词。
  • 家族匹配:LoRA 必须与底模同家族同代(SD1.5 LoRA 不能用在 SDXL;Flux LoRA 用 LoraLoaderModelOnly,Flux 无 CLIP 微调)。

原理与机制

大模型的权重矩阵 W(数千维)被视为"冻结底模 + 低秩增量":ΔW = A×B,A、B 是秩 r 很小(常见 8-128)的矩阵,参数量只占底模 0.1%-1%。推理时 W' = W + s·ΔW(s 为 strength)。文件小、加载快、可插拔,皆源于此。

MODEL ─▶ [LoraLoader A: 0.8] ─▶ [LoraLoader B: 0.5] ─▶ KSampler
CLIP  ─▶ [   └── 同步修改 ──┘ ]                    ─▶ Text Encode

直观类比

底模是科班出身的画师,LoRA 是贴在显示器上的速成特训便签:一张便签教会他"只画这个角色",另一张教"这个游戏的光影"。便签可以叠,但叠太多画师会精神分裂(风格互相污染);便签内容必须和画师"同一门派"(家族匹配)。

实例与案例

常见误区

  • strength 拉满当开关用:1.2+ 常出现色彩污染、画面崩坏;先 0.7 扫掠,再定值。
  • 跨家族混用:SD1.5 LoRA 挂 SDXL 底模要么报错要么出垃圾;同家族同代是铁律。
  • 多个风格 LoRA 硬叠:权重各 1.0 的三个风格必互相打架;总权重预算意识(接近 1.0 的量级分配)。
  • 忘触发词:人物 LoRA 不写触发词 = 没挂;效果异常时先查触发词与权重。
  • Flux LoRA 用错加载器:普通 LoraLoader 会试图改 CLIP(Flux 的 CLIP 路不适用),用 ModelOnly 版本(Flux 架构与工作流:cfg=1 的新物种)。

自测题

  1. LoRA 为什么只有几十 MB?数学上做了什么?
  2. strength_model 与 strength_clip 分别控制什么?何时二者要不同值?
  3. 三个风格 LoRA 叠加的总权重策略?
  4. Flux 底模挂 LoRA 应该用哪个节点?为什么?
参考答案
  1. 只存低秩增量 ΔW=A×B,r 很小,参数量为底模的 0.1%-1%;推理时 W+s·ΔW。
  2. model 控制图像生成侧的风格/内容影响;clip 控制文本编码侧的触发词响应;只影响画面不涉及词响应时可调低或用 ModelOnly。
  3. 设总预算(如 ≤1.2),主风格 0.6、辅风格各 0.3 量级,配合 X/Y 扫掠定值。
  4. LoraLoaderModelOnly;Flux 的文本编码器是外挂 CLIP+T5,一般不由该 LoRA 修改。

与其他知识点的关系

延伸阅读

前置知识

模型文件与目录组织KSampler 全参数解剖:seed/steps/cfg/denoise

关联知识点

模型资源获取与社区案例研究:电商商品图生产管线CLIP 与条件编码:文字如何变成方向