边缘云玩转通义万相Wan2.1-T2V推理业务最佳实践

更新时间:2025-04-02 08:58:02

本文将为您详细介绍Wan2.1模型的特性、关键指标、边缘云部署的最佳实践以及测试环境搭建的步骤。帮助您快速了解模型特性、部署要求和性能优化方法,从而高效地在边缘云环境中部署和使用该模型,满足不同场景下的视频生成需求。

Wan2.1 模型简介

通义万相Wan2.1是由阿里巴巴开发的开源视频生成模型,在处理复杂运动、还原真实物理规律、提升影视质感以及优化指令遵循方面具有显著的优势,无论是创作者、开发者还是企业用户,都可以根据自己的需求选择合适的模型和功能,轻松实现高质量的视频生成。同时,万相还支持业内领先的中英文文字特效生成,满足广告、短视频等领域的创意需求。在权威评测集VBench中,万相以总分86.22%的成绩登上榜首位置,大幅领先了Sora、Minimax、Luma、Gen3、Pika等国内外视频生成模型。

  • Wan2.1-T2V-14B:高性能专业版,提供业界顶尖的表现力,满足对视频质量有极高要求的场景。

  • Wan2.1-T2V-1.3B:低显存即可生成480P高质量视频。

边缘云部署Wan2.1模型最佳实践

边缘云面向不同场景的异构算力需求,在广泛分布的节点上提供了多规格、差异化的异构算力资源,单卡显存从12GB48GB不等。在边缘云上部署Wan2.1-T2V-1.3B模型的推理业务,推荐的最佳配置及推理性能如下:

  • Wan2.1-T2V-1.3B BF16精度生成480P视频推荐使用12GB显存五卡实例

    • 12GB显存五卡实例,采用单卡单路运行性价比最高,尽管单卡运行会导致视频生成时间变长,但可以并行处理多路推理任务,在单位时间内的收益更高。

    • 如果您追求视频的生成效率,可采用48GB显存双卡实例,可将单路视频生成时间提效85%,而成本只有35%的上升。

      实例规格

      推理方式

      视频时长(s)

      生成时间(s)

      显存占用(GB)

      单路成本

      12GB显存五卡裸金属

      单卡单路

      5

      1459

      9.6

      100%

      四卡单路

      5

      865

      35.3

      296%

      48GB显存单卡虚机

      单卡单路

      5

      456

      18.6

      144%

      48GB显存双卡虚机

      双卡单路

      5

      214

      20.9

      135%

    • 生成视频示例:

      边缘云玩转通义万相Wan2.1-T2V推理业务最佳实践

  • Wan2.1-T2V-14B BF16精度生成720P视频推荐使用48GB显存双卡实例

    720P可以为您带来更高质量的视频体验,但视频生成时间也会变得更长。您可根据业务场景需求以及示例视频的质量对比来选择合适的资源。

    资源

    推理方式

    视频时长(s)

    生成时间(s)

    显存占用(GB)

    48GB显存双卡虚机

    双卡单路

    5

    3503

    41

    生成视频示例:

    边缘云玩转通义万相Wan2.1-T2V推理业务最佳实践

  • 以上提及的实例规格配置如下

    环境参数

    12GB显存五卡裸金属实例

    48GB显存单卡虚机实例

    48GB显存双卡虚机实例

    环境参数

    12GB显存五卡裸金属实例

    48GB显存单卡虚机实例

    48GB显存双卡虚机实例

    CPU

    24Core×2,3.0-4.0GHz

    48

    96

    内存

    256GB

    192GB

    384GB

    GPU

    NVIDIA 12GB * 5

    NVIDIA 48GB * 1

    NVIDIA 48GB * 2

    操作系统

    Ubuntu 20.04

    GPU Driver

    Driver Version: 570.124.06

    CUDA Version: 12.4

    Driver Version: 550.54.14

    CUDA Version: 12.4

    Driver Version: 550.54.14

    CUDA Version: 12.4

    推理框架

    pytorch

测试环境搭建

虚机实例创建与初始化

通过控制台创建实例

  1. 登录ENS控制台

  2. 在左侧导航栏,单击算力与镜像 > 实例

  3. 实例页面,单击创建实例您可以通过创建实例了解创建ENS实例时的参数。

    1. 请您按照您的需求进行配置,推荐配置如下:

      页面

      参数选项

      参考值

      页面

      参数选项

      参考值

      基础配置

      付费方式

      包年包月

      实例类型

      X86计算

      实例规格

      NVIDIA 48GB * 2

      (详细规格请咨询客户经理)

      镜像

      Ubuntu

      ubuntu_22_04_x64_20G_alibase_20240926

      网络和存储

      网络

      自建网络

      系统盘

      高效云盘 80G+

      数据盘

      高效云盘 1T+

      系统设置

      密码设置

      密码/密钥对

    2. 确认订单。

      当您完成系统设置之后,您可以单击右下角确认订单。系统会根据您的配置来配置实例,并展示价格。进行支付后会提示支付成功,并可跳转到ENS控制台。

      ENS控制台实例列表可查询到您创建的实例,若您创建的实例状态为运行中,代表您已经可以使用该实例。

通过OpenAPI创建实例

您也可以使用OpenAPI方式进行创建,您可以在阿里云开发者门户快速使用OpenAPI创建实例。

调用参数的参考代码如下,请您灵活调整:

{
  "InstanceType": "ens.gnxxxx",         <您的实例规格>
  "InstanceChargeType": "PrePaid",
  "ImageId": "ubuntu_22_04_x64_20G_alibase_20240926",
  "ScheduleAreaLevel": "Region",
  "EnsRegionId": "cn-your—ens-region",     <实际的节点>
  "Password": <YOURPASSWORD>,           <自定义密码>
  "InternetChargeType": "95BandwidthByMonth", 
  "SystemDisk": {
    "Size": 80,
    "Category": "cloud_efficiency"
  },
  "DataDisk": [
    {
      "Category": "cloud_efficiency",
      "Size": 1024
    }
  ],
  "InternetMaxBandwidthOut": 5000,
  "Amount": 1,
  "NetWorkId": "n-xxxxxxxxxxxxxxx",
  "VSwitchId": "vsw-xxxxxxxxxxxxxxx",
  "InstanceName": "test",        
  "HostName": "test",
  "PublicIpIdentification": true,
  "InstanceChargeStrategy": "instance",      <实例粒度计费>
}

实例登录与初始化磁盘

实例登录

您可以参考连接实例来登录实例。

磁盘初始化

  1. 根目录扩容。

    实例新创建或扩容后,需要在不重启的情况下在线扩容根分区

    # 安装云环境工具包
    sudo apt-get update
    sudo apt-get install -y cloud-guest-utils
    
    # 确保GPT分区工具sgdisk存在
    type sgdisk || sudo apt-get install -y gdisk
    
    # 扩展物理分区
    sudo LC_ALL=en_US.UTF-8 growpart /dev/vda 3
    
    # 调整文件系统大小
    sudo resize2fs /dev/vda3
    
    # 验证扩容结果
    df -h

    image

  2. 数据盘挂载

    您需要对数据盘进行格式化,并进行挂载。以下是参考,按需进行操作。

    # 识别新磁盘
    lsblk
    
    # 这里不进行分区,直接格式化
    sudo mkfs -t ext4 /dev/vdb
    
    # 配置挂载
    sudo mkdir /data
    echo "UUID=$(sudo blkid -s UUID -o value /dev/vdb) /data ext4 defaults,nofail 0 0" | sudo tee -a /etc/fstab
    
    # 验证
    sudo mount -a
    df -hT /data
    
    # 修改权限
    sudo chown $USER:$USER $MOUNT_DIR

    image

    说明

    如果您要基于该实例制作镜像,需要删除/etc/fstab文件中添加的ext4 defaults 0 0所在行。如果不删除,您制作的镜像创建实例将无法启动。

安装依赖

您可以参考CUDA Toolkit 12.4 Downloads | NVIDIA Developer来完成CUDA的安装。

wget https://developer.download.nvidia.com/compute/cuda/12.4.0/local_installers/cuda_12.4.0_550.54.14_linux.run

chmod +x cuda_12.4.0_550.54.14_linux.run

# 这一步稍久,会出现图形交互
sudo sh cuda_12.4.0_550.54.14_linux.run

# 添加环境变量
vim ~/.bashrc
export PATH="$PATH:/usr/local/cuda-12.4/bin"
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda-12.4/lib64"
source ~/.bashrc

# 验证是否成功
nvcc  -V
nvidia-smi

安装辅助工具(可选)

UV是较好的Python虚拟环境和依赖管理工具,适合需要运行多个模型的机器。您可以参考Installation | uv (astral.sh)来完成对UV的安装。

# 安装uv,默认安装在~/.local/bin/
curl -LsSf https://astral.sh/uv/install.sh | sh

# 编辑~/.bashrc
export PATH="$PATH:~/.local/bin"

source ~/.bashrc

# 创建一个干净的venv环境,命名diff
uv venv diff --python 3.12 --seed
source diff/bin/activate

如果您遇到安装UV后,原来所设置的CUDA环境变量失效,nvcc\nvidia-smi无法找到,请您执行如下操作:

vim myenv/bin/activate 
将
export PATH="$PATH:/usr/local/cuda-12.4/bin"
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda-12.4/lib64"
加到export PATH的后面

安装GPU监控工具(可选)

# GPU监控工具,也可以使用nvidia-smi
pip install nvitop

下载推理框架和模型

推荐使用魔搭推出的Diffusion模型框架 DiffSynth Studio,以实现较好的性能和稳定性,详情参考 https://github.com/modelscope/DiffSynth-Studio/tree/main

# 安装魔搭下载工具
pip install modelscope

# 下载DiffSynth Studio和依赖
cd /root
git clone https://github.com/modelscope/DiffSynth-Studio.git

cd DiffSynth-Studio
pip install -e .

# 安装xfuser
pip install xfuser>=0.4.3
  
# 下载Wan2.1-T2V-14B模型文件到DiffSynth-Studio的对应目录下
modelscope download --model Wan-AI/Wan2.1-T2V-14B --local_dir /root/DiffSynth-Studio/models/Wan-AI/Wan2.1-T2V-14B

测试视频生成

DiffSynth Studio提供了Unified Sequence Parallel (USP)和Tensor Parallel 两种并行方式,本文以Tensor Parallel为例,使用DiffSynth提供的测试脚本,通过Wan2.1-14B生成一段720P视频。

可选优化

您可通过修改测试脚本examples/wanvideo/wan_14b_text_to_video_tensor_parallel.py中的部分代码和参数,实现以下效果:

说明

因代码库持续优化中,代码文件随时可能更新,以下修改仅供参考

  1. 避免每次运行都重新下载模型。

  2. 修改视频的压缩质量,更大的视频文件代表更好的清晰度。

  3. 将生成视频从默认的480p修改为720p。

  4. # 修改测试代码的文件
    vim /root/DiffSynth-Studio/examples/wanvideo/wan_14b_text_to_video_tensor_parallel.py
    
    # 1. 注释125行左右代码,避免每次运行都重新下载模型,从而使用先前已经下载到本地的模型
    
    # snapshot_download("Wan-AI/Wan2.1-T2V-14B", local_dir="models/Wan-AI/Wan2.1-T2V-14B")
    
    # 2. 修改121行左右代码,调整函数test_step内的save_video入参,修改视频帧率和压缩质量。quality=1为最低,10为最高
    save_video(video, output_path, fps=24, quality=10)
    
    # 3. 135行左右新增以下入参,调整分辨率,默认是480p
    ....
    "output_path": "video1.mp4",   
    # 以下两行为新增
    "height": 720,
    "width": 1280,
    },
    
    # 4.保存文件并退出
    :wq
    

运行测试

# 运行测试脚本
torchrun --standalone --nproc_per_node=2 /root/DiffSynth-Studio/examples/wanvideo/wan_14b_text_to_video_tensor_parallel.py

image

结果输出

说明

有改动可在上述可选优化第三条中的output_path中指定。

测试时间请参考进度条的剩余时间提示。结束后生成视频文件video1.mp4,您可以参考 cp(拷贝文件)来使用ossutil将生成的视频文件导出到阿里云OSS。

  • 本页导读 (1)
  • Wan2.1 模型简介
  • 边缘云部署Wan2.1模型最佳实践
  • 测试环境搭建
  • 虚机实例创建与初始化
  • 实例登录与初始化磁盘
  • 安装依赖
  • 安装辅助工具(可选)
  • 安装GPU监控工具(可选)
  • 下载推理框架和模型
  • 测试视频生成