Anderson 视角

如何训练和使用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 Subsystem for Linux(WSL)来处理一些过程。

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

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

单击播放。Musubi Tuner的LoRA训练样本,本文使用。

要求

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

警告

安装Musubi Tuner及其先决条件还涉及在PC的主Windows安装上直接安装面向开发人员的软件和包。考虑到ComfyUI的末端阶段,这个项目将需要大约400-500 GB的磁盘空间。虽然我已经在多个新安装的测试环境中多次测试了该过程,但我和unite.ai不对系统因遵循这些说明而造成的任何损害负责。我建议您在尝试此类安装过程之前备份任何重要数据。

考虑因素

这种方法是否仍然有效?

生成性AI场景正在迅速发展,我们可以期待今年会有更好、更流畅的Hunyuan视频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视频LoRA训练体验。话虽如此,它看起来很有前途!

但是,如果你等不了,并且愿意稍微动动手,你可以立即在本地运行Hunyuan视频LoRA训练。

让我们开始吧。

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

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

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

安装先决条件包和程序

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

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,而其他包需要较新版本。

因此,还要下载Visual Studio 19的免费社区版,既可以从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安装程序已经知道较新版本):

安装完成后,您已打开并关闭了安装的Visual Studio 2019应用程序,在Windows命令提示符中(在“开始”搜索框中输入“CMD”)输入并执行:

where cl

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

如果您得到INFO:找不到给定模式的文件,请参阅本文的“检查路径”部分,并使用那些说明将相关的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安装程序”)

启动安装程序:

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

单击“下一步”。

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

cmake --version

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

cmake version 3.31.4
CMake套件由Kitware(kitware.com/cmake)维护和支持。

7:安装Python 3.10

Python解释器是此项目的核心。从以下位置下载3.10版本(Musubi包的不同需求之间的最佳折衷):

https://www.python.org/downloads/release/python-3100/(“64位Windows安装程序”)

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

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

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

python --version

这应该会产生Python 3.10.0

检查路径

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

因此,我们需要打开路径环境并检查所有必需的组件是否都在其中。

快速访问Windows环境的方法是将“编辑系统环境变量”输入到Windows搜索栏中。

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

这里重要的条目是:

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安装相关),请使用上面的路径找到正确的目标文件夹(例如,在您的安装中查找“x64”),然后将那些路径粘贴到“编辑环境变量”窗口中。

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

安装Musubi

升级PIP

使用最新版本的PIP安装程序可以简化一些安装阶段。在具有管理员权限的Windows命令提示符中(请参阅下面的“提升”),输入并执行:

pip install --upgrade pip

提升

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

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

安装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视频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.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视频基础模型可能不知道或无法猜测的方式移动时才真正有用。例如罗杰兔子,外星人,面具,蜘蛛侠或具有独特特征的其他角色。

由于Hunyuan Video已经知道普通人如何移动,因此对于获得令人信服的Hunyuan Video LoRA人类角色来说,视频片段并不是必要的。因此,我们将使用静态图像。

图像准备

待办事项清单

TLDR版本:

最好使用相同大小的图像作为您的数据集,或者使用两个不同大小的图像的50/50混合,例如10张512x768px的图像和10张768x512px的图像。

训练可能会很好,即使您没有这样做——Hunyuan Video LoRAs可以非常宽容。

更长版本

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

对于您在训练数据集中包含的每个图像大小(例如512x768px),将为该大小创建一个“桶”或“子任务”。因此,如果您有以下图像分布,则桶注意力将不均匀分布,可能会导致一些照片在训练中比其他照片更重要:

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

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

因此,坚持使用一种格式大小,或者尝试保持不同大小的分布相对均匀都是一个好主意。

在任何情况下,都要避免使用非常大的图像,因为这可能会减慢训练速度,并且几乎没有好处。

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

免责声明: 该模型(人物)已授予我使用这些图片的许可,并批准了在本文中展示的所有基于人工智能的输出,展示了她的肖像。

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

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

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

TOML文件

Hunyuan视频LoRA的训练和预缓存过程从扩展名为.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,让我们继续…

潜在预缓存

为了避免在训练时过度的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

) else (

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

) else (

echo 操作已取消。

)

REM 保持窗口打开

pause

将所有[您的个人资料名称]实例替换为您的实际Windows个人资料文件夹名称,并将脚本保存为“所有文件”(如下图所示),将其命名为text-cache.bat(或您喜欢的任何名称):

运行新的.BAT文件,按照提示操作,必要的文本编码文件将出现在缓存文件夹中:

训练Hunyuan视频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%

) else (

echo 操作已取消。

)

REM 保持窗口打开

cmd /k

将所有[您的个人资料名称]实例替换为您的实际Windows个人资料文件夹名称。确保C:\Users\[您的个人资料名称]\Desktop\Musubi\Output Models\目录存在,如果不存在,请在该位置创建它。

训练预览

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

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

以下是文件中三个不同图像的提示示例,当训练程序请求时将生成这些图像:

如您所见,提示的末尾可以有标志,它们会影响生成的图像:

–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视频中使用您的训练LoRA模型

选择检查点

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

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

选择哪个检查点?

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

ComfyUI

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

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

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

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

为ComfyUI转换模型

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

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

@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 从输入路径中提取文件名并追加“converted”

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 转换完成。

) else (

echo 操作已取消。

)

REM 返回开始以转换另一个文件

goto START

:END

REM 保持窗口打开

echo 脚本退出。

pause

将所有[您的个人资料名称]实例替换为您的实际Windows个人资料文件夹名称,并将脚本保存为“所有文件”(如下图所示),将其命名为convert.bat(或您喜欢的任何名称):

一旦保存,请双击新的BAT文件,它将要求您输入要转换的文件的位置。

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

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

一旦您转换了足够的检查点,请关闭BAT命令窗口。

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

通常,正确的位置是类似这样的:

C:\Users\[您的个人资料名称]\Desktop\ComfyUI\models\loras\

在ComfyUI中创建Hunyuan视频LoRAs

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

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

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

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

要加载本教程中用于生成视频的工作流程之一,请下载此JSON文件并将其拖入ComfyUI窗口(尽管Reddit和Discord社区中有许多更好的工作流程示例,它们采用了Hunyuan Video,并且我自己的工作流程是从其中一个改编而来的)。

这是不介绍ComfyUI使用的合适地方,但值得提及几个将影响输出的重要参数,如果您下载并使用我链接到的JSON布局:

1)宽度和高度

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

2)长度

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

3)批大小

您将批大小设置得越高,结果可能会更快,但VRAM的负担也会更大。如果设置得太高,您可能会遇到内存不足错误。

4)生成后控制

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

5)LoRA名称

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

6)令牌

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

7)步骤

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

8)图块大小

这定义了在生成过程中一次处理多少信息。它默认设置为256。将其提高可以加快生成速度,但将其提高太高可能会导致特别令人沮丧的内存不足体验,因为它发生在漫长的过程的末尾。

9)时间重叠

Hunyuan视频生成的人可能会导致“幽灵”或令人不信服的运动,如果此设置太低。一般来说,当前的共识是它应该设置为比帧数更高的值,以产生更好的运动。

结论

虽然进一步探索ComfyUI的使用超出了本文的范围,但Reddit和Discord社区的经验可以帮助您学习曲线,而且有几篇在线指南介绍了基础知识。

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

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