首页 > 其他分享 >ComfyUI系列教程(4)--ComfyUI基础节点LoRA

ComfyUI系列教程(4)--ComfyUI基础节点LoRA

时间:2024-08-14 20:59:29浏览次数:13  
标签:训练 -- ComfyUI 模型 LCM LoRA SD

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的作用并不明显(纵轴)。
在这里插入图片描述

标签:训练,--,ComfyUI,模型,LCM,LoRA,SD
From: https://blog.csdn.net/Liangyq_cuc/article/details/141200192

相关文章

  • 【面试】分别解释一下C++、Java、Python程序的执行过程
    面试模拟场景面试官:你能分别解释一下C++、Java、Python程序的执行过程吗?参考回答示例1.C++程序的执行过程1.1编译过程:源代码编写:开发者编写C++源代码,文件扩展名为.cpp。预编译(Preprocessing):预编译是编译的第一步,使用预处理器(如cpp)对源代码进行处理。这一步主......
  • pytorch 3 计算图
    计算图结构分析:起始节点ab=5-3ac=2b+3d=5b+6e=7c+d^2f=2e最终输出g=3f-o(其中o是另一个输入)前向传播前向传播按照上述顺序计算每个节点的值。反向传播过程反向传播的目标是计算损失函数(这里假设为g)对每个中间变量和输入的偏导数。从右向左......
  • 三种高效学习方法及资料推荐:提高学习效率的秘诀
    1.费曼学习法(FeynmanTechnique)简介:费曼学习法是一种通过教授他人来巩固自己所学知识的方法。这种方法要求学习者将复杂的概念简化成易于理解的形式,并能够向他人清晰地解释这些概念。如果在解释过程中遇到困难,则返回原点,深入学习直至完全理解。步骤:选择一个概念。假设......
  • Datawhale X 魔搭 AI夏令营 AIGC方向 task2笔记
       纯小白,自学!从零入门AI生图(AIGC方向)基于魔搭社区“可图Kolors-LoRA风格故事挑战赛”开展实践学习。#DatawhaleX魔搭AI夏令营#一、利用AI精读baseline学习代码   task2的目的是精读baseline,从代码层面理解AI生图,直播演示了用通义千问解析代码,我也用GPT-4o,文心......
  • Sakana 推出开源AI Scientist:科研论文编写一条龙搞定
    你有没有想过,未来的科研会是怎样的?想象一下,一个不眠不休的研究助手,能够在没有人类监督的情况下,独立进行科学研究,从提出新想法到执行实验,再到撰写论文,全部自动完成。这听起来像科幻电影的情节,但在SakanaAI的努力下,这一愿景正在一步步变为现实。在现代科学研究中,科研人员常......
  • MySQL数据库专栏(三)数据库服务维护操作
    1、界面维护,打开服务窗口找到MySQL服务,右键单击可对服务进行启动、停止、重启等操作。选择属性,还可以设置启动类型为自动、手动、禁用。2、指令维护卸载服务:scdelete [服务名称]例如:scdeleteMySQL启动服务:netstart[服务名称]例如:netstartMySQL停止服务:netsto......
  • Java 入门指南:字段(成员变量或属性)
    引言在Java编程中,字段(也称为成员变量或属性)是类的重要组成部分,它们用于存储对象的状态信息。理解Java字段的各个方面对于编写高效、可维护的Java代码至关重要。字段的定义与特性字段是类中声明的变量,它们可以是任何类型,包括基本数据类型(如int、double)和引用类型(如String......
  • Java 入门指南:构造器
    Java构造器在Java中,构造器(Constructor)是一种特殊的方法,用于创建和初始化对象。它与类名相同,没有返回类型(甚至不能写void),主要用于在对象创建时设置对象的初始状态。构造器在面向对象编程中起着至关重要的作用,它确保了每个对象在创建时都有一个有效的初始状态。在对象创建时......
  • 自媒体IP-起号实战班:教你如何靠打造设计个人IP,年赚到100万!
    摘要:本文旨在探讨个人品牌在自媒体平台上的构建与运营策略,以实现持续增长的个人价值和专业影响力。关键词:个人品牌,自媒体,内容运营,客户获取,转化率1.个人品牌构建的全流程方法论本节将介绍一套系统化的个人品牌构建流程,旨在帮助设计师通过自媒体平台实现个人价值的最大化......
  • 考研数学模拟考试
         欧几里得8月模考正式开始报名了,走过路过千万不要错过,这是各位小伙伴检验复习成果、提升实力的大好机会哦,接下来是考试的一些信息:首先是所有小伙伴都会关心的一个问题,那就是考试收费吗?答案是考试全程免费,无隐性收费。参与模考、批改处分、直播解析等各个环节......