本次解读开源中英文扩散模型:Hunyuan-DiT : A Powerful Multi-Resolution Diffusion Transformer with Fine-Grained Chinese Understanding
一、简介
Hunyuan-DiT为对英文和中文有细粒度理解力的文生图扩散模型。该团队对转换器结构、文本编码器、位置编码进行了设计,同时从头构建了对模型进行迭代优化的数据更新和评价流程。为了进行细粒度的语言理解,该团队训练了一个多模态大语言模型以改善图片的对应字幕描述。该模型可以与使用者进行多轮对话根据对话生成图片,与其他开源模型相比达到了最好的中文生图片效果。
二、模型架构
2.1 VAE
使用SDXL中的VAE(变量自编码器),这个自编码器取自SD1.5中并在512*512的图片上微调,有实验数据表明——在高分辨率训练过的这种VAE可以改善清晰度、缓解过渗透以及减少扭曲度。
2.2 扩散转换器
总的来说,先将VAE的向量作为输入后切成2*2的小块,然后将每个小块投影成线性后喂给转换器块。混元DiT有两种转换器块——编码器和解码器块,二者都包含三个模块——自注意力、交叉注意力和前向神经网络。
其解码器和经典的Transformer相似,使用残差链接将编码器的信息添加过来,类似一个简单的无变换其特征维度的上采样或下采样操作的U-Net。
2.3 文本编码器
使用T5和CLIP结合
2.4 位置编码和多分辨率产生
通用的位置编码是如经典的结构中所使用的三角函数位置编码(正余弦)来表示token的位置信息,本模型中采用的是RoPE(旋转位置编码),有兴趣的读者可以自行选择此材料为参考:Rotary Position Embedding (RoPE, 旋转式位置编码) | 原理讲解+torch代码实现_旋转位置编码-CSDN博客
最终采用上式(称为中心多项式位置编码)以编码其token位置信息,f函数是旋转位置编码操作,S为分辨率上限,如此可以对不同分辨率的托肯共用相似的位置编码空间进行编码。
2.5 改善训练稳定性的措施
1.QK-Norm:在计算QKV前添加LN(层正则化操作)
2.在解码器的跳连结构后添加LN以避免损失爆发
3.从浮点数16变为32位以防止一些特定操作的溢出(如LN)
三、数据流程
如一些专用领域上数据的重要性类似,本模型也有一定的数据流程值得学习,将其中有意思的部分简要汇总如下:
1.由于文生图的输出要求,有一定的数据解释标准并按照这些标准打了标签:图像清晰度、艺术性、不雅、暴力、类别、描述等标准
2.数据分层:数据被分层为铜、银、金三个质量的数据分别用于基础CLIP模型、生成模型、改善和优化生成模型。
3.特定数据被用于特定的优化阶段、定期检查数据、新加工后的数据被持续添加到基础模型的迭代优化阶段
4.数据类别系统:物体、风格
5.数据评估:根据各个数据特性综合评估在测试集上打分
6.字幕优化:此处用的工作和最近的AI趋势相似——其用于处理的模型结构包括一个视觉转换器、只基于解码器的LLM、和一个对其视觉和文字的适配器,训练目标是分类损失。
7.注入世界信息:1.标签注入(专家或者专业模型注入)2.原始字幕注入,使用GPT融合新的字幕描述和多模态模型融合字幕以及图片的描述
8.多轮对话的提示词增强:使用多模态语言模型对多轮对话进行文本提示词的改善以进行图片的产生
9.构建指示、提示词数据集以构建训练集
四、优化
1.训练阶段优化:采用ZeRO、flash-attention、多流异步执行、检查机制、核融合以提高训练速度
2.推理阶段优化:使用一些工程手段提高推理效率:ONNX图优化、核优化、操作子融合、预计算、GPU再利用
3.本模型提到了四个需要考虑的方面,尝试过一些算法优化的渠道采用了Progressive蒸馏,可以稳定训练并且平衡加速效率和模型表现
关注到LoRA是在近期得到了支持
五、模型表现
与开源和闭源的模型在一些指标上做了对比,可以看出其在开源中英文文生图模型中打分不错
本期的论文解读到此结束,对其中所用技术感兴趣的读者可留言讨论
欢迎关注无神一起学AI