Phase 08: Generative AI

Generación de vídeos

Una imagen es un tensor 2D. Un video es un 3D. La teoría es la misma; el cálculo es 10-100 veces más difícil. Sora de OpenAI (feb 2024) demostró que era posible. Para 2026 Veo 2, Kling 1.5, Runway Gen-3, Pika 2.0, y WAN 2.2 video de producción de buque desde texto a 1080p y la pila de pesos abiertos (CogVideoX, HunyuanVideo, Mochi-1, WAN 2.2) está 12 meses atrás.

Type: Build

Languages: Python

Prerequisites: Phase 8 · 07 (Latent Diffusion), Phase 7 · 09 (ViT), Phase 8 · 06 (DDPM)

Time: ~45 minutes

El problema

Un video 1080p de 10 segundos a 24fps es 240 cuadros de 1920×1080×3 píxeles. Eso es aproximadamente 1,5 GB de datos crudos por clip. La difusión en el espacio de píxeles es imposible. Necesitas:

  1. Spatiotemporal compression.Un VAE que codifica videos, no marcos, en una secuencia de parches espacio-temporales.
  2. Temporal coherence.Los fotogramas deben compartir contenido, iluminación e identidad de objetos en segundos.
  3. Compute budget.El entrenamiento por video es 10-100 veces más caro que la imagen para el mismo tamaño del modelo.
  4. Conditioning.El texto, la imagen (primero fotograma), el audio o otro video.

La arquitectura que resolvió esto es laDiffusion Transformer (DiT)La diferencia entre los datos de la difusión y los datos de la difusión es que se aplican a parches espaciotemporales, y se entrenan en grandes conjuntos de datos (prompt, captura, video).

El concepto

!Video diffusion: patchify, DiT, decode

Enlazar

El video se codifica con un VAE 3D (compresión espaciotemporal aprendida).[T_latent, H_latent, W_latent, C_latent]Se dividen en parches de tamaño .[t_p, h_p, w_p]Para modelos de estilo Sora,t_p = 1(parches por marco) o t_p = 2Un video 1080p de 10 segundos se comprime a unos 20.000 a 100.000 parches.

DiT espacio-temporal

Un transformador procesa la secuencia plana de parches. Cada parche tiene una inserción posicional 3D (tiempo + y + x).

  • Spatial attentiondentro de los parches de cada marco.
  • Temporal attentionen los marcos en la misma ubicación espacial.
  • Full 3D attentionEs 16-100 veces más caro; sólo se utiliza en baja resolución o en investigación.

Condicionamiento del texto

La atención cruzada con un codificador de texto grande (T5-XXL para Sora, CogVideoX-5B utiliza T5-XXL).

Formación

Perdida de difusión estándar (ε o predicción v) sobre latencias espaciotemporales. Datos: vídeo web + ~ 100M clips seleccionados + capciones de texto sintéticos. Computación: 10.000+ horas de GPU para incluso una pequeña investigación; escala Sora es 100.000+.

El panorama de producción de 2026

ModelDateMax durationMax resOpen weights?Notable
Sora (OpenAI)2024-0260s1080pNoFirst model to show world simulator properties at scale
Sora Turbo2024-1220s1080pNoProduction Sora at 5x faster inference
Veo 2 (Google)2024-128s4KNoHighest quality + physics in 2025
Veo 32025 Q315s4KNoNative audio and stronger camera control
Kling 1.5 / 2.1 (Kuaishou)2024-202510s1080pNoBest human motion in 2025 Q1
Runway Gen-3 Alpha2024-0610s768pNoProfessional video tools on top
Pika 2.02024-105s1080pNoStrongest character consistency
CogVideoX (THUDM)202410s720pYes (2B, 5B)First open 5B-scale video
HunyuanVideo (Tencent)2024-125s720pYes (13B)Open SOTA late 2024
Mochi-1 (Genmo)2024-105.4s480pYes (10B)Most permissively licensed
WAN 2.2 (Alibaba)2025-075s720pYesStrongest open model mid-2025

Los pesos abiertos están cerrando la brecha más rápido que en el espacio de imágenes: HunyuanVideo + WAN 2.2 LoRA ya alimentan la mayoría de los flujos de trabajo de código abierto a mediados de 2026.

Construye el mismo

code/main.pySimula la idea principal de la DiT espacial-temporal: parchear un pequeño video sintético, agregar una inserción de posición por parche y denotar toda la secuencia con una atención de estilo transformador sobre parches. No numpy; Python puro. Mostramos que la coherencia temporal emerge incluso en 1-D cuando parches de marco adyacente comparten un denotador y posiciones de inserción.

Paso 1: parchear un "vídeo" sintético 1D

pythondef make_video(T_frames=8, rng=None):
    # a "video" is a sequence of 1-D values following a smooth trajectory
    base = rng.gauss(0, 1)
    return [base + 0.3 * t + rng.gauss(0, 0.1) for t in range(T_frames)]

Paso 2: Emblazo de posición por marco

pythondef pos_embed(t, dim):
    return sinusoidal(t, dim)

Paso 3: el desinfectador ve toda la secuencia

En lugar de denotar cada marco de forma independiente, nuestra pequeña red concatenará todos los valores del marco + sus embebedidos de posición y predice el ruido para todos los cuadros conjuntamente.

Paso 4: Prueba de coherencia temporal

Después del entrenamiento, muestre un video. Mide el delta de marco a marco. Si el modelo ha aprendido la estructura temporal, los deltas permanecen más pequeños que muestrar cada marco de forma independiente.

Las trampas

  • Independent per-frame sampling = flicker.Si ejecutas la difusión de imágenes en cada fotograma por separado, las salidas de salida parpadean porque el ruido de cada fotograma es independiente.
  • Naive 3D attention = OOM.La atención 3D completa en una latencia de 10 segundos de 1080p es cientos de miles de millones de operaciones.
  • Data captioning matters more than size.La principal actualización de Sora respecto a los trabajos anteriores fue la capacitación en cintas de texto 10 veces más detalladas (clips reetiquetados GPT-4).
  • First-frame conditioning.La mayoría de los modelos de producción también aceptan una imagen como primer marco.
  • Physics drift.Los clips largos (> 10 s) acumulan sutiles inconsistencias.

Usalo

Use case2026 pick
Highest-quality text-to-video, hostedVeo 3 or Sora
Camera-controlled cinematicRunway Gen-3 with motion brushes
Character consistency across clipsPika 2.0 or Kling 2.1
Open weights, fast fine-tuneWAN 2.2 + LoRA
Image-to-videoWAN 2.2-I2V, Kling 2.1 I2V, or Runway
Audio-to-video lip syncVeo 3 (native audio) or a dedicated lip-sync model
Video editingRunway Act-Two, Kling Motion Brush, Flux-Kontext (still-frame)

El costo por segundo de vídeo a la paridad de calidad ha caído 20 veces entre 2024 y 2026.

Envío

Salva .outputs/skill-video-brief.md. Skill toma un resumen de vídeo (duración, relación de aspecto, estilo, plan de cámara, consistencia del tema, audio) y las salidas: modelo + alojamiento, plantilla rápida (lenguaje de cámara, descripción del tema, descriptores de movimiento), protocolo de semilla + reproductibilidad y una lista de verificación de calidad a nivel de marco.

Los ejercicios

  1. Easy.En elcode/main.py, comparar el delta de marco a marco para (a) muestreo independiente por marco, (b) muestreo de secuencia conjunta.
  2. Medium.Añadir una condición de primer marco: marco de pin 0 a un valor dado y muestre el resto. Medir cómo se propaga el valor fijado.
  3. Hard.Utilice los difusores HuggingFace para ejecutar CogVideoX-2B en una GPU local. La hora 20 de la inferencia se hace a 720p para un clip de 6 segundos. Profilar la atención espacio-temporal para identificar el cuello de botella.

Términos clave

TermWhat people sayWhat it actually means
Video VAE"3-D VAE"Encoder that compresses (T, H, W, C) → spatiotemporal latent.
Patches"The tokens"Fixed-size 3-D blocks of the latent; input to the DiT.
Factorized attention"Spatial + temporal"Run attention over space, then over time; skip full 3-D attention.
Image-to-video (I2V)"Animate this photo"Model takes an image + text, outputs a video that starts from it.
Keyframe conditioning"Anchor frames"Pin specific frames to control the video's arc.
Motion brush"Directional hint"UI input where the user paints motion vectors onto the image.
Re-captioning"Dense captions"Using an LLM to re-label training clips with detailed prompts.
Flicker"Temporal artifact"Frame-to-frame inconsistency; fixed with coupled denoising.

Nota de producción: los video latente son un problema de ancho de banda de memoria

Un clip 1080p de 10 segundos a 24 fps es de 240 cuadros × 1920 × 1080 × 3 ≈ 1,5 GB de píxeles crudos.2 × spatial × 2 × temporalEl tiempo de transcursión es de aproximadamente 100 MB por solicitud. ejecutar esto a través de un DiT espacio-temporal durante 30 pasos en el lote 1 y se está moviendo ~3 GB/paso a través de HBM ancho de banda de memoria, no FLOPs, es el cuello de botella.

Tres botones de producción, todos directamente de la producción-inferencia literatura capítulo de inferencia:

  • TP across the DiT.Los modelos de texto a video son rutinariamente ≥10B parámetros. TP = 4 en 4 H100s es estándar; PP = 2 × TP = 2 para los modelos de clase 405B. La latencia por paso disminuye aproximadamente linealmente con TP hasta la pared de reducción total.
  • Frame batching = continuous batching.En el momento de la generación, el video es conceptualmente un lote de cuadros unidos por la atención.t+1mientras que el marco t-1se devuelve, si la arquitectura del modelo permite la generación de ventanas deslizantes.
  • Clip-level prefill cache.Para la imagen a video, el condicionamiento de primer marco es análogo al preenrollo de LLM: computa una vez, reutiliza a través de los pases del decodificador temporal.

Leer más

This free lesson is part of the AI Engineering from Scratch curriculum. Read the full explanation, run the lesson code, and verify the result in the interactive reader or from the repository source.

Browse the complete course catalog or open this lesson on GitHub.