文件最后提交记录最后更新时间
!7400 修改cogvideo的代码 Merge pull request !7400 from mazhixin/master 8 个月前
文档整改,gitee->gitcode Co-authored-by: Lighters_c<zyh13227@163.com> # message auto-generated for no-merge-commit merge: !7469 merge ffffix into master 文档整改,gitee->gitcode Created-by: addsubmuldiv Commit-by: Lighters_c Merged-by: ascend-robot Description: ## Motivation Please describe the motivation of this PR and the goal you want to achieve through this PR. ## Modification Please briefly describe what modification is made in this PR. ## Self-test (Optional) If modifications to this PR may cause/fix function/accuracy/performance DTSs/issues, a self-inspection record needs to be attached. ## BC-breaking (Optional) If there are compatibility issues, such as dependencies on cann/torch_npu versions, they need to be explained in the PR. ## Checklist **Before PR**: - [ ] The new code needs to comply with the Clean Code specification. - [ ] The PR content is self-checked, and the expression can be clear and the writing standardized **After PR**: - [ ] CLA has been signed and all committers have signed the CLA in this PR. - [ ] The ci-pipeline is passed, Code Check is passed. See merge request: Ascend/ModelZoo-PyTorch!74695 个月前
!7400 修改cogvideo的代码 Merge pull request !7400 from mazhixin/master 8 个月前
!7022 [MindIE-SD]迁移SD模型到MultiModal路径下 Merge pull request !7022 from 龙钢/master 1 年前
!7354 【MindIE SD】cogvideo requirements update Merge pull request !7354 from zhouwenxue/master 9 个月前
README.md

license: apache-2.0 frameworks:

  • PyTorch language:
  • en hardwares:
  • NPU

模型推理指导

一、模型简介

CogVideoX是一种文本到视频的扩散模型,能够在给定文本输入的情况下生成相符的视频。

本模型使用的优化手段如下:

  • 等价优化:FA、RoPE、Linear、DP+SP并行
  • 算法优化:FA、RoPE、Linear、DP+SP并行、cache

二、环境准备

表 1 版本配套表

配套 版本 环境准备指导
Python 3.10 / 3.11 -
torch 2.1.0 -

2.1 获取安装包

2.2 CANN安装

# 增加软件包可执行权限,{version}表示软件版本号,{arch}表示CPU架构,{soc}表示昇腾AI处理器的版本。
chmod +x ./Ascend-cann-toolkit_{version}_linux-{arch}.run
chmod +x ./Ascend-cann-kernels-{soc}_{version}_linux.run
# 校验软件包安装文件的一致性和完整性
./Ascend-cann-toolkit_{version}_linux-{arch}.run --check
./Ascend-cann-kernels-{soc}_{version}_linux.run --check
# 安装
./Ascend-cann-toolkit_{version}_linux-{arch}.run --install
./Ascend-cann-kernels-{soc}_{version}_linux.run --install

# 设置环境变量
source /usr/local/Ascend/ascend-toolkit/set_env.sh

2.3 MindIE安装

# 增加软件包可执行权限,{version}表示软件版本号,{arch}表示CPU架构。
chmod +x ./Ascend-mindie_${version}_linux-${arch}.run
./Ascend-mindie_${version}_linux-${arch}.run --check

# 方式一:默认路径安装
./Ascend-mindie_${version}_linux-${arch}.run --install
# 设置环境变量
cd /usr/local/Ascend/mindie && source set_env.sh

# 方式二:指定路径安装
./Ascend-mindie_${version}_linux-${arch}.run --install --install-path=${AieInstallPath}
# 设置环境变量
cd ${AieInstallPath}/mindie && source set_env.sh

2.4 Torch_npu安装

安装pytorch框架 版本2.1.0 安装包下载

使用pip安装

# {version}表示软件版本号,{arch}表示CPU架构。
pip install torch-${version}-cp310-cp310-linux_${arch}.whl

下载 pytorch_v{pytorchversion}_py{pythonversion}.tar.gz

tar -xzvf pytorch_v{pytorchversion}_py{pythonversion}.tar.gz
# 解压后,会有whl包
pip install torch_npu-{pytorchversion}.xxxx.{arch}.whl

2.5 安装gcc、g++

# 若环境镜像中没有gcc、g++,请用户自行安装
yum install gcc
yum install g++

# 导入头文件路径
export CPLUS_INCLUDE_PATH=/usr/include/c++/12/:/usr/include/c++/12/aarch64-openEuler-linux/:$CPLUS_INCLUDE_PATH

2.6 下载本仓库

   git clone https://gitcode.com/ascend/ModelZoo-PyTorch.git

2.7 安装所需依赖

pip install -r requirements.txt

三、模型权重

3.1 权重下载

下载CogVideoX-5b / CogVideoX-2b权重:(scheduler、text_encoder、tokenizer、transformer、vae,5个模型的配置文件及权重)

   git clone https://huggingface.co/THUDM/CogVideoX-5b
   git clone https://huggingface.co/THUDM/CogVideoX-2b

3.2 配置文件说明

各模型的配置文件、权重文件的层级样例如下所示。

|----CogVideoX-5b / CogVideoX-2b
|    |---- model_index.json
|    |---- scheduler
|    |    |---- scheduler_config.json
|    |---- text_encoder
|    |    |---- config.json
|    |    |---- 模型权重
|    |---- tokenizer
|    |    |---- json文件
|    |    |---- 模型权重
|    |---- transformer
|    |    |---- config.json
|    |    |---- 模型权重
|    |---- vae
|    |    |---- config.json
|    |    |---- 模型权重

四、模型推理

4.1 单卡性能测试

  1. 设置CogVideoX-5b权重路径:
model_path='data/CogVideoX-5b'

或者设置CogVideoX-2b权重路径:

model_path='data/CogVideoX-2b'
  1. 执行命令:
export CPU_AFFINITY_CONF=1
export HCCL_OP_EXPANSION_MODE="AIV"
TASK_QUEUE_ENABLE=2 ASCEND_RT_VISIBLE_DEVICES=0 torchrun --master_port=2002 --nproc_per_node=1 inference.py \
        --prompt_file ./prompts.txt \
        --model_path ${model_path} \
        --output_path ./output \
        --num_frames 48 \
        --width 720 \
        --height 480 \
        --fps 8 \
        --num_inference_steps 50 \
        --dtype bfloat16 \
        --seed 42 \
        --cache_algorithm attention

参数说明:

  • CPU_AFFINITY_CONF=1:环境变量,绑核。
  • HCCL_OP_EXPANSION_MODE="AIV":环境变量,通信算子编排。
  • TASK_QUEUE_ENABLE=2:开启二级流水。
  • ASCEND_RT_VISIBLE_DEVICES=0:device id,可设置其他卡数。
  • prompt_file:文本文件,用于视频生成的文字描述提示。
  • model_path:权重路径,包含scheduler、text_encoder、tokenizer、transformer、vae,5个模型的配置文件及权重。
  • output_path:生成视频的保存路径。
  • num_frames:生成视频的帧数,默认值为48。
  • width:生成视频的分辨率,宽,默认值为720。
  • height:生成视频的分辨率,高,默认值为480。
  • fps:生成视频的帧率,默认值为8。
  • num_inference_steps:推理迭代步数,默认值为50。
  • dtype:数据类型,默认值为bfloat16。CogVideoX-2b推荐设置为float16,需要在命令前加INF_NAN_MODE_FORCE_DISABLE=1,开启饱和模式避免数值溢出。
  • seed: 设置随机种子,默认值为42。
  • cache_algorithm:默认为None,可选择算法优化attention或sampling,推荐设置为attention,注意是有损的加速算法。
  • enable_offload:遇到显存放不下的情况,可在命令后加此配置。

推理结束后会在output_path视频保存路径下生成result.json,用于记录文本提示和生成视频的对应关系,便于测试视频精度。

注意:prompt_file、model_path、output_path应皆为本地合法路径,视频分辨率、帧数、帧率、推理迭代步数、随机种子应皆为int类型正整数,否则会导致推理抛异常。

4.2 多卡性能测试

  1. 设置CogVideoX-5b权重路径:
model_path='data/CogVideoX-5b'

或者设置CogVideoX-2b权重路径:

model_path='data/CogVideoX-2b'
  1. 执行命令:
export CPU_AFFINITY_CONF=1
export HCCL_OP_EXPANSION_MODE="AIV"
TASK_QUEUE_ENABLE=2 ASCEND_RT_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 torchrun --master_port=2002 --nproc_per_node=8 inference.py \
        --prompt_file ./prompts.txt \
        --model_path ${model_path} \
        --output_path ./output \
        --num_frames 48 \
        --width 720 \
        --height 480 \
        --fps 8 \
        --num_inference_steps 50 \
        --dtype bfloat16 \
        --seed 42 \
        --cache_algorithm attention

参数说明:

  • CPU_AFFINITY_CONF=1:环境变量,绑核。
  • HCCL_OP_EXPANSION_MODE="AIV":环境变量,通信算子编排。
  • TASK_QUEUE_ENABLE=2:开启二级流水。
  • ASCEND_RT_VISIBLE_DEVICES:device id,可设置其他卡数。ASCEND_RT_VISIBLE_DEVICES=0,1,2,3,4,5,6,7代表占用0-7卡进行8卡推理。
  • nproc_per_node:数值需要与卡数保持一致。
  • prompt_file:文本文件,用于视频生成的文字描述提示。
  • model_path:权重路径,包含scheduler、text_encoder、tokenizer、transformer、vae,5个模型的配置文件及权重。
  • output_path:生成视频的保存路径。
  • num_frames:生成视频的帧数,默认值为48。
  • width:生成视频的分辨率,宽,默认值为720。
  • height:生成视频的分辨率,高,默认值为480。
  • fps:生成视频的帧率,默认值为8。
  • num_inference_steps:推理迭代步数,默认值为50。
  • dtype:数据类型,默认值为bfloat16。CogVideoX-2b推荐设置为float16,需要在命令前加INF_NAN_MODE_FORCE_DISABLE=1,开启饱和模式避免数值溢出。
  • seed: 设置随机种子,默认值为42。
  • cache_algorithm:默认为None,可选择算法优化attention或sampling,推荐设置为attention,注意是有损的加速算法。
  • enable_offload:遇到显存放不下的情况,可在命令后加此配置。

推理结束后会在output_path视频保存路径下生成result.json,用于记录文本提示和生成视频的对应关系,便于测试视频精度。

注意:prompt_file、model_path、output_path应皆为本地合法路径,视频分辨率、帧数、帧率、推理迭代步数、随机种子应皆为int类型正整数,否则会导致推理抛异常。

五、推理结果参考

CogVideoX-5b性能数据

硬件形态 cpu规格 batch size 迭代次数 数据类型 卡数 性能
Atlas 800I A2(8*64G) 64核(arm) 1 50 bfloat16 1 224s
Atlas 800I A2(8*64G) 64核(arm) 1 50 bfloat16 8 58s

CogVideoX-5b精度数据

优化策略 dynamic_degree subject_consistency imaging_quality aesthetic_quality overall_consistency motion_smoothness
等价优化 0.45 0.9422 0.6046 0.6327 0.2456 0.9842
算法优化 0.425 0.9358 0.5964 0.6247 0.2423 0.9832

CogVideoX-2b性能数据

硬件形态 cpu规格 batch size 迭代次数 数据类型 卡数 性能
Atlas 800I A2(8*64G) 64核(arm) 1 50 float16 1 105s
Atlas 800I A2(8*64G) 64核(arm) 1 50 float16 4 65s

CogVideoX-2b精度数据

优化策略 dynamic_degree subject_consistency imaging_quality aesthetic_quality overall_consistency motion_smoothness
等价优化 0.575 0.9295 0.6094 0.5994 0.2388 0.9773
算法优化 0.55 0.9238 0.5778 0.5939 0.2413 0.9767

性能测试需要独占npu和cpu

声明

  • 本代码仓提到的数据集和模型仅作为示例,这些数据集和模型仅供您用于非商业目的,如您使用这些数据集和模型来完成示例,请您特别注意应遵守对应数据集和模型的License,如您因使用数据集或模型而产生侵权纠纷,华为不承担任何责任。
  • 如您在使用本代码仓的过程中,发现任何问题(包括但不限于功能问题、合规问题),请在本代码仓提交issue,我们将及时审视并解答。