快速开始
环境准备
本文档以Atlas 800I A2 推理服务器和Wan2.1模型为例,让开发者快速开始使用MindIE SD进行文生视频。
前提条件
物理机部署场景,需要在物理机安装NPU驱动固件以及部署Docker,执行如下步骤判断是否已安装NPU驱动固件和部署Docker。
-
执行以下命令查看NPU驱动固件是否安装。若出现类似下图打印内容,说明已安装。否则请参见表1 Atlas A2 推理系列产品进行安装。
npu-smi info
产品型号 参考文档 Atlas 800I A2 下载固件与驱动,请参考《CANN 软件安装》中的“安装NPU驱动和固件”章节(商用版)或“安装NPU驱动和固件”章节(社区版)进行安装。 -
执行以下命令查看Docker是否已安装并启动。
docker ps回显以下信息表示Docker已安装并启动。
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
获取模型权重
请先下载模型权重,这里以Wan2.1模型为例。
模型权重详细信息如表2 模型权重所示。请根据实际情况下载所需的文生视频或图生视频模型权重。用户需自行设置权重路径(例:/home/{用户名}/example/Wan2.1-T2V-14B)。
| 模型 | 说明 | 权重 |
|---|---|---|
| Wan2.1-T2V-14B | 文生视频模型 | 权重文件请单击链接获取。 |
| Wan2.1-I2V-14B-480P | 图生视频模型 | 权重文件请单击链接获取。 |
| Wan2.1-I2V-14B-720P | 图生视频模型 | 权重文件请单击链接获取。 |
MindIE SD接口会对传入的文件或文件夹做权限安全校验,因此模型权重文件、配置文件及其所在文件夹需进行权限配置,权限要求为:
- 模型权重文件、配置文件:对应三组权限不得超过640且需要和执行用户的所属组和权限保持一致。
- 模型权重文件和配置文件所在的文件夹:对应三组权限不得超过750且需要和执行用户的所属组和权限保持一致。
获取容器镜像
进入昇腾官方镜像仓库,根据设备型号选择下载对应的MindIE镜像。
该镜像已具备模型运行所需的基础环境,包括:CANN、FrameworkPTAdapter、MindIE与ATB Models,可实现模型快速上手推理。
表 3 容器内各组件安装路径
| 组件 | 安装路径 |
|---|---|
| CANN | /usr/local/Ascend/cann |
| CANN-NNAL-ATB | /usr/local/Ascend/nnal/atb |
| MindIE | /usr/local/Ascend/mindie |
| ATB Models | /usr/local/Ascend/atb-models |
启动容器
-
下载完成镜像后,执行以下命令启动容器。
docker run -it -d --net=host --shm-size=1g \ --name <container-name> \ -w /home \ --device=/dev/davinci0:rwm \ --device=/dev/davinci1:rwm \ --device=/dev/davinci2:rwm \ --device=/dev/davinci3:rwm \ --device=/dev/davinci_manager:rwm \ --device=/dev/hisi_hdc:rwm \ --device=/dev/devmm_svm:rwm \ -v /usr/local/Ascend/driver:/usr/local/Ascend/driver:ro \ -v /usr/local/dcmi:/usr/local/dcmi:ro \ -v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi:ro \ -v /usr/local/sbin/:/usr/local/sbin:ro \ -v /path-to-weights:/path-to-weights:ro \ mindie:3.0.0-800I-A2-py311-openeuler24.03-lts bash说明
- “mindie:3.0.0-800I-A2-py311-openeuler24.03-lts”为镜像名称,可根据实际情况修改。
- 对于--device参数,挂载权限设置为rwm,而非权限较小的rw或r,原因如下:
- 对于Atlas 800I A2 推理服务器,若设置挂载权限为rw,可以正常进入容器,同时也可以使用npu-smi命令查看npu占用信息,并正常运行MindIE业务;但如果挂载的npu(即对应挂载选项中的davinci_xxx_,如npu0对应davinci0)上有其它任务占用,则使用npu-smi命令会打印报错,且无法运行MindIE任务(此时torch.npu.set_device()会失败)。
- 对于Atlas 800I A3 超节点服务器,若设置挂载权限为rw,进入容器后,使用npu-smi命令会打印报错,且无法运行MindIE任务(此时torch.npu.set_device()会失败)。
表 4 参数说明
参数 参数说明 --name 设置容器名称。 --device 表示映射的设备,可以挂载一个或者多个设备。
需要挂载的设备如下:- /dev/davinciX:NPU设备,X是ID号,如:davinci0。
- /dev/davinci_manager:davinci相关的管理设备。
- /dev/hisi_hdc:hdc相关管理设备。
- /dev/devmm_svm:内存管理相关设备。
ll /dev/ | grep davinci-v /usr/local/Ascend/driver:/usr/local/Ascend/driver:ro 将宿主机目录“/usr/local/Ascend/driver”挂载到容器,请根据驱动所在实际路径修改。 -v /usr/local/sbin/:/usr/local/sbin:ro 将宿主机工具“/usr/local/sbin”以只读模式挂载到容器中,请根据实际情况修改。 -v /path-to-weights:/path-to-weights:ro 设定权重挂载的路径,需要根据用户的情况修改。
请将权重文件和数据集文件同时放置于该路径下。 -
执行以下命令进入容器。
docker exec -it <container-name> /bin/bash说明
更多详细信息,请参考启动容器章节。
模型推理
本章节通过一个简单的示例,介绍在Atlas 800I A2 推理服务器上,如何使用MindIE SD进行文生视频。
-
使用以下命令在任意路径(例如:/home/{用户名}/code)下载模型仓库。
git clone https://modelers.cn/MindIE/Wan2.1.git -
使用以下命令进入Wan2.1文件夹并安装所需依赖。
cd Wan2.1 pip install -r requirements.txt -
进行模型推理。(请选择实际下载使用的模型)
-
Wan2.1-T2V-14B模型使用8卡推理
model_base="/home/{用户名}/example/Wan2.1-T2V-14B" torchrun --nproc_per_node=8 generate.py \ --task t2v-14B \ --size 1280*720 \ --ckpt_dir ${model_base} \ --dit_fsdp \ --t5_fsdp \ --sample_steps 50 \ --ulysses_size 8 \ --vae_parallel \ --prompt "Two anthropomorphic cats in comfy boxing gear and bright gloves fight intensely on a spotlighted stage." \ --use_attentioncache \ --start_step 20 \ --attentioncache_interval 2 \ --end_step 47 -
Wan2.1-I2V-14B-480P模型使用8卡推理
model_base="/home/{用户名}/example/Wan2.1-I2V-14B-480P/" torchrun --nproc_per_node=8 generate.py \ --task i2v-14B \ --size 832*480 \ --ckpt_dir ${model_base} \ --frame_num 81 \ --sample_steps 40 \ --dit_fsdp \ --t5_fsdp \ --cfg_size 1 \ --ulysses_size 8 \ --vae_parallel \ --image examples/i2v_input.JPG \ --base_seed 0 \ --prompt "Summer beach vacation style, a white cat wearing sunglasses sits on a surfboard. The fluffy-furred feline gazes directly at the camera with a relaxed expression. Blurred beach scenery forms the background featuring crystal-clear waters, distant green hills, and a blue sky dotted with white clouds. The cat assumes a naturally relaxed posture, as if savoring the sea breeze and warm sunlight. A close-up shot highlights the feline's intricate details and the refreshing atmosphere of the seaside." \ --use_attentioncache \ --start_step 12 \ --attentioncache_interval 4 \ --end_step 37 -
Wan2.1-I2V-14B-720P模型使用8卡推理
model_base="/home/{用户名}/example/Wan2.1-I2V-14B-720P/" torchrun --nproc_per_node=8 generate.py \ --task i2v-14B \ --size 1280*720 \ --ckpt_dir ${model_base} \ --frame_num 81 \ --sample_steps 40 \ --dit_fsdp \ --t5_fsdp \ --cfg_size 1 \ --ulysses_size 8 \ --vae_parallel \ --image examples/i2v_input.JPG \ --base_seed 0 \ --prompt "Summer beach vacation style, a white cat wearing sunglasses sits on a surfboard. The fluffy-furred feline gazes directly at the camera with a relaxed expression. Blurred beach scenery forms the background featuring crystal-clear waters, distant green hills, and a blue sky dotted with white clouds. The cat assumes a naturally relaxed posture, as if savoring the sea breeze and warm sunlight. A close-up shot highlights the feline's intricate details and the refreshing atmosphere of the seaside." \ --use_attentioncache \ --start_step 12 \ --attentioncache_interval 4 \ --end_step 37
表 1 参数解释
参数名 参数含义 取值 model_base 权重路径 模型权重所在路径。 task 任务类型 支持“t2v-14B”和“i2v-14B”。 size 视频分辨率 生成视频的宽*高。 - “t2v-14B”模型默认值为1280*720
- “i2v-14B-480P”模型默认值为[832, 480]、[720, 480]
- “i2v-14B-720P”模型默认值为[1280, 720]
frame_num 生成视频的帧数 默认值:81 sample_steps 采样步数 扩散模型的迭代降噪步数。 - t2v模型默认值:50
- i2v模型默认值:40
prompt 文本提示词 用户自定义,用于控制视频生成。 image 用于生成视频的图片路径 i2v模型推理必须,用户自定义,用于控制视频生成。 base_seed 随机种子 用于视频生成的随机种子。 use_attentioncache 使能attentioncache算法优化 此优化为有损优化,如需要开启此优化,请设置如下参数:start_step、attentioncache_interval、end_step,分别表示cache开始的step、连续cache数、cache结束的step;如不开启,则无需设置use_attentioncache、start_step、attentioncache_interval、end_step。 nproc_per_node 并行卡数 - Wan2.1-T2V-14B支持的卡数为1、2、4或8
- Wan2.1-I2V-14B支持的卡数为1、2、4或8
ulysses_size ulysses并行数 默认值为1,ulysses_size * cfg_size = nproc_per_node。 cfg_size cfg并行数 默认值为1,ulysses_size * cfg_size = nproc_per_node。 dit_fsdp DiT使用FSDP DiT模型是否使用完全分片数据并行(Fully Sharded Data Parallel, FSDP)策略。 t5_fsdp T5使用FSDP 文本到文本传输转换(Text-To-Text Transfer Transformer, T5)模型是否使用FSDP策略。 vae_parallel: 使能vae并行策略 vae模型是否使用并行策略。 -
性能测试
单击Wan2.1的模型仓链接,查看README文档进行性能测试。