跳转到内容

直接在Comfy UI中训练LoRA模型

🕡

版权说明

原作者:***

原作者联系方式:

原文链接:***

发表时间:***

发表平台:****

(这篇帖子是给ComfyUI用户的…当然,如果你也感兴趣的话 ^^)

嗨,大家!

前几天在ComfyUI的 subreddit 上,我发布了我的 LoRA 字幕定制节点,非常适用于直接从 ComfyUI 创建字幕。

但字幕只是 LoRA 训练过程的一半。缺少另一半,我的定制节点会感觉有点孤独。所以我又创建了一个节点,可以直接从 ComfyUI 训练 LoRA 模型!

默认情况下,它直接保存在你的 ComfyUI lora文件夹中。这意味着训练后,你只需刷新(...并选择 LoRA)就可以测试它了!

这就是进行 LoRA 训练所需的全部步骤了。

制作 LoRA 从未如此简单!

https://drive.google.com/file/d/1guSFoauzeFMcIvyh2u2RDvd41ysdXXMs/view?usp=sharing

下载后,解压并放入 custom_nodes 文件夹中。然后安装所需的依赖项。

如果你不知道如何操作:

打开命令提示符,输入以下内容:

pip install -r

确保后面有一个空格。然后将 requirements_win.txt 文件拖到命令提示符中(如果你在 Windows上;否则,我假设你应该选择另一个文件 requirements.txt)。拖动文件将在命令提示符中复制其路径。

按 Enter 键,这将安装所有所需的依赖项,使其与 ComfyUI 兼容。请注意,如果你为 Comfy 使用了虚拟环境,必须首先激活它。

教程

在使用自定义节点之前,有一些要注意的事项:

你的图像必须放在一个以 [number]_[whatever] 命名的文件夹中。那个数字很重要:LoRA 脚本使用它来创建一些步骤(称为优化步骤…但别问我是什么 ^^’)。它应该很小,比如 5。然后,下划线是必须的。其余部分不重要。

对于 data_path,你必须写入包含数据库文件夹的文件夹路径。

因此,在这种情况下:C:\database\5_myimages

你必须写 C:\database

至于终极问题:“斜杠还是反斜杠?”… 不用担心!Python 在这里需要斜杠,但节点会自动将所有反斜杠转换为斜杠。

文件夹名称中的空格也不是问题。

参数

在第一行,你可以从 checkpoint 文件夹中选择任何模型。然而,据说你必须选择一个基本模型进行 LoRA 训练。这是为什么我不得而知。但你完全可以尝试使用微调,没有任何阻碍。

但如果你想遵循规则,请确保在 checkpoint 文件夹中有一个基本模型!

这就是你需要了解的全部!其余都很简单:你选择一个名字为你的 LoRA,如果默认值对你不好,就更改这些值(epochs 数应该接近 40),然后启动工作流程!

一旦你点击 Queue Prompt,所有事情都会在命令提示符中发生。去看一下。即使你对 LoRA 训练是新手,你也会很快明白命令提示符显示了训练的进度。(或者…显示了错误 x)。

我建议与我的字幕自定义节点和 WD14 标签一起使用。

这条优雅而简单的线完成了字幕和训练!

然而,请确保在制作字幕时禁用 LoRA 训练节点。原因是 Comfy 可能会在制作字幕之前启动训练。而它会这么做。它不关心是否有字幕存在。所以最好保险起见:在制作字幕时绕过训练节点,然后启用它,再次启动工作流程进行训练。

我本可以找到一种方法将训练节点与保存节点关联起来,确保在制作字幕后才进行训练。然而,我决定不这样做。因为即使 WD14 标签非常出色,你可能还想在训练之前打开字幕并手动编辑它们。在两个节点之间创建链接将使整个过程变得自动化,而不让我们有机会修改字幕。

寻求对 Tensorboard 的帮助! :)

字幕,训练... 还有一个遗漏的部分。如果你了解 LoRA,你应该听说过 Tensorboard。这是一个用于分析模型训练数据的系统。我很乐意将其包含在ComfyUI中。

... 但我完全不知道该怎么做 ^^’。目前,训练会在 log 文件夹中创建一个日志文件,该文件夹会在 Comfy 的根文件夹中创建。我认为该日志是一个我们可以在 Tensorboard UI 中加载的文件。但我很想让数据出现在 ComfyUI 中。有人能帮我吗?谢谢 ^^。

我的第一个 LoRA 的结果:

如果你不认识这个角色,那是来自《宝可梦 钻石与珍珠》的小光(Hikari)。具体来说,是她在大祭典中的形象。在网上查看图片以比较结果:

https://www.google.com/search?client=opera&hs=eLO&sca_esv=597261711&sxsrf=ACQVn0-1AWaw7YbryEzXe0aIpP_FVzMifw:1704916367322&q=Pokemon+Dawn+Grand+Festival&tbm=isch&source=lnms&sa=X&ved=2ahUKEwiIr8izzNODAxU2RaQEHVtJBrQQ0pQJegQIDRAB&biw=1534&bih=706&dpr=1.25

重要注意事项:

你可以将它与另一个工作流程一起使用。我确保节点保存了显存,这样你可以完全用于训练。

如果你已经准备好工作流程,那么在训练后,你只需编写提示并加载 LoRA 即可!

这非常适合快速测试你的 LoRA!

--

此节点已确认适用于 SD 1.5 模型。如果你想使用 SD 2.0,你需要进入 train.py 脚本文件,并将 is_v2_model 设置为 1。

关于 SDXL,我一无所知。如果有人能测试并确认或否认,我会很感激 ^^。我知道 LoRA 项目包含了针对 SDXL 的自定义脚本,所以可能更加复杂。

至于 LCM 和 Turbo,我不知道 LoRA 训练是否也适用于它们。

更进一步:

我为节点提供了许多输入……但并非全部。因此,如果你已经是 LoRA 专家,并注意到我没有包含对你重要的一些内容,那可能在代码中有。如果你好奇,进入 custom nodes 文件夹并打开 train.py 文件。

LoRA 训练的所有变量都在这里。你可以更改任何值,比如优化算法、网络类型或 LoRA 模型扩展…

致敬:

这是基于一个现有项目 lora-scripts 的,该项目在 github 上可用。感谢作者制作了一个只需一个脚本启动训练的项目!

我借用了那个项目,去掉了 UI,将这个“启动脚本”翻译成 Python,并适应了 ComfyUI。尽管花了几个小时,但一路上我一直看到光明,多亏了原始项目 ^^。

如果你想知道如何制作自己的自定义节点,我发布了一个教程,可以在 5 分钟内帮助你入门:

[TUTORIAL] Create a custom node in 5 minutes! (ComfyUI custom node beginners guide) : comfyui (reddit.com)

你还可以从下面的链接下载我的自定义节点示例,将其放入 custom nodes 文件夹中,它将立即显示出来:

customNodeExample - Google Drive

(编辑:原始链接是错误的,所以我更改了它们 x))

多亏了这个,我轻松地制作了我的 LoRA 节点。我就是在一个星期前制作的,已经制作了五个功能齐全的自定义节点。