直接在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)。具体来说,是她在大祭典中的形象。在网上查看图片以比较结果:
重要注意事项:
你可以将它与另一个工作流程一起使用。我确保节点保存了显存,这样你可以完全用于训练。
如果你已经准备好工作流程,那么在训练后,你只需编写提示并加载 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 节点。我就是在一个星期前制作的,已经制作了五个功能齐全的自定义节点。