lora-scripts icon indicating copy to clipboard operation
lora-scripts copied to clipboard

有没有哪位大佬能给我一份训练和生图的教程啊

Open Fullary opened this issue 7 months ago • 3 comments

秋葉大佬哪个讲的太基础了参数什么的都没有讲明白,导致训练出来的lora模型也很基础,然后生成的时候也没有说明白,b站上找了好多教程也跟现在的UI界面不一样,有点不想动脑子了

Fullary avatar May 15 '25 06:05 Fullary

使用DeepseekR1 不联网

Omg-ciTy avatar May 21 '25 17:05 Omg-ciTy

使用DeepseekR1 不联网  使用 DeepseekR1 不联网

能不能详细说说?直接在deepseek上搜sd训练教程这样子?

Fullary avatar May 22 '25 02:05 Fullary

https://yuanbao.tencent.com/bot/app/share/chat/BXaFuK2Q22F8

我准备使用 kohya_ss训练LORA ,训练的图片是真实化的图片,使生成的图片真实化.训练图片有75张.正则化图像有1800张.要求使训练出来的微调模型生成的任何图片具有超真实化的风格. 使用的底膜是noobai模型以 SDXL 为模型架构,以 Illustrious-xl-early-release-v0 为基础模型,在完整的 Danbooru 和 e621 数据集(共约 13,000,000 张图像)上训练了大量轮次,具有丰富的知识和出色的性能。NoobAI-XL 具有庞大的知识量,能够还原上万名二次元角色及画师风格,认识二次元中的大量特殊概念,并具有丰富的 furry 知识。

model_train_type = "sdxl-lora" pretrained_model_name_or_path = "/root/autodl-fs/E11.safetensors" train_data_dir = "/root/autodl-fs/train/RE7/" reg_data_dir = "/root/autodl-fs/train/ZHENGZEH-RE/" prior_loss_weight = 0.7 resolution = "1024,1024" enable_bucket = true min_bucket_reso = 832 max_bucket_reso = 1536 bucket_reso_steps = 64 bucket_no_upscale = true output_name = "RE-EPS-1" output_dir = "/root/autodl-tmp/out/" save_model_as = "safetensors" save_precision = "fp16" save_every_n_epochs = 5 save_state = false max_train_epochs = 30 train_batch_size = 9 gradient_checkpointing = true gradient_accumulation_steps = 3 network_train_unet_only = false network_train_text_encoder_only = false learning_rate = 0.000004 unet_lr = 0.000002 text_encoder_lr = 0.000001 lr_scheduler = "cosine_with_restarts" lr_warmup_steps = 300 lr_scheduler_num_cycles = 1 optimizer_type = "Lion8bit" network_module = "networks.lora" network_dim = 96 network_alpha = 48 scale_weight_norms = 2 log_with = "tensorboard" logging_dir = "./logs" caption_extension = ".txt" shuffle_caption = false keep_tokens = 6 max_token_length = 255 noise_offset = 0.08 flip_aug = true seed = 1337 mixed_precision = "bf16" full_bf16 = true xformers = true lowram = false cache_latents = true cache_latents_to_disk = true persistent_data_loader_workers = true optimizer_args = [ "betas=(0.9,0.99)", "weight_decay=0.02"" ] 这些参数怎么样?

已深度思考(用时27秒) 嗯,用户想用Kohya_ss训练一个LoRA模型,让生成的图片更真实。他们用了75张训练图和1800张正则化图像,底模是NoobAI-XL,基于SDXL架构。首先,我需要检查他们的参数设置是否合理,有没有可能的问题或改进空间。

首先看训练数据,75张图可能有点少,尤其是想覆盖多种真实风格的话。通常建议至少几百张,但用户可能资源有限。正则化数据量很大,1800张,这可能有助于防止过拟合,但需要确保正则化图像与训练目标一致,比如都是真实风格的。

然后是参数部分。batch size是9,梯度累积3步,相当于总batch size 27。对于SDXL来说,这样的batch size可能偏大,但要看显存是否足够。如果显存不够,可能需要减少batch size或累积步数。不过用户用了gradient checkpointing,这有助于节省显存,所以可能没问题。

学习率方面,主学习率4e-6,UNET和文本编码器分别更低。SDXL通常需要较低的学习率,不过4e-6可能偏低,但如果是LoRA训练,低学习率有助于稳定训练。不过可能需要根据训练过程中的损失变化调整,比如如果损失下降太慢,可以适当提高。

网络维度是96,alpha 48,比例是0.5。通常LoRA的alpha是dim的一半或相等,这里设置合理,但可能可以尝试更高的dim,比如128,以增加模型容量,尤其是训练数据较少时,但要注意过拟合风险。用户提到正则化数据多,可能可以适当提高dim。

分辨率设置1024x1024,启用bucket,范围832-1536,这适合SDXL,因为SDXL需要高分辨率。但需要确保训练图像尺寸足够,并且预处理正确,比如裁剪或缩放合适。

噪声偏移0.08,这有助于改善暗部细节,适用于真实化风格,没问题。数据增强如flip_aug开启,但真实照片可能不适合水平翻转,比如人脸可能不对称,需要确认训练图像是否适合翻转,否则应关闭。

epochs设为30,75张图,batch size 9,每个epoch约8步,总步数240左右。可能需要更多epoch,比如50-100,尤其是数据量少的情况下,但要配合早停和监控损失,防止过拟合。

优化器用Lion8bit,相比AdamW可能更快收敛,但需要确认与混合精度(bf16)的兼容性。学习率调度器用cosine_with_restarts,周期1,预热300步。总训练步数如果是30 epoch,每个epoch 8步,总步240,那么预热300步超过了总步数,这会导致学习率一直在预热阶段,可能有问题。需要调整lr_warmup_steps到总步数的10%左右,比如24步。

正则化权重prior_loss_weight=0.7,可能需要调整,比如1.0,确保正则化效果足够,防止过拟合。

保存设置每5 epoch保存一次,没问题,但最终模型应选验证效果最好的,可能需要手动选择。

其他如缓存潜变量到磁盘、使用xformers、混合精度都正确,有助于加速训练。

总结可能的调整点:增加训练数据量,调整学习率预热步数,检查数据增强是否合适,调整网络维度,确认优化器参数,增加epoch数,调整正则化权重,监控过拟合等。 ################################################################################################################################################################################################## 根据您的训练目标和参数配置,我为您分析并提供以下优化建议:

  1. 数据配置优化
  • 训练数据75张偏少,建议至少增加到150-200张(可适当数据增强)。真实化训练需要覆盖更多光影/材质/视角变化。
  • 确保正则化图像风格与目标完全一致,建议使用真实摄影数据集(如LAION-5B精选子集)而非插画类数据
  1. 关键参数调整建议
max_train_epochs = 60  # 数据量少时需更多epoch
train_batch_size = 6   # SDXL推荐batch_size=4-8,配合gradient_accumulation_steps=4
network_dim = 128      # 提升表征能力
network_alpha = 64     # 保持0.5比例
learning_rate = 8e-6   # 适当提高学习率
lr_warmup_steps = 50   # 原300步超过总训练步数
prior_loss_weight = 1.0 # 加强正则化约束
noise_offset = 0.1     # 增强暗部细节
flip_aug = false       # 真实场景通常不宜翻转
  1. 训练策略改进
  • 添加动态阈值(adaptive_threshold=0.95)控制过拟合
  • 使用分层学习率(diff_unet_learning_rate_scale=0.8)
  • 建议添加CLIP skip=2 增强语义对齐
  • 可尝试启用offset_noise(scale=0.1)
  1. 监控与调试
# 建议监控指标
tensorboard --logdir=./logs  # 观察loss曲线
# 验证提示词示例
"RAW photo of a cityscape, ultra detailed skin texture, cinematic lighting, 8k"
  1. 参数调整原理
  • SDXL需要更大的network_dim(推荐128-256)来捕捉真实细节
  • Lion优化器配合8e-6学习率在实验中表现更稳定
  • 降低warmup步数以匹配总训练步数(30epoch x 75/9≈250步)
  • 关闭flip_aug避免破坏真实场景的物理合理性

建议分阶段训练:

  1. 第一阶段(10epoch):冻结文本编码器,仅训练UNet
  2. 第二阶段(50epoch):同时微调文本编码器,learning_rate=5e-6
  3. 最后5epoch使用cosine_without_restarts平滑收敛

可添加的改进项:

adaptive_threshold = 0.95
adaptive_threshold_scale = 0.3
clip_skip = 2
offset_noise = 0.1

注意:训练过程中建议每5个epoch进行人工验证,根据生成效果动态调整正则化权重和训练强度。真实化训练需要特别注意材质和光影的自然过渡,可考虑在数据预处理阶段添加适当的锐化和曝光校正。

Omg-ciTy avatar May 22 '25 06:05 Omg-ciTy