-
步骤六:启动推理服务 cd /home/ma-user/AscendCloud/aigc_server
bash run.sh run.sh:表示视频模型服务启动脚本。 ASCEND_RT_VISIBLE_DEVI
CES :使用的卡号。 SP_NUM: 使用卡数量。支持2卡、4卡、8卡推理,需要与run.sh脚本里nproc_per_node的值保持一致。 LOAD_MODEL:支持的推理模型,目前支持: Wan2.2-T2V-A14B/Wan2.2-I2V-A14B。 MODEL_WEIGHT_PATH:对应模型的权重地址。 TASK_TYPE:任务类型,目前支持: t2v/i2v。 START_TYPE:启动类型,本地部署使用api。 NUM_INFERENCE_STEPS:推理步数。 ENCRYPTION_WEIGHT:权重是否加解密。 VIDEOS_STORAGE_PATH:生成视频成功后的视频存储路径。 IMAGES_STORAGE_PATH:当输入input.img_url参数以Base64编码形式传入时,需要将其解码并保存为图片文件,最终返回该图片的存储路径。
-
步骤四:安装依赖和软件包 git clone和git lfs下载大模型可以参考如下操作。 在浏览器中输入如下地址下载git-lfs压缩包并上传到容器的/home/ma-user目录下。 https://github.com/git-lfs/git-lfs/releases/download/v3.2.0/git-lfs-linux-arm64-v3.2.0.tar.gz 或直接下载到容器,这样在容器中可以直接使用。 cd /home/ma-user
wget https://github.com/git-lfs/git-lfs/releases/download/v3.2.0/git-lfs-linux-arm64-v3.2.0.tar.gz 进入容器,执行安装git lfs命令。 cd /home/ma-user
tar -zxvf git-lfs-linux-arm64-v3.2.0.tar.gz
cd git-lfs-3.2.0
sudo sh install.sh 设置git配置去掉ssl校验。 git config --global http.sslVerify false 安装AscendX_Video软件包。 将获取到的AscendX_Video软件包AscendCloud-AIGC-*.zip文件上传到容器的/home/ma-user目录下。获取路径参见获取软件和镜像。 解压AscendCloud-AIGC-*.zip文件,解压后按照步骤安装Python依赖,执行以下命令即可。 cd /home/ma-user
unzip AscendCloud-AIGC-*.zip -d ./AscendCloud
cp -r /home/ma-user/AscendCloud/aigc_inference/torch_npu/ascendx_video ./
cd /home/ma-user/ascendx_video
pip install seal-*-linux_aarch64.whl
pip install check_device-*-linux_aarch64.whl
pip install ascendx_video-*-none-any.whl 安装算子。 cd /home/ma-user/AscendCloud/opp/A2
unzip AscendCloud-OPP-*.zip
unzip AscendCloud-OPP-*-torch-2.5.1-py311-*.zip -d ./AscendCloud_OPP
cd AscendCloud_OPP
pip install *.whl
mkdir -p /home/ma-user/operate
bash ./ascend_cloud_ops_ascend_turbo-*_linux_aarch64.run --install-path=/home/ma-user/operate
bash ./ascend_cloud_ops_custom_opp-*_linux_aarch64_ascend910b_ascend910_93.run --install-path=/home/ma-user/operate
cd ..
unzip AscendCloud-OPS-ADV-*.zip -d ./AscendCloud_OPS-ADV
cd AscendCloud_OPS-ADV
bash ./CANN-custom_ops-*-linux.aarch64.run --install-path=/home/ma-user/operate 初始化环境变量。注意每次进入容器需要重新初始化环境。 source /home/ma-user/operate/AscendTurbo/set_env.bash
source /home/ma-user/operate/vendors/customize/bin/set_env.bash
source /home/ma-user/operate/vendors/customize_cloud/bin/set_env.bash 安装服务运行依赖。 cd /home/ma-user/AscendCloud/aigc_server
pip install -r requirements.txt
-
步骤一:准备环境 请参考Lite Server资源开通,购买Server资源,并确保机器已开通,密码已获取,能通过SSH登录,不同机器之间网络互通。 当容器需要提供服务给多个用户,或者多个用户共享使用该容器时,应限制容器访问Openstack的管理地址(169.254.169.254),以防止容器获取宿主机的元数据。具体操作请参见禁止容器获取宿主机元数据。 SSH登录机器后,检查NPU设备状态。运行如下命令,返回NPU设备信息。 npu-smi info # 在每个实例节点上运行此命令可以看到NPU卡状态
npu-smi info -l | grep Total # 在每个实例节点上运行此命令可以看到总卡数 如出现错误,可能是机器上的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
-
步骤五:下载权重文件 下载权重文件至容器目录,需要用到的模型地址如下。 Wan-AI/Wan2.2-I2V-A14B-Diffusers,地址:Wan-AI/Wan2.2-I2V-A14B-Diffusers · Hugging Face Wan-AI/Wan2.2-T2V-A14B-Diffusers,地址:Wan-AI/Wan2.2-T2V-A14B-Diffusers · Hugging Face 将权重文件放到 /home/ma-user/ascendx_video/weights目录下,例如: weights
└──Wan-AI
├──Wan2.2-I2V-A14B-Diffusers
├──Wan2.2-T2V-A14B-Diffusers
-
步骤七:调用接口 接口1:新建单次视频生成任务 POST /api/v1/video/generate 请求样例: curl -X POST -H "Content-Type: application/json" -d '{"model": "Wan2.2-T2V-A14B","input": {"prompt": "一个小猫"},"parameters": {"size": "720x1280","seed": 41}}' http://127.0.0.1:8000/api/v1/video/generate 返回响应: { "task_id": "b984cd67-1555-4d60-92d5-adb15660357f", "status": "waiting", "error": {}, "content": {}, "usage": {}, "created_at": 1760323094, "updated_at": 0 } 参数名 示例值 参数类型 是否必填 参数描述 model Wan2.2-T2V-A14B string 是 模型名称, 当前支持:Wan2.2-T2V-A14B/Wan2.2-I2V-A14B input {} object 是 输入的基本信息 input.prompt 聪明的小猫 string 否 文本提示词,支持中英文,最大长度为1000字符。示例值:一只小猫在月光下奔跑。 input.img_url base64编码内容/本地图片路径 string I2V必填,T2V不填 输入图片内容,填写图片的base64编码或者本地图片路径,支持jpg、jpeg、png、tiff、webp,图片需保持与parameters.size输入一致,否则会自适应宽高比。 parameters {} object 否 视频处理参数。 parameters.size 720x1280 string 否 生成视频的分辨率档位,当前支持,480P档位:不同视频宽高比对应的分辨率如下:16:9:832x480;9:16:480x832;720P档位:不同视频宽高比对应的分辨率如下:16:9:1280x720;9:16:720x1280 size 参数应直接设置为目标分辨率的具体数值(如 1280x720) parameters.fps 16 integer 否 生成视频每秒的帧数,默认16,当前只支持8,16。 parameters.duration 5 integer 否 生成视频时长,单位秒;默认5,当前只支持3s和5s。 parameters.seed 0 integer 否 随机种子,整数,用于控制生成内容的随机性。取值范围:[0,2147483648];默认为取值范围内的随机数。 返回响应 参数 参数类型 描述 task_id String 任务ID。 status String 枚举值,表示任务的状态,取值范围为:waiting、running、succeeded、failed。 error Error结构 结构内容为json结构体,例如:{ "code": 400(参数校验错误)/ 500(服务内部错误), "msg": "xxx" } content Content结构 结构内容为json结构体,内容为产物下载地址:{ "result_url": "tmp_xxx.mp4" } usage Usage结构 结构内容为json结构体,kv可自定义,例如:{ “model_latency:6000, "completion_tokens": 1024, "total_tokens": 1024 } created_at Int64 任务创建时间,时间戳,单位毫秒。 updated_at Int64 任务更新时间,时间戳,单位毫秒。
-
获取软件和镜像 表2 获取镜像 分类 名称 获取路径 插件代码包 AscendCloud-AIGC-xxx.zip 文件名中的xxx表示具体的时间戳,以包名发布的实际时间为准。 获取路径:Support-E,在此路径中查找下载ModelArts 6.5.910.6版本。 说明: 如果上述软件获取路径打开后未显示相应的软件信息,说明您没有下载权限,请联系您所在企业的华为方技术支持下载获取。 基础镜像 Snt9b:西南-贵阳一: swr.cn-southwest-2.myhuaweicloud.com/atelier/pytorch_ascend:pytorch_2.5.1-cann_8.2.rc2-py_3.11-hce_2.0.2509-aarch64-snt9b-20251105194139-a70c13c 从SWR拉取。
-
步骤三:启动容器镜像(Snt9b) Snt9b启动容器镜像。启动前请先按照参数说明修改${}中的参数。 export work_dir="自定义挂载的工作目录"
export container_work_dir="自定义挂载到容器内的工作目录"
export container_name="自定义容器名称"
export image_name="镜像名称或ID"
// 启动一个容器去运行镜像
docker run -itd \
--network=host \
--device=/dev/davinci0 \
--device=/dev/davinci1 \
--device=/dev/davinci2 \
--device=/dev/davinci3 \
--device=/dev/davinci4 \
--device=/dev/davinci5 \
--device=/dev/davinci6 \
--device=/dev/davinci7 \
--device=/dev/davinci_manager \
--device=/dev/devmm_svm \
--device=/dev/hisi_hdc \
--shm-size=256g \
-v /usr/local/dcmi:/usr/local/dcmi \
-v /usr/local/Ascend/driver:/usr/local/Ascend/driver \
-v /var/log/npu/:/usr/slog \
-v /usr/local/sbin/npu-smi:/usr/local/sbin/npu-smi \
-v ${work_dir}:${container_work_dir} \
--name ${container_name} \
${image_name} \
/bin/bash 参数说明: -v ${work_dir}:${container_work_dir}:代表需要在容器中挂载宿主机的目录。宿主机和容器使用不同的文件系统。work_dir为宿主机中工作目录,目录下可存放项目所需代码、数据等文件。container_work_dir为要挂载到的容器中的目录。为方便两个地址可以相同。 容器不能挂载到/home/ma-user目录,此目录为ma-user用户家目录。如果容器挂载到/home/ma-user下,拉起容器时会与基础镜像冲突,导致基础镜像不可用。 driver及npu-smi需同时挂载至容器。 --name ${container_name}:容器名称,进入容器时会用到,此处可以自己定义一个容器名称。 ${image_name}:容器镜像的名称。 --device=/dev/davinci0 :挂载对应卡到容器,当需要挂载多卡,请依次添加多项该配置。 Snt9b通过容器名称进入容器中。默认使用ma-user用户,后续所有操作步骤都在ma-user用户下执行。 docker exec -it ${container_name} bash
-
方案概览 在AI视频生成领域,越来越多的企业开始探索使用先进的视频生成模型来提升内容创作效率。然而,由于计算资源的限制,很多企业难以在本地环境中高效运行这些模型。如何解决计算资源限制,高效运行这些模型,通过使用ModelArts的Lite Server环境和NPU卡,企业可以轻松本地化部署和运行这些模型,从而加速内容创作过程。 本文主要介绍如何在ModelArts的Lite Server环境中,利用NPU卡实现Wan2.2视频生成模型的本地化部署,使用户能够通过API形式直观调用模型服务。
-
步骤五:Wan2.1文/图生视频训练 模型与权重转换:下载的权重为hf格式(记为原始权重),要将其转换为MindSpeed-MM(记为mm权重)。 依次将上述5下载的4个权重转换为mm格式。 cd /home/ma-user/MindSpeed_Dir/MindSpeed-MM
1.3B T2V 480P权重转化
mm-convert WanConverter hf_to_mm \
--cfg.source_path /home/ma-user/Wan2.1-T2V-1.3B-Diffusers/transformer/ \
--cfg.target_path /home/ma-user/Wan2.1-T2V-1.3B-Diffusers_mm/transformer/
14B T2V 480P/720P权重转化
mm-convert WanConverter hf_to_mm \
--cfg.source_path /home/ma-user/Wan2.1-T2V-14B-Diffusers/transformer/ \
--cfg.target_path /home/ma-user/Wan2.1-T2V-14B-Diffusers_mm/transformer/
14B I2V 480P权重转化
mm-convert WanConverter hf_to_mm \
--cfg.source_path /home/ma-user/Wan2.1-I2V-14B-480P-Diffusers/transformer/ \
--cfg.target_path /home/ma-user/Wan2.1-I2V-14B-480P-Diffusers_mm/transformer/
14B I2V 720P权重转化
mm-convert WanConverter hf_to_mm \
--cfg.source_path /home/ma-user/Wan2.1-I2V-14B-720P-Diffusers/transformer/ \
--cfg.target_path /home/ma-user/Wan2.1-I2V-14B-720P-Diffusers_mm/transformer/ 权重转换命令中的参数解释如下: cfg.source_path:原始权重路径。 cfg.target_path:转换或切分后权重保存路径。 数据集特征提取。 用上述下载的4份原始权重,分别对数据集的特征进行提取,提取5份特征(其中Wan2.1-T2V-14B-Diffusers 要提取480p和720p的特征),用在不同的训练任务中。 每次提取不同的特征,需要修改/home/ma-user/MindSpeed_Dir/MindSpeed-MM/examples/wan2.1/feature_extract/ 路径下的data.json, model.json, tools.json 这三个文件。 data.json文件中需要修改的参数如下: "max_height": 720, # 480p为480, 720p为720
"max_width": 1280, # 480p为832, 720p为1280
"max_hxw": 921600, # 480p为399360,720p为921600
"force_resolution": true, # 一直设为true
"from_pretrained": "/home/ma-user/Wan2.1-T2V-14B-Diffusers/tokenizer" 对应的原始权重中tokenier的路径 model.json文件中修改的参数如下图所示,共三个参数,分别为对应的原始权重中vae,image_encoder, text_encoder 路径。T2V无image_encoder,不用写。 图5 model.json文件参数修改 tools.json文件中修改如下两个参数: --save_path:提取特征的保存路径,用户自定义,不同的任务保存的路径不同。 --task:i2v任务写 i2v ; t2v任务写t2v 图6 tools.json文件参数修改 修改完上述三个文件后,开始提取特征: cd /home/ma-user/MindSpeed_Dir/MindSpeed-MM
bash examples/wan2.1/feature_extract/feature_extraction.sh SFT训练。 SFT训练修改两个文件,分别是MindSpeed-MM路径下的examples/wan2.1/{model_size}/{task}/feature_data.json文件和examples/wan2.1/{model_size}/{task}/pretrain.sh文件,model_size为模型大小14b/1.3b,task为i2v/t2v。 feature_data.json修改内容如下: data_path: 数据集提取特征的保存路径中的data.jsonl文件路径 data_folder: 数据集提取特征的保存路径 "max_height": 720, # 480p为480, 720p为720 "max_width": 1280, # 480p为832, 720p为1280 "max_hxw": 921600, # 480p为399360,720p为921600 "force_resolution": true, # 一直设为true。 "from_pretrained": , # 原始权重的tokenizer路径。 图7 feature_data.json文件修改内容 pretrain.sh文件修改内容如下: 图8 pretrain.sh文件修改内容 图9 pretrain.sh文件修改内容 NPUS_PER_NODE:Snt9B设置为8,Snt9B23设置为16。 CP:序列并行 Wan2.1-T2V-1.3B-Diffusers 480P SFT/LoRA 训练支持CP =1,4 Wan2.1-T2V-14B-Diffusers 480P SFT/LoRA 训练支持CP =1,4,8 Wan2.1-T2V-14B-Diffusers 720P SFT/LoRA 训练支持CP = 4,8 Wan2.1-I2V-14B-480P-Diffusers SFT/LoRA 训练支持CP =1,4,8 Wan2.1-I2V-14B-720P-Diffusers SFT/LoRA 训练支持CP = 4,8 LOAD_PATH:转换为mm格式权重路径下的transformer路径。 SAVE_PATH:自定义保存权重的路径 train-iters:训练的迭代步数 修改完成后执行如下SFT训练命令。 cd /home/ma-user/MindSpeed_Dir/MindSpeed-MM
sed -i 's/^chmod -R 640 \$SAVE_PATH$/#&/' examples/wan2.1/{model_size}/{task}/pretrain.sh
bash examples/wan2.1/{model_size}/{task}/pretrain.sh
# model_size为14b/1.3b, task为i2v,t2v LoRA训练。 LoRA训练修改两个文件,分别是MindSpeed-MM路径下的examples/wan2.1/{model_size}/{task}/feature_data.json文件和examples/wan2.1/{model_size}/{task}/finetune_lora.sh文件。 feature_data.json,finetune_lora.sh文件的修改内容同3.SFT训练。修改完成后执行如下LoRA训练命令。 cd /home/ma-user/MindSpeed_Dir/MindSpeed-MM
sed -i 's/^chmod -R 640 \$SAVE_PATH$/#&/' examples/wan2.1/{model_size}/{task}/finetune_lora.sh
bash examples/wan2.1/{model_size}/{task}/finetune_lora.sh
# model_size为14b/1.3b, task为i2v,t2v
-
资源规格要求 推荐使用“西南-贵阳一”Region上的Server资源Ascend Snt9B单机或Ascend Snt9B23单机资源。 表1 Ascend Snt9B 环境要求 名称 版本 driver 24.1.0.6 PyTorch pytorch_2.5.1 表2 Ascend Snt9B23 环境要求 名称 版本 driver 24.1.RC3.7 PyTorch pytorch_2.5.1
-
步骤一:准备环境 请参考Lite Server资源开通,购买Server资源,并确保机器已开通,密码已获取,能通过SSH登录,不同机器之间网络互通。 当容器需要提供服务给多个用户,或者多个用户共享使用该容器时,应限制容器访问Openstack的管理地址(169.254.169.254),以防止容器获取宿主机的元数据。具体操作请参见禁止容器获取宿主机元数据。 SSH登录机器后,检查NPU设备状态。运行如下命令,返回NPU设备信息。 npu-smi info # 在每个实例节点上运行此命令可以看到NPU卡状态
npu-smi info -l | grep Total # 在每个实例节点上运行此命令可以看到总卡数 如出现错误,可能是机器上的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 因训练过程中使用磁盘空间大,建议挂载1T以上磁盘。
-
步骤四:安装依赖和软件包 拉取代码。 mkdir MindSpeed_Dir
cd MindSpeed_Dir
git config --global http.sslVerify false
git clone https://gitee.com/ascend/MindSpeed-MM.git
cd MindSpeed-MM
git checkout de390d902b57621cd900fa343ea62168bd578bc9
cd ..
git clone https://github.com/NVIDIA/Megatron-LM.git
cd Megatron-LM
git checkout core_r0.8.0
cp -r megatron ../MindSpeed-MM/
cd ../MindSpeed-MM 修改/home/ma-user/MindSpeed_Dir/MindSpeed-MM/pyproject.toml文件中20行torch的版本为2.5.1,修改后的内容如下图所示。 安装加速库。 git clone https://gitee.com/ascend/MindSpeed.git
cd MindSpeed
git checkout 4d9041071da5214e038ebf9f76e8574a60c89c2e
pip install -r requirements.txt
pip install -e .
cd ..
pip install -e .
pip install diffusers==0.33.1 安装依赖Decord。 确保服务器网络正常,确保yum可以正常使用,确保git可以正常clone。 export BUILD_ROOT_PATH=/home/ma-user/MindSpeed_Dir # 改成实际需要安装的根目录
cd /home/ma-user/MindSpeed_Dir
sudo yum install -y autoconf automake bzip2 bzip2-devel freetype-devel gcc gcc-c++ git libtool make mercurial pkgconfig zlib-devel
curl -O -L -k https://github.com/Kitware/CMake/releases/download/v3.19.3/cmake-3.19.3-Linux-aarch64.sh
chmod +x cmake-3.19.3-Linux-aarch64.sh
sudo ./cmake-3.19.3-Linux-aarch64.sh --skip-license --prefix=/usr/local
sudo /usr/local/bin/cmake -version
mkdir ./ffmpeg_sources
cd ./ffmpeg_sources
sudo yum install nasm
cd ../
curl -O -L -k https://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz
tar xzf yasm-1.3.0.tar.gz
cd yasm-1.3.0
sudo ./configure --prefix="$BUILD_ROOT_PATH/ffmpeg_build" --bindir="$HOME/bin"
sudo make -j$(nproc)
sudo make install
cd ../
git clone --depth 1 https://code.videolan.org/videolan/x264.git
cd x264
export PATH="$HOME/bin:$PATH"
sudo PKG_CONFIG_PATH="$BUILD_ROOT_PATH/ffmpeg_build/lib/pkgconfig" ./configure --prefix="$BUILD_ROOT_PATH/ffmpeg_build" --bindir="$HOME/bin" --enable-shared --enable-pic
sudo make -j$(nproc)
sudo make install
cd ../
git clone --depth 1 https://chromium.googlesource.com/webm/libvpx.git
cd libvpx
export PATH="$HOME/bin:$PATH"
sudo ./configure --prefix="$BUILD_ROOT_PATH/ffmpeg_build" --disable-examples --disable-unit-tests --enable-vp9-highbitdepth --as=yasm --enable-shared --enable-pic
sudo make -j$(nproc)
sudo make install
cd ../
curl -O -L -k https://ffmpeg.org/releases/ffmpeg-4.1.6.tar.bz2
tar xjf ffmpeg-4.1.6.tar.bz2
cd ffmpeg-4.1.6
export PATH="$HOME/bin:$PATH"
sudo PKG_CONFIG_PATH="$BUILD_ROOT_PATH/ffmpeg_build/lib/pkgconfig" ./configure \
--prefix="/$BUILD_ROOT_PATH/ffmpeg_build" \
--extra-cflags="-I$BUILD_ROOT_PATH/ffmpeg_build/include" \
--extra-ldflags="-L$BUILD_ROOT_PATH/ffmpeg_build/lib" \
--extra-libs=-lpthread \
--extra-libs=-lm \
--bindir="$HOME/bin" \
--enable-gpl \
--enable-libvpx \
--enable-libx264 \
--enable-nonfree \
--disable-static \
--enable-shared \
--enable-pic
sudo make -j$(nproc)
sudo make install
cd $BUILD_ROOT_PATH
git clone https://github.com/dmlc/decord.git
cd decord
git submodule update --init --recursive
sudo mkdir -p build
sudo /usr/local/bin/cmake . -DUSE_CUDA=0 -DFFMPEG_DIR=$BUILD_ROOT_PATH/ffmpeg_build
sudo make -j$(nproc)
sudo cp libdecord.so /usr/local/lib/
sudo cp libdecord.so ./python/decord/libdecord.so
cd python
pip install numpy
sudo chown ma-user:ma-group decord/libdecord.so
python setup.py install
# 执行如下指令不报错,证明decord安装成功
python -c "import decord; from decord import VideoReader" 安装加速库APEX。 cd /home/ma-user/MindSpeed_Dir
git clone -b master https://gitee.com/ascend/apex.git
cd apex/
bash scripts/build.sh --python=3.11
cd apex/dist/
pip install --upgrade *.whl 下载模型权重https://huggingface.co/Wan-AI。 下载文生视频训练权重,如下图所示,下载文生视频14B预训练权重的所有文件,保存在Wan2.1-T2V-14B-Diffusers目录下,并上传Wan2.1-T2V-14B目录到容器/home/ma-user路径下。 图1 下载Wan2.1-T2V-14B-Diffusers训练权重 下载文生视频训练权重,如下图所示,下载文生视频1.3B预训练权重的所有文件,保存在Wan2.1-T2V-1.3B-Diffusers目录下,并上传Wan2.1-T2V-1.3B-Diffusers目录到容器/home/ma-user路径下。 图2 下载Wan2.1-T2V-1.3B-Diffusers训练权重 下载图生视频训练权重,如下图所示,下载图生视频14B-720p预训练权重的所有文件,保存在Wan-AI/Wan2.1-I2V-14B-720P-Diffusers目录下,并上传Wan2.1-I2V-14B-720P-Diffusers目录到容器/home/ma-user路径下。 图3 下载Wan2.1-I2V-14B-720P-Diffusers训练权重 下载图生视频训练权重,如下图所示,下载图生视频14B-480p预训练权重的所有文件,保存在Wan2.1-I2V-14B-480P-Diffusers目录下,并上传Wan2.1-I2V-14B-480P-Diffusers目录到容器/home/ma-user路径下。 图4 下载Wan2.1-I2V-14B-480P-Diffusers训练权重 请自行准备训练数据集,上传到容器/home/ma-user路径下。数据集处理成如下格式。 其中,videos/下存放视频,data.json中包含该数据集中所有的视频-文本对信息,具体示例如下: 修改/home/ma-user/MindSpeed_Dir/MindSpeed-MM/examples/wan2.1/feature_extract/data.txt文件,其中每一行表示一个数据集,第一个参数表示数据文件夹的路径,第二个参数表示data.json文件的路径,用,分隔 , 示例如下
-
步骤三:启动容器镜像 Snt9B23启动容器镜像。启动前请先按照参数说明修改${}中的参数。 export work_dir="自定义挂载的工作目录"
export container_work_dir="自定义挂载到容器内的工作目录"
export container_name="自定义容器名称"
export image_name="镜像名称或ID"
// 启动一个容器去运行镜像
docker run -itd \
--network=host \
--privileged \
--device=/dev/davinci_manager \
--device=/dev/devmm_svm \
--device=/dev/hisi_hdc \
--shm-size=256g \
-v /usr/local/dcmi:/usr/local/dcmi \
-v /usr/local/Ascend/driver:/usr/local/Ascend/driver \
-v /var/log/npu/:/usr/slog \
-v /usr/local/sbin/npu-smi:/usr/local/sbin/npu-smi \
-v ${work_dir}:${container_work_dir} \
--name ${container_name} \
${image_name} \
/bin/bash Snt9B启动容器镜像。启动前请先按照参数说明修改${}中的参数。 export work_dir="自定义挂载的工作目录"
export container_work_dir="自定义挂载到容器内的工作目录"
export container_name="自定义容器名称"
export image_name="镜像名称或ID"
// 启动一个容器去运行镜像
docker run -itd \
--network=host \
--device=/dev/davinci0 \
--device=/dev/davinci1 \
--device=/dev/davinci2 \
--device=/dev/davinci3 \
--device=/dev/davinci4 \
--device=/dev/davinci5 \
--device=/dev/davinci6 \
--device=/dev/davinci7 \
--device=/dev/davinci_manager \
--device=/dev/devmm_svm \
--device=/dev/hisi_hdc \
--shm-size=256g \
-v /usr/local/dcmi:/usr/local/dcmi \
-v /usr/local/Ascend/driver:/usr/local/Ascend/driver \
-v /var/log/npu/:/usr/slog \
-v /usr/local/sbin/npu-smi:/usr/local/sbin/npu-smi \
-v ${work_dir}:${container_work_dir} \
--name ${container_name} \
${image_name} \
/bin/bash 参数说明: -v ${work_dir}:${container_work_dir}:代表需要在容器中挂载宿主机的目录。宿主机和容器使用不同的文件系统。work_dir为宿主机中工作目录,目录下可存放项目所需代码、数据等文件。container_work_dir为要挂载到的容器中的目录。为方便两个地址可以相同。 容器不能挂载到/home/ma-user目录,此目录为ma-user用户家目录。如果容器挂载到/home/ma-user下,拉起容器时会与基础镜像冲突,导致基础镜像不可用。 driver及npu-smi需同时挂载至容器。 --name ${container_name}:容器名称,进入容器时会用到,此处可以自己定义一个容器名称。 ${image_name}:容器镜像的名称。 --device=/dev/davinci0 :挂载对应卡到容器,当需要挂载多卡,请依次添加多项该配置。 Snt9B通过容器名称进入容器中。默认使用ma-user用户,后续所有操作步骤都在ma-user用户下执行。 docker exec -it ${container_name} bash Snt9B23需要使用root权限进入容器中。 docker exec -itu root ${container_name} bash
-
方案概览 Wan2.1是一套全面而开放的视频基础模型,它突破了视频生成的界限,是一个能够生成中英文文本的视频模型,具有强大的视频生成功能,可增强其实际应用。 本文主要介绍如何在ModelArts的Lite Server环境中,使用NPU卡对Wan2.1模型进行文/图生视频训练。完成本方案的部署,需要先联系您所在企业的华为方技术支持购买Server资源。 本方案支持的模型包含Wan2.1-T2V-14B-Diffusers、Wan2.1-T2V-1.3B-Diffusers、Wan2.1-I2V-14B-480P-Diffusers和Wan2.1-I2V-14B-720P-Diffusers。
-
获取软件和镜像 表3 获取镜像 分类 名称 获取路径 插件代码包 AscendCloud-AIGC-6.5.906-xxx.zip 文件名中的xxx表示具体的时间戳,以包名发布的实际时间为准。 获取路径:Support-E,在此路径中查找下载ModelArts 6.5.906版本。 说明: 如果上述软件获取路径打开后未显示相应的软件信息,说明您没有下载权限,请联系您所在企业的华为方技术支持下载获取。 基础镜像 Snt9B:西南-贵阳一: 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-snt9b-20250729103313-3a25129 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拉取。