Wan2.2对应ComfyUI框架基于Lite Server适配NPU推理指导(6.5.908)
本文档主要介绍如何在ModelArts Lite Server环境中部署文生视频、图生视频模型Wan2.2+lora i2v t2v对应ComfyUI框架,使用NPU卡进行推理。
方案概览
本方案介绍了在Server上使用昇腾计算资源部署ComfyUI框架用于推理的详细过程。完成本方案的部署,需要先联系您所在企业的华为方技术支持购买Server资源。
本方案目前仅适用于企业客户。
资源规格要求
推荐使用ModelArts Lite Server的Snt9B23资源。
获取软件和镜像
|
分类 |
名称 |
获取路径 |
|---|---|---|
|
插件代码包 |
AscendCloud-AIGC-6.5.908-xxx.zip 文件名中的xxx表示具体的时间戳,以包名发布的实际时间为准。 |
获取路径:Support-E,在此路径中查找下载ModelArts 6.5.908.5版本。
说明:
如果上述软件获取路径打开后未显示相应的软件信息,说明您没有下载权限,请联系您所在企业的华为方技术支持下载获取。 |
|
Snt9b23基础镜像 |
西南-贵阳一: swr.cn-southwest-2.myhuaweicloud.com/atelier/pytorch_ascend:pytorch_2.5.1-cann_8.2.rc1-py_3.11-hce_2.0.2503-aarch64-snt9b23-20250729103313-3a25129 中国-香港: swr.ap-southeast-1.myhuaweicloud.com/atelier/pytorch_ascend:pytorch_2.5.1-cann_8.2.rc1-py_3.11-hce_2.0.2503-aarch64-snt9b23-20250729103313-3a25129 |
从SWR拉取。 |
支持特性
|
套件类型 |
模型名称 |
|---|---|
|
ComfyUI |
Wan2.2 Image-to-Video |
|
Wan2.2 Text-to-Video |
步骤一:准备环境
- 请参考Lite Server资源开通,购买Server资源,并确保机器已开通,密码已获取,能通过SSH登录,不同机器之间网络互通。
购买Server资源时如果无可选资源规格,需要联系华为云技术支持申请开通。
当容器需要提供服务给多个用户,或者多个用户共享使用该容器时,应限制容器访问Openstack的管理地址(169.254.169.254),以防止容器获取宿主机的元数据。具体操作请参见禁止容器获取宿主机元数据。
- 检查环境。
- SSH登录机器后,检查NPU设备状态。运行如下命令,返回NPU设备信息。
npu-smi info
如出现错误,可能是机器上的NPU设备没有正常安装,或者NPU镜像被其他容器挂载。请先正常安装固件和驱动,或释放被挂载的NPU。
- 检查docker是否安装。
docker -v #检查docker是否安装
如尚未安装,运行以下命令安装docker。
yum install -y docker-engine.aarch64 docker-engine-selinux.noarch docker-runc.aarch64
- 配置IP转发,用于容器内的网络访问。执行以下命令查看net.ipv4.ip_forward配置项的值,如果为1,可跳过此步骤。
sysctl -p | grep net.ipv4.ip_forward
如果net.ipv4.ip_forward配置项的值不为1,执行以下命令配置IP转发。sed -i 's/net\.ipv4\.ip_forward=0/net\.ipv4\.ip_forward=1/g' /etc/sysctl.conf sysctl -p | grep net.ipv4.ip_forward
- SSH登录机器后,检查NPU设备状态。运行如下命令,返回NPU设备信息。
- 获取基础镜像。建议使用官方提供的镜像部署推理服务。镜像地址{image_url}参见表1。
docker pull {image_url}
步骤二:启动容器镜像
- 启动snt9b23容器镜像。启动前请先按照参数说明修改${}中的参数。可以根据实际需要增加修改参数。
docker run -itd \ --privileged \ --name ${container_name} \ -v /sys/fs/cgroup:/sys/fs/cgroup:ro \ -p 8183:8183 \ -v /etc/localtime:/etc/localtime \ -v /usr/local/Ascend/driver:/usr/local/Ascend/driver \ -v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi \ --shm-size 60g \ --device=/dev/davinci_manager \ --device=/dev/hisi_hdc \ --device=/dev/devmm_svm \ --device=/dev/davinci3 \ --network=host \ ${image_name} bash参数说明:
- --name ${container_name} 容器名称,进入容器时会用到,此处可以自己定义一个容器名称,例如comfyui。
- --device=/dev/davinci3:挂载主机的/dev/davinci3到容器的/dev/davinci3。可以使用npu-smi info查看空闲卡号,修改davinci后数字可以更改挂载卡。
- ${image_name} 代表镜像名称。
- -p 8183:8183 开启一个端口,可以通过 http://宿主机IP:8183 访问容器服务(如冲突,可自行更换其他端口)。
- 进入snt9b23容器。需要将${container_name}替换为实际的容器名称,例如:comfyui。
docker exec -itu root ${container_name} bash
步骤三:ComfyUI部署
安装依赖和模型包
- 下载ComfyUI软件包。
如果上述方法无法下载ComfyUI源码,可参考如下操作,手动下载到本地再上传到容器中,如图1所示。
- 登录hhttps://github.com/comfyanonymous/ComfyUI.git页面,单击Code按钮,通过Download ZIP下载ComfyUI源码到本地。
访问Github下载开源软件需要连通外网,请用户自行配置网络代理。
- 将下载好的ComfyUI.zip文件上传到容器的/home/ma-user/目录下,并解压。
cd /home/ma-user/ unzip ComfyUI.zip cd ComfyUI
- 登录hhttps://github.com/comfyanonymous/ComfyUI.git页面,单击Code按钮,通过Download ZIP下载ComfyUI源码到本地。
- 安装依赖,将requirements.txt中的torch修改为torch==2.5.1,如下图。
图2 requirements.txt修改
pip install -r requirements.txt
- 下载模型权重。
cd models
权重在路径为/home/ma-user/ComfyUI/models中的各个子文件分布:
text_encoders
-umt5_xxl_fp16.safetensors
vae
-wan_2.1_vae.safetensors
diffusion_models
-wan2.2_i2v_high_noise_14B_fp16.safetensors
-wan2.2_i2v_low_noise_14B_fp16.safetensors
-wan2.2_t2v_high_noise_14B_fp16.safetensors
-wan2.2_t2v_low_noise_14B_fp16.safetensors
loras
-Wan2.2-Lightning_I2V-A14B-4steps-lora_HIGH_fp16.safetensors
-Wan2.2-Lightning_I2V-A14B-4steps-lora_LOW_fp16.safetensors
-Wan2.2-Lightning_T2V-A14B-4steps-lora_HIGH_fp16.safetensors
-Wan2.2-Lightning_T2V-A14B-4steps-lora_LOW_fp16.safetensors
表3 各权重下载地址 模型名称
下载地址
umt5_xxl_fp16.safetensors
split_files/text_encoders/umt5_xxl_fp16.safetensors · Comfy-Org/Wan_2.1_ComfyUI_repackaged at main
wan_2.1_vae.safetensors
wan2.2_i2v_high_noise_14B_fp16.safetensors
wan2.2_i2v_low_noise_14B_fp16.safetensors
wan2.2_t2v_high_noise_14B_fp16.safetensors
wan2.2_t2v_low_noise_14B_fp16.safetensors
Wan2.2-Lightning_I2V-A14B-4steps-lora_HIGH_fp16.safetensors
Wan2.2-Lightning_I2V-A14B-4steps-lora_HIGH_fp16.safetensors · Aitrepreneur/FLX at main
Wan2.2-Lightning_I2V-A14B-4steps-lora_LOW_fp16.safetensors
Wan2.2-Lightning_I2V-A14B-4steps-lora_LOW_fp16.safetensors · Aitrepreneur/FLX at main
Wan2.2-Lightning_T2V-A14B-4steps-lora_HIGH_fp16.safetensors
Wan2.2-Lightning_T2V-A14B-4steps-lora_HIGH_fp16.safetensors · Aitrepreneur/FLX at main
Wan2.2-Lightning_T2V-A14B-4steps-lora_LOW_fp16.safetensors
Wan2.2-Lightning_T2V-A14B-4steps-lora_LOW_fp16.safetensors · Aitrepreneur/FLX at main
- 安装插件代码包。
- 将获取到的插件代码包AscendCloud-AIGC-xxx.zip文件上传到容器的/home/ma-user/目录下,并解压。插件代码包获取请参见表1。
cd /home/ma-user/ unzip AscendCloud-AIGC-*.zip
- 进入ComfyUI/custom_nodes目录下,将解压AIGC包后获取的aigc_inference/torch_npu/comfyui/0.3.7/comfyui_ascend_node文件夹复制到该目录下。
cd ComfyUI/custom_nodes cp -r /home/ma-user/aigc_inference/torch_npu/comfyui/0.3.45/comfyui_ascend_node /home/ma-user/ComfyUI/custom_nodes
- 安装插件
cd /home/ma-user/ComfyUI/custom_nodes git clone https://github.com/kijai/ComfyUI-WanVideoWrapper.git pip install -r ComfyUI-WanVideoWrapper/requirements.txt git clone https://github.com/kijai/ComfyUI-KJNodes.git pip install -r ComfyUI-KJNodes/requirements.txt git clone https://github.com/Kosinkadink/ComfyUI-VideoHelperSuite.git pip install -r ComfyUI-VideoHelperSuite/requirements.txt
- 修改代码
vim /home/ma-user/ComfyUI/custom_nodes/ComfyUI-WanVideoWrapper/nodes_model_loading.py
将第1092行代码 major, minor = torch.cuda.get_device_capability(device) 注释或删除,添加major, minor =8, 0,如下图所示:
图3 nodes_model_loading.py代码修改
vim /home/ma-user/ComfyUI/custom_nodes/ComfyUI-WanVideoWrapper/nodes_sampler.py
在代码import torch 之后添加:
import torch_npu torch._dynamo.config.suppress_errors = True torch.npu.set_device(0)
图4 nodes_sampler.py代码修改
- 将获取到的插件代码包AscendCloud-AIGC-xxx.zip文件上传到容器的/home/ma-user/目录下,并解压。插件代码包获取请参见表1。
步骤四:启动服务
启动服务
- 用ifconfig命令获取容器IP(若无效可使用ip addr,或者自行寻找其他方式获取到容器IP)。
图5 Snt9b23获取容器IP
- 进入目录。
cd /home/ma-user/ComfyUI
- 设置环境变量
export TORCH_COMPILE_BACKEND="eager" export TORCHDYNAMO_VERBOSE=0
- 启动服务命令如下。
IP地址:由步骤1获得
python main.py --port {端口号} --listen {IP地址} --force-fp16 --bf16-unet 示例: python main.py --port 8183 --listen 7.150.9.138 --force-fp16 --bf16-unet - 使用http://{宿主机ip}:{端口号},如http://7.150.9.138:8183,可以访问前端页面。
将wan2.2 lora工作流按照如下图方式打开。工作流在AscendCloud-AIGC-xxx.zip内:aigc_inference/torch_npu/comfyui/0.3.45/comfyui_workflow/wanvideo22_I2V_A14B_lora_workflow.json
图6 打开工作流
- 如下运行文生视频。
图7 访问前端页面
界面分为5个模块:模型加载、提示文本输入、图生视频组件、文生视频组件、视频生成
其中针对不同的功能,即文生视频和图生视频需要修改的主要是模型加载、图生视频组件、文生视频组件部分
图8 模型加载
wan2.2模型分为两个部分,分别为HIGH-noise和LOW-noise。上图中对应的两个红框选中的部分,左侧为HIGH-noise模型,右侧为LOW-noise模型。上方节点加载主模型,下方加载lora模型。
文生视频时:模型权重名称包含t2v
图生视频时:模型权重名称包含i2v
图9 加载vae编码器
WanVideo VAE Loader加载vae模型,名称包含Wan2 1 VAE
图10 加载文本编码器
WanVideo T5 Text Encoder Loader加载 umt5-xxl模型
图11 图生视频组件
输入首帧图像。
绿色框中参数可修改最终生成视频的尺寸
红色框中参数可修改最终生成视频的帧数。建议帧数小于等于81。
在使用该组件,实现图生视频,可点击图6 中的WanVideoWrapper 使用ctrl+b将其注释,如下图所示:
图12 注释节点
图13 文生视频组件
修改生成视频的尺寸和帧数。
默认帧数81。建议帧数设置小于81。
在使用该组件,实现文生视频。可依次点击图5中的各个节点,使用ctrl+b将其注释,如下图所示:
图14 注释节点
图15 提示文本输入
红色框中修改提示文本。下方框为negative_prompt,若需要可进行修改。
建议:文本长度不能过长,过长的文本会导致生成异常。建议长度小于800字符。
- 如下运行文生视频。
