之前在介绍腾讯开源的混元-DiT文生图大模型时,顺带提过会出一篇部署教程。16G显卡正好能满足最低显存要求,不少朋友也表示感兴趣。那么,今天就具体来看看怎么操作。

需要提醒的是,本次部署对显卡有明确要求:显存至少11G以上。如果想体验多轮对话功能,显存则需32G以上。
教程里不会再重复显卡驱动和CUDA的安装细节,之前有文章专门讲过这两个环节:
- 《Ubuntu22.04 安装NVIDIA驱动(吐血版)》
- 《Ubuntu22.04 安装CUDA 和cuDNN》
另外,整套流程基于Linux系统(Ubuntu)测试,如果用的是Windows或Mac,部分命令可能需要自行调整。如果只想看最终效果,可以直接跳到末尾。
项目环境:
- Python:3.8
- GPU:NVIDIA 4060Ti 16G
- GPU Driver:535.154.05
- Cuda:12.2
一、搭建环境及安装依赖
1. 克隆项目
$ git clone https://github.com/tencent/HunyuanDiT
$ cd HunyuanDiT
2. 新建 conda 环境
$ conda env create -f environment.yml
项目通过conda安装依赖,配置文件是 environment.yml。如果之前没装conda,可以通过miniconda官方教程安装。
如果你执行上面命令后遇到报错(比如连接超时),很可能是使用了conda默认源,国内访问较慢。可以换源解决:
先用 conda config --show 看看当前配置。换源有两种方式:
- 方式一:通过
conda config --add channels命令添加镜像源。 - 方式二:修改
~/.condarc文件。若文件不存在,先执行conda config --set show_channel_urls yes生成它,再把内容替换为以下配置:
channels:
- defaults
show_channel_urls: true
default_channels:
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
custom_channels:
conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
pytorch-lts: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
deepmodeling: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/
然后清除缓存:conda clean -i,再重新执行 conda env create -f environment.yml。
3. 激活 conda 环境
$ conda activate HunyuanDiT
4. 安装依赖
刚创建的conda环境只有基础包,需要通过pip安装项目所需依赖:
$ pip install -r requirements.txt
官方还推荐安装flash attention来加速(需CUDA 11.6以上),不过有些人反馈效果不明显,可按需安装:
$ pip install git+https://github.com/Dao-AILab/[email protected]
二、下载模型
先安装 huggingface-cli:
$ pip install "huggingface_hub[cli]"
在项目根目录创建 ckpts 文件夹作为模型存放目录,然后用 huggingface-cli 下载:
$ mkdir ckpts
$ huggingface-cli download Tencent-Hunyuan/HunyuanDiT --local-dir ./ckpts
下载过程中如果遇到 No such file or directory: 'ckpts/.huggingface/.gitignore.lock',忽略即可,重新执行命令。
另一个常见问题是 ChunkedEncodingError(连接中断),因为模型总大小约41G,下载一半容易断。huggingface-cli 支持断点续传,所以直接重试就能继续。网上有些方法可以参考(比如换hf-mirror镜像站),但实测最稳妥的还是耐心等待。
三、启动UI界面
下载模型只是第一步,启动UI程序也踩了不少坑。
如果使用了Socks袋里,可能会提示缺少 socksio 包,安装 pip install "httpx[socks]" 即可。
第二个报错是显卡处于独占模式(compute mode),通过以下命令恢复默认:
$ nvidia-smi -g 0 -c 0
第三个问题是端口冲突。源码里写死了443端口,直接改代码换成其他端口(比如8099),同时建议将 share 设为 False 以避免公开暴露。
搞定这些后,UI界面终于顺利启动。
四、文生图体验
界面跑起来了,但生成图片时又遇到几个问题。
4.1 CUDA不可用
原本系统能识别CUDA(torch.cuda.is_a vailable() 返回True),但部署后突然报错:CUDA unknown error。折腾了很久,最后重启电脑就好了。这个问题的根源没完全搞清楚,但实际遇到时可以优先尝试重启。
4.2 显存超限
默认开启了DialogGen(提示词增强模型),该模型需要至少32G显存,16G显卡自然爆了。启动时加上 --no-enhance 参数即可:
$ python app/hydit_app.py --no-enhance
4.3 安装 flash-attention
一开始没装flash-attention,生成一张图竟然要226秒。安装后速度有提升,但安装过程又踩了坑——需要先安装CUDA Toolkit并配置 CUDA_HOME 环境变量。通过runfile方式安装(注意取消驱动安装选项),然后设置环境变量:
export PATH=/usr/local/cuda-12.2/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-12.2/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
export CUDA_HOME=/usr/local/cuda-12.2
大概半小时后编译成功。
五、文生图效果
下面是用不同提示词生成的图片效果(图片插入位置见原文,此处省略展示):
- 画一只穿着西装的猪
- 现实主义风格,巴洛克风格花瓶,金色装饰边框,各种色彩鲜艳的花,白色背景
- 请将“杞人忧天”的样子画出来(感觉抽卡失败)
- 忽如一夜春风来 千树万树梨花开
- 一只长靴猫手持亮银宝剑,身着铠甲,眼神坚毅,站在金币上,背景暗色调洞xue,有金币光影
- 一张细致的照片,雕像酷似古代法老,头戴青铜蒸汽朋克护目镜,穿白色T恤和黑色皮夹克,纯色背景
- 一位可爱女孩,蓝色头发,红色眼睛,腰上绑子弹,手里拿枪
大家觉得混元-DiT的文生图效果如何?
六、小小总结
整个部署过程比预想复杂,前后花了一天多。最耗时的部分是模型下载和CUDA突然不可用的问题。生成的图片效果尚可,但生成速度确实让人失望——在同等显卡配置下,Stable Diffusion生成一张图只需5-15秒,而混元-DiT每张需要220秒左右。不确定是哪里安装有问题还是本身就这么慢,有部署经验的朋友可以说说自己的跑图时间。
