腾讯出列! 混元DIT 模型lora训练器与使用教程发布,且配有comfyui节点插件。

2024-07-26 23:18   美国  

彩虹之眼干货推荐 | 由知乎大佬社恐患者杨老师投稿

混元DiT,是腾讯开源的一个基于Diffusion transformer全新架构的的文本到图像生成模型,此模型具有中英文细粒度理解能力。目前腾讯已经将模型权重、推理代码、打标器、模型算法等全部开源了。而且模型版本从最开始的1.0已经迭代到现在的1.2版本,底层模型能力有不小的提升。当然重点是对中文语义的理解能力,目前我实测来看,中文语义理解能力,混元DIT在所有开源模型中属于是第一梯队的存在。

混元DiT提供双语生成能力,特别是对中国元素理解具有一定的优势。以下是使用中文古诗词作为提示词,直接使用混元1.2模型生成图片的两个例子:
提示词:枯藤老树昏鸦
提示词:醉后不知天在水,满船清梦压星河。
此外混元DiT在分析和理解长篇文本以及对文本描述颗粒度的把握上也有着不错的表现:
 中英双语的DIT模型架构
在模型架构上如下图所示。根据潜空间扩散模型,HunyuanDIT使用预先训练好的变分自动编码器(VAE)将图像压缩到低维潜空间(latent space),然后训练扩散模型,利用扩散模型学习数据分布。然后扩散模型通过Transformer进行参数化。为了对文本提示进行编码,HunyuanDIT结合使用了预先训练好的双语(英语和中文)CLIP 和多语种 T5 编码器。
HunyuanDIT模型架构
多轮文本到图像生成能力
理解自然语言指令并与用户进行多轮交互对于文生图能力非常重要。它有助于建立一个动态和迭代的创作过程,一步步将模型使用者的想法变为现实。下图展示了混元-DiT 是如何通过训练 MLLM 来理解多轮用户对话,并输出新的文本提示用于图像生成。来实现多轮对话和图像生成能力的。

Multi-turn Text2Image Generation
Long Text Input
更多关于HunyuanDIT模型的细节可以到混元DIT的GitHub主页详细了解:
项目地址:https://github.com/Tencent/HunyuanDiT

混元DiT的使用痛点
介绍完混元DIT的优点和能力之后,我们再来看看当下情况中混元DIT使用过程中的一些痛点,我想作为使用者,我们最为关心的还是模型好不好用,是否方便微调以及在comfyui中部署。接下来我就从使用者的角度来给大家介绍一下混元DIT在使用过程中的一些痛点以及问题。
痛点1:资源消耗,现在的文生图领域自从SD3开源以来,新的趋势是向DIT模型结构迈进已经非常明显,无论从华为最开始开源的Pixart-Σ到后面的SD3还有混元DIT,在以SORA和Kling为代表文生视频领域已经被验证过可行性的DIT架构,毫无悬念的开始引领t2i领域新的发展思路。
但是同时Dit架构时代的开启对于普通用户来说,就面临一个很现实的问题——资源不足。这里的资源重点其实指的是三个,分别是显存、内存以及硬盘空间。就以混元DIT模型举例,根据官方给出的资源列表来看。如果要想流畅运行,显存开销最低也需要10几个G以上,而且还需要Clip+T5模型需要占用的硬盘空间大小。

因此如何在较低的资源例如12G显存或8G显存上运行混元DIT,仍然需要不断的进行优化。
痛点2
微调不方便,虽然官方给出了完整的混元DIT的lora训练和全参微调的代码,但是部署环境,配比参数,等等细节还是会难到很多不会代码的炼丹师。
参考地址:https://github.com/Tencent/HunyuanDiT/tree/main/lora
混元GitHub主页上对lora训练给出了完整的示例
痛点3:HunyuanDIT模型与comfyui的适配。这方面虽然腾讯官方给出了在comfyui中使用HunyuanDIT的节点代码,但是节点安装以及模型下载还有加载lora或者controlnet甚至是IPA等适配还存在着不少的问题。

混元DiT痛点目前的解决方案
HunyuanDIT模型微调训练器使用介绍
基于以上的三个痛点,社区内的很多大佬也都在努力尝试去解决。比如开源社区内已经有像青龙圣者这样的大V做了一些lora和dreambooth大模型的运行脚本。但是对于很多新手来说,配置环境和下载模型以及微调参数的选择还是会遇到很多的问题。为了帮助大家更方便的进行针对混元DiT进行lora训练,我在青龙圣者的训练脚本基础之上,将环境依赖以及模型一起打包为SD3_HY_train_V19.1.ra文件r。并且针对Windows环境下运行存在的bug代码做了修复,现在已经上传到网盘中,大家可以去下载后一键解压使用。训练器下载地址:
https://pan.baidu.com/share/init?surl=WhSNJmQdtmUXlN-uyOK1tg&pwd=dma3
提取码:dma3
这里再对训练器一键安装包的使用做一下简单的介绍,压缩包解压完之后,文件夹是长这样的:

!!!请注意!!!
本压缩包已经集成了模型和环境依赖,请直接跳到一键lora训练器说明文件中的第三步编辑训练脚本编辑参数然后运行脚本即可。如果运行过程中有环境问题的报错,再回头运行第一步或第二步。正常情况下Windows系统可以正常运行!
其中环境依赖和模型,我都已经打包好了,因此如果要训练只需要使用记事本或者notepad++打开脚本文件train_hunyuan_12Glora.ps1来制定训练集路径和各种参数即可。我这里比较推荐使用notepad++来编辑。当然如果你是开发者,使用VS code这种IDE更好一些。脚本打开之后就可以直接在里面编辑参数了,相比GUI那种图像界面来说,脚本的一个优势是,如果很多参数是不需要调整的话,第一次设置好之后,后面就不用动了,只需要调整几个重要参数即可。
编辑训练脚本的参数设置
注意此训练脚本的repeat数和秋叶训练脚本一样,需要在训练集的文件夹命名为XX_filename,其中xx即为repeat数。此外本训练脚本支持分层训练,如需分层训练,请在子数据集文件夹命名时注意填写repeat数。以下图为例,做分层训练时,文件夹命名前面的数字就代表次子数据集的repeat数。
根据社区炼丹大佬的经验,推荐训练参数:
unet_lr=4e-4(不能太低)
te_lr=2e-5
rank=64(32也行) #根据你的数据集图片数量大小来决定
alpha=32
batch_size = 2 #请根据你的显存大小和显卡性能来选择,如果性能一般,建议BS选择1
gradient_accumulation_steps = 2 #梯度累积,如果bs调成1仍然报OOM可以适当提高此项参数大小。
noise_offset=0
multires_noise_iterations=0
multires_noise_discount=0
optimizer_type = PagedAdamW8bit
repeat:5~10根据总图片数量定
大家需要注意,train_data_dir 这个是训练数据的加载路径,大家可以在脚本里面自定义。output_name是训练完lora模型的名称设置,可以根据需要自行填写,参数写好之后保存,然后右键点击train_hunyuan_12Glora.ps1使用powershell来运行,正常运行后如下图所示,就代表训练已经正常运行了。
如果这里显示有环境问题的报错,可以使用powershell执行install-cn-qinglong.ps1这个脚本然后出现提示后输入no更新一下环境即可。
Windows环境下,多卡分布式训练配置
本人的训练环境是双卡4090,因此在训练环境部署过程中,还涉及到了一个比较冷门的情况,也就是单机多卡分布式训练。我在这里也简单说一下,如何在Windows环境下做单机多卡的分布式训练参数配置。
首先要说明的一点是,多卡分布式训练对Windows环境来说很不友好。因为Windows环境不支持NCCL,训练脚本启动后会遇到如下报错:
RuntimeError: Distributed package doesn‘t have NCCL built in
报错位置
因为windows不支持NCCL backend,所以需要将用到NCCL的地方替换为gloo,根据报错位置显示的路径,找到源文件,修改代码将self.backend改成gloo即可解决。
还有就是多卡训练需要使用accelerate config命令进行一些基础的配置。操作方法如下:
首先到./SD3_HY_train_V19.1文件路径下输入powershell,然后输入venv\Scripts\activate激活虚拟环境。
在虚拟环境中输入accelerate config开始进行配置,配置过程很傻瓜,可以参考下图一步一步跟着做即可。
    
这样配置完成之后就可以开始多卡训练了,下图是我双卡4090在Windows环境下负载的情况,可以看到两张4090加载的显存情况是卡1加载了18G左右,卡2加载15G左右。
在comfyui中使用HunyuanDIT
目前SD生态里面,开发者使用者最关注的莫过于comfyui社区了,那么如何在comfyui中使用HunyuanDIT模型,肯定也是关注的重点了。虽然腾讯官方给出来了在comfyui安装调用的节点,但是环境依赖安装和部署过程还是比较痛苦的,为了解决这一痛点,我在官方代码的基础之上,优化了依赖版本,并于主流的comfyui环境进行了兼容。在秋叶启动器 python=3.10 torch=2.1.2 cuda-version=12.1 这个环境下测试可以完美运行以下为我基于官方代码修改后的混元dit节点GitHub链接:
https://github.com/pzc163/Comfyui-HunyuanDiT
大家可以在秋叶启动器的Manager管理器中通过URL直接下载安装使用。我在Comfyui-HunyuanDiT/workflow/ 路径下,放置了一个对比可图Kolors和混元1.2的工作流。名称为[HunyuanDIT_VS_Kolors.json]👇
地址:https://github.com/pzc163/Comfyui-HunyuanDiT
欢迎大家在本地comfyui中测试对比效果使用。
PS:目前的混元comfyui节点加载lora时会显示Lora keys not loaded的报错,这个意思是lora模型加载不成功。这个问题,目前需要等comfyui作者那边更新主分支代码,兼容Hunyuan的lora代码才能解决,这个大家可以去comfyui的GitHub官方页面提交issue,敦促comfyui尽快解决。去comfyui提交issue的链接如下:
https://github.com/comfyanonymous/ComfyUI/issues
如果大家还有其他比较好的解决方案,欢迎留言区一起沟通探讨。和各位炼丹师一起推动混元DIT生态成熟起来~感谢各位!
看到这里,如果觉得不错,随手点个赞、在看、转发三连吧,如果想第一时间收到推送,也可以给我个星标哦!
⭐~谢谢你看我的文章。
⭐我是彩虹少女:感谢你的阅读。
⭐视频号:RainbowEye

彩虹之眼
彩虹之眼(Rainbow Eye)-神秘而强大的 AI 情报组织。
 最新文章