Akegarasu/lora-scripts 项目中的LoRA模型训练指南
2025-07-08 01:28:21作者:郜逊炳
项目概述
Akegarasu/lora-scripts是一个专注于LoRA(Low-Rank Adaptation)模型训练的脚本集合,特别针对Stable Diffusion模型的微调优化。LoRA是一种高效的模型微调技术,通过低秩矩阵分解来减少训练参数,能够在保持模型性能的同时显著降低计算资源需求。
训练配置详解
基础路径设置
pretrained_model = "./sd-models/model.ckpt" # 基础模型路径
train_data_dir = "./train/aki" # 训练数据集路径
- pretrained_model: 指定预训练的基础模型路径,这是LoRA微调的起点
- train_data_dir: 包含训练图片及其对应文本描述的目录
核心训练参数
resolution = "512,512" # 图片分辨率(宽,高)
batch_size = 1 # 批处理大小
max_train_epoches = 10 # 最大训练epoch数
save_every_n_epochs = 2 # 保存间隔epoch数
- resolution: 训练图片的分辨率,必须是64的倍数,支持非正方形分辨率
- batch_size: 根据显存大小调整,显存不足时可减小此值
- max_train_epoches: 控制训练轮次,防止过拟合
- save_every_n_epochs: 定期保存模型检查点
LoRA网络参数
network_dim = 32 # 网络维度
network_alpha = 32 # 网络alpha值
clip_skip = 2 # CLIP跳过层数
- network_dim: 控制LoRA网络的容量,常用4-128之间
- network_alpha: 通常设置为与network_dim相同或更小的值,防止数值下溢
- clip_skip: 影响文本编码器的输出层数,经验值通常为2
训练目标选择
train_unet_only = 0 # 仅训练U-Net
train_text_encoder_only = 0 # 仅训练文本编码器
这两个参数用于控制训练哪些组件,可以显著减少显存使用:
- 仅训练U-Net: 6GB显存即可运行
- 仅训练文本编码器: 适用于特定风格文本生成
学习率配置
lr = "1e-4" # 全局学习率
unet_lr = "1e-4" # U-Net学习率
text_encoder_lr = "1e-5" # 文本编码器学习率
lr_scheduler = "cosine_with_restarts" # 学习率调度器
- 文本编码器通常需要更小的学习率(1e-5)
- 学习率调度器选项包括: linear, cosine, cosine_with_restarts等
输出设置
output_name = "aki" # 输出模型名称
save_model_as = "safetensors" # 模型保存格式
- save_model_as: 支持ckpt, pt, safetensors格式,推荐使用safetensors
训练执行命令解析
训练启动命令包含多个重要参数:
accelerate launch --num_cpu_threads_per_process=8 "./scripts/train_network.py" \
--enable_bucket \
--pretrained_model_name_or_path=$pretrained_model \
--train_data_dir=$train_data_dir \
--resolution=$resolution \
--network_module=networks.lora \
--max_train_epochs=$max_train_epoches \
--network_dim=$network_dim \
--network_alpha=$network_alpha \
--mixed_precision="fp16" \
--xformers --shuffle_caption --use_8bit_adam
关键优化选项:
- mixed_precision="fp16": 混合精度训练,减少显存占用
- xformers: 使用xformers库优化注意力机制
- use_8bit_adam: 8位优化器,进一步降低显存需求
- cache_latents: 缓存潜在表示,加速训练
训练建议与技巧
- 显存优化: 小显存设备(如6GB)可启用train_unet_only=1
- 分辨率选择: 保持训练与推理分辨率一致可获得最佳效果
- 数据准备: 确保训练图片有高质量的文本描述
- 学习率调整: 如果使用较小的network_alpha,可适当提高学习率
- 训练监控: 定期检查logs目录中的训练日志
常见问题解答
Q: 训练时出现显存不足怎么办? A: 可尝试减小batch_size、启用train_unet_only、降低resolution或使用梯度累积
Q: 如何选择network_dim和network_alpha? A: 一般从32开始尝试,alpha通常与dim相同或减半
Q: 训练需要多长时间? A: 取决于数据集大小、epoch数和硬件配置,通常几小时到一天不等
通过合理配置这些参数,Akegarasu/lora-scripts能够高效地训练出高质量的LoRA模型,为Stable Diffusion模型提供个性化的风格适配能力。