当前位置:首页|资讯|Stable Diffusion|LoRA

翻译Lycoris LoRA的Git页面一些说明(机翻)

作者:soranooto发布时间:2023-04-21

Lycoris官方git页面的简单概括翻译,大意是AI翻译而来,因为AI已经足够优秀,只修改一些不太准的地方,删除了一些文中的参考链接,注:是我加的,因为失忆,英语废了,所以一些行话里话,并不清楚,会直译。想可能会对一些网友有用,虽然AI翻译真的已经很准确了。


Lora beYond Conventional methods, Other Rank adaptation Implementations for Stable diffusion.

(注释:Stable diffusion的LoRa超常规方法,其他自适应秩方案。牵强的这么翻译一下,请谅解。看的出作者很喜欢莉可莉丝,简写对接莉可莉丝😊)


用未足够拟合的不太像的四季和不知道几次元的将军代替吧。

学习率默认,Lion,LoHa,觉得此epch挺好看就保留了。

故意loss掉很多3D信息,从而改变画风的小清新将军。上个文章没贴的样本,补上。

图像(避免争执,官方练的千岁的图片就不贴了)(以上图像也是以Hadamard product representation训练的模型生成的)


这是一个实现不同算法的项目,以在stable diffusion进行或更多的参数有效微调。

这个项目是从LoCon开始的。

(注:locon是一个早期版本,也就是那个我们需要安装的,但是又看不见任何界面的插件,不过最近官方有了新的插件a1111-sd-webui-lycoris用来支持LyCORIS)


传统的LoRA

    包括来自LoCon的Conv层实现

    推荐设置

        dim <= 64

        alpha = 1 (或更低,如0.3)

带有Hadamard Product表示的LoRA(LoHa)

  •     为联合学习而设计,但有一些很酷的特性,比如rank<=dim^2,所以应该对“参数有效的微调”有好处。

  •         传统的LoRA是rank<=dim的。

  •     推荐设置

  •         dim <= 32

  •         alpha = 1 (或更低)

(如果你不了解LoRa,推荐使用小于1的alpha进行尝试,然后对比常规下的取值,或许可以加深你对alpha的理解)


警告:你不应该在LoHa中使用dim>64,这对SD中几乎所有的层来说都超过sqrt(original_dim)。

(注:这里很重要,其实在一般Lora中,一些真人照,dim32也可以有不错的表现,当然你可设置超过128的数值,这会让你学习到更复杂的细节,步数一般也就更多了。较低的学习率和较多的训练步数,或辅助以正则,一般来说可以达到更好的效果。细节信息可以说是无上限,一般要考虑的是质量与步数之间的平衡,毕竟有些东西无须还原。较大的参数可能导致你需要上万步才可以训练一个真人LoRA。

你应该保证你的dim和alpha是128,64这样有规律的数字,如果你对他们不是很了解,又想改动设置,可以选择将二者的数值设置为相等,如:32,32,此时观察你第一epch的样本图片,会很有趣,前提是repeat不是太大)

对LoHa使用高dim可能会导致不稳定的损失或直接变成NaN。如果你想使用高dim LoHa,请使用降低lr。

(注:请坚持在LoHa中使用低dim,过高的数值不仅无用还会带来负面效果,一般来说LoHa的文件很小的多,但他可能不大适合用来训练画风,当然也不是不行,可能效率就会差很多。)

再次警告:以参数无效的方式使用参数有效的算法不是一个好主意。


(IA)^3

    参考文献: 少量的参数效率微调比上下文学习更好、更便宜。

    你可以用开发版软件包(或从源代码安装)尝试这个算法,并设置algo=ia3。

    这个算法需要更高的lr(大约5e-3~1e-2)。

    这个算法的学习方式很好,但是很难转移(你只能在你训练的模型上得到合理的结果)。

    这个算法产生的文件非常小(大约200~300KB)。

    实验性的项目


LoKR

    基本上与LoHA的想法相同,但使用克朗克乘积(kronecker product)

    这个算法相当敏感,你可能需要调整lr。

    这个算法可以同时学习角色和风格,但由于它很小(自动因子(auto factor),全rank,2.5MB),所以也很难transfer(这里不是很懂术语翻译,所以没翻译,见谅)

(auto factor 到底该翻译成啥合适😊)

    这个算法产生的文件比较小(自动因子:900~2500KB)。

    使用较小的系数(factor)会产生大一些的文件,如果你认为2.5MB的全rank不够好,你也可以调整它。


DyLoRA

    参考文献 DyLoRA: 使用动态无搜索低rank适应的预训练模型的参数效率调控(Parameter Efficient Tuning of Pre-trained Models using Dynamic Search-Free Low Rank Adaptation)

    基本上是lora的一个训练技巧。

    每一步,只更新LoRA权重的一个行/列。

    假设当我们要更新k行/col时,我们只用0~k行/col来重建权重(0<=k<=dim)

    你可以很容易地将DyLoRA的大小调整到目标值,并得到类似甚至比在目标dim下训练的LoRA更好的结果。(而且你不需要用训练大量不同dim值的Lora来对比哪个更好)。

    你应该使用大的dim,alpha=dim/4~dim(取1或等同dim值不是很推荐)。

        例如:dim=128,alpha=64

    由于我们每一步只更新1行/col,你将需要更多的步骤来获得合理的结果。如果你想用很少的步数来训练它,你可能需要将block_size(每一步更新多行/列)设置为更高的值(默认=0)。


使用说明

你可以直接使用这些训练脚本。


    derrian-distro/LoRA_Easy_Training_Scripts

(虽然有easy,其实挺全的)

    Linaqruf/kohya-trainer

(这是一个系列的colab脚本,包含了精简了选项lora训练脚本,LoRA dream method,Fine-Tuning,Native Training,还有一个Dreambooth脚本,一个方便你自定义添加各种插件和模型SD WEBUI)(非常推荐这个系列,每个脚本都包含了从素材处理到用来测试的SD WEBUI,甚至有从图站批量下载的脚本,替图透明添加纯色背景的功能等……)

    bmaltais/kohya_ss

(这个就不用说了,大家都知道)

    hollowstrawberry/kohya-colab

(参考了Kohya Traning的精简版colab脚本,因为最kohya-trainer有较多选项,同时采用的是:自定义+类名的方式训练,而不是Tag文件头部添加激活词的方式,导致新手无可适从,不过新版本已经添加。bmaltais/kohya_ss提供一个比较通用用来快速训练二次元的预设,还有一个不错的文件分类方式,同时他也有一个训练集处理工具,很推荐,作者还在c站分享了自己的训练心得,很值得一看)

(如果有需要应该把官方的训练)


Copyright © 2024 aigcdaily.cn  北京智识时代科技有限公司  版权所有  京ICP备2023006237号-1