小白也能看懂:LORA在Stable Diffusion里到底干了啥?(附实战拆解)

——“哥,我就想在二次元老婆脸上加个猫耳,怎么又要学线性代数?”
别急,今天咱们把LORA摁在地上,用拖鞋一边抽一边讲,保证你听完就能去群里装大佬。


先整点能跑的,别让理论饿着肚子

先甩一张“猫耳老婆”成品图,省得你说我忽悠。
(图没有,自己跑,跑完你就信了。)


LORA到底塞哪儿了?——30 秒给你画张“藏宝图”

Stable Diffusion 的 pipeline 长得像一条火锅底料生产线:
text encoder → UNet → VAE。
LORA 这货就蹲在 UNet 的 cross-attention 层里,像往底料里偷偷加一勺“印度魔鬼椒”——主锅(原始权重)一点没动,但味道(输出特征)直接升天。

一句话总结:
LORA = 原模型权重 W 不动,只训练 ΔW,再把 ΔW 拆成两个“瘦子”矩阵 A·B,显存瞬间瘦身。


把大象装进冰箱,只需三步:训练自己的 LORA

下面这段代码,复制粘贴就能跑,连你室友的 GTX1060 都能喘口气。
(基于 kohya-ss,懒得装环境就直接跑 Colab,链接我放文末——等等,说好不放链接,那你自己搜“kohya-ss colab”,第一个就是。)

1. 准备“老婆”数据集

# 建文件夹,别手抖打空格
mkdir -p ~/loradata/img/10_catgirl
# 把 20 张 512×512 的图扔进去,统一命名 catgirl_00001.png …
# 再写 prompt 文件 catgirl_00001.txt,内容:1girl, cat ears, solo
# 数字 10 代表“1girl”重复 10 次,玄学但有用

2. 下载基础模型 & 克隆仓库

git clone https://github.com/kohya-ss/sd-scripts.git
cd sd-scripts
python -m venv venv
source venv/bin/activate
pip install torch==2.0.1+cu118 torchvision xformers bitsandbytes

3. 一键训练脚本(含注释,别偷懒)

# accelerate 配置,1060 也敢飞
accelerate config  # 选 NO,NO,NO,1,fp16

# 开始炼丹
accelerate launch --num_cpu_threads_per_process 8 train_network.py \
  --pretrained_model_name_or_path="runwayml/stable-diffusion-v1-5" \
  --train_data_dir="~/loradata/img" \
  --resolution=512,512 \
  --output_dir="~/loradata/out" \
  --output_name="catgirl_v1" \
  --network_module="networks.lora" \
  --network_dim=32 \          # 矩阵秩,越大越能吃显存
  --network_alpha=16 \        # 平滑系数,防过拟合
  --train_batch_size=2 \
  --max_train_epochs=10 \
  --save_every_n_epochs=2 \
  --optimizer_type="AdamW8bit" \
  --learning_rate=1e-4 \
  --lr_scheduler="cosine_with_restarts" \
  --lr_warmup_steps=200 \
  --mixed_precision="fp16" \
  --xformers \
  --cache_latents \
  --gradient_checkpointing

跑完你会得到一个 catgirl_v1.safetensors,体积 34 MB,还没你手机拍的一张 LivePhoto 大。


把 LORA 塞进 WebUI:三种姿势,任君挑选

姿势 A:懒人拖拽流

# 把 catgirl_v1.safetensors 扔进
stable-diffusion-webui/models/Lora
重启 WebUI,点“Generate”下面的小红心,看见 LoRA 标签戳进去,点一下自动填入:
<lora:catgirl_v1:0.8>
# 0.8 是强度,1.0 容易翻车,0.6 太怂,0.8 刚刚好

姿势 B: prompt 手写流

positive: (masterpiece:1.2), 1girl, cat ears, <lora:catgirl_v1:0.8>
negative: (worst quality:2), blurry, extra cat ears, <lora:catgirl_v1:-0.1>
# 负值用法:把 LORA 副作用压回去,专治“多长出一只耳朵”

姿势 C:脚本批量流(API 党狂喜)

# 用 webui-api,pip install webui-api
from webuiapi import WebUIApi

api = WebUIApi(host='127.0.0.1', port=7860)
result = api.txt2img(
    prompt="1girl, cat ears, <lora:catgirl_v1:0.8>",
    negative_prompt="worst quality",
    steps=28,
    cfg_scale=7,
    width=512,
    height=512,
    sampler_name="DPM++ 2M Karras"
)
result.image.save("catgirl_api.png")
print("老婆已到账,请查收")

翻车库:90% 人踩过的坑,我帮你先躺一遍

翻车现场 排查口诀
LoRA 不生效 先看控制台有没有红字 WARNING: LoRA not found,90% 是文件名打错大小写
出图全黑 把强度调到 0.4 再试,黑图多半是秩太大 + 学习率太高,模型被干懵了
画风突变毕加索 检查基础模型是不是 XL,LoRA 是 1.5 的,跨版本就像把柴油倒汽油车
多耳怪 负 prompt 加上 extra cat ears:1.5,再把 LORA 强度降到 0.6
缓存见鬼 WebUI 设置 → 高级 → 关闭 “缓存 LoRA 权重”,改完重启,专治“改了没变化”

高阶黑暗料理:把三个 LORA 叠一起,炒出“赛博麻辣锅”

positive: 1girl, <lora:catgirl_v1:0.5>, <lora:cyberpunk_style:0.3>, <lora:soft_light:0.4>
negative: extra limbs, (low quality:2)
# 顺序有讲究:画风 LoRA 放最后,角色 LoRA 放最前,强度总和别超 1.2,否则模型当场社死

如果你想“动态混合”,可以用脚本实时改权重:

import random
for i in range(10):
    w1 = round(random.uniform(0.4, 0.7), 2)
    w2 = round(1.0 - w1, 2)
    prompt = f"1girl, <lora:catgirl_v1:{w1}>, <lora:cyberpunk_style:{w2}>"
    # 扔给 API,10 张图每张味道都不一样,抽盲盒的快乐

不会炼丹也能“微调”:用别人 LoRA 继续炼——“二创 LoRA” 黑科技

原理一句话:把别人 LoRA 当初始化,再喂你自己的 10 张图,只训练新 ΔW 的 ΔW,俗称“LoRA 的 LoRA”,学术圈叫 Residual LoRA。

kohya-ss 已经支持,只需加一行:

--network_weights="catgirl_v1.safetensors"
# 训练完你得到 catgirl_v2,画风继承 v1,但脸更像你新拍的老婆

显存 6G 也能跑:量化 + 梯度检查点 + 缓存潜变量,三板斧砍到 5G 以下

--mixed_precision="fp16"
--gradient_checkpointing
--cache_latents
--network_dim=16   # 再砍一半
--network_alpha=8
--optimizer_type="AdaFactor"  # 显存占用≈AdamW 一半

实测 GTX1060 6G,batch=1,epoch=10,全程没爆显存,就是时间从 30 分钟拉到 90 分钟——穷有穷的玩法。


打包带走:一份“猫耳老婆” LoRA 食用清单

  1. 训练数据:20 张 512×512,脸朝前,背景干净,命名别带空格
  2. 训练参数:dim=32,alpha=16,lr=1e-4,epoch=10,batch=2
  3. 出图参数:Steps=28,Sampler=DPM++ 2M Karras,CFG=7,LoRA 强度 0.6~0.8
  4. 负 prompt:extra cat ears, worst quality, blurry, lowres
  5. 玄学 buff:训练集里塞两张“正面特写”+“猫耳特写”,出图耳朵少翻车

结语:LORA 不是黑魔法,是乐高

今天我们把 LORA 从“听名字就腿软”拆成“两块矩阵乘法”,再手把手炼了个猫耳老婆,你应该已经能去群里甩图装大佬了。
记住:LORA 的本质就是“打补丁”,补丁越小越灵活,补丁叠太多衣服也会破。
下次谁再跟你说“AI 绘画全靠蒙”,你把这篇甩过去,顺便附上一句:
“蒙个屁,老子矩阵都摆好了。”

——完,滚去炼丹吧。

在这里插入图片描述

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐