首页
/ Akegarasu/lora-scripts 项目中的LoRA模型训练指南

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: 缓存潜在表示,加速训练

训练建议与技巧

  1. 显存优化: 小显存设备(如6GB)可启用train_unet_only=1
  2. 分辨率选择: 保持训练与推理分辨率一致可获得最佳效果
  3. 数据准备: 确保训练图片有高质量的文本描述
  4. 学习率调整: 如果使用较小的network_alpha,可适当提高学习率
  5. 训练监控: 定期检查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模型提供个性化的风格适配能力。