LoRA微调
LoRA(Low-Rank Adaptation)是一种轻量级的模型微调方法,只需少量资源就能训练出专属风格或角色。它是扩展SD能力最常用的方式。
预计阅读时间:45分钟·难度:中级
什么是LoRA
LoRA全称Low-Rank Adaptation,是一种参数高效的微调方法。它通过训练低秩分解矩阵来调整模型行为,而不需要修改原模型权重。
核心优势
- 文件小:通常几十MB到几百MB,远小于完整模型
- 训练快:只需几张图片,几小时即可训练
- 可叠加:多个LoRA可以组合使用
- 不破坏原模型:原模型保持不变,可随时切换
- 社区资源丰富:Civitai等平台有海量LoRA资源
LoRA vs 完整微调
| 对比项 | LoRA | 完整微调 |
|---|---|---|
| 文件大小 | 50-300MB | 2-6GB |
| 训练数据 | 5-50张 | 数百张 |
| 训练时间 | 1-4小时 | 数天 |
| 显存需求 | 8-12GB | 24GB+ |
| 可组合性 | 支持 | 不支持 |
技术原理
低秩分解
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 LoRA | SD 1.5及其衍生 | 最常见,资源最多 |
| SDXL LoRA | SDXL系列 | 专为SDXL设计 |
| SD3 LoRA | SD3系列 | 最新,资源较少 |
⚠️ 兼容性注意
不同版本的LoRA不能混用!SD 1.5的LoRA不能用于SDXL,反之亦然。使用前请确认LoRA对应的模型版本。
使用方法
基本使用
WebUI中使用:
- 将LoRA文件放入 models/Lora 目录
- 在界面中点击"Show Extra Networks"
- 选择需要的LoRA,点击应用
- 调整权重(建议从0.7开始)
- 生成图像
权重调节
| 权重范围 | 效果 | 适用场景 |
|---|---|---|
| 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 Rank | 32-128 | 复杂概念用高值 |
| Network Alpha | 通常=Rank | 影响学习强度 |
| Learning Rate | 1e-4 到 5e-4 | 太大会过拟合 |
| Epochs | 10-30 | 根据损失调整 |
| Batch Size | 1-4 | 根据显存调整 |
训练工具
- kohya_ss:最流行的训练GUI,功能全面
- LoRA Trainer:WebUI插件,操作简单
- Civitai LoRA Trainer:在线训练,无需本地资源
⚠️ 训练注意事项
- • 保存多个checkpoint,便于选择最佳效果
- • 定期测试,避免过拟合
- • 为LoRA设置独特的触发词
- • 遵守版权和许可规定
高级训练技巧
掌握这些技巧,训练出更高质量的LoRA。
数据集优化
图片质量标准:
- 分辨率:至少512px,推荐1024px(SDXL)
- 清晰度:无模糊、噪点、压缩伪影
- 多样性:不同角度、光照、背景、表情
- 一致性:风格LoRA需风格统一,角色LoRA需同一角色
- 纯净度:无水印、文字、其他干扰元素
标注策略
触发词设计原则:
- 独特性:使用不常见的词汇作为触发词
- 描述性:触发词应与概念相关,便于记忆
- 一致性:所有训练图片使用相同触发词
- 位置:触发词放在描述的开头
示例:使用"ohwx style"作为风格LoRA的触发词
训练参数调优
| 参数 | 角色LoRA | 风格LoRA | 概念LoRA |
|---|---|---|---|
| Rank | 64-128 | 32-64 | 32-64 |
| Alpha | =Rank | =Rank/2 | =Rank |
| Learning Rate | 1e-4 | 5e-5 | 1e-4 |
| Epochs | 15-25 | 20-40 | 10-20 |
| 图片数量 | 20-50 | 20-40 | 30-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,保持高效