language:
- en
license: other
pipeline_tag: text-to-video
tags:
- video-generation
- thudm
- image-to-video
inference: false
library_name: diffusers
CogVideoX1.5-5B
📄 中文阅读 |
🤗 Huggingface Space |
🌐 Github |
📜 arxiv
📍 访问 清影 和 API平台 体验更大规模的商业视频生成模型。
模型介绍
CogVideoX 是一个类似于 清影 的开源视频生成模型。下表展示了我们当前提供的视频生成模型列表及其基础信息。
模型名称 |
CogVideoX1.5-5B (最新) |
CogVideoX1.5-5B-I2V (最新) |
CogVideoX-2B |
CogVideoX-5B |
CogVideoX-5B-I2V |
发布日期 |
2024年11月8日 |
2024年11月8日 |
2024年8月6日 |
2024年8月27日 |
2024年9月19日 |
视频分辨率 |
1360 * 768 |
Min(W, H) = 768 768 ≤ Max(W, H) ≤ 1360 Max(W, H) % 16 = 0 |
720 * 480 |
帧数 |
应为 16N + 1,其中 N <= 10 (默认81) |
应为 8N + 1,其中 N <= 6 (默认49) |
推理精度 |
BF16 (推荐), FP16, FP32, FP8*, INT8, 不支持: INT4 |
FP16*(推荐), BF16, FP32, FP8*, INT8, 不支持: INT4 |
BF16 (推荐), FP16, FP32, FP8*, INT8, 不支持: INT4 |
单GPU显存占用
|
SAT BF16: 76GB diffusers BF16: 从10GB* diffusers INT8(torchao): 从7GB* |
SAT FP16: 18GB diffusers FP16: 最低4GB* diffusers INT8 (torchao): 最低3.6GB* |
SAT BF16: 26GB diffusers BF16 : 最低5GB* diffusers INT8 (torchao): 最低4.4GB* |
多GPU显存占用 |
BF16: 24GB* 使用diffusers
|
FP16: 10GB* 使用diffusers
|
BF16: 15GB* 使用diffusers
|
推理速度 (步数=50, FP/BF16) |
单A100: ~1000秒 (5秒视频) 单H100: ~550秒 (5秒视频) |
单A100: ~90秒 单H100: ~45秒 |
单A100: ~180秒 单H100: ~90秒 |
提示语言 |
英文* |
提示词长度限制 |
224个词元 |
226个词元 |
视频时长 |
5秒或10秒 |
6秒 |
帧率 |
16帧/秒 |
8帧/秒 |
位置编码 |
3d_rope_pos_embed |
3d_sincos_pos_embed |
3d_rope_pos_embed |
3d_rope_pos_embed + learnable_pos_embed |
下载链接 (Diffusers) |
🤗 HuggingFace 🤖 ModelScope 🟣 WiseModel |
🤗 HuggingFace 🤖 ModelScope 🟣 WiseModel |
🤗 HuggingFace 🤖 ModelScope 🟣 WiseModel |
🤗 HuggingFace 🤖 ModelScope 🟣 WiseModel |
🤗 HuggingFace 🤖 ModelScope 🟣 WiseModel |
下载链接 (SAT) |
🤗 HuggingFace 🤖 ModelScope 🟣 WiseModel |
SAT |
数据说明
- 使用
diffusers
库测试时启用了库中包含的所有优化。此方案尚未在非NVIDIA A100/H100设备上测试。通常应适用于所有NVIDIA Ampere架构或更高版本的设备。禁用优化可能使显存占用增加三倍,但速度提升3-4倍。可以选择性禁用某些优化,包括:
pipe.enable_sequential_cpu_offload()
pipe.vae.enable_slicing()
pipe.vae.enable_tiling()
- 在多GPU推理中,需要禁用
enable_sequential_cpu_offload()
优化。
- 使用INT8模型会降低推理速度,满足低显存GPU的需求,同时保留最小的视频质量下降,代价是显著的速度降低。
- PytorchAO 和 Optimum-quanto 可用于量化文本编码器、Transformer和VAE模块,减少CogVideoX的内存需求,使其能够在较小显存的GPU上运行。TorchAO量化完全兼容
torch.compile
,显著提高推理速度。FP8
精度需要NVIDIA H100及以上,需要源码安装 torch
、torchao
、diffusers
和 accelerate
。推荐使用 CUDA 12.4
。
- 推理速度测试同样使用了上述显存优化,未优化时速度提升约10%。仅
diffusers
版本的模型支持量化。
- 模型仅支持英文输入;其他语言应在提示词制作时通过更大模型翻译为英文。
注意
- 使用 SAT 进行推理和微调SAT版本的模型。更多详情请查看我们的GitHub。
快速开始 🤗
此模型支持使用Hugging Face diffusers库进行部署。您可以按照以下步骤快速上手。
我们建议您访问我们的 GitHub 查看提示词优化和转换,以获得更好的体验。
- 安装所需依赖
# diffusers (从源码安装)
# transformers>=4.46.2
# accelerate>=1.1.1
# imageio-ffmpeg>=0.5.1
pip install git+https://github.com/huggingface/diffusers
pip install --upgrade transformers accelerate diffusers imageio-ffmpeg
- 运行代码
import torch
from diffusers import CogVideoXPipeline
from diffusers.utils import export_to_video
prompt = "一只穿着小红外套和小帽子的熊猫,坐在宁静的竹林中的木凳上。熊猫毛茸茸的爪子拨弄着一把迷你木吉他,发出柔和、悠扬的旋律。附近有几只其他熊猫好奇地围观,有的还跟着节奏拍手。阳光透过高高的竹子洒下,给整个场景镀上一层温柔的光晕。熊猫的表情专注而愉悦。背景中有一条潺潺的小溪和翠绿的植被,为这场独特的音乐表演增添了宁静而神奇的氛围。"
pipe = CogVideoXPipeline.from_pretrained(
"THUDM/CogVideoX1.5-5B",
torch_dtype=torch.bfloat16
)
pipe.enable_sequential_cpu_offload()
pipe.vae.enable_tiling()
pipe.vae.enable_slicing()
video = pipe(
prompt=prompt,
num_videos_per_prompt=1,
num_inference_steps=50,
num_frames=81,
guidance_scale=6,
generator=torch.Generator(device="cuda").manual_seed(42),
).frames[0]
export_to_video(video, "output.mp4", fps=8)
量化推理
PytorchAO 和 Optimum-quanto 可用于量化文本编码器、Transformer和VAE模块,以减少CogVideoX的内存需求。这使得模型可以在免费的T4 Colab或显存较低的GPU上运行!此外,TorchAO量化完全兼容 torch.compile
,可以显著加速推理。
import torch
from diffusers import AutoencoderKLCogVideoX, CogVideoXTransformer3DModel, CogVideoXImageToVideoPipeline
from diffusers.utils import export_to_video
from transformers import T5EncoderModel
from torchao.quantization import quantize_, int8_weight_only
quantization = int8_weight_only
text_encoder = T5EncoderModel.from_pretrained("THUDM/CogVideoX1.5-5B", subfolder="text_encoder",
torch_dtype=torch.bfloat16)
quantize_(text_encoder, quantization())
transformer = CogVideoXTransformer3DModel.from_pretrained("THUDM/CogVideoX1.5-5B", subfolder="transformer",
torch_dtype=torch.bfloat16)
quantize_(transformer, quantization())
vae = AutoencoderKLCogVideoX.from_pretrained("THUDM/CogVideoX1.5-5B", subfolder="vae", torch_dtype=torch.bfloat16)
quantize_(vae, quantization())
pipe = CogVideoXImageToVideoPipeline.from_pretrained(
"THUDM/CogVideoX1.5-5B",
text_encoder=text_encoder,
transformer=transformer,
vae=vae,
torch_dtype=torch.bfloat16,
)
pipe.enable_model_cpu_offload()
pipe.vae.enable_tiling()
pipe.vae.enable_slicing()
prompt = "一个小女孩正在高速骑自行车。专注、细节、真实。"
video = pipe(
prompt=prompt,
num_videos_per_prompt=1,
num_inference_steps=50,
num_frames=81,
guidance_scale=6,
generator=torch.Generator(device="cuda").manual_seed(42),
).frames[0]
export_to_video(video, "output.mp4", fps=8)
此外,这些模型可以使用PytorchAO以量化数据类型序列