首页
/ Akegarasu/lora-scripts 训练脚本深度解析与使用指南

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 等)以及丰富的训练参数调整。

核心配置解析

基础模型与训练数据设置

脚本提供了以下关键配置项:

  1. 预训练模型路径 (pretrained_model):指定基础模型的 checkpoint 文件路径
  2. 模型类型 (model_type):支持 sd1.5、sd2.0、sdxl 和 flux 四种类型
  3. 训练数据集路径 (train_data_dir):包含训练图片和对应标注文件的目录
  4. 正则化数据集路径 (reg_data_dir):可选,用于防止模型过拟合

网络架构配置

  1. 网络模块 (network_module):默认为 LoRA,也可选择 LyCORIS 等其他架构
  2. 网络维度 (network_dim):控制 LoRA 层的秩,影响模型容量和训练效果
  3. 网络 alpha 值 (network_alpha):与网络维度配合使用,影响学习率缩放

训练参数优化

  1. 分辨率设置 (resolution):训练图片的分辨率,必须是64的倍数
  2. 批量大小 (batch_size):影响显存占用和训练稳定性
  3. 训练周期 (max_train_epoches):控制训练的总轮数
  4. 学习率策略 (lr_scheduler):提供多种学习率调整策略
  5. 优化器选择 (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_dimnetwork_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 模型的定制化训练。