Blog de geração de vídeos longos: Como lançamos o SVI em produção

Uma análise profunda sobre o SVI: como o integramos ao TurboWan para gerar vídeos de 15 segundos em uma única GPU em 33 segundos, com benchmarks completos de produção.

Blog de geração de vídeos longos: Como lançamos o SVI em produção

Na Parte 1, analisamos seis abordagens para a geração de vídeos longos — TTT, LoL, Self Forcing, Self Forcing++, Infinite Talk e Helios — e concluímos que o SVI é o único caminho disponível hoje sem a necessidade de retreinar um modelo de 14B. Este post é sobre como foi o processo de desenvolvimento: como funciona o loop de costura de clipes, por que a Reciclagem de Erros (Error-Recycling) é importante e os números de produção da nossa primeira implementação no TurboWan.

A escolha: SVI (Stable Video Infinity)

A filosofia central do SVI é transformar a geração de duração infinita na costura de um número finito de clipes curtos com transferência de memória cuidadosamente projetada. Isso parece modesto até perceber que resolve a maioria dos problemas de engenharia de uma só vez: sem retreinamento do modelo base (apenas um pequeno LoRA montado sobre o TurboWan), VRAM constante, compatível com destilação de velocidade existente e pesos LoRA oficiais públicos.

image8.png

O modelo mental do SVI. (a) Modelos generativos de vídeo padrão possuem uma lacuna entre treino e teste — eles treinam com entradas limpas, mas enfrentam entradas ruidosas com acúmulo de erros na inferência. (b) Modelos de restauração de imagem são robustos a erros, mas não conseguem gerar conteúdo novo. (c) O Fine-Tuning com Reciclagem de Erros do SVI une ambos — usando erros autogerados como sinais de supervisão para que o modelo aprenda ativamente a identificar e corrigir seus próprios erros de geração.

Como funciona a costura de clipes

Cada clipe tem 81 quadros (5s a 16fps). A geração é apenas um loop: condicionar o próximo clipe a uma âncora de identidade global e a uma ponte de movimento de curto prazo do clipe anterior, e então concatenar.

Clipe 1. Entradas: imagem de referência + memória de movimento vazia. Saída: um clipe de 5s. Extrair memória de movimento: o latente dos últimos 4 quadros. Clipe 2. Entradas: imagem de referência + memória de movimento do clipe 1. Saída: um clipe de 5s. Extrair memória de movimento do seu final. ... Repetir para N clipes, depois concatenar clipe 1 + clipe 2 + … + clipe N no vídeo longo.

A parte limpa é que não é necessária nenhuma modificação de atenção DiT. O contexto histórico é concatenado no nível da entrada como latentes, e um pequeno LoRA ensina o modelo a usar esse prefixo.

Latente de âncora. Imagem de referência fornecida pelo usuário, codificada pelo VAE → mantém a aparência do assunto/personagem globalmente consistente. Latente de movimento. Latente dos últimos 4 / 8 / 12 quadros do clipe anterior → diz ao modelo como o último segmento terminou. Padding (Preenchimento). Alinha o formato da entrada para que o DiT veja uma sequência concatenada organizada: âncora + movimento + padding.

Fine-Tuning com Reciclagem de Erros (Error-Recycling)

O detalhe que faz o SVI se sustentar ao longo de muitos clipes é como seu LoRA é treinado. A inferência padrão sempre começa o denoising a partir de ruído gaussiano puro — mas na costura de vídeos longos, erros de clipes anteriores contaminam o condicionamento para clipes posteriores. Se você treinar apenas com entradas de referência limpas, você terá embutido a lacuna entre treino e inferência.

Treinamento padrão: as entradas de referência de cada clipe são verdades fundamentais (ground truth) limpas → o modelo nunca vê o tipo de contexto histórico ruidoso que ele realmente enfrenta na inferência, e descontinuidades se acumulam.

Reciclagem de Erros: durante o treinamento, injete deliberadamente os erros passados do próprio modelo nas entradas de referência, para que o LoRA aprenda explicitamente a operar em um contexto histórico ruidoso. As descontinuidades visuais nas fronteiras dos clipes caem drasticamente.

image9.png

O SVI identifica dois tipos principais de erro. (a) Error-Free Flow Matching é a trajetória durante o treinamento. (b) Erro Preditivo de Clipe Único — o desvio por clipe entre o caminho de denoising e a trajetória ideal. (c) Erro Condicional entre Clipes — imagens de referência contaminadas por erros causam desvio em cascata entre os clipes. A Reciclagem de Erros injeta ambos explicitamente.

image10.png

Estrutura de treinamento SVI. (a) Injetar erros autogerados do DiT no espaço latente para quebrar a suposição de ausência de erro. (b) Calcular eficientemente erros bidirecionais via integração de um passo para frente/trás. (c) Armazenar erros em uma Memória de Replay e reamostrar dinamicamente para reutilização, formando um ciclo de supervisão de erro em malha fechada.

O SVI separa dois tipos de erro. O Erro Preditivo de Clipe Único é o desvio por clipe entre o caminho de denoising e a trajetória ideal. O Erro Condicional entre Clipes é o desvio em cascata causado quando imagens de referência contaminadas por erros fluem para o próximo clipe. A Reciclagem de Erros injeta ambos, para que o LoRA aprenda tolerância a erros explícita.

Variantes LoRA

O SVI oferece três variantes — SVI-Shot para imagem estática → clipe curto, SVI-Dance para movimento humano (também pode aceitar entrada de sequência de pose) e SVI-Film para vídeos longos de várias tomadas/transições de cena. Hiperparâmetros: 81 quadros por clipe, num_motion_frames ∈ {4, 8, 12}, rank do LoRA tipicamente entre 16–64.

Empilhando no TurboWan

Montamos o LoRA do SVI sobre o TurboWan (uma versão do Wan otimizada para velocidade pela Atlas), e mantemos nosso LoRA especializado na pilha para controle de estilo. Na inferência, vários pesos LoRA são sobrepostos ao mesmo tempo.

Base. TurboWan LoRA 1. LoRA especializado — controle de conteúdo/estilo. LoRA 2. LoRA SVI — consistência de vídeo longo. Combinado. Velocidade TurboWan + continuidade de vídeo longo SVI + estilo picante, tudo em uma única passagem de inferência.

O fluxo completo de inferência é direto: codifique a referência em um latente de âncora, concatene-o com o latente de movimento do clipe anterior e o padding, execute o denoising do TurboWan, decodifique, anexe e atualize o latente de movimento a partir do final do clipe recém-gerado. Após N iterações, concatene tudo em um vídeo.

1. Codifique a imagem de referência → latente de âncora.

2. y = concat(latente de âncora, latente de movimento, padding).

3. Execute o denoising de 5 passos do TurboWan condicionado a y e ao embedding de texto.

4. Decodifique o VAE do clipe e anexe à lista de saída.

5. Defina o latente de movimento = final (últimos num_motion_frames) do clipe recém-gerado.

6. Repita para N clipes, depois concatene todos.

Alguns números de produção

Teste padrão: uma única imagem de referência e 3 prompts, gerando ~15s de saída (3 clipes × 5s):

MétricaValor
Duração gerada15s (3 clipes)
Tempo de inferência por clipe~14s (TurboWan fp8, GPU única)
Tempo total de inferência~42s
Consistência do assuntoBoa

Um exemplo prático: Aventura do Gato

Para tornar o comportamento entre clipes concreto, executamos um caso de 15 segundos com uma referência e três tomadas. O prompt de estilo fixou um visual Pixar com iluminação quente; o personagem era um gatinho malhado laranja com olhos grandes e curiosos; as três tomadas levaram-no do parapeito da janela para a calçada, até encontrar um golden retriever, cada uma com sua própria direção de câmera.

image11.png

Clipe 1 (0–5s): o gatinho laranja estilo Pixar no parapeito da janela, com a câmera recuando lentamente de um close-up. O estilo e o personagem permanecem estáveis entre os quadros.

image12.png

Clipe 2 (5–10s) na fronteira de transição: a aparência do gatinho corresponde ao Clipe 1, então ele vira e muda a postura ao pular para baixo. O latente de movimento carregou o estado do movimento através da fronteira.

image13.png

Clipe 3 (10–15s): um golden retriever é introduzido e a cena transita para uma fronteira interno/externo. O estilo Pixar do gatinho permanece estável nos três clipes.

Métricas agregadas para a execução:

MétricaValor
Duração total15s (3 clipes × 5s)
Quadros totais240 quadros (16fps)
Tempo total de inferência33s (TurboWan, GPU única)
Taxa tempo-por-vídeo2.2 s/s
Consistência do assuntoGatinho laranja Pixar estável durante todo o vídeo
Descontinuidade na fronteiraSem cortes bruscos óbvios

Isso é um vídeo de 15 segundos em 33 segundos em uma única GPU, com consistência de assunto entre os clipes — bem dentro da espera de ≤ 60s que definimos como nossa meta. Em um conjunto de teste interno de 14 casos, 9 casos retornaram sem problemas óbvios (taxa de aprovação de 64%).

A observação honesta final é que, na geração de vídeo, velocidade, duração e qualidade são três cantos de um triângulo de ferro. Nenhuma abordagem única hoje lidera nos três ao mesmo tempo. O trabalho interessante está em escolher de qual canto você pode abrir mão, considerando o hardware de hoje e seu orçamento de treinamento. O SVI abre mão de um pouco de duração e um pouco de qualidade nas fronteiras — e, em troca, entregamos vídeo longo com fidelidade de classe Wan2.2, em uma única GPU, hoje.

Modelos recentes

Uma API para toda a IA de mídia.

Explorar Todos os Modelos

Join our Discord community

Join the Discord community for the latest model updates, prompts, and support.

Blog de geração de vídeos longos: Como lançamos o SVI em produção - Atlas Cloud Blog