1. SDXL LoRA训练前的准备工作
第一次接触SDXL LoRA训练时,我完全被各种参数搞晕了头。经过多次实战,我发现做好前期准备能避免80%的坑。先说说硬件要求:显存建议12GB起步(比如RTX 3060),如果是云端训练,选择A100或V100会更高效。我实测过,在24G显存的3090上跑1024x1024分辨率,batch size设为2刚好不爆显存。
数据集是训练的核心。根据我的经验,训练人物主题需要15-30张高质量图片,风格训练则需要100张以上。有个小技巧:用Waifu Diffusion 1.4自动打标后,一定要手动检查标签。曾经我训练的角色LoRA总出现多余配饰,后来发现是自动标注把"项链"也标记进去了。建议用stable-diffusion-webui-dataset-tag-editor插件批量清洗标签。
底模选择直接影响训练效果。如果训练二次元风格,推荐使用"anything-v5"作为基础模型;真人风格则建议"chilloutmix"。有个容易忽略的点:底模最好和训练数据风格相近。我有次用写实底模训练动漫角色,结果生成的图片像恐怖谷效应——既不像真人也不像动漫。
2. 参数调优实战技巧
2.1 学习率与优化器配置
学习率设置是门艺术。经过多次测试,我发现这些组合效果最好:
- AdamW优化器:学习率1e-5到5e-5
- Lion优化器:学习率1e-6到1e-5
- Prodigy优化器:直接设为1.0(它会自动调整)
特别提醒:文本编码器的学习率要设为Unet的1/10。有次我把两者设成相同,结果模型完全学不会语义关联。下表是我的常用配置:
| 优化器类型 | Unet学习率 | 文本编码器学习率 | 适用场景 |
|---|---|---|---|
| AdamW | 3e-5 | 3e-6 | 常规训练 |
| Lion | 5e-6 | 5e-7 | 小数据集 |
| Prodigy | 1.0 | 1.0 | 快速收敛 |
2.2 网络结构选择
LoRA家族有多个变种,这里分享我的测试结论:
- 标准LoRA:训练稳定,适合新手
- LoCon:对角色特征捕捉更精准
- LoHa:显存占用小,但容易欠拟合
- DyLoRA:动态调整rank,适合多概念训练
关键参数network_dim(秩)的设置:人物训练建议64-128,风格训练可以降到32。有个记忆口诀:"dim越大细节越多,但别超过256"。我曾设过256的dim,结果模型文件暴涨到1.3GB,生成效果却没明显提升。
3. 云端训练全流程
3.1 AutoDL环境配置
在AutoDL上训练性价比很高,按量计费每小时不到3元。具体步骤:
- 选择"社区镜像"搜索"lora-scripts"
- 实例规格选RTX 3090或A100
- 上传数据到autodl-tmp目录
遇到的最大坑是端口转发。AutoDL默认只开放6006端口,但训练界面需要7860端口。我的解决方案是用SSH隧道:
ssh -L 7860:127.0.0.1:7860 root@connect.autodl.com -p <你的端口号>3.2 训练监控技巧
训练时一定要监控loss曲线:
- 理想loss在0.7-1.0之间波动
- 如果loss低于0.5,可能过拟合了
- loss高于1.5则需要调整学习率
有个实用技巧:在config.toml里设置sample_every_n_epochs=1,这样每轮都能看到生成效果。有次我发现生成图片全是马赛克,及时终止了训练,省下了50%的算力费用。
4. 模型测试与优化
训练完成后,建议用XYZ Plot脚本测试不同权重下的效果。这是我常用的测试参数组合:
prompt = "1girl, (catwomen:1.2), detailed eyes" steps = [0.3, 0.5, 0.7, 1.0] seed = 12345如果发现过拟合(比如只能生成训练图的角度),可以尝试:
- 增加正则化图像
- 降低network_dim
- 启用gradient_checkpointing
- 使用cosine_with_restarts学习率策略
最后提醒:训练好的LoRA在不同底模上表现差异很大。我的猫女LoRA在chilloutmix上效果惊艳,换到realisticVision就完全不像同个角色。建议准备3-4个不同风格的底模做交叉测试。