ComfyUI基础节点LoRA
2. ComfyUI基础节点
本文主要介绍LoRA模型及ComfyUI中LoRA的连接方式。
2.1. LoRA
LoRA是一种低成本微调大模型的方法,可以通过训练LoRA模型增强对应版本大模型的生成能力。比如训练一种画风LoRA,可以让大模型生成对应风格的图片。
2.1.1.LoRA原理
LoRA(Low-Rank Adaptation)本质上是对特征矩阵进行低秩分解的一种近似数值分解技术,可以大幅降低特征矩阵的参数量,但是会伴随着一定的有损压缩。在AI绘画领域,可以使用SD模型+LoRA模型的组合微调训练方式,只训练参数量很小的LoRA模型,就能在一些细分任务中取得不错的效果。训练过程中,LoRA微调技术虽然整体计算量与微调SD模型相比没有变化甚至更多,但参数量、显存占用、训练数据量和训练时长都较小。推理时,参数量、显存占用、推理耗时相对于SD模型,也没有改变。
LoRA模型的训练逻辑是首先冻结SD模型的权重,然后在SD模型的U-Net结构中注入LoRA权重,主要作用于Cross Attention部分,并只对这部分的参数进行微调训练。尽管SD模型的参数量很大,但每个细分任务对应的本征维度(Intrinsic Dimension)并不大,所以我们设置较小的秩就能获得一个参数量远小于SD模型的LoRA模型,并在一些细分任务中获得较好的效果。
使用LoRA时,可以调节LoRA权重;也可以使用多个LoRA模型同时作用于一个SD模型,并配置他们的各自权重。
2.1.2.LCM-LoRA
潜在一致性模型Latent Consistency Models(LCM)采用一致性蒸馏Latent Consistency Distillation(LCD)的方法,相比原始的DPM++30步扩散过程可加速10倍以上。
LCM蒸馏的过程是在已有的预训练模型上进行的,可以将蒸馏看做是预训练模型的微调,因此可以使用LoRA来表示。将加速功能独立成为一个LoRA后,不仅在训练时使用更少的资源,而且得到的LCM-LoRA具有很强的泛化能力,可以和风格LoRA线性叠加。此外,在前向推理时,可将训练好的LCM-LoRA模型用于任何一个微调后的SD模型,无需再对SD模型重新进行训练。所以LCM-LoRA在ComfyUI中的使用方法与LoRA一致,注意采样方式改成lcm,适当减少采样步数即可。
2.1.3.ComfyUI示例
在ComfyUI中,使用Load LoRA节点加载LoRA,需要放在大模型与提示词中间,将model和clip对应节点连上。如果需要加载多个LoRA模型,复制对应数量的Load LoRA然后串联起来即可,两边的model和clip分别接入。
节点中主要参数有strength_model和strength_clip;strength_model修改大模型的扩散强度;strength_clip修改CLIP模型的强度。通常会修改strength_model在0.6~0.8之间,不同的LoRA模型以及应用场景适用的权重值不同。此外,有的LoRA还需要在提示词中填写对应的触发词进行激活。LoRA模型的作者通常会给出推荐的权重、触发词等信息。如图是5-1 SD1.5文生图LoRA工作流。
以国风山水风格LoRA为例,可以看到随着strength_model权重增大(横轴),LoRA的作用越明显,而strength_clip的作用并不明显(纵轴)。