Connect with us

人工智能

如何训练和使用Hunyuan视频LoRA模型

mm
ChatGPT-4o: Variation on 'Create me an image 1792 x 1024. It should be in the style of Théodore Géricault, and should depict a dark medieval figure seated in front of a laptop, illuminated by the screen. We are facing the figure, and can only see the back of the laptop lid. Around the seated medieval figure are many other medieval men and women, curious as to what is happening on the computer screen'

本文将向您展示如何安装和使用基于Windows的软件,该软件可以训练Hunyuan视频LoRA模型,允许用户在Hunyuan视频基础模型中生成自定义个性:

点击播放。 来自civit.ai社区的最近的名人Hunyuan LoRAs示例。

目前,生成Hunyuan LoRA模型的两种最流行的方法是:

1) 基于Docker的diffusion-pipe-ui框架,它依赖于Windows子系统 для Linux(WSL)来处理一些过程。

2) Musubi Tuner,这是流行的Kohya ss扩散训练架构的新添加。Musubi Tuner不需要Docker,并且不依赖于WSL或其他基于Linux的代理,但在Windows上可能难以运行。

因此,本次运行将重点介绍Musubi Tuner,并提供一个用于Hunyuan LoRA训练和生成的完全本地解决方案,不使用API驱动的网站或商业GPU租用过程,例如Runpod。

点击播放。 本文使用Musubi Tuner进行LoRA训练的示例。所有权限均由图中人物授予,用于说明本文的目的。

要求

安装将需要至少一台具有至少12GB VRAM(尽管推荐16GB)的30+/40+系列NVIDIA卡的Windows 10 PC。用于本文的安装是在一台具有64GB系统RAM和24GB VRAM的NVIDIA 3090图形卡的专用测试系统上测试的,使用的是Windows 10 Professional的新安装,在具有600+ GB空闲磁盘空间的分区上。

警告

安装Musubi Tuner及其先决条件还包括将面向开发人员的软件和包直接安装到PC的主Windows安装中。考虑到ComfyUI的安装,到项目的最后阶段,这个项目将需要大约400-500 GB的磁盘空间。虽然我已经在新安装的Windows 10环境中多次测试了该过程,没有发生任何问题,但我或Unite.AI不对因以下说明而造成的系统损坏负责。我建议您在尝试此类安装过程之前备份任何重要数据。

考虑因素

这种方法仍然有效吗?

生成性AI场景正在迅速发展,我们可以预计今年会有更好的、更流线型的Hunyuan Video LoRA框架。

…或者甚至本周!当我写这篇文章时,Kohya/Musubi的开发者制作了musubi-tuner-gui这是Musubi Tuner的一个复杂的Gradio GUI:

显然,用户友好的GUI比我们在本特征中使用的BAT文件更可取。一旦musubi-tuner-gui正常工作。正如我写这篇文章时,它仅仅五天前上线,我找不到任何人成功使用它的记录。

根据存储库中的帖子,新的GUI旨在尽快直接集成到Musubi Tuner项目中,这将结束其作为独立GitHub存储库的当前存在。

基于当前安装说明,新的GUI直接克隆到现有的Musubi虚拟环境中;尽管我做了很多努力,但我无法让它与现有的Musubi安装关联起来。这意味着当它运行时,它将发现它没有引擎!

一旦GUI集成到Musubi Tuner中,这些问题肯定会得到解决。虽然作者承认这个新项目“非常粗糙”,但他对其开发和直接集成到Musubi Tuner中持乐观态度。

考虑到这些问题(以及安装时的默认路径和使用UV Python包,这会使新版本的某些过程复杂化),我们可能需要等待一段时间才能获得更流畅的Hunyuan Video LoRA训练体验。话虽如此,它看起来很有希望!

但是,如果您无法等待,并且愿意稍微卷起袖子,那么您现在就可以在本地运行Hunyuan视频LoRA训练。

让我们开始。

为什么要在裸机上安装任何东西?

(如果您不是高级用户,请跳过此段落)

高级用户会想知道为什么我选择在裸机Windows 10安装中安装这么多软件,而不是在虚拟环境中。原因是Windows端口的基于Linux的Triton包要比在虚拟环境中安装更困难。所有在教程中安装的其他裸机安装都不能在虚拟环境中安装,因为它们必须直接与本地硬件接口。

安装必备包和程序

对于必须最初安装的程序和包,安装顺序很重要。让我们开始。

1:下载Microsoft Redistributable

https://aka.ms/vs/17/release/vc_redist.x64.exe下载并安装Microsoft Redistributable包。

这是一个简单快速的安装。

2:安装Visual Studio 2022

https://visualstudio.microsoft.com/downloads/?cid=learn-onpage-download-install-visual-studio-page-cta下载Microsoft Visual Studio 2022社区版。

启动下载的安装程序:

我们不需要所有可用的包,这将是一个重型且耗时的安装。在最初打开的工作负载页面上,选中使用C++的桌面开发(见下图)。

现在,单击左上角的个别组件选项卡,并使用搜索框查找“Windows SDK”。

默认情况下,只选中了Windows 11 SDK。如果您使用的是Windows 10(此安装过程尚未在Windows 11上测试),请选中最新的Windows 10版本,如图所示。

搜索“C++ CMake”并确保C++ CMake工具用于Windows已选中。

此安装将占用至少13 GB的空间。

安装Visual Studio后,它将尝试在您的计算机上运行。让它完全打开。当Visual Studio的全屏界面最终可见时,关闭该程序。

3:安装Visual Studio 2019

一些Musubi的后续包预计会有较旧版本的Microsoft Visual Studio,而其他包需要较新版本。

因此,还需要下载Microsoft Visual Studio 2019的免费社区版,可以从Microsoft(https://visualstudio.microsoft.com/vs/older-downloads/ – 需要帐户)或Techspot(https://www.techspot.com/downloads/7241-visual-studio-2019.html)下载。

使用与Visual Studio 2022相同的选项(见上述过程,除了Visual Studio 2019安装程序中已经选中了Windows SDK)安装它。

您将看到Visual Studio 2019安装程序已经知道了较新版本的存在,因为它安装:

安装完成后,打开并关闭已安装的Visual Studio 2019应用程序,在Windows命令提示符中输入并执行:

where cl

结果应该是已安装的两个Visual Studio版本的已知位置。

如果您得到INFO: Could not find files for the given pattern(s),请参阅本文的检查路径部分,并使用这些说明将相关的Visual Studio路径添加到Windows环境中。

保存根据检查路径部分下方所做的任何更改,然后再次尝试where cl命令。

4:安装CUDA 11 + 12工具包

Musubi安装的各个包需要不同的NVIDIA CUDA版本,它可以加速和优化NVIDIA图形卡上的训练。

我们之所以首先安装Visual Studio版本,是因为NVIDIA CUDA安装程序会搜索并与任何现有的Visual Studio安装集成。

从以下网址下载11+系列CUDA安装包:
https://developer.nvidia.com/cuda-11-8-0-download-archive?target_os=Windows&target_arch=x86_64&target_version=11&target_type=exe_local(下载‘exe(本地)’

从以下网址下载12+系列CUDA Toolkit安装包:
https://developer.nvidia.com/cuda-downloads?target_os=Windows&target_arch=x86_64

两个安装程序的安装过程是相同的。忽略有关Windows环境变量中安装路径的存在或不存在的任何警告 – 我们稍后将手动处理这些。

安装NVIDIA CUDA Toolkit V11+

启动11+系列CUDA Toolkit安装程序。

安装选项中,选择自定义(高级)并继续。

取消选中NVIDIA GeForce Experience选项,然后单击下一步

选择安装位置保持为默认值(这很重要):

单击下一步并让安装完成。

忽略安装程序关于Nsight Visual Studio集成的任何警告或注意事项,这对于我们的用例不需要。

安装NVIDIA CUDA Toolkit V12+

为单独下载的12+ NVIDIA Toolkit安装程序重复整个过程:

此版本的安装过程与上述(11+版本)相同,除了一个关于环境路径的警告,您可以忽略:

当12+ CUDA版本安装完成后,在Windows命令提示符中输入并执行:

nvcc --version

这应该会确认已安装的驱动程序版本:

要检查您的卡是否被识别,请输入并执行:

nvidia-smi

5:安装GIT

GIT将负责在您的本地机器上安装Musubi存储库。从以下网址下载GIT安装程序:
https://git-scm.com/downloads/win(’64位Git for Windows Setup’)

运行安装程序:

使用默认设置进行选择组件

将默认编辑器保留为Vim

让GIT决定分支名称:

使用推荐设置进行路径环境:

使用推荐设置进行SSH:

使用推荐设置进行HTTPS传输后端

使用推荐设置进行行结束转换:

选择Windows默认控制台作为终端模拟器:

使用默认设置(快进或合并)进行GIT拉取:

使用GIT凭据管理器(默认设置)进行凭据助手:

配置额外选项中,保持启用文件系统缓存选中,启用符号链接未选中(除非您是使用硬链接的高级用户,用于集中式模型存储库)。

完成安装,并通过在CMD窗口中输入并执行以下命令来测试GIT是否安装正确:

git --version

GitHub登录

稍后,当您尝试克隆GitHub存储库时,您可能会被要求输入GitHub凭据。为了预测这一点,请在Windows系统上安装的任何浏览器中登录您的GitHub帐户(如果必要,请创建一个)。这样,0Auth身份验证方法(弹出窗口)应该会花费最少的时间。

在第一次挑战之后,您应该会自动保持身份验证。

6:安装CMake

CMake 3.21或更高版本是Musubi安装过程的必备组件。CMake是一种跨平台开发架构,能够编排各种编译器,并从源代码编译软件。

在以下网址下载:
https://cmake.org/download/(’Windows x64 Installer’)

启动安装程序:

确保将CMake添加到PATH环境变量已选中。

单击下一步

在Windows命令提示符中输入并执行以下命令:

cmake --version

如果CMake安装成功,它将显示类似以下内容:

cmake version 3.31.4
CMake suite maintained and supported by Kitware (kitware.com/cmake).

7:安装Python 3.10

Python解释器是此项目的核心。下载3.10版本(Musubi包的不同需求之间的最佳折衷):
https://www.python.org/downloads/release/python-3100/(’Windows安装程序(64位)’)

运行下载的安装程序,并保持默认设置:

在安装过程结束时,单击禁用路径长度限制(需要UAC管理员确认):

在Windows命令提示符中输入并执行以下命令:

python --version

这应该会产生Python 3.10.0

检查路径

Musubi框架的克隆和安装,以及其正常安装后操作,需要其组件知道几个重要的外部组件在Windows中的路径,特别是CUDA。

因此,我们需要打开路径环境并检查所有必需条件是否存在。

一种快速方法是打开Windows环境控制,方法是将编辑系统环境变量输入到Windows搜索栏中。

单击此项将打开系统属性控制面板。在系统属性的右下角,单击环境变量按钮,打开一个名为环境变量的窗口。在窗口的下半部分的系统变量面板中,向下滚动到路径并双击它。这将打开一个名为编辑环境变量的窗口。将此窗口的宽度拉大,以便可以看到变量的完整路径:

以下是重要的条目:

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.6\bin
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.6\libnvvp
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8\bin
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8\libnvvp
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\bin\Hostx64\x64
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.42.34433\bin\Hostx64\x64
C:\Program Files\Git\cmd
C:\Program Files\CMake\bin

在大多数情况下,正确的路径变量应该已经存在。

通过单击新建左侧的编辑环境变量窗口并粘贴正确的路径来添加缺失的路径:

不要只是从上面列出的路径复制和粘贴;检查每个等效路径是否存在于您的Windows安装中。

如果存在路径的轻微变化(尤其是与Visual Studio安装相关的变化),请使用上面列出的路径找到正确的目标文件夹(即x64Host64中),然后将这些路径粘贴到编辑环境变量窗口中。

完成此操作后,重新启动计算机。

安装Musubi

升级PIP

使用最新版本的PIP安装程序可以简化一些安装阶段。在具有管理员权限的Windows命令提示符中输入并执行:

pip install --upgrade pip

提升

一些命令可能需要提升权限(即以管理员身份运行)。如果您收到有关权限的错误消息,请关闭命令提示符窗口并以管理员模式重新打开它,方法是将CMD输入到Windows搜索框中,右键单击命令提示符并选择以管理员身份运行

对于接下来的阶段,我们将使用Windows PowerShell代替Windows命令提示符。您可以通过将PowerShell输入到Windows搜索框中找到它,并根据需要右键单击它以以管理员身份运行

安装Torch

在PowerShell中输入并执行:

pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118

请耐心等待,因为安装了很多包。

完成后,您可以通过输入并执行以下命令来验证GPU启用的PyTorch安装:

python -c "import torch; print(torch.cuda.is_available())"

这应该会产生:

C:\WINDOWS\system32>python -c "import torch;
print(torch.cuda.is_available())"
True

安装Triton for Windows

接下来是Triton for Windows组件的安装。在提升的PowerShell中输入一行:

pip install https://github.com/woct0rdho/triton-windows/releases/download/v3.1.0-windows.post8/triton-3.1.0-cp310-cp310-win_amd64.whl

(安装程序triton-3.1.0-cp310-cp310-win_amd64.whl适用于Intel和AMD CPU,只要架构为64位,环境与Python版本匹配即可)

运行后,这应该会产生:

Successfully installed triton-3.1.0

我们可以通过在Python中导入它来检查Triton是否正常工作。输入以下命令:

python -c "import triton; print('Triton is working')"

这应该会输出:

Triton is working

要检查Triton是否启用了GPU,请输入:

python -c "import torch; print(torch.cuda.is_available())"

这应该会产生True

创建Musubi的虚拟环境

从现在开始,我们将在Python虚拟环境(或venv)中安装任何其他软件。这意味着您只需将venv的安装文件夹拖到回收站即可卸载所有后续软件。

让我们创建该安装文件夹:在桌面上创建一个名为Musubi的文件夹。以下示例假设此文件夹存在:C:\Users\[您的个人资料名称]\Desktop\Musubi\

在PowerShell中,导航到该文件夹并输入:

cd C:\Users\[您的个人资料名称]\Desktop\Musubi

我们希望虚拟环境能够访问我们已经安装的内容(特别是Triton),因此我们将使用--system-site-packages标志。输入:

python -m venv --system-site-packages musubi

等待环境被创建,然后通过输入以下命令来激活它:

.\musubi\Scripts\activate

从这一点开始,您可以通过(musubi)出现在所有提示的开头来判断您是否处于激活的虚拟环境中。

克隆存储库

导航到新创建的musubi文件夹(位于桌面上的Musubi文件夹中):

cd musubi

现在我们处于正确的位置,输入以下命令:

git clone https://github.com/kohya-ss/musubi-tuner.git

等待克隆完成(这不会花费太长时间)。

安装要求

导航到安装文件夹:

cd musubi-tuner

输入:

pip install -r requirements.txt

等待安装完成(这将需要更长的时间)。

自动化对Hunyuan Video Venv的访问

为了方便地激活和访问新venv以备将来使用,您可以将以下内容粘贴到记事本中,并将其保存为activate.bat,并将文件类型保存为所有文件(见下图)。

@echo off

call C:\Users\[您的个人资料名称]\Desktop\Musubi\musubi\Scripts\activate

cd C:\Users\[您的个人资料名称]\Desktop\Musubi\musubi\musubi-tuner

cmd

(请务必用您的实际Windows个人资料文件夹名称替换[您的个人资料名称]

这并不重要,您将此文件保存在哪里。

从现在开始,您可以双击activate.bat并立即开始工作。

使用Musubi Tuner

下载模型

Hunyuan视频LoRA训练过程需要下载至少七个模型,以支持所有可能的预缓存和训练Hunyuan视频LoRA的优化选项。这些模型的总大小超过60GB。

当前的下载说明可以在以下网址找到:https://github.com/kohya-ss/musubi-tuner?tab=readme-ov-file#model-download

但是,这些是写作时的下载说明:

clip_l.safetensors
llava_llama3_fp16.safetensors

llava_llama3_fp8_scaled.safetensors
可以在以下网址下载:
https://huggingface.co/Comfy-Org/HunyuanVideo_repackaged/tree/main/split_files/text_encoders

mp_rank_00_model_states.pt
mp_rank_00_model_states_fp8.pt

mp_rank_00_model_states_fp8_map.pt
可以在以下网址下载:
https://huggingface.co/tencent/HunyuanVideo/tree/main/hunyuan-video-t2v-720p/transformers

pytorch_model.pt
可以在以下网址下载:
https://huggingface.co/tencent/HunyuanVideo/tree/main/hunyuan-video-t2v-720p/vae

虽然您可以将它们放在任何目录中,但为了与后续脚本的一致性,让我们将它们放在:

C:\Users\[您的个人资料名称]\Desktop\Musubi\musubi\musubi-tuner\models\

这与此之前的目录安排一致。任何命令或说明此后都将假设模型位于此处;并且不要忘记将[您的个人资料名称]替换为您的实际Windows个人资料文件夹名称。

数据集准备

忽略社区对这一点的争议,可以说您需要大约10-100张照片来训练Hunyuan LoRA的数据集。即使只有15张图片,也可以获得非常好的结果,只要图片平衡良好且质量好。

Hunyuan LoRA可以在图像或非常短的低分辨率视频片段上进行训练,甚至可以混合使用,但使用视频片段作为训练数据,即使对于24GB卡,也是具有挑战性的。

然而,视频片段只有在您的角色以非常规的方式移动,Hunyuan Video基础模型可能不知道它,或者无法猜测时才真正有用。

例如,罗杰兔子、外星人、面具、蜘蛛侠或其他具有独特特征的角色。

由于Hunyuan Video已经知道普通男性和女性如何移动,因此对于人类类型的角色来说,视频片段不是必需的。因此,我们将使用静态图像。

图像准备

桶列表

TLDR版本:

最好使用相同大小的图像或使用两个不同大小的图像(例如,10张512x768px的图像和10张768x512px的图像)。

训练可能会很好地进行,即使您不这样做 – Hunyuan Video LoRAs可以令人惊讶地宽容。

更长版本

与Kohya-ss LoRAs用于静态生成系统(如Stable Diffusion)一样,分桶用于将工作负载分布在不同大小的图像上,允许使用更大的图像而不会在训练时出现内存不足错误(即,分桶将图像“切成”GPU可以处理的块,同时保持整个图像的语义完整性)。

对于您在训练数据集中包含的每个图像大小(例如,512x768px),将创建一个“桶”或“子任务”。因此,如果您有以下图像分布,这是如何使桶注意力变得不平衡,并冒着一些照片在训练中比其他照片受到更多关注的风险:

2x 512x768px图像
7x 768x512px图像
1x 1000x600px图像
3x 400x800px图像

我们可以看到桶注意力在这些图像中是不均匀分布的:

因此,要么坚持一种格式大小,要么尝试保持不同大小的分布相对均等。

在两种情况下,都要避免使用非常大的图像,因为这可能会减慢训练速度,并且收效甚微。

为了简单起见,我对数据集中的所有照片使用了512x768px。

免责声明: 模型(人物)用于数据集,并为此目的授予我使用这些图片的全部权限,并批准了所有以其形象为基础的AI生成输出,均在本文中展示。

我的数据集由40张图像组成,格式为PNG(JPG也可以)。我的图像存储在C:\Users\Martin\Desktop\DATASETS_HUNYUAN\examplewoman

您应该在训练图像文件夹中创建一个缓存文件夹:

现在,让我们创建一个特殊的文件,它将配置训练。

TOML文件

Hunyuan Video LoRAs的训练和预缓存过程从具有.toml扩展名的文本文件中获取文件路径。

对于我的测试,TOML文件位于C:\Users\Martin\Desktop\DATASETS_HUNYUAN\training.toml

我的训练TOML的内容如下:

[general]

resolution = [512, 768]

caption_extension = ".txt"

batch_size = 1

enable_bucket = true

bucket_no_upscale = false

[[datasets]]

image_directory = "C:\\Users\\Martin\\Desktop\\DATASETS_HUNYUAN\\examplewoman"

cache_directory = "C:\\Users\\Martin\\Desktop\\DATASETS_HUNYUAN\\examplewoman\\cache"

num_repeats = 1

(在图像和缓存目录中使用双反斜杠不是必须的,但它们可以帮助避免路径中有空格时出现错误。我已经使用了包含单向和单反斜杠的.toml文件来训练模型)

我们可以在resolution部分看到,两个分辨率将被考虑 – 512px和768px。您也可以将其保留为512,并仍然获得良好的结果。

字幕

Hunyuan Video是一种文本+视觉基础模型,因此我们需要这些图像的描述性字幕,它们将在训练中被考虑。训练过程将在没有字幕的情况下失败。

有很多开源字幕系统可供我们使用,但让我们保持简单,使用taggui系统。虽然它存储在GitHub上,并且在第一次运行时下载了一些非常重的深度学习模型,但它以简单的Windows可执行文件的形式提供,加载Python库和直观的GUI。

启动Taggui后,使用文件>加载目录导航到您的图像数据集,并可选地添加一个令牌标识符(在这种情况下为examplewoman),它将添加到所有字幕中:

(当Taggui首次打开时,请确保关闭加载4位 – 如果保持打开,它将在字幕编写过程中抛出错误)

在左侧预览列中选择一个图像并按下Ctrl+A选择所有图像。然后按下右侧的开始自动字幕按钮:

您将看到Taggui在右侧列中的小CLI中下载模型,但仅当这是您第一次运行字幕编写器时才会发生。否则,您将看到字幕的预览。

现在,每张照片都有一个对应的.txt字幕,描述了其图像内容:

您可以单击高级选项在Taggui中增加字幕的长度和样式,但这超出了本次运行的范围。

退出Taggui,让我们继续…

潜在预缓存

为了避免在训练时过度的GPU负载,需要创建两种类型的预缓存文件:一种用于从图像中派生的潜在图像,另一种用于评估与字幕内容相关的文本编码。

为了简化这三个过程(2x缓存+训练),您可以使用交互式.BAT文件,它将询问您问题并在您提供必要信息后执行这些过程。

对于潜在预缓存,请将以下文本复制到记事本中,并将其保存为.BAT文件(例如,将其命名为latent-precache.bat),如前所述,确保在另存为对话框中的文件类型下拉菜单中选择所有文件(见下图):

@echo off

REM 激活虚拟环境

call C:\Users\[您的个人资料名称]\Desktop\Musubi\musubi\Scripts\activate.bat

REM 获取用户输入

set /p IMAGE_PATH=输入图像目录的路径:

set /p CACHE_PATH=输入缓存目录的路径:

set /p TOML_PATH=输入TOML文件的路径:

echo 您输入:

echo 图像路径:%IMAGE_PATH%

echo 缓存路径:%CACHE_PATH%

echo TOML文件路径:%TOML_PATH%

set /p CONFIRM=您是否要继续进行潜在预缓存(y/n)?

if /i "%CONFIRM%"=="y" (

REM 运行潜在预缓存脚本

python C:\Users\[您的个人资料名称]\Desktop\Musubi\musubi\musubi-tuner\cache_latents.py --dataset_config %TOML_PATH% --vae C:\Users\[您的个人资料名称]\Desktop\Musubi\musubi\musubi-tuner\models\pytorch_model.pt --vae_chunk_size 32 --vae_tiling

) 否则(

echo 操作已取消。

)

REM 保持窗口打开

pause

(请务必将[您的个人资料名称]替换为您的实际Windows个人资料文件夹名称)

现在您可以运行.BAT文件以进行自动潜在缓存:

当.BAT文件提示您输入各种问题时,请粘贴或输入您的数据集、缓存文件夹和TOML文件的路径。

文本预缓存

我们将创建第二个.BAT文件,这次用于文本预缓存。

@echo off

REM 激活虚拟环境

call C:\Users\[您的个人资料名称]\Desktop\Musubi\musubi\Scripts\activate.bat

REM 获取用户输入

set /p IMAGE_PATH=输入图像目录的路径:

set /p CACHE_PATH=输入缓存目录的路径:

set /p TOML_PATH=输入TOML文件的路径:

echo 您输入:

echo 图像路径:%IMAGE_PATH%

echo 缓存路径:%CACHE_PATH%

echo TOML文件路径:%TOML_PATH%

set /p CONFIRM=您是否要继续进行文本编码器输出预缓存(y/n)?

if /i "%CONFIRM%"=="y" (

REM 使用虚拟环境中的python可执行文件

python C:\Users\[您的个人资料名称]\Desktop\Musubi\musubi\musubi-tuner\cache_text_encoder_outputs.py --dataset_config %TOML_PATH% --text_encoder1 C:\Users\[您的个人资料名称]\Desktop\Musubi\musubi\musubi-tuner\models\llava_llama3_fp16.safetensors --text_encoder2 C:\Users\[您的个人资料名称]\Desktop\Musubi\musubi\musubi-tuner\models\clip_l.safetensors --batch_size 16

) 否则(

echo 操作已取消。

)

REM 保持窗口打开

pause

将您的Windows个人资料名称替换为正确的名称,并将其保存为text-cache.bat(或您喜欢的任何名称),以便在任何方便的位置使用与之前的.BAT文件相同的程序。

运行此新.BAT文件,按照说明,必要的文本编码文件将出现在缓存文件夹中:

训练Hunyuan Video Lora

训练实际的LoRA将比这两个准备过程花费更长的时间。

虽然有多个变量我们可以担心(例如批次大小、重复次数、epochs以及是否使用完整或量化模型等),但我们将把这些考虑留到另一天,并对LoRA创建的细微差别进行更深入的研究。

现在,让我们尽量减少选择,并以“中等”设置训练一个LoRA。

我们将创建第三个.BAT文件,这次用于启动训练。将以下内容粘贴到记事本中,并将其保存为.BAT文件,如之前所述,命名为training.bat(或您喜欢的任何名称):

@echo off

REM 激活虚拟环境

call C:\Users\[您的个人资料名称]\Desktop\Musubi\musubi\Scripts\activate.bat

REM 获取用户输入

set /p DATASET_CONFIG=输入数据集配置文件的路径:

set /p EPOCHS=输入要训练的epochs数:

set /p OUTPUT_NAME=输入输出模型名称(例如,example0001):

set /p LEARNING_RATE=选择学习率(1表示1e-3,2表示5e-3,默认为1e-3):

if "%LEARNING_RATE%"=="1" set LR=1e-3

if "%LEARNING_RATE%"=="2" set LR=5e-3

if "%LEARNING_RATE%"=="" set LR=1e-3

set /p SAVE_STEPS=多久(以步骤为单位)保存预览图像:

set /p SAMPLE_PROMPTS=训练预览的文本提示文件的位置是什么?

echo 您输入:

echo 数据集配置文件:%DATASET_CONFIG%

echo epochs数:%EPOCHS%

echo 输出名称:%OUTPUT_NAME%

echo 学习率:%LR%

echo 每%SAVE_STEPS%步骤保存预览图像。

echo 文本提示文件:%SAMPLE_PROMPTS%

REM 准备命令

set CMD=accelerate launch --num_cpu_threads_per_process 1 --mixed_precision bf16 ^

C:\Users\[您的个人资料名称]\Desktop\Musubi\musubi\musubi-tuner\hv_train_network.py ^

--dit C:\Users\[您的个人资料名称]\Desktop\Musubi\musubi\musubi-tuner\models\mp_rank_00_model_states.pt ^

--dataset_config %DATASET_CONFIG% ^

--sdpa ^

--mixed_precision bf16 ^

--fp8_base ^

--optimizer_type adamw8bit ^

--learning_rate %LR% ^

--gradient_checkpointing ^

--max_data_loader_n_workers 2 ^

--persistent_data_loader_workers ^

--network_module=networks.lora ^

--network_dim=32 ^

--timestep_sampling sigmoid ^

--discrete_flow_shift 1.0 ^

--max_train_epochs %EPOCHS% ^

--save_every_n_epochs=1 ^

--seed 42 ^

--output_dir "C:\Users\[您的个人资料名称]\Desktop\Musubi\Output Models" ^

--output_name %OUTPUT_NAME% ^

--vae C:/Users/[您的个人资料名称]/Desktop/Musubi/musubi/musubi-tuner/models/pytorch_model.pt ^

--vae_chunk_size 32 ^

--vae_spatial_tile_sample_min_size 128 ^

--text_encoder1 C:/Users/[您的个人资料名称]/Desktop/Musubi/musubi/musubi-tuner/models/llava_llama3_fp16.safetensors ^

--text_encoder2 C:/Users/[您的个人资料名称]/Desktop/Musubi/musubi/musubi-tuner/models/clip_l.safetensors ^

--sample_prompts %SAMPLE_PROMPTS% ^

--sample_every_n_steps %SAVE_STEPS% ^

--sample_at_first

echo 将执行以下命令:

echo %CMD%

set /p CONFIRM=您是否要继续训练(y/n)?

if /i "%CONFIRM%"=="y" (

%CMD%

) 否则(

echo 操作已取消。

)

REM 保持窗口打开

cmd /k

如往常一样,请确保将所有实例的[您的个人资料名称]替换为您的正确Windows个人资料名称。

确保目录C:\Users\[您的个人资料名称]\Desktop\Musubi\输出模型\存在,如果不存在,请在该位置创建。

训练预览

Musubi训练器最近启用了一个非常基本的训练预览功能,允许您强制训练模型暂停并根据您保存的提示生成图像。这些图像将保存在一个名为样本的自动创建文件夹中,该文件夹位于保存训练模型的同一目录中。

要启用此功能,您需要至少在一个文本文件中保存一个提示;因此,您可以将提示文件命名为任何您喜欢的名称,并将其保存在任何位置。

以下是提示文件的示例,该文件将在训练过程中输出三个不同的图像:

如您所见,示例中的提示可以在末尾添加标志,这将影响生成的图像:

–w 是 宽度(如果未设置,默认为256px,根据 文档
–h 是 高度(如果未设置,默认为256px)
–f 是 帧数。如果设置为1,则会生成图像;如果设置为多个,则会生成视频。
–d 是种子。如果未设置,则为随机;但是,您应该设置它以查看一个提示的演变。
–s 是生成步骤的数量, 默认为20。

请参阅 官方文档 以获取有关其他标志的更多信息。

虽然训练预览可以快速揭示一些问题,这些问题可能会导致您取消训练并重新考虑数据或设置,从而节省时间,但请记住,每个额外的提示都会稍微减慢训练速度。

此外,训练预览图像的宽度和高度(如上所述的标志中设置的那样)越大,训练速度就会越慢。

启动您的训练.BAT文件。

问题 #1 是“输入数据集配置文件的路径”。粘贴或输入TOML文件的正确路径。

问题 #2 是“输入要训练的epochs数”。这是一个试验和错误的变量,因为它受到图像数量和质量、字幕以及其他因素的影响。通常,设置得太高比设置得太低更好,因为您可以随时使用训练窗口中的Ctrl+C停止训练。首先将其设置为100,然后看看效果如何。

问题 #3 是“输入输出模型名称”。命名您的模型!最好保持名称相对较短和简单。

问题 #4 是“选择学习率”,默认为1e-3(选项1)。这是一个好的起点,暂时不考虑其他因素。

问题 #5 是“多久(以步骤为单位)保存预览图像”。如果您将其设置得太低,您将看到预览图像之间的进度不会太大,这将减慢训练速度。

问题 #6 是“训练预览的文本提示文件的位置是什么?”。粘贴或输入您的提示文本文件的路径。

.BAT文件然后会显示它将发送给Hunyuan模型的命令,并询问您是否要继续,y/n。

继续训练:

在此期间,如果您查看Windows任务管理器的性能选项卡的GPU部分,您将看到该过程占用了大约16GB的VRAM。

这可能不是一个任意的数字,因为这是相当多的NVIDIA图形卡的可用VRAM量,上游代码可能已经针对这些卡进行了优化,以便任务能够容纳在16GB中。

话虽如此,提高此使用率是非常容易的,只需将更过分的标志发送给训练命令即可。

在训练过程中,您将在CMD窗口的右下角看到一个数字,表示自训练开始以来经过的时间,以及预计的总训练时间(这将根据设置的标志、训练图像的数量、训练预览图像的数量以及其他因素而有很大差异)。

典型的训练时间约为3-4小时,具体取决于可用的硬件、图像数量、标志设置和其他因素。

在Hunyuan Video中使用您的训练LoRA模型

选择检查点

训练完成后,您将为每个训练epoch拥有一个模型检查点。

保存频率可以通过在训练.BAT文件中修改--save_every_n_epochs [N]数字来更改。如果您在设置训练时将保存步骤设置得太低,则将有大量保存的检查点文件。

选择哪个检查点?

如前所述,训练得最早的模型将是最灵活的,而后期的检查点可能会提供最多的细节。测试这些因素的唯一方法是运行一些LoRAs并生成一些视频。通过这种方式,您可以了解哪些检查点是最有成效的,并在灵活性和保真度之间取得最好的平衡。

ComfyUI

目前,使用Hunyuan Video LoRAs的最流行环境(尽管不是唯一的环境)是 ComfyUI,它是一个具有精致的Gradio界面的基于节点的编辑器,运行在您的Web浏览器中。

来源:https://github.com/comfyanonymous/ComfyUI

来源:https://github.com/comfyanonymous/ComfyUI

安装说明很简单,且可在官方GitHub存储库中找到(需要下载其他模型)。

将模型转换为ComfyUI兼容格式

您的训练模型以(diffusers)格式保存,这与大多数ComfyUI实现不兼容。Musubi可以将模型转换为ComfyUI兼容格式。让我们设置一个.BAT文件来实现此目的。

在运行此.BAT文件之前,请创建C:\Users\[您的个人资料名称]\Desktop\Musubi\转换\文件夹,该文件夹是脚本所期望的。

@echo off

REM 激活虚拟环境

call C:\Users\[您的个人资料名称]\Desktop\Musubi\musubi\Scripts\activate.bat

:START

REM 获取用户输入

set /p INPUT_PATH=输入要转换的Musubi safetensors文件的路径(或输入“exit”以退出):

REM 如果用户输入“exit”,则退出

if /i "%INPUT_PATH%"=="exit" goto END

REM 从输入路径中提取文件名并追加“转换”

for %%F in ("%INPUT_PATH%") do set FILENAME=%%~nF

set OUTPUT_PATH=C:\Users\[您的个人资料名称]\Desktop\Musubi\Output Models\CONVERTED\%FILENAME%_converted.safetensors

set TARGET=other

echo 您输入:

echo 输入文件:%INPUT_PATH%

echo 输出文件:%OUTPUT_PATH%

echo 目标格式:%TARGET%

set /p CONFIRM=您是否要继续转换(y/n)?

if /i "%CONFIRM%"=="y" (

REM 运行转换脚本,路径正确引用

python C:\Users\[您的个人资料名称]\Desktop\Musubi\musubi\musubi-tuner\convert_lora.py --input "%INPUT_PATH%" --output "%OUTPUT_PATH%" --target %TARGET%

echo 转换完成。

) 否则(

echo 操作已取消。

)

REM 返回开始以处理另一个文件

goto START

:END

REM 保持窗口打开

echo 退出脚本。

pause

将脚本保存为“所有文件”从记事本保存,命名为convert.bat(或您喜欢的任何名称)。

一旦保存,双击新.BAT文件,它将提示您输入要转换的文件的路径。

粘贴或输入要转换的文件的路径,按y,然后按Enter。

转换LoRA后,将其保存到CONVERTED文件夹中,脚本将询问您是否要转换另一个文件。如果您想在ComfyUI中测试多个检查点,请转换一组模型。

当您转换了足够的检查点后,关闭.BAT命令窗口。

现在,您可以将转换后的模型复制到ComfyUI安装中的models\loras文件夹中。

通常,正确的位置是类似这样的:
C:\Users\[您的个人资料名称]\Desktop\ComfyUI\models\loras\

在ComfyUI中创建Hunyuan Video LoRAs

虽然ComfyUI的基于节点的工作流程最初看起来很复杂,但其他更高级用户的设置可以通过将使用其他用户的ComfyUI创建的图像直接拖到ComfyUI窗口中来加载。工作流程也可以以JSON文件的形式导出,这些文件可以手动导入或拖到ComfyUI窗口中。

一些导入的工作流程可能具有缺失的依赖项。因此,安装ComfyUI-Manager,它可以自动获取缺失的模块。

来源:https://github.com/ltdrdata/ComfyUI-Manager

来源:https://github.com/ltdrdata/ComfyUI-Manager

要加载本教程中使用的工作流程之一,请下载此JSON文件并将其拖到您的ComfyUI窗口中(尽管在采用Hunyuan Video的各种Reddit和Discord社区中有更好的工作流程示例可用,我的工作流程是从其中一个改编而来的)。

这不是ComfyUI使用的详细教程,但值得提到几个将影响输出的关键参数,如果您下载并使用我链接的JSON布局。

1)宽度和高度

图像越大,生成时间越长,内存不足(OOM)错误的风险越高。

2)长度

这是帧数的数字值。它转换为秒数取决于帧率(在此布局中设置为30fps)。您可以使用Omnicalculator根据fps将秒数转换为帧数。

3)批次大小

您设置批次大小越高,结果可能会更快,但VRAM的负担也会更大。将其设置得太高,您可能会遇到OOM。

4)生成后控制

这控制着随机种子。子节点的选项是固定递增递减随机化。如果您将其保留为固定并且不更改文本提示,您每次都会得到相同的图像。如果您修改文本提示,图像将以有限的方式更改。递增递减设置允许您探索附近的种子值,而随机化会给您一个完全新的对提示的解释。

5)LoRA名称

您需要在此处选择自己的安装模型,然后尝试生成。

6)令牌

如果您已将模型训练为使用令牌触发概念(例如‘example-person’),请在提示中放置该触发词。

7)步骤

这代表了系统将应用于扩散过程的步骤数量。更高的步骤可能会获得更好的细节,但这种方法的有效性有一个上限,而这个阈值可能很难找到。步骤的常见范围是20-30。

8)瓦片大小

这定义了生成过程中一次处理的信息量。默认设置为256。提高它可以加快生成速度,但提高太多可能会导致OOM,这是一个令人沮丧的经历,因为它发生在漫长的过程的末尾。

9)时间重叠

Hunyuan Video生成的人可能会导致“鬼影”或令人不信服的运动,如果设置得太低。通常,当前的共识是它应该设置为比帧数更高的值,以产生更好的运动。

结论

虽然ComfyUI的使用不在本文的讨论范围内,但社区经验和在线指南可以帮助您学习曲线。

 

首次发布于2025年1月23日星期四

机器学习作家,人类图像合成领域专家。曾任 Metaphysic.ai 研究内容负责人。
个人网站: martinanderson.ai
联系: [email protected]
Twitter:@manders_ai