Uso de empacotamento de contexto de frames de entrada em modelos de Next-Frame Prediction para geração de vídeo
(lllyasviel.github.io)- FramePack é uma abordagem baseada em Next-Frame Prediction para usar um modelo de difusão de vídeo de 13B na geração de vídeos longos mesmo com 6 GB de memória de GPU de notebook
- Em vez de tratar todos os frames de entrada com o mesmo comprimento, ele usa um patchifying kernel diferente para cada frame e aloca mais recursos de GPU para os frames importantes mais próximos do alvo de predição
- No HunyuanVideo, um frame 480p pode ir de cerca de 1536 tokens com
(1, 2, 2)até 192 tokens com(2, 4, 4), e a complexidade de computação em streaming é O(1) - O FramePack Scheduling ajusta a importância dos frames e a taxa de compressão, e no image-to-video também permite um agendamento que trata os frames iniciais como igualmente importantes
- Para reduzir o drifting causado por erros acumulados na geração de vídeos longos, ele usa amostragem bidirecional que quebra a causalidade; o inverted anti-drifting sampling é adequado para image-to-video
Empacotamento de contexto de frames de entrada no FramePack
- FramePack é uma abordagem em que modelos de Next-Frame ou Next-Frame-Section Prediction recebem vários frames de entrada e geram por difusão novos frames
- O desempenho-alvo e as condições de uso são os seguintes
- gerar milhares de frames a 30 fps com um modelo de 13B em 6 GB de memória de GPU de notebook
- fazer fine-tuning de um modelo de vídeo 13B com batch size 64 em um único nó 8xA100/H100
- geração a 2,5 s/frame antes de otimizações em uma RTX 4090 pessoal, e 1,5 s/frame usando teacache
- sem timestep distillation
- O ponto central é que, em vez de simplesmente concatenar as imagens dos frames de entrada, ele organiza comprimentos de contexto diferentes por frame em um layout lógico de memória de GPU
- O comprimento de contexto de cada frame é controlado por patchifying kernels diferentes
- no HunyuanVideo, um frame 480p tem cerca de 1536 tokens ao usar o patchifying kernel
(1, 2, 2) - ao mudar para o patchifying kernel
(2, 4, 4), isso cai para 192 tokens por frame
- no HunyuanVideo, um frame 480p tem cerca de 1536 tokens ao usar o patchifying kernel
- Frames mais importantes, como os que estão mais próximos do alvo da próxima predição de frame, recebem um contexto mais longo
- A complexidade de computação em streaming é O(1), não O(nlogn) nem O(n)
Agendamento e prevenção de drift
- O FramePack Scheduling suporta casos em que a importância dos frames não segue um padrão simples, em que a taxa de compressão muda, ou em que frames definidos pelo usuário devem ser tratados como mais importantes
- Em image-to-video, como o primeiro frame é importante, pode-se usar um agendamento que torna os frames iniciais igualmente importantes
- Todos os agendamentos são O(1), e a avaliação de vários agendamentos está incluída no Paper
- Em modelos de Next-Frame Prediction, drifting, em que a qualidade do vídeo cai conforme ele fica mais longo, é um problema comum
- ao repetir como entrada o último frame gerado para criar vídeos longos, o resultado se deteriora rapidamente após 5 a 6 iterações, e pode sofrer forte degradação após cerca de 10 iterações
- esse problema também é chamado de error accumulation ou exposure bias
- Experimentos com métodos existentes, como history noise augmentation, special cfg guidance e rolling diffusion timesteps, também estão incluídos no artigo
- Para lidar com o drifting de forma fundamental, é preciso quebrar a causalidade e tornar a amostragem bidirecional
- apenas a vanilla sampling é causal
- anti-drifting sampling e inverted anti-drifting sampling são abordagens bidirecionais
- o inverted anti-drifting sampling trata o primeiro frame como alvo aproximado em toda a inferência, sendo adequado para image-to-video
Condições do demo e materiais de referência
- Os resultados de demonstração foram calculados com um notebook RTX 3060 6GB e a variante 13B HY
- image-to-5-seconds: 30fps, 150 frames
- image-to-60-seconds: 30fps, 1800 frames
- para se adequar ao repositório GitHub, os vídeos foram comprimidos em h264crf18
- Como materiais relacionados, são fornecidos Paper, Code e FramePack-P1 Preview
1 comentários
Opiniões no Hacker News
Esse cara é um gênio. Talvez alguns não saibam, mas o ControlNet também foi criado por ele.
É significativo por ser o primeiro modelo de geração de vídeo realmente utilizável que roda em hardware de consumidor, e espero que em breve também saia suporte a poses no ControlNet.
Grandes empresas devem ter feito propostas enormes; ele é realmente muito talentoso.
É engraçado como ele parece querer fazer todo mundo dançar. Até uma pessoa sentada para uma entrevista começa a dançar sentada.
Em imagens estáticas, sempre acabam procurando olhos; em vídeos, sempre acabam procurando dança.
Os exemplos são bem impressionantes, mas os recursos usados para criá-los são, na prática, bem modestos. Parece que a inferência também pode rodar em hardware de consumidor da geração anterior.
Um dia eu gostaria de ver números de throughput de inferência em uma 5090.
Será que isso também poderia ser feito na direção espacial? Por exemplo, em vez de gerar uma imagem de uma vez só, será que daria para gerá-la de cima para baixo?
Será que isso poderia ser usado para interpolação de vídeo, em vez de extrapolação?
Impressionante. Com mais recursos, como RAM, poderia ficar mais rápido? Também fico curioso se seria possível extrair mais velocidade em uma H100 ou H200.
Parece que, na prática, a única ação que ele consegue fazer é dançar.