【文生图系列系列】腾讯混元文生图大模型HunyuanDiT

在即将下班的时刻,看到腾讯旗下的混元文生图大模型全面升级并全面开源的消息,忍不住搭环境下模型,实测一手。本以为很容易,但没想到困难重重,bug频现。

GitHub 项目地址:https://github.com/Tencent/HunyuanDiT
Hugging Face 模型地址:https://huggingface.co/Tencent-Hunyuan/HunyuanDiT

混元文生图大模型采用了与 Sora 一致的 DiT 架构,即全新的 Hunyuan-DiT 架构,不仅可以支持文生图,也可以作为视频等多模态视觉生成的基础。支持中英文双语输入及理解,参数量 15 亿。为业内首个中文原生的 DiT 架构文生图开源模型。

从下表中可以看出,混元文生图模型是目前最好的开源文生图模型。
在这里插入图片描述

模型架构

过去,视觉生成扩散模型主要基于 U-Net 架构,但随着参数量增加,基于 Transformer 架构的扩散模型展现了更好的扩展性,有助于进一步提升模型生成质量及效率。Sora 很好地说明了这一点。

腾讯混元文生图大模型采用了全新的 DiT 架构(DiT 即 Diffusion With Transformer),是一种基于 Transformer 架构的扩散模型。在 DiT 架构之上,混元模型支持了中英双语文本提示生成图像,并在算法层面优化模型的长文本理解能力,能够支持最多 256 字符的内容输入。

Hunyuan-DiT 的模型结构如下图所示,在遵循潜在扩散模型(Latent Diffusion Model)的基础上,使用预训练的变分自编码器(VAE)将图像压缩成低维的潜在空间,并训练一个扩散模型来学习数据的分布。扩散模型是通过一个转换器(transformer)进行参数化的。为了编码文本提示,我们利用了一个预训练的双语(英语和中文)CLIP模型和多语言T5编码器的组合。
在这里插入图片描述

多轮文生图生成

对于文本到图像系统来说,理解自然语言指令并与用户进行多轮交互是非常重要的。这有助于构建一个动态且迭代的创作过程,逐步将用户的想法变为现实。混元团队训练了多语言大型语言模型(MLLM)以理解多轮用户对话,并输出用于图像生成的新文本提示,以赋予Hunyuan-DiT执行多轮对话和图像生成能力。
在这里插入图片描述

环境配置

如下是官方给出的conda建立虚拟环境。

git clone https://github.com/tencent/HunyuanDiT
cd HunyuanDiT
# 1. Prepare conda environment
conda env create -f environment.yml
# 2. Activate the environment
conda activate HunyuanDiT
# 3. Install pip dependencies
python -m pip install -r requirements.txt
# 4. (Optional) Install flash attention v2 for acceleration (requires CUDA 11.6 or above)
python -m pip install git+https://github.com/Dao-AILab/flash-attention.git@v2.1.2.post3

原先使用stable diffusion项目时,就已经配置好相关的虚拟环境,我大致查看了一下,包含混元所需的依赖包,所以就略过环境配置的步骤。

下一步,从hugging face中下载预训练模型。

python -m pip install “huggingface_hub[cli]” 如无huggingface-cli需先安装依赖
mkdir ckpts
huggingface-cli download Tencent-Hunyuan/HunyuanDiT --local-dir ./ckpts

但是会出现下述问题:
在这里插入图片描述
解决方案:

# 1. 使用清华源安装依赖
pip install -U huggingface_hub hf_transfer  -i https://pypi.tuna.tsinghua.edu.cn/simple
# 2. 设置镜像站,开启hf_transfer加速下载
export HF_ENDPOINT=https://hf-mirror.com
export HF_HUB_ENABLE_HF_TRANSFER=1
# 3. 下载模型
huggingface-cli download  --resume-download   Tencent-Hunyuan/HunyuanDiT --local-dir ./ckpts

网络流畅时,下载速度很快,但是有时候会卡住。也可以通过modelscope社区进行下载预训练模型。
modelScope混元模型下载地址:https://modelscope.cn/models/modelscope/HunyuanDiT/summary

命令行运行

sample_t2i.py为运行主函数,参数如下所示:
在这里插入图片描述

bug

问题:直接运行python sample_t2i.py --prompt "渔舟唱晚"出现bug,ImportError: cannot import name ‘LlavaLlamaForCausalLM’ from ‘llava.model’ (/*/HunyuanDiT/dialoggen/llava/model/init.py)
环境: python:3.10 ;torch: 2.0.1+cu118

解决方案:
查到的方案是flash-attn和pytorch的版本不对应,按照命令 pip install flash-attn --no-build-isolation --no-cache-dir --use-pep517 安装flash-attn,出现下图所示错误:
在这里插入图片描述
可通过flash-atten release版本路径查找flash-atten与pytorch对应版本的安装包。与上图红框给出的URL链接一致。
在这里插入图片描述

# 下载包文件
wget https://github.com/Dao-AILab/flash-attention/releases/download/v2.5.8/flash_attn-2.5.8+cu118torch2.0cxx11abiFALSE-cp310-cp310-linux_x86_64.whl
# pip直接安装离线安装包
pip install flash_attn-2.5.8+cu118torch2.0cxx11abiFALSE-cp310-cp310-linux_x86_64.whl

但是还是会出现同样的错误,于是我将dialoggen/llava/model/init.py中的try-except去掉,问题解决了。
在这里插入图片描述

问题:OSError: We couldn’t connect to ‘https://huggingface.co’ to load this file, couldn’t find it in the cached files and it looks like openai/clip-vit-large-patch14-336 is not the path to a directory containing a file named preprocessor_config.json.
Checkout your internet connection or see how to run the library in offline mode at 'https://huggingface.co/docs/transformers/installation#offline-mode

解决方案

openai/clip-vit-large-patch14-336路径封装在库里面,离线环境无法跑推理。所以需要离线下载好clip-vit-large-patch14-336模型,然后将ckpts/dialoggen/config.json中的“mm_vision_tower”路径更改为clip-vit-large-patch14-336所在的位置。
在这里插入图片描述

示例

命令:python sample_t2i.py --prompt “渔舟唱晚”
在这里插入图片描述
结果
在这里插入图片描述
命令:python sample_t2i.py --prompt “一朵鲜艳的红色玫瑰花,花瓣撒有一些水珠,晶莹剔透,特写镜头,”
在这里插入图片描述
结果
在这里插入图片描述
这朵玫瑰花不错,就是露水有点多。

运行实例时,特意留意了一下内存占用,在diffusion sampler的过程中,内存占用14G,最后两秒会上升到16G。
在这里插入图片描述
内存占用不高,但是加载模型的过程中特别慢,特别慢,特别慢!!!

  • 17
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

马鹤宁

谢谢

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值