LoRA微调

LoRA(Low-Rank Adaptation)是一种轻量级的模型微调方法,只需少量资源就能训练出专属风格或角色。它是扩展SD能力最常用的方式。

预计阅读时间:45分钟·难度:中级

什么是LoRA

LoRA全称Low-Rank Adaptation,是一种参数高效的微调方法。它通过训练低秩分解矩阵来调整模型行为,而不需要修改原模型权重。

核心优势

  • 文件小:通常几十MB到几百MB,远小于完整模型
  • 训练快:只需几张图片,几小时即可训练
  • 可叠加:多个LoRA可以组合使用
  • 不破坏原模型:原模型保持不变,可随时切换
  • 社区资源丰富:Civitai等平台有海量LoRA资源

LoRA vs 完整微调

对比项LoRA完整微调
文件大小50-300MB2-6GB
训练数据5-50张数百张
训练时间1-4小时数天
显存需求8-12GB24GB+
可组合性支持不支持

技术原理

低秩分解

LoRA的核心思想是将权重更新分解为两个小矩阵的乘积:

  • 原模型权重 W 保持冻结
  • 训练两个小矩阵 A 和 B,使得 ΔW = B × A
  • 最终权重 = W + α × ΔW(α为缩放系数)
  • A和B的秩(rank)通常设为4-128

参数量对比

假设原始权重 W 是 1024×1024:

  • 完整权重参数:1024 × 1024 = 1,048,576
  • LoRA (rank=32):32 × (1024 + 1024) = 65,536
  • 参数减少约 94%

应用位置

LoRA可以应用于模型的不同部分:

  • Attention层:Q、K、V投影矩阵,最常用
  • MLP层:前馈网络层,效果更强
  • 文本编码器:CLIP文本编码器,增强概念理解
  • 全量应用:所有可训练层,效果最好但文件更大

💡 LoRA网络维度

  • Rank=4-16:简单概念,文件最小
  • Rank=32-64:平衡选择,最常用
  • Rank=128+:复杂概念,质量最高
  • • 维度越高效果越好,但文件越大

LoRA类型

按用途分类

风格LoRA(Style)
  • • 学习特定艺术风格(油画、水彩、动漫等)
  • • 训练数据:10-30张同风格图片
  • • 使用权重:0.6-1.0
角色LoRA(Character)
  • • 学习特定人物或角色
  • • 训练数据:15-50张多角度图片
  • • 使用权重:0.7-1.0
概念LoRA(Concept)
  • • 学习特定概念(服装、姿态、场景等)
  • • 训练数据:20-40张图片
  • • 使用权重:0.6-0.9

按兼容性分类

LoRA类型兼容模型说明
SD 1.5 LoRASD 1.5及其衍生最常见,资源最多
SDXL LoRASDXL系列专为SDXL设计
SD3 LoRASD3系列最新,资源较少

⚠️ 兼容性注意

不同版本的LoRA不能混用!SD 1.5的LoRA不能用于SDXL,反之亦然。使用前请确认LoRA对应的模型版本。

使用方法

基本使用

WebUI中使用:

  1. 将LoRA文件放入 models/Lora 目录
  2. 在界面中点击"Show Extra Networks"
  3. 选择需要的LoRA,点击应用
  4. 调整权重(建议从0.7开始)
  5. 生成图像

权重调节

权重范围效果适用场景
0.3-0.5轻微影响风格点缀
0.5-0.7中等影响平衡选择
0.7-0.9明显影响角色/风格为主
1.0+强烈影响精确还原(可能过拟合)

LoRA叠加

多个LoRA可以同时使用:

常见组合:

  • • 角色LoRA + 风格LoRA:特定角色 + 特定风格
  • • 角色LoRA + 服装LoRA:特定角色 + 特定服装
  • • 风格LoRA + 概念LoRA:特定风格 + 特定元素

建议总权重不超过1.5,避免效果过强导致图像异常

💡 使用技巧

  • • 从低权重开始测试,逐步提高
  • • 使用触发词(Trigger Words)确保效果
  • • 不同模型可能需要调整权重
  • • LoRA之间可能有冲突,需要测试最佳组合

训练指南

数据准备

训练图片要求:

  • 数量:15-30张(角色),20-40张(风格)
  • 分辨率:至少512×512,推荐更高
  • 质量:清晰、无水印、无文字
  • 多样性:不同角度、光线、背景
  • 一致性:风格LoRA需风格统一,角色LoRA需同一角色

训练参数

参数推荐值说明
Network Rank32-128复杂概念用高值
Network Alpha通常=Rank影响学习强度
Learning Rate1e-4 到 5e-4太大会过拟合
Epochs10-30根据损失调整
Batch Size1-4根据显存调整

训练工具

  • kohya_ss:最流行的训练GUI,功能全面
  • LoRA Trainer:WebUI插件,操作简单
  • Civitai LoRA Trainer:在线训练,无需本地资源

⚠️ 训练注意事项

  • • 保存多个checkpoint,便于选择最佳效果
  • • 定期测试,避免过拟合
  • • 为LoRA设置独特的触发词
  • • 遵守版权和许可规定

高级训练技巧

掌握这些技巧,训练出更高质量的LoRA。

数据集优化

图片质量标准:

  • 分辨率:至少512px,推荐1024px(SDXL)
  • 清晰度:无模糊、噪点、压缩伪影
  • 多样性:不同角度、光照、背景、表情
  • 一致性:风格LoRA需风格统一,角色LoRA需同一角色
  • 纯净度:无水印、文字、其他干扰元素

标注策略

触发词设计原则:

  • 独特性:使用不常见的词汇作为触发词
  • 描述性:触发词应与概念相关,便于记忆
  • 一致性:所有训练图片使用相同触发词
  • 位置:触发词放在描述的开头

示例:使用"ohwx style"作为风格LoRA的触发词

训练参数调优

参数角色LoRA风格LoRA概念LoRA
Rank64-12832-6432-64
Alpha=Rank=Rank/2=Rank
Learning Rate1e-45e-51e-4
Epochs15-2520-4010-20
图片数量20-5020-4030-60

防止过拟合

过拟合的迹象和解决方法:

  • 迹象:只能复现训练图,无法泛化到新场景
  • 降低学习率:从1e-4降到5e-5
  • 减少epochs:提前停止训练
  • 增加数据:添加更多多样化的训练图片
  • 降低rank:使用较小的网络维度

💡 训练质量检查

  • • 每5个epoch保存一次checkpoint
  • • 使用不同提示词测试泛化能力
  • • 检查在不同模型上的效果
  • • 确认无水印、签名等训练数据污染

LoRA变体技术

除了标准LoRA,还有多种变体技术可供选择。

主要变体对比

技术特点文件大小适用场景
LoRA最常用,资源丰富50-200MB通用
LoHa更小文件,强泛化20-80MB风格迁移
LoKr极小文件,快速5-30MB简单概念
DoRA效果更好,学习更快与LoRA相近高质量需求
Full Fine-tune最佳效果2-6GB专业训练

DoRA详解

Weight-Decomposed Low-Rank Adaptation:

  • 原理:将权重分解为幅度和方向两部分分别训练
  • 优势
    • - 学习效率更高,收敛更快
    • - 效果更接近全量微调
    • - 与LoRA兼容,可相互转换
  • 推荐:追求高质量时的首选方案

LyCORIS技术家族

LoHa和LoKr详解:

  • LoHa (Low-Rank Hadamard)
    • - 使用Hadamard乘积替代矩阵乘法
    • - 文件更小,泛化能力更强
    • - 适合风格迁移
  • LoKr (Low-Rank Kronecker)
    • - 使用Kronecker乘积
    • - 文件最小
    • - 适合简单概念

⚠️ 变体选择建议

  • 首选LoRA:通用性好,社区资源丰富
  • 选DoRA:追求更高质量,愿意尝试新技术
  • 选LoHa:需要小文件且强泛化
  • 选LoKr:简单概念,极致小文件

高级应用技巧

掌握LoRA的高级使用方法,发挥最大潜力。

LoRA融合

合并多个LoRA:

  • 工具:Supermerger插件、LoRA Merger
  • 方法:按权重比例融合多个LoRA为一个
  • 优势
    • - 减少显存占用
    • - 提高生成速度
    • - 固化常用组合
  • 注意:融合后的LoRA难以分离调整

分层权重控制

为不同层设置不同权重:

<lora:name:1.0:0.8:1.2>

格式:触发词:总权重:IN权重:OUT权重

  • IN层权重高:更注重结构和构图
  • OUT层权重高:更注重细节和纹理

与ControlNet协同

最佳组合实践:

  • 角色LoRA + OpenPose:确保角色一致性和正确姿态
  • 风格LoRA + Canny:风格迁移同时保持结构
  • 服装LoRA + Seg:精确控制服装区域
  • 权重平衡:LoRA权重0.6-0.8,ControlNet权重0.8-1.0

模型切换策略

不同基础模型的影响:

  • 原训练模型:效果最佳,完全按设计工作
  • 衍生模型:效果可能不同,需要测试调整
  • 不同架构:完全不兼容(SD1.5与SDXL)

💡 高级使用建议

  • • 建立个人LoRA库,按类型和风格分类
  • • 记录每个LoRA的最佳权重和触发词
  • • 测试不同基础模型下的效果
  • • 定期清理不常用的LoRA,保持高效
----