zai-org/CogVideoX-5b
zai-org
Texto a video
CogVideoX-5B es un modelo abierto de generación de video a partir de texto derivado de QingYing. Es la variante de mayor capacidad de la familia CogVideoX frente a CogVideoX-2B, con mejor calidad visual y efectos más sólidos, orientada a clips de 6 segundos en resolución 720 x 480 a 8 fps. Está entrenado en BF16 y se recomienda usar prompts en inglés, con un límite de 226 tokens.
Como usar
Instalación básica con Diffusers:
pip install -U diffusers transformers accelerate
Ejemplo rápido:
import torch
from diffusers import DiffusionPipeline
# switch to "mps" for apple devices
pipe = DiffusionPipeline.from_pretrained("zai-org/CogVideoX-5b", dtype=torch.bfloat16, device_map="cuda")
prompt = "Astronaut in a jungle, cold color palette, muted colors, detailed, 8k"
image = pipe(prompt).images[0]
Uso recomendado con CogVideoXPipeline:
pip install --upgrade transformers accelerate diffusers imageio-ffmpeg
import torch
from diffusers import CogVideoXPipeline
from diffusers.utils import export_to_video
prompt = "A panda, dressed in a small, red jacket and a tiny hat, sits on a wooden stool in a serene bamboo forest. The panda's fluffy paws strum a miniature acoustic guitar, producing soft, melodic tunes. Nearby, a few other pandas gather, watching curiously and some clapping in rhythm. Sunlight filters through the tall bamboo, casting a gentle glow on the scene. The panda's face is expressive, showing concentration and joy as it plays. The background includes a small, flowing stream and vibrant green foliage, enhancing the peaceful and magical atmosphere of this unique musical performance."
pipe = CogVideoXPipeline.from_pretrained(
"THUDM/CogVideoX-5b",
torch_dtype=torch.bfloat16
)
pipe.enable_model_cpu_offload()
pipe.vae.enable_tiling()
video = pipe(
prompt=prompt,
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)
Ejemplo de inferencia cuantizada con TorchAO:
import torch
from diffusers import AutoencoderKLCogVideoX, CogVideoXTransformer3DModel, CogVideoXPipeline
from diffusers.utils import export_to_video
from transformers import T5EncoderModel
from torchao.quantization import quantize_, int8_weight_only, int8_dynamic_activation_int8_weight
quantization = int8_weight_only
text_encoder = T5EncoderModel.from_pretrained("THUDM/CogVideoX-5b", subfolder="text_encoder", torch_dtype=torch.bfloat16)
quantize_(text_encoder, quantization())
transformer = CogVideoXTransformer3DModel.from_pretrained("THUDM/CogVideoX-5b", subfolder="transformer", torch_dtype=torch.bfloat16)
quantize_(transformer, quantization())
vae = AutoencoderKLCogVideoX.from_pretrained("THUDM/CogVideoX-5b", subfolder="vae", torch_dtype=torch.bfloat16)
quantize_(vae, quantization())
pipe = CogVideoXPipeline.from_pretrained(
"THUDM/CogVideoX-5b",
text_encoder=text_encoder,
transformer=transformer,
vae=vae,
torch_dtype=torch.bfloat16,
)
pipe.enable_model_cpu_offload()
pipe.vae.enable_tiling()
prompt = "A panda, dressed in a small, red jacket and a tiny hat, sits on a wooden stool in a serene bamboo forest. The panda's fluffy paws strum a miniature acoustic guitar, producing soft, melodic tunes. Nearby, a few other pandas gather, watching curiously and some clapping in rhythm. Sunlight filters through the tall bamboo, casting a gentle glow on the scene. The panda's face is expressive, showing concentration and joy as it plays. The background includes a small, flowing stream and vibrant green foliage, enhancing the peaceful and magical atmosphere of this unique musical performance."
video = pipe(
prompt=prompt,
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)
Funcionalidades
- Generación texto-a-video con Diffusers y pesos Safetensors.
- Modelo de 5B parámetros con calidad superior a la variante CogVideoX-2B.
- Salida de video fija de 6 segundos, 49 fotogramas, 8 fps y resolución 720 x 480.
- Precisión recomendada BF16; también admite FP16, FP32, FP8 e INT8, pero no INT4.
- Inferencia optimizada con offload a CPU, tiling/slicing de VAE y soporte multi-GPU con Diffusers.
- Cuantización con TorchAO u Optimum-quanto para reducir VRAM en encoder de texto, transformer y VAE.
- Requisitos aproximados: desde 5 GB de VRAM en Diffusers BF16 optimizado o desde 4.4 GB en INT8; SAT BF16 requiere alrededor de 26 GB.
- Tiempo de inferencia de referencia para 50 pasos: unos 180 segundos en A100 o 90 segundos en H100.
Casos de uso
- Crear clips cortos a partir de descripciones textuales detalladas.
- Prototipar escenas cinematográficas, animaciones conceptuales y contenido visual narrativo.
- Generar videos de demostración para investigación en modelos de difusión texto-a-video.
- Experimentar con inferencia optimizada o cuantizada en GPUs con VRAM limitada.
- Ajuste fino o desarrollo secundario sobre la familia CogVideoX usando SAT o Diffusers.