Ascend-SACT/HunyuanVideo
模型介绍文件和版本Pull Requests讨论分析
下载使用量0

概述

HunyuanVideo是一种文本到视频的扩散模型,能够在给定文本输入的情况下生成相符的视频。当前支持分辨率如下:

分辨率h/w=9:16h/w=9:16h/w=4:3h/w=3:4h/w=1:1
720P720x12801280x7201104x832832x1104960x960

支持设备:Atlas 800I A2

支持卡数:1、2、3、4、6、8、16

环境准备:

镜像:mindie:2.2.RC1-800I-A2-py311-openeuler24.03-lts

安装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

下载modelzoo仓库

git clone https://gitee.com/ascend/ModelZoo-PyTorch.git
cd ModelZoo-PyTorch/MindIE/MultiModal/HunyuanVideo/

安装所需依赖

pip install -r requirements.txt

模型权重准备

权重下载

# text_encoder权重链接
https://huggingface.co/xtuner/llava-llama-3-8b-v1_1-transformers

# text_encoder_2权重链接
https://huggingface.co/openai/clip-vit-large-patch14

# hunyuan-model权重链接
https://huggingface.co/tencent/HunyuanVideo

权重目录如下所示:

HunyuanVideo
  ├──README.md
  ├──hunyuan-video-t2v-720p
  │  ├──transformers
  │  ├──vae
  ├──llava-llama-3-8b-v1_1-transformers
  ├──clip-vit-large-patch14

修改text_encoder的权重:

python hyvideo/utils/preprocess_text_encoder_tokenizer_utils.py --input_dir llava-llama-3-8b-v1_1-transformers --output_dir text_encoder

修改之后的权重目录如下所示:

HunyuanVideo
  ├──README.md
  ├──hunyuan-video-t2v-720p
  │  ├──transformers
  │  ├──vae
  ├──text_encoder
  ├──clip-vit-large-patch14

text_encoder目录下,会生成对应的权重文件。

模型推理

单卡等价优化推理性能测试

export TOKENIZERS_PARALLELISM=false
export ALGO=0
python sample_video.py \
      --model-base HunyuanVideo \
      --dit-weight HunyuanVideo/hunyuan-video-t2v-720p/transformers/mp_rank_00_model_states.pt \
      --vae-path HunyuanVideo/hunyuan-video-t2v-720p/vae \
      --text-encoder-path HunyuanVideo/text_encoder \
      --text-encoder-2-path HunyuanVideo/clip-vit-large-patch14 \
      --model-resolution "720p" \
      --video-size 720 1280 \
      --video-length 129 \
      --infer-steps 50 \
      --prompt "A cat walks on the grass, realistic style." \
      --seed 42 \
      --flow-reverse \
      --num-videos 1 \
      --device_id 0 \
      --save-path ./results

参数说明:

  • model-base: 权重路径,包含vae、text_encoder、Tokenizer、Transformer和Scheduler五个模型的配置文件及权重。
  • dit-weight: dit的权重路径
  • vae-path: VAE的权重路径
  • text-encoder-path: text_encoder的权重路径
  • text-encoder-2-path: text_encoder_2的权重路径
  • model-resolution: 分辨率
  • video-size: 生成视频的高和宽
  • video-length: 总帧数
  • infer-steps: 推理步数
  • prompt: 文本提示词
  • seed: 随机种子
  • num-videos: 每个prompt生成多少个视频,该参数和batch有关,800I A2(64G)机器上,该参数的大小受显存限制
  • device_id:单卡推理时,可设置NPU id
  • save-path: 生成的视频的保存路径
  • flow-reverse:是否进行反向采样

推理打印结果

2025-12-09 16:38:14.542 | INFO     | hyvideo.inference:from_pretrained:308 - Building model...
2025-12-09 16:38:48.066 | INFO     | hyvideo.vae:load_vae:53 - VAE to dtype: torch.float16
2025-12-09 16:38:48.641 | INFO     | hyvideo.text_encoder:load_text_encoder:28 - Loading text encoder model (llm) from: /root/autodl-tmp/HunyuanVideo/text_encoder
Loading checkpoint shards: 100%|█████████████████████████████████████████████████████████████████████████████████████████████████| 4/4 [00:07<00:00,  1.76s/it]
2025-12-09 16:39:01.773 | INFO     | hyvideo.text_encoder:load_text_encoder:50 - Text encoder to dtype: torch.float16
2025-12-09 16:39:28.942 | INFO     | hyvideo.text_encoder:load_tokenizer:64 - Loading tokenizer (llm) from: /root/autodl-tmp/HunyuanVideo/text_encoder
2025-12-09 16:39:29.932 | INFO     | hyvideo.text_encoder:load_text_encoder:28 - Loading text encoder model (clipL) from: /root/autodl-tmp/HunyuanVideo/clip-vit-large-patch14
2025-12-09 16:39:30.214 | INFO     | hyvideo.text_encoder:load_text_encoder:50 - Text encoder to dtype: torch.float16
2025-12-09 16:39:30.607 | INFO     | hyvideo.text_encoder:load_tokenizer:64 - Loading tokenizer (clipL) from: /root/autodl-tmp/HunyuanVideo/clip-vit-large-patch14
/usr/local/lib64/python3.11/site-packages/torch_npu/contrib/transfer_to_npu.py:162: UserWarning: Cannot create tensor with interal format while allow_internel_format=False, tensor will be created with base format. (Triggered internally at build/CMakeFiles/torch_npu.dir/compiler_depend.ts:334.)
  return fn(*args, **kwargs)
  0%|                                                                                                                                    | 
  0/2 [00:00<?, ?it/s]100%|
  2/2 [06:23<00:00, 191.50s/it]