目录

Lora 模型微调指南:基于 Stable Diffusion 的落地路径

一开始我其实对“微调”是没什么感觉的,尤其是在玩 Stable Diffusion 的时候,感觉模型够用,Prompt 写得好就行。但后来想生成一些特定风格人物或者 Logo、私有领域图像,怎么写 prompt 都绕不出来。这时候你就知道:自己训一个 Lora,比在网上翻模型翻到天荒地老要高效得多。

但训练这个东西,真不是点点按钮那么简单。你要考虑硬件资源、数据清洗、训练稳定性,甚至部署推理怎么接到你的 WebUI 上,里面的坑不踩一轮根本不知道哪里有问题。


我第一次训练 Lora 模型踩了个很常见的坑——图像和文本描述完全不对应。比如图里是卡通人物,prompt 却是“girl with blue eyes”,结果训练出来生成图全跑偏。

建议你这么搞:

  • 图像数据量:一般建议 100~300 张图片,分辨率统一(比如512x512)
  • 对应的文本:用 BLIP 自动生成 caption,再人工修改、过滤
  • 环境配置:直接基于 text-generation-webui部署最新教程 中配置的环境来搞,避免乱装库导致训练报错

关于硬件,我是在单张 4090上训练的,8GB 显存其实也能搞,但你得调 batch size 和精度,别上来就 float32。

cuda信息查看nvida-smi


我不建议一开始就瞎调。你可以先从别人共享的 LoRA config 文件入手(.json),比如以下这些参数组合就比较稳妥:

learning_rate = 1e-4
batch_size = 2
num_epochs = 10
rank = 8

其中 rank 是 Lora 的核心超参数,控制模型变化程度,数值越大改动越多,也越容易 overfit。

  1. 分辨率给我锁死512x512

    • SD1.5模型非512必崩!亲测用600x800训练,10张图里有8张人体扭曲‌

    • ‌偷懒技巧

      ‌:直接写脚本批量改尺寸:

      pythonCopy Codefrom PIL import Image
      img = Image.open("xxx.jpg").resize((512,512))  # 暴力保命
  2. 权重别贪心!从0.6起步

    • 新手最容易犯的错:一上来权重拉满1.0,结果生成的人脸像被卡车碾过
    • 个人经验‌:风格类Lora(比如水墨风)权重0.6-0.8,人物类0.75-0.9,超过0.95大概率崩图‌
  3. 触发词必须带专属前缀

    • 训练时没加触发词?完蛋!模型根本认不出你的LoRA
    • 实战配方‌:用char_XX_style这类独有前缀(例:hanfu_girl_),别用beautiful girl这种烂大街词‌

(以8G显存显卡+人物训练为例)

参数项推荐值翻车警告
Rank (秩)8-16设32跑出赛博朋克蟑螂人,重训3次才明白不是越高越好‌7
AlphaRank的1~1.5倍试过Alpha=32(Rank=8),结果衣服纹理糊成油画‌4
学习率(LR)UNET: 1e-4 文本编码器: 5e-6文本编码器LR过高会导致提示词失灵,生成清朝僵尸‌3
Batch Size1 (配合梯度累积4步)硬开batch=4?显存直接炸烟花💥

显存省流技巧‌:

bashCopy Code# 8G显存救命配置(直接写进启动参数)
--mixed_precision=fp16 --gradient_checkpointing --xformers

实测不开xformers,3060显卡跑5000步要多花2小时!‌


被机甲LoRA变成紧身衣坑过3次后总结

  1. 开启分层调试

    • 在提示词后缀加 :lora_block_weight(‌**没这个冒号插件不认!**‌)‌
    • XYZ图表里勾选 变换XY轴 + 高效分析器
  2. 26层分配玄学

    层级类型权重适用部位
    核心层0.9-1人脸/机甲关节/武器细节
    边缘层0.5-0.7服装花纹/背景建筑物
    污染层0-0.3关掉!否则冒出迷之蕾丝边‌
  3. 快速定位污染层‌ 生成测试图时看哪层让机甲冒粉色花边 → 直接权重归零,亲测省掉80%调试时间‌


  1. 偷懒正则法

    • 不想准备20张正则图?直接用civitai下载的‌同类模型生成图‌当正则集
    • 实测效果:人物Lora用20张动漫头像,比官方推荐的真实照片还好使‌
  2. 动态权重法‌ 在训练中途(约1/3步数)把权重从1.0降到0.7,避免模型死记硬背:

    pythonCopy Codeif global_step > total_steps//3:
        lora_weight *= 0.7  # 暴力防过拟合
  3. 标签污染术‌ 每张图标注时‌故意塞1个错误标签‌(比如机甲图里写flowery dress),让模型学会抗干扰‌

    其它:

  4. 多Lora融合口诀

    • 权重相加≤1.2(例:人物0.7 + 汉服0.5=1.2)
    • 翻车现场‌:试过古风+赛博权重1.8,产出克苏鲁新娘‌
  5. 测试阶段避坑

    • 出现马赛克?立即降Rank值(从16→8)
    • 颜色失真?检查是否开了--no_half_vae(FP16精度问题)
  6. 模型救不活怎么办‌ 把翻车LoRA权重调到0.3,再叠另一个同类型LoRA(废物利用大法)


如果你训练完一个 LoRA checkpoint(.safetensors 格式),你要部署到自己的 WebUI/ComfyUI 是两码事:

  • WebUI:放到 models/Lora/ 目录下,然后 UI 中加载即可
  • ComfyUI:需要手动建节点或用社区 Workflow 加载,自定义性强但对新手不友好

这里我推荐你先看下之前写的 Stable Diffusion 快速入门到精通,那篇文章里面写得很清楚模型怎么加载、管理和切换。


  1. 内存泄露(OOM)问题:多次训练反复运行 notebook,GPU 没释放干净。建议用 nvidia-smi + kill -9 干掉残留进程。
  2. 图像风格崩溃:Lora 训练图片不统一,导致风格“散”。最好图片来源一致,caption 一致性也要控制。
  3. 保存模型失败:大概率是路径问题,特别是 Windows 用户,一定要用绝对路径或者检查目录是否存在。

这个部分之后我会单独出文章细讲,但简单分享下成果:

  • “柴犬表情包 LoRA”:用了 120 张图,rank=8,效果极好,prompt 非常收敛。
  • “古风美女水墨风”:训练图 300 张,caption 统一为“traditional Chinese ink style portrait”,有一定泛化能力。

如果你是普通 AI 绘画爱好者,Lora 微调是你打破模型局限的“密钥”。

不是每个人都要搞训练,但你得知道怎么玩出来的是你自己的风格,这种“调教感”是用别人的模型永远体验不到的。

相关内容