混元文生图模型Hunyuan DiT部署体验,具备强大中文创作能力的文生图模型

大家好,前面在介绍腾讯开源的混元-DiT文生图大模型时立过一个Flag:就是出一篇部署教程,因为我的显卡是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官方教程[1]安装

如果你在执行上面的命令之后报了下面的错误,那大概率是因为你使用的是conda默认的源,然后这个在国内访问较慢导致超时失败(如果你安装依赖正常则可以跳过下面的步骤到第3步)

混元文生图模型Hunyuan DiT部署体验,具备强大中文创作能力的文生图模型

可以通过 conda config 命令查看配置

$ conda config --show
...
channel_alias: https://conda.anaconda.org
channel_priority: flexible
channel_settings: []
channels:
  - defaults
client_ssl_cert: None
client_ssl_cert_key: None
custom_channels:
  pkgs/main: https://repo.anaconda.com
  pkgs/r: https://repo.anaconda.com
  pkgs/pro: https://repo.anaconda.com
# 默认源
custom_multichannels:
  defaults: 
    - https://repo.anaconda.com/pkgs/main
    - https://repo.anaconda.com/pkgs/r
  local: 
debug: False
default_channels:
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
default_python: 3.11
ssl_verify: True
...

修改源有两种方式,第一种是通过 conda config 命令修改,比如:

# 需替换为对应源地址
conda config --add channels https://mirrors.xxx

第二种就是修改 ~/.condarc 文件,但如果你之前没设置过镜像源,有可能是没有这份文件的,需要通过这个命令生成

$ conda config --set show_channel_urls yes

我使用的是第二种方法,生成后配置文件内容只有 show_channel_urls: true 这一行,需要替换为以下内容:

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
Will remove 1 index cache(s).
Proceed ([y]/n)? y

最后执行最开始的命令即可

$ conda env create -f environment.yml
混元文生图模型Hunyuan DiT部署体验,具备强大中文创作能力的文生图模型

3、激活 conda 环境

$ conda activate HunyuanDiT

4、安装依赖

刚装的 conda 环境其实只有比较基础的依赖,并不是项目所需的依赖

$ pip list                     
Package           Version
----------------- -------
pip               24.0
setuptools        69.5.1
torch             1.13.1
typing_extensions 4.11.0
wheel             0.43.0

所以我们还需要通过 pip 命令安装项目依赖

$ pip install -r requirements.txt

官方还提到可以安装 flash attention 来加速,但要求CUDA的版本11.6及以上(这个如果嫌麻烦的可以不安装,因为感觉没啥效果,下面有提到)

$ pip install git+https://github.com/Dao-AILab/flash-attention.git@v2.1.2.post3

二、下载模型

在下载模型之前,首先需要安装 huggingface-cli[2]

$ pip install "huggingface_hub[cli]"

然后在项目根目录下创建一个 ckpts 的文件夹,这就是我们存放模型的目录,并使用上面的 huggingface-cli 下载模型

$ mkdir ckpts

$ huggingface-cli download Tencent-Hunyuan/HunyuanDiT --local-dir ./ckpts

正在下载中的模型

混元文生图模型Hunyuan DiT部署体验,具备强大中文创作能力的文生图模型

注:如果在下载的过程中遇到这个报错:No such file or directory: 'ckpts/.huggingface/.gitignore.lock’ ,可以忽略这个错误并重新执行上面的下载命令

虽然我没遇到上面的错误,但是我遇到了下面的错误:ChunkedEncodingError,如下图

混元文生图模型Hunyuan DiT部署体验,具备强大中文创作能力的文生图模型

这其实就是要下载的模型太大,下载到一半连接中断了,我看了一下,混元-DiT所需的模型大小一共是41G,简直头皮发麻。

我这边也在网上搜了一些方法,比如换源(hf-mirror),但效果并不明显,最终采取的做法就还是用 huggingface-cli 慢慢下,因为这个工具支持断点续传,也就是中途下载失败了,还能从原来的进度恢复,大概下了几个小时吧

混元文生图模型Hunyuan DiT部署体验,具备强大中文创作能力的文生图模型

网上查的方法(仅供参考):https://padeoe.com/huggingface-large-models-downloader/

镜像站地址:https://hf-mirror.com/

三、启动UI界面

原以为下载模型就已经够艰难了,没想到启动它的UI界面程序也同样坎坷。

如果你有用Sock代理的话,可能会提示你缺少依赖,报错及解决办法如下:

$ python app/hydit_app.py
...
raise ImportError(
ImportError: Using SOCKS proxy, but the 'socksio' package is not installed. Make sure to install httpx using `pip install httpx[socks]`

 # 注意要加上冒号
$ pip install "httpx[socks]"

第二个报错如下:

这是因为显卡的工作模式变成了独占模式,独占模式是一种GPU的工作模式,它允许单个计算进程独占一个GPU资源,从而提高计算效率,也就是其他程序无法抢占GPU了(猜测是之前跑其他程序被修改了)

混元文生图模型Hunyuan DiT部署体验,具备强大中文创作能力的文生图模型

通过这条命令恢复默认模式:

$ nvidia-smi -g 0 -c 0

Compute mode is already set to DEFAULT for GPU 00000000:01:00.0.
All done.

第三个报错就是端口冲突

混元文生图模型Hunyuan DiT部署体验,具备强大中文创作能力的文生图模型

看了下源码,是因为代码写死了443端口,我这边的做法是直接改代码,比如改成8099,因为试过设置环境变量,但是没有效果(建议share也设置为False,这样不会在网上公开)

混元文生图模型Hunyuan DiT部署体验,具备强大中文创作能力的文生图模型

最后就是胜利女神终于向我招手了!

混元文生图模型Hunyuan DiT部署体验,具备强大中文创作能力的文生图模型

四、文生图体验

虽然上面已经能够看到UI界面了,但是文生图这块也遇到了几个问题:

4.1 Cuda不可用

在没部署前我的电脑是可以识别Cuda的,也就是输入 torch.cuda.is_available() 返回True,但这次突然就识别不了了

>>> import torch
>>> torch.cuda.is_available()
/home/xxx/miniconda3/envs/HunyuanDiT/lib/python3.8/site-packages/torch/cuda/__init__.py:88: UserWarning: CUDA initialization: CUDA unknown error - this may be due to an incorrectly set up environment, e.g. changing env variable CUDA_VISIBLE_DEVICES after program start. Setting the available devices to be zero. (Triggered internally at /opt/conda/conda-bld/pytorch_1670525541702/work/c10/cuda/CUDAFunctions.cpp:109.)
  return torch._C._cuda_getDeviceCount() > 0
False

因为这个问题导致文生图的时候报了这个错

RuntimeError: CUDA unknown error - this may be due to an incorrectly set up environment, e.g. changing env variable CUDA_VISIBLE_DEVICES after program start. Setting the available devices to be zero.

后面就各种折腾,但都不行,最后是重启电脑之后莫名好了

4.2 显存超限制

报错信息如下:

混元文生图模型Hunyuan DiT部署体验,具备强大中文创作能力的文生图模型

这是因为默认开启了DialogGen,一个提示词增强模型,但是使用这个模型,需要的显存至少是32G,所以我的显存就爆了

解决办法:

# 不启用 
python app/hydit_app.py --no-enhance

4.3 安装 flash-attention

我其实一开始是没安装的,但发现文生图的速度巨慢!一张图要226秒!

混元文生图模型Hunyuan DiT部署体验,具备强大中文创作能力的文生图模型

然后我就想着是不是可以安装 flash-attention 提升下速度,但是安装的时候又报错了

混元文生图模型Hunyuan DiT部署体验,具备强大中文创作能力的文生图模型

这个是因为我之前并没有安装Cuda Tookit,所以也就没有配置 CUDA_HOME 这个环境变量,后续是通过 runfile 的方式安装

# 需要替换为适合你的版本
wget https://developer.download.nvidia.com/compute/cuda/12.2.0/local_installers/cuda_12.2.0_535.54.03_linux.run

如果你像我一样之前已经安装好显卡驱动了,记得取消驱动安装的勾选

混元文生图模型Hunyuan DiT部署体验,具备强大中文创作能力的文生图模型

最后配置下环境变量

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

经过大概半小时的时间才 build 成功

混元文生图模型Hunyuan DiT部署体验,具备强大中文创作能力的文生图模型

五、文生图效果

1、提示词:画一只穿着西装的猪

混元文生图模型Hunyuan DiT部署体验,具备强大中文创作能力的文生图模型

2、提示词:现实主义风格,画面主要描述一个巴洛克风格的花瓶,带有金色的装饰边框,花瓶上盛开着各种色彩鲜艳的花,白色背景

混元文生图模型Hunyuan DiT部署体验,具备强大中文创作能力的文生图模型

3、提示词:请将“杞人忧天”的样子画出来(感觉抽卡失败)

混元文生图模型Hunyuan DiT部署体验,具备强大中文创作能力的文生图模型

4、请画出“忽如一夜春风来 千树万树梨花开”

混元文生图模型Hunyuan DiT部署体验,具备强大中文创作能力的文生图模型

5、提示词:一只长靴猫手持亮银色的宝剑,身着铠甲,眼神坚毅,站在一堆金币上,背景是暗色调的洞穴,图像上有金币的光影点缀。

混元文生图模型Hunyuan DiT部署体验,具备强大中文创作能力的文生图模型

6、提示词:一张细致的照片捕捉到了一尊雕像的形象,这尊雕像酷似一位古代法老,头上出人意料地戴着一副青铜蒸汽朋克护目镜。这座雕像穿着复古时髦,一件清爽的白色T恤和一件合身的黑色皮夹克,与传统的头饰形成鲜明对比。背景是简单的纯色,突出了雕像的非传统服装和蒸汽朋克眼镜的复杂细节

混元文生图模型Hunyuan DiT部署体验,具备强大中文创作能力的文生图模型

7、提示词:一位可爱的女孩,有着蓝色的头发,眼睛是红色的,腰上绑着子弹,手里拿着枪

混元文生图模型Hunyuan DiT部署体验,具备强大中文创作能力的文生图模型

大家觉得混元-DiT的文生图效果如何呢?

六、小小总结

本次混元-DiT的部署过程比我想得要复杂得多,大概花了一天多的时间,比较占时间的就是模型的下载,以及莫名其妙 Cuda 不可用。虽然混元-DiT生成的图片看起来效果还行,但是它的生成速度实在令人失望,在同等显卡配置下,Stable diffusion生成一张图片仅需要5-15秒,而混元-DiT每一张都需要220秒左右,不知道我哪里安装有问题,还是它本身就这么慢,有部署的朋友也可以说下你们的跑图时间。

如果你觉得本次教程对你有所帮助,还请多多点赞支持,你的点赞是我不断更新的动力!

参考资料

[1]miniconda官方教程: https://docs.anaconda.com/free/miniconda/index.html

[2]huggingface-cli: https://huggingface.co/docs/huggingface_hub/guides/cli

声明:内容均采集自公开的网站等各类媒体平台,若收录的内容侵犯了您的权益,请联系邮箱,本站将第一时间处理。
百科

腾讯混元文生图大模型开源:适合国人的文生图模型

2024-5-19 11:20:35

百科

stable diffusion写实真人大模型推荐,极致摄影,大片质感

2024-5-20 16:32:14

搜索