Phase 08: Generative AI

Geração de vídeos

Uma imagem é um tensor 2D. Um vídeo é um 3D. A teoria é a mesma; a computação é 10-100 vezes mais difícil. Sora da OpenAI (Feb 2024) provou que era possível. Em 2026 Veo 2, Kling 1.5, Runway Gen-3, Pika 2.0, e WAN 2.2 vídeo de produção de navio a partir de texto em 1080p e o open-weights stack (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

O problema

Um vídeo 1080p de 10 segundos a 24 fps é de 240 quadros de 1920×1080×3 pixels. Isso é cerca de 1,5 GB de dados brutos por clip. A difusão no espaço de pixels é impossível. Você precisa:

  1. Spatiotemporal compression.Um VAE que codifica vídeos, não quadros, em uma sequência de parches espaciais-temporais.
  2. Temporal coherence.Os quadros precisam compartilhar conteúdo, iluminação e identidade de objeto em segundos.
  3. Compute budget.O treinamento por vídeo é 10-100 vezes mais caro do que a imagem para o mesmo tamanho do modelo.
  4. Conditioning.Texto, imagem (primeira tela), áudio ou outro vídeo.

A arquitetura que resolveu isto é aDiffusion Transformer (DiT)A primeira é a de um grupo de dados de um grupo de dados, que é aplicado a parches espaciotemporais, treinados em grandes conjuntos de dados (impressão, legenda, vídeo).

O conceito

!Video diffusion: patchify, DiT, decode

Paragem

O vídeo é codificado com um VAE 3D (compressão espaciotemporal aprendida).[T_latent, H_latent, W_latent, C_latent]Dividido em pedaços de tamanho .[t_p, h_p, w_p]Para modelos de estilo Sora,t_p = 1(parches por quadro) ou t_p = 2Um vídeo 1080p de 10 segundos comprime para cerca de 20.000 a 100.000 parches.

Dieta de espaço-tempo

Um transformador processa a sequência plana de patches. Cada patch tem uma inserção posicional 3D (tempo + y + x).

  • Spatial attentiondentro dos parches de cada quadro.
  • Temporal attentionatravés de quadros no mesmo local espacial.
  • Full 3D attentionÉ 16-100 vezes mais caro; só é utilizado em baixa resolução ou em investigação.

Condicionamento de texto

Atensão cruzada com um grande codificador de texto (T5-XXL para Sora, CogVideoX-5B usa T5-XXL).

Formação

Perda de difusão padrão (ε ou v previsão) sobre latentes espaciotemporais. Dados: vídeo web + ~ 100M clips curados + legendas de texto sintéticas. Computação: 10.000+ horas de GPU para mesmo uma pequena pesquisa; escala Sora é 100.000+.

O cenário de produção 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

Os pesos abertos estão a fechar a lacuna mais rapidamente do que no espaço de imagem: HunyuanVideo + WAN 2.2 LoRAs já alimentam a maioria dos fluxos de trabalho de código aberto até meados de 2026.

Construí-lo

code/main.pySimula a ideia principal de DiT espacial-temporal: parchear um pequeno vídeo sintético, adicionar um inserimento de posição por parche e denotar toda a sequência com uma atenção de estilo transformador sobre os parches.

Passo 1: parche um "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)]

Passo 2: inserção de posição por quadro

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

Passo 3: Denoiser vê toda a sequência

Em vez de denotar cada quadro de forma independente, nossa pequena rede concatenar todos os valores do quadro + suas inserções de posição e prever o ruído para todos os quadros em conjunto.

Passo 4: Teste de coerência temporal

Após o treino, mostre um vídeo. Messe o delta frame-to-frame. Se o modelo tiver aprendido a estrutura temporal, os deltas permanecem menores do que a amostragem de cada quadro de forma independente.

Encurralagens

  • Independent per-frame sampling = flicker.Se executar a difusão de imagem em cada quadro separadamente, a saída de flash porque o ruído de cada quadro é independente.
  • Naive 3D attention = OOM.A atenção 3D completa em uma 1080p latente de 10 segundos é centenas de bilhões de operações. Factorizem em espacial + temporal.
  • Data captioning matters more than size.A principal atualização de Sora em relação ao trabalho anterior foi a formação em legendas mais detalhadas (clipes reetiquetados GPT-4).
  • First-frame conditioning.A maioria dos modelos de produção também aceita uma imagem como a primeira tela.
  • Physics drift.Os clips longos (> 10s) acumulam subtis inconsistências.

Usá-lo

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)

O custo por segundo de vídeo na paridade de qualidade caiu 20 vezes entre 2024 e 2026.

Envia-o

Salvaroutputs/skill-video-brief.md. A competência assume um vídeo breve (durada, relação de aspecto, estilo, plano da câmera, consistência do assunto, áudio) e as saídas: modelo + hospedagem, esquadrão de execução (linguagem da câmera, descrição do assunto, descrição de movimento), protocolo de semente + reprodução e uma lista de verificação de qualidade a nível de quadro.

Exercícios

  1. Easy.- Não .code/main.py, comparar delta de quadro a quadro para a) amostragem independente por quadro, b) amostragem conjunta de sequência.
  2. Medium.Adicione uma condição de primeiro quadro: quadro de pin 0 a um determinado valor e amostre o resto.
  3. Hard.Use os difusores HuggingFace para executar o CogVideoX-2B em uma GPU local. Tempo 20 de inferência passa a 720p para um clipe de 6 segundos. Profila a atenção espaciotemporal para identificar o gargalo de engarrafamento.

Termos-chave

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 produção: os latentes de vídeo são um problema de largura de banda de memória

Um clip de 10 segundos em 1080p a 24 fps é de 240 quadros × 1920 × 1080 × 3 ≈ 1,5 GB de pixels brutos.2 × spatial × 2 × temporalO que é o problema é que o tempo de transmissão é de aproximadamente 100 MB por pedido.

Três botões de produção, todos diretamente do capítulo de inferência da literatura de produção-inferência:

  • TP across the DiT.Os modelos de texto a vídeo são rotineiramente ≥10B parâmetros. TP = 4 em 4 H100s é padrão; PP = 2 × TP = 2 para modelos da classe 405B. A latência por passo cai aproximadamente linearmente com TP até a parede totalmente reduzida.
  • Frame batching = continuous batching.No momento da geração, o vídeo é conceitualmente um lote de quadros ligados pela atenção.t+1enquanto enquadramt-1está a ser devolvido, se a arquitetura do modelo permitir a geração de janelas deslizantes.
  • Clip-level prefill cache.Para imagem-a-vídeo, o condicionamento de primeira tela é análogo ao preenchimento de um LLM: compute-o uma vez, reutilize-o através dos passes do decodificador temporal.

Mais leitura

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.