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.