通义万相-Wan2.1本地部署案例(单4090)

297次阅读
没有评论

简单介绍:Wan2.1是一个最近(25-03-18)表现突出的开源文生视频/图生视频项目,为了更好的了解和运用。

安装方式:本文在linux系统下具有单4090(24G)设备下进行了本地部署,选择nvidia官方的pytorch docker镜像开始所有的安装,而非作者提供的conda方式,确保准确性和版本。

项目地址https://github.com/Wan-Video/Wan2.1

通义万相-Wan2.1本地部署案例(单4090)

一. 准备工作:

首先需要拉取代码以及准备好docker,可以参考关键词:git ,docker,假设我们准备好了docker以及git工具,并且成功配置

通义万相-Wan2.1本地部署案例(单4090)

二.docker镜像

  • docker拉取镜像docker run --gpus all -it --rm -v /opt/Wan2.1:/Wan21 nvcr.io/nvidia/pytorch:23.05-py3

其中,-v 表示本地磁盘挂载到容器内,以冒号相隔,也即我将Wan2.1项目保存在opt文件夹下,将其挂载到即将生成的容器的/Wan21文件夹下,--gpus 表示GPU选项,--rm 表示退出容器即删除,nvcr.io/nvidia/pytorch:23.05-py3表示nvidia官方仓库的pytorch release版本,解释如下:

首先确定一个合适的镜像,发现第三方库中使用了 flash_atten第三方库,说明是对推理进行了专门优化,也即他的通用性一定不强,所以去官方查看他的限制,作者主页只针对了三个专业计算卡和一个4090进行了对比:

通义万相-Wan2.1本地部署案例(单4090)

另外在flashattn的pipy页发现,作者限定了cuda的版本https://pypi.org/project/flash-attn/

通义万相-Wan2.1本地部署案例(单4090)

根据作者推荐的pytorch容器页面,可以发现他提供了nvidia的官方pytorch支持镜像(https://docs.nvidia.com/deeplearning/frameworks/pytorch-release-notes/rel-23-05.html),这样基本上能满足我们要求了,随便选择一个合适的release版本:

通义万相-Wan2.1本地部署案例(单4090)

回到nvidia的容器页面https://catalog.ngc.nvidia.com/orgs/nvidia/containers/pytorch,按照规定进行指令编辑:

通义万相-Wan2.1本地部署案例(单4090)

最后我们确定的版本是23.05,所以执行上方的docker指令。

三.安装项目依赖

构建好了docker之后,回到作者主页(https://github.com/Wan-Video/Wan2.1),按照他的要求进行

  • pip安装pip install -r requirements.txt
  • flash-attn安装注意!!!对于flash-attn这一直接优化推理时候的注意力机制,需要特别构建,由于它本身是针对英伟达后期架构的显卡,优化了自注意力的存储形式,从而达到减少HBM和SRAM之间内存交换次数的优化,可以明显提升推理速度,所以可想而知它在构建一定是较为复杂,可能需要从源码出发,并且还要求环境内有所有nvidia提供的工具(这也是为什么需要从nvidia官方支持的pytorch docker镜像出发):pip install flash-attn --no-build-isolation

顺利的话,会成功构建最新版本2.7.4.post1的flash-attn(截止25-03-20):

通义万相-Wan2.1本地部署案例(单4090)
  • huggingface-cli安装,以及modelscope-cli安装:一般情况下,huggingface需要处理网络问题,所以我们选择model scope安装,由于我们4090只能运行1.3B的这一模型,所以对应更改指令:modelscope download Wan-AI/Wan2.1-T2V-1.3B --local_dir ./Wan2.1-T2V-1.3B

正常拉取所有所需模型文件后,形成了一个文件夹Wan2.1-T2V-1.3B,和作者源代码处于同一级:

通义万相-Wan2.1本地部署案例(单4090)
通义万相-Wan2.1本地部署案例(单4090)

四.运行

到现在为止,所需的文件和环境都准备好了:

  • 直接执行作者的执行代码会出错,因为作者预写的路径拼接有误,按照当前所处路径下重新编写.py执行文件和ckpt文件夹的关系,建议回退到容器root执行:python Wan21/generate.py --task t2v-1.3B --size 832*480 --ckpt_dir Wan2.1-T2V-1.3B --offload_model True --t5_cpu --sample_shift 8 --sample_guide_scale 6 --prompt "Two anthropomorphic cats in comfy boxing gear and bright gloves fight intensely on a spotlighted stage.

其中Wan21/generate.py表示源代码Wan21文件夹和模型权重文件夹所处同一级,--prompt "Two anthropomorphic cats in comfy boxing gear and bright gloves fight intensely on a spotlighted stage."表示提示词,–t5_cpu表示cpu执行谷歌的T5模型的文本token化等,如正常则是如下状态:

通义万相-Wan2.1本地部署案例(单4090)

很慢!

通义万相-Wan2.1本地部署案例(单4090)

最终生成了以下文件:

‘t2v-1.3B_832*480_1_1_Two_anthropomorphic_cats_in_comfy_boxing_gear_and__20250319_065803.mp4’

由于没有绑定挂载额外的目录,所以只能通过docker cp将容器内文件复制到外:

  • docker cp 4f178f98df20:/t2v-1.3B_832*480_1_1_Two_anthropomorphic_cats_in_comfy_boxing_gear_and__20250319_065803.mp4 /opt/Wan2.1

之后,文件成功取出,可以通过任意可视化工具查看:

五.常见问题

  • 模型文件下载失败:利用魔搭社区或huggingface遇大文件下载中断,可以本地下载放入文件夹,再次执行下载指令,下载器可自动检测
  • flash_attn构建失败:检查环境文件中是否具备所有构建工具和环境变量(无法明确是否具备,则必须从nvidia官方库出发,这是为什么选择docker安装方式的原因)
  • conda安装失败:不建议conda安装
  • 代码运行出错:当前Wan2.1仅基于hooper架构(RTX4090 H系列 A系列),flash_attn在低版本可能会对Ampere架构等也可以编译,未来会支持更早的图灵架构。所以当前在非hooper架构上大概率无法完美运行

通过以上步骤,可以实现本地部署,对于更多的原理和细节问题,还需进一步阅读作者官方页英伟达支持以及关键第三方库支持。

正文完
 2
libowen
版权声明:本站原创文章,由 libowen 于2025-03-20发表,共计2851字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)