混元文生图模型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、克隆项目

  1. $ git clone https://github.com/tencent/HunyuanDiT
  2. $ cd HunyuanDiT

2、新建 conda 环境

  1. $ conda env create -f environment.yml

这个项目是通过conda来安装依赖的,对应的配置文件是 environment.yml,如果之前没安装过 conda 的朋友,可以通过miniconda官方教程[1]安装

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

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

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

  1. $ conda config --show
  2. ...
  3. channel_alias: https://conda.anaconda.org
  4. channel_priority: flexible
  5. channel_settings: []
  6. channels:
  7. - defaults
  8. client_ssl_cert: None
  9. client_ssl_cert_key: None
  10. custom_channels:
  11. pkgs/main: https://repo.anaconda.com
  12. pkgs/r: https://repo.anaconda.com
  13. pkgs/pro: https://repo.anaconda.com
  14. # 默认源
  15. custom_multichannels:
  16. defaults:
  17. - https://repo.anaconda.com/pkgs/main
  18. - https://repo.anaconda.com/pkgs/r
  19. local:
  20. debug: False
  21. default_channels:
  22. - https://repo.anaconda.com/pkgs/main
  23. - https://repo.anaconda.com/pkgs/r
  24. default_python: 3.11
  25. ssl_verify: True
  26. ...

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

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

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

  1. $ conda config --set show_channel_urls yes

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

  1. channels:
  2. - defaults
  3. show_channel_urls: true
  4. default_channels:
  5. - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
  6. - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
  7. - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
  8. custom_channels:
  9. conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  10. msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  11. bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  12. menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  13. pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  14. pytorch-lts: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  15. simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  16. deepmodeling: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/

接着再执行这条命令清除索引缓存,保证用的是新镜像源即可

  1. $ conda clean -i
  2. Will remove 1 index cache(s).
  3. Proceed ([y]/n)? y

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

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

3、激活 conda 环境

  1. $ conda activate HunyuanDiT

4、安装依赖

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

  1. $ pip list
  2. Package Version
  3. ----------------- -------
  4. pip 24.0
  5. setuptools 69.5.1
  6. torch 1.13.1
  7. typing_extensions 4.11.0
  8. wheel 0.43.0

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

  1. $ pip install -r requirements.txt

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

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

二、下载模型

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

  1. $ pip install "huggingface_hub[cli]"

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

  1. $ mkdir ckpts
  2. $ 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代理的话,可能会提示你缺少依赖,报错及解决办法如下:

  1. $ python app/hydit_app.py
  2. ...
  3. raise ImportError(
  4. ImportError: Using SOCKS proxy, but the 'socksio' package is not installed. Make sure to install httpx using `pip install httpx[socks]`
  5. # 注意要加上冒号
  6. $ pip install "httpx[socks]"

第二个报错如下:

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

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

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

  1. $ nvidia-smi -g 0 -c 0
  2. Compute mode is already set to DEFAULT for GPU 00000000:01:00.0.
  3. All done.

第三个报错就是端口冲突

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

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

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

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

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

四、文生图体验

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

4.1 Cuda不可用

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

  1. >>> import torch
  2. >>> torch.cuda.is_available()
  3. /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.)
  4. return torch._C._cuda_getDeviceCount() > 0
  5. False

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

  1. 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,所以我的显存就爆了

解决办法:

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

4.3 安装 flash-attention

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

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

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

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

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

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

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

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

最后配置下环境变量

  1. export PATH=/usr/local/cuda-12.2/bin${PATH:+:${PATH}}
  2. export LD_LIBRARY_PATH=/usr/local/cuda-12.2/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
  3. 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

搜索