license: other
license_link: https://huggingface.co/THUDM/CogVideoX-5b-I2V/blob/main/LICENSE
language:
- en
tags:
- cogvideox
- 视频生成
- thudm
- 图像转视频
inference: false
CogVideoX-5B-I2V
📄 英文版说明 |
🤗 Huggingface 体验空间 |
🌐 Github 项目 |
📜 论文链接
📍 访问 清影 和 API平台 获取商用版视频生成模型
模型介绍
CogVideoX 是源自清影的开源视频生成模型。下表展示了本版本中我们提供的视频生成模型相关信息。
模型名称 |
CogVideoX-2B |
CogVideoX-5B |
CogVideoX-5B-I2V (本仓库) |
模型描述 |
入门级模型,兼顾兼容性。运行和二次开发成本低。 |
更大模型,视频生成质量更高,视觉效果更好。 |
CogVideoX-5B 图像转视频版本。 |
推理精度 |
FP16*(推荐), BF16, FP32, FP8*, INT8, 不支持: INT4 |
BF16 (推荐), FP16, FP32, FP8*, INT8, 不支持: INT4 |
单卡显存占用
|
SAT FP16: 18GB diffusers FP16: 最低4GB* diffusers INT8 (torchao): 最低3.6GB* |
SAT BF16: 26GB diffusers BF16: 最低5GB* diffusers INT8 (torchao): 最低4.4GB* |
多卡推理显存占用 |
FP16: 10GB* (使用diffusers)
|
BF16: 15GB* (使用diffusers)
|
推理速度 (步数=50, FP/BF16) |
单卡A100: ~90秒 单卡H100: ~45秒 |
单卡A100: ~180秒 单卡H100: ~90秒 |
微调精度 |
FP16 |
BF16 |
微调显存占用 |
47 GB (bs=1, LORA) 61 GB (bs=2, LORA) 62GB (bs=1, SFT) |
63 GB (bs=1, LORA) 80 GB (bs=2, LORA) 75GB (bs=1, SFT)
|
78 GB (bs=1, LORA) 75GB (bs=1, SFT, 16GPU)
|
提示语言 |
英语* |
最大提示长度 |
226个token |
视频时长 |
6秒 |
帧率 |
8帧/秒 |
视频分辨率 |
720 x 480,不支持其他分辨率(包括微调) |
位置编码 |
3d_sincos_pos_embed |
3d_rope_pos_embed |
3d_rope_pos_embed + learnable_pos_embed |
数据说明
- 使用diffusers库测试时,启用了diffusers库包含的所有优化。该方案未在NVIDIA A100 / H100架构以外的设备上测试实际显存占用。通常该方案可适配所有NVIDIA安培架构及以上设备。若关闭优化,显存占用将倍增,峰值显存占用约为表中值的3倍。但速度会提升约3-4倍。可选择性关闭部分优化,包括:
pipe.enable_sequential_cpu_offload()
pipe.vae.enable_slicing()
pipe.vae.enable_tiling()
- 多卡推理需关闭
enable_sequential_cpu_offload()
优化。
- 使用INT8模型会降低推理速度,这是为适配低显存GPU同时保持最小视频质量损失,但推理速度会显著下降。
- CogVideoX-2B模型以
FP16
精度训练,所有CogVideoX-5B模型以BF16
精度训练。我们推荐使用模型训练时的精度进行推理。
- 可使用PytorchAO和Optimum-quanto对文本编码器、transformer和VAE模块进行量化,降低CogVideoX的显存需求。这使得模型可在免费T4 Colab或更小显存的GPU上运行!另请注意TorchAO量化完全兼容
torch.compile
,可显著提升推理速度。FP8精度需在NVIDIA H100及以上设备使用,需源码安装torch
、torchao
、diffusers
和accelerate
Python包。推荐CUDA 12.4。
- 推理速度测试同样使用上述显存优化方案。不进行显存优化时,推理速度提升约10%。仅
diffusers
版本模型支持量化。
- 模型仅支持英文输入,其他语言可通过大模型润色翻译为英文使用。
- 模型微调显存占用测试环境为
8 * H100
,程序自动使用Zero 2
优化。若表中标注特定GPU数量,则微调需使用该数量及以上GPU。
注意事项
- 使用SAT进行推理和微调SAT版本模型。欢迎访问我们的GitHub获取更多细节。
快速开始 🤗
本模型支持使用Hugging Face diffusers库部署。您可以按照以下步骤快速体验。
我们建议您访问我们的GitHub查看提示词优化和转换方法以获得更好体验。
- 安装必要依赖
# diffusers>=0.30.3
# transformers>=0.44.2
# accelerate>=0.34.0
# imageio-ffmpeg>=0.5.1
pip install --upgrade transformers accelerate diffusers imageio-ffmpeg
- 运行代码
import torch
from diffusers import CogVideoXImageToVideoPipeline
from diffusers.utils import export_to_video, load_image
prompt = "一个小女孩正在高速骑自行车。专注、细节、真实。"
image = load_image(image="input.jpg")
pipe = CogVideoXImageToVideoPipeline.from_pretrained(
"THUDM/CogVideoX-5b-I2V",
torch_dtype=torch.bfloat16
)
pipe.enable_sequential_cpu_offload()
pipe.vae.enable_tiling()
pipe.vae.enable_slicing()
video = pipe(
prompt=prompt,
image=image,
num_videos_per_prompt=1,
num_inference_steps=50,
num_frames=49,
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
,可显著加速推理。
# 开始前需从GitHub源码安装PytorchAO和PyTorch Nightly。
# 源码和nightly安装仅需持续到下一个版本发布。
import torch
from diffusers import AutoencoderKLCogVideoX, CogVideoXTransformer3DModel, CogVideoXImageToVideoPipeline
from diffusers.utils import export_to_video, load_image
from transformers import T5EncoderModel
from torchao.quantization import quantize_, int8_weight_only
quantization = int8_weight_only
text_encoder = T5EncoderModel.from_pretrained("THUDM/CogVideoX-5b-I2V", subfolder="text_encoder", torch_dtype=torch.bfloat16)
quantize_(text_encoder, quantization())
transformer = CogVideoXTransformer3DModel.from_pretrained("THUDM/CogVideoX-5b-I2V",subfolder="transformer", torch_dtype=torch.bfloat16)
quantize_(transformer, quantization())
vae = AutoencoderKLCogVideoX.from_pretrained("THUDM/CogVideoX-5b-I2V", subfolder="vae", torch_dtype=torch.bfloat16)
quantize_(vae, quantization())
# 创建管道并运行推理
pipe = CogVideoXImageToVideoPipeline.from_pretrained(
"THUDM/CogVideoX-5b-I2V",
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 = "一个小女孩正在高速骑自行车。专注、细节、真实。"
image = load_image(image="input.jpg")
video = pipe(
prompt=prompt,
image=image,
num_videos_per_prompt=1,
num_inference_steps=50,
num_frames=49,
guidance_scale=6,
generator=torch.Generator(device="cuda").manual_seed(42),
).frames[0]
export_to_video(video, "output.mp4", fps=8)
此外,这些模型可使用PytorchAO以量化数据类型序列化存储以节省磁盘空间。您可在以下链接找到示例和基准测试:
深入探索
欢迎进入我们的GitHub,您将发现:
- 更详细的技术说明和代码。
- 优化后的提示词示例和转换方法。
- 模型推理和微调的详细代码。
- 项目更新日志和更多互动机会。
- CogVideoX工具链帮助您更好地使用模型。
- INT8模型推理代码。
模型许可
本模型遵循CogVideoX LICENSE发布。
引用
@article{yang2024cogvideox,
title={CogVideoX: 基于专家Transformer的文本到视频扩散模型},
author={杨卓毅 and 滕佳轩 and 郑文迪 and 丁铭 and 黄诗雨 and 许嘉政 and 杨远明 and 洪文义 and 张晓晗 and 冯冠宇 and others},
journal={arXiv预印本 arXiv:2408.06072},
year={2024}
}