欢迎光临散文网 会员登陆 & 注册

Lora训练参数介绍(一些细节处理)

2023-05-29 18:47 作者:咸鱼只卖一块钱  | 我要投稿

安装Lora的训练脚本,直接用秋葉aaaki大佬的整合包就好。

现在介绍详细的参数 (最新秋葉aaaki大佬的脚本来介绍)


$pretrained_model = "./sd-models/model.ckpt" 

这个就不用多说了 就是你训练的底模 这里的话我们尽量使用训练的模型 如果大家没有合适的底模可以使用 sd1.5的训练模型 或者在C站里面去寻找一些合适的底模

以下是sd1.5的训练模型

https://huggingface.co/runwayml/stable-diffusion-v1-5/resolve/main/v1-5-pruned.ckpt

以下是c站

https://civitai.com/


$train_data_dir = "./train/aki" # train dataset path | 训练数据集路径

这是我们的数据集 里面放的是我们的图片以及文字(也就是打的tag)


文件夹的命名如下5_是一定需要的 后面根据自己喜好

                                            注意 5你可以理解读取5次这个图片

$network_dim = 32 # network dim 

$network_alpha = 32# network alpha

dim你可以理解为大小 alpha一般跟dim相同或者是一半


$batch_size = 1 # batch size

$max_train_epoches = 10 # max train epoches | 最大训练 epoch

$save_every_n_epochs = 2 # save every n epochs | 每 N 个 epoch 保存一次

Epoch 使用训练集的全部数据对模型进行一次完成的训练,被称为“一代训练”

Batch 使用训练集中的一小部分样本对模型权重进行一次反向传播的参数更新,这一小部分被称为“一批数据”。

每 N 个 epoch 保存一次 综合上面所述每次过了两代 就保存一次模型 因为模型不是越后面越好 需要对比

如果提高batch size 也要相应的提高epoch 不然可能会欠拟合 当然提高这些会大幅度的提高你的显存 如果你的loss率无法收敛 你可以进行这个操作


$keep_tokens = 0 0为禁用

保证我们的tag(也就是文本的单词)前多少个不动  后面的打乱它们的顺序

$min_snr_gamma = 0 0为禁用

减少低步数时loss值,让学习效果更好。推荐3-5,5对原模型几乎没有太多影响,3会改变最终结果 

$lr = "1e-4"

$unet_lr = "1e-4"

$text_encoder_lr = "1e-5"

$optimizer_type = "AdamW8bit"

学习率的话用青龙圣者的黄金算法


在脚本根目录下 文件上方搜索出打powershell(跟cmd相同)

输入./venv/Scripts/Activate.ps1进入虚拟环境

pip install tensorboard 安装依赖


将学习率都改为1

优化器($optimizer_type)改为 DAdaptation

开始跑第一次训练,跑不跑完都可以,

然后找到 LoraTrain\lora-scripts\logs 路径内找到最新时间戳的文件夹名称,再这个文件夹内鼠标邮件再次唤出Git bash here指令窗口输入

“tensorboard --logdir=./时间戳/network_train” 复制出提供的网址到浏览器上即可看到学习曲线图 拿到最高值/3 就是我们loin的最优值 (loin是比较好的优化器)

注意:当你更改了数据集 或者一些参数batch size 建议重新测试最优值


$persistent_data_loader_workers = 0 

简单的讲就是提速的 但是可能会爆显存 


欢迎大家在评论区留下批评和建议,如果本文违反了转载规定或侵犯他人劳动成果,我会立刻删除本文!对了还要感谢两位大佬做出的贡献,最后希望大家都能练出好丹!

Lora训练参数介绍(一些细节处理)的评论 (共 条)

分享到微博请遵守国家法律