Akegarasu/lora-scripts 训练脚本深度解析与使用指南
2025-07-08 01:29:29作者:余洋婵Anita
脚本概述
Akegarasu/lora-scripts 中的 train.sh 是一个用于训练 LoRA (Low-Rank Adaptation) 模型的 Bash 脚本,它封装了 Stable Diffusion 模型微调的核心参数和训练流程。该脚本支持多种训练配置,包括不同版本的 Stable Diffusion 模型(SD1.5、SD2.0、SDXL、Flux)、多种网络架构(LoRA、LyCORIS 等)以及丰富的训练参数调整。
核心配置解析
基础模型与训练数据设置
脚本提供了以下关键配置项:
- 预训练模型路径 (
pretrained_model
):指定基础模型的 checkpoint 文件路径 - 模型类型 (
model_type
):支持 sd1.5、sd2.0、sdxl 和 flux 四种类型 - 训练数据集路径 (
train_data_dir
):包含训练图片和对应标注文件的目录 - 正则化数据集路径 (
reg_data_dir
):可选,用于防止模型过拟合
网络架构配置
- 网络模块 (
network_module
):默认为 LoRA,也可选择 LyCORIS 等其他架构 - 网络维度 (
network_dim
):控制 LoRA 层的秩,影响模型容量和训练效果 - 网络 alpha 值 (
network_alpha
):与网络维度配合使用,影响学习率缩放
训练参数优化
- 分辨率设置 (
resolution
):训练图片的分辨率,必须是64的倍数 - 批量大小 (
batch_size
):影响显存占用和训练稳定性 - 训练周期 (
max_train_epoches
):控制训练的总轮数 - 学习率策略 (
lr_scheduler
):提供多种学习率调整策略 - 优化器选择 (
optimizer_type
):支持 AdamW8bit、Lion 等多种优化器
高级功能详解
1. 部分网络训练
脚本支持仅训练 U-Net 或文本编码器:
train_unet_only=1
:仅训练 U-Net 部分,大幅减少显存占用train_text_encoder_only=1
:仅训练文本编码器stop_text_encoder_training
:在指定步数后停止文本编码器训练
2. 噪声偏移与正则化
noise_offset
:添加噪声偏移改善极端亮度图像的训练效果min_snr_gamma
:最小信噪比伽马值,影响损失权重reg_data_dir
:正则化图像目录,防止模型过拟合
3. LyCORIS 特定配置
当使用 LyCORIS 网络时,可以配置:
algo
:选择 LyCORIS 算法类型(lora、loha、lokr 等)conv_dim
:卷积层的维度设置dropout
:dropout 概率,增加模型泛化能力
使用建议
1. 显存优化策略
对于显存有限的设备:
- 设置
train_unet_only=1
- 降低
batch_size
- 启用
lowram
模式 - 减小
network_dim
和network_alpha
2. 训练效果提升
- 合理设置
noise_offset
(推荐0.1)改善极端亮度图像 - 使用
keep_tokens
保留关键 token 不被随机打乱 - 尝试不同的
optimizer_type
(如 Lion 优化器)
3. 学习率配置技巧
- 文本编码器学习率 (
text_encoder_lr
) 通常应小于 U-Net 学习率 (unet_lr
) - 余弦退火重启 (
cosine_with_restarts
) 适合长周期训练 - 预热步数 (
lr_warmup_steps
) 有助于训练初期稳定性
常见问题解答
Q1: 如何从已有 LoRA 模型继续训练?
设置 network_weights
参数为现有 LoRA 模型路径即可。
Q2: SD2.0 和 SD1.5 训练有何区别?
SD2.0 模型下 clip_skip
参数无效,且可以启用 parameterization
参数。
Q3: 如何监控训练过程?
启用 use_wandb=1
并配置 WandB API 密钥可实现远程监控。
结语
Akegarasu/lora-scripts 的 train.sh 脚本提供了强大而灵活的 LoRA 训练配置方案,通过合理调整各项参数,用户可以在不同硬件条件下实现高效的模型微调。理解这些参数的含义和相互关系,将帮助您更好地利用该工具进行 Stable Diffusion 模型的定制化训练。