Inteligência artificial

StreamDiffusion: Uma Solução de Nível de Pipeline para Geração Interativa em Tempo Real

mm
StreamDiffusion: A Pipeline-level Solution for Real-time Interactive Generation

Devido ao seu vasto potencial e oportunidades de comercialização, particularmente em jogos, transmissão e streaming de vídeo, o Metaverso é atualmente uma das tecnologias de crescimento mais rápido. As aplicações modernas do Metaverso utilizam estruturas de IA, incluindo visão computacional e modelos de difusão, para melhorar seu realismo. Um desafio significativo para as aplicações do Metaverso é integrar várias pipelines de difusão que forneçam baixa latência e alta taxa de transferência, garantindo interação eficaz entre humanos e essas aplicações.

As estruturas de IA baseadas em difusão atuais excelentem na criação de imagens a partir de prompts textuais ou de imagem, mas falham em interações em tempo real. Essa limitação é particularmente evidente em tarefas que exigem entrada contínua e alta taxa de transferência, como gráficos de jogos de vídeo, aplicações do Metaverso, transmissão e streaming de vídeo ao vivo.

Neste artigo, discutiremos o StreamDiffusion, uma pipeline de difusão em tempo real desenvolvida para gerar imagens interativas e realistas, abordando as limitações atuais das estruturas baseadas em difusão em tarefas que envolvem entrada contínua. O StreamDiffusion é uma abordagem inovadora que transforma o ruído sequencial da imagem original em ruído em lote, visando permitir alta taxa de transferência e fluxos fluidos. Essa abordagem se afasta do método tradicional de espera e interação utilizado pelas estruturas baseadas em difusão existentes. Nas seções seguintes, mergulharemos nos detalhes da estrutura StreamDiffusion, explorando seu funcionamento, arquitetura e resultados comparativos contra as estruturas atuais de ponta. Vamos começar.

StreamDiffusion: Uma Introdução à Geração Interativa em Tempo Real

O Metaverso são aplicações intensivas em desempenho, pois processam uma grande quantidade de dados, incluindo textos, animações, vídeos e imagens em tempo real, para fornecer aos seus usuários interfaces interativas e experiências de marca. As aplicações modernas do Metaverso dependem de estruturas baseadas em IA, incluindo visão computacional, processamento de imagem e modelos de difusão, para atingir baixa latência e alta taxa de transferência, garantindo uma experiência de usuário sem interrupções. Atualmente, a maioria das aplicações do Metaverso depende da redução da ocorrência de iterações de desruído para garantir alta taxa de transferência e melhorar as capacidades interativas da aplicação em tempo real. Essas estruturas optam por uma estratégia comum que envolve redefinir o processo de difusão com ODEs (Equações Diferenciais Ordinárias) ou reduzir modelos de difusão multi-etapa para algumas etapas ou até mesmo uma etapa. Embora a abordagem forneça resultados satisfatórios, ela tem certas limitações, incluindo flexibilidade limitada e altos custos computacionais.

Por outro lado, o StreamDiffusion é uma solução de nível de pipeline que começa de uma direção ortogonal e melhora as capacidades da estrutura para gerar imagens interativas em tempo real, garantindo alta taxa de transferência. O StreamDiffusion usa uma estratégia simples, na qual, em vez de desruídar a entrada original, a estrutura em lote a etapa de desruído. A estratégia inspira-se no processamento assíncrono, pois a estrutura não precisa esperar que a primeira etapa de desruído seja concluída antes de prosseguir para a segunda etapa, como demonstrado na imagem a seguir. Para lidar com a questão da frequência de processamento do U-Net e da frequência de entrada sincronicamente, a estrutura StreamDiffusion implementa uma estratégia de fila para armazenar a entrada e as saídas.

Embora a pipeline StreamDiffusion busque inspiração no processamento assíncrono, ela é única em seu próprio modo, pois implementa paralelismo de GPU que permite à estrutura utilizar um único componente U-Net para desruídar uma característica latente de ruído em lote. Além disso, as pipelines baseadas em difusão existentes enfatizam os prompts dados nas imagens geradas, incorporando orientação livre de classificador, como resultado do qual as pipelines atuais são equipadas com sobrecarga computacional redundante e excessiva. Para garantir que a pipeline StreamDiffusion não encontre os mesmos problemas, ela implementa uma abordagem inovadora de Orientação Livre de Classificador Residual (RCFG) que usa um ruído residual virtual para aproximar as condições negativas, permitindo que a estrutura calcule as condições de ruído negativo nas etapas iniciais do processo. Além disso, a pipeline StreamDiffusion também reduz os requisitos computacionais de uma pipeline de difusão tradicional, implementando uma estratégia de filtragem de similaridade estocástica que determina se a pipeline deve processar as imagens de entrada, calculando as similaridades entre entradas contínuas.

A estrutura StreamDiffusion é construída com base nos conhecimentos de modelos de difusão e modelos de difusão acelerados.

Os modelos de difusão são conhecidos por suas capacidades excepcionais de geração de imagens e pelo controle que oferecem. Devido às suas capacidades, os modelos de difusão encontraram aplicações em edição de imagem, geração de imagem a partir de texto e geração de vídeo. Além disso, o desenvolvimento de modelos consistentes demonstrou o potencial de melhorar a eficiência de processamento de amostras sem comprometer a qualidade das imagens geradas pelo modelo, o que abriu novas portas para expandir a aplicabilidade e eficiência dos modelos de difusão, reduzindo o número de etapas de amostragem. Embora extremamente capazes, os modelos de difusão tendem a ter uma limitação importante: geração de imagem lenta. Para lidar com essa limitação, os desenvolvedores introduziram modelos de difusão acelerados, estruturas baseadas em difusão que não exigem etapas de treinamento adicionais ou implementam estratégias de previsão-correção e solvers de tamanho de passo adaptável para aumentar as velocidades de saída.

O fator distinguível entre StreamDiffusion e as estruturas baseadas em difusão tradicionais é que, enquanto as últimas se concentram principalmente na latência baixa de modelos individuais, a primeira introduz uma abordagem de nível de pipeline projetada para alcançar taxas de transferência altas, permitindo difusão interativa eficiente.

StreamDiffusion: Funcionamento e Arquitetura

A pipeline StreamDiffusion é uma pipeline de difusão em tempo real desenvolvida para gerar imagens interativas e realistas, e emprega 6 componentes principais, nomeadamente: RCFG ou Orientação Livre de Classificador Residual, Estratégia de Lote de Stream, Filtro de Similaridade Estocástica, fila de entrada-saída, ferramentas de aceleração de modelo com autoencoder e procedimento de pré-cálculo. Vamos falar sobre esses componentes em detalhe.

Estratégia de Lote de Stream

Tradicionalmente, as etapas de desruído em um modelo de difusão são realizadas sequencialmente, resultando em um aumento significativo do tempo de processamento do U-Net para o número de etapas de processamento. No entanto, é essencial aumentar o número de etapas de processamento para gerar imagens de alta fidelidade, e a estrutura StreamDiffusion introduz a Estratégia de Lote de Stream para superar a resolução de alta latência em estruturas de difusão interativa.

Na Estratégia de Lote de Stream, as operações de desruído sequenciais são reestruturadas em processos em lote, com cada lote correspondendo a um número determinado de etapas de desruído, e o número dessas etapas de desruído é determinado pelo tamanho de cada lote. Graças à abordagem, cada elemento no lote pode prosseguir um passo adiante usando o U-Net único em uma passagem na sequência de desruído. Implementando a estratégia de lote de stream iterativamente, as imagens de entrada codificadas no tempo “t” podem ser transformadas em seus respectivos resultados de imagem para imagem no tempo “t+n”, tornando assim o processo de desruído mais eficiente.

Orientação Livre de Classificador Residual

A Orientação Livre de Classificador (CFG) é um algoritmo de IA que realiza uma série de cálculos de vetor entre o termo de condicionamento original e um termo de condicionamento negativo ou não condicionado para melhorar o efeito do condicionamento original. O algoritmo fortalece o efeito do prompt, embora para calcular o ruído residual negativo, seja necessário emparelhar variáveis latentes de entrada individuais com embeddings de condicionamento negativo, seguido de passar os embeddings pelo U-Net no tempo de referência.

Para lidar com o problema apresentado pelo algoritmo de Orientação Livre de Classificador, a estrutura StreamDiffusion introduz o algoritmo de Orientação Livre de Classificador Residual com o objetivo de reduzir os custos computacionais para interferência adicional do U-Net para embeddings de condicionamento negativo. Primeiramente, a entrada latente codificada é transferida para a distribuição de ruído usando valores determinados pelo agendador de ruído. Uma vez que o modelo de consistência latente tenha sido implementado, o algoritmo pode prever a distribuição de dados e usar o ruído residual da CFG para gerar a distribuição de ruído da próxima etapa.

Fila de Entrada-Saída

A principal questão com as estruturas de geração de imagem de alta velocidade é seus módulos de rede neural, incluindo os componentes U-Net e VAE. Para maximizar a eficiência e a velocidade de saída geral, as estruturas de geração de imagem movem processos como pré e pós-processamento de imagens que não exigem manipulação adicional pelos módulos de rede neural fora da pipeline, após o que eles são processados em paralelo. Além disso, em termos de manipulação da imagem de entrada, operações específicas, incluindo conversão de formato de tensor, redimensionamento de imagens de entrada e normalização, são executadas pela pipeline meticulosamente.

Para lidar com a disparidade nas frequências de processamento entre a taxa de transferência do modelo e a frequência de entrada humana, a pipeline integra um sistema de fila de entrada-saída que permite uma paralelização eficiente, como demonstrado na imagem a seguir.

Os tensores de entrada processados são primeiro enfileirados metodicamente para modelos de difusão, e durante cada quadro, o modelo recupera o tensor mais recente da fila de entrada e o encaminha para o codificador VAE, iniciando assim o processo de geração de imagem. Ao mesmo tempo, o tensor de saída do decodificador VAE é alimentado na fila de saída. Finalmente, os dados de imagem processados são transmitidos para o cliente de renderização.

Filtro de Similaridade Estocástica

Em cenários onde as imagens permanecem inalteradas ou mostram mudanças mínimas sem um ambiente estático ou sem interação ativa do usuário, imagens de entrada semelhantes são alimentadas repetidamente nos componentes U-Net e VAE. A alimentação repetida leva à geração de imagens quase idênticas e ao consumo adicional de recursos de GPU. Além disso, em cenários que envolvem entradas contínuas, imagens de entrada não modificadas podem surgir ocasionalmente. Para superar esse problema e evitar a utilização desnecessária de recursos, a pipeline StreamDiffusion emprega um componente de Filtro de Similaridade Estocástica em sua pipeline. O Filtro de Similaridade Estocástica calcula primeiro a similaridade de cosine entre a imagem de referência e a imagem de entrada e usa a pontuação de similaridade de cosine para calcular a probabilidade de pular os processos subsequentes de U-Net e VAE.

Com base na pontuação de probabilidade, a pipeline decide se os processos subsequentes, como codificação VAE, decodificação VAE e U-Net, devem ser pulados ou não. Se esses processos não forem pulados, a pipeline salva a imagem de entrada naquele momento e, simultaneamente, atualiza a imagem de referência para ser usada no futuro. Esse mecanismo de pulo baseado em probabilidade permite que a pipeline StreamDiffusion opere totalmente em cenários dinâmicos com baixa similaridade entre quadros, enquanto em cenários estáticos, a pipeline opera com maior similaridade entre quadros. A abordagem ajuda a conservar os recursos computacionais e também garante a utilização óptima de GPU com base na similaridade das imagens de entrada.

Pré-Cálculo

A arquitetura U-Net precisa de embeddings de condicionamento, bem como variáveis latentes de entrada. Tradicionalmente, os embeddings de condicionamento são derivados de embeddings de prompt que permanecem constantes em todos os quadros. Para otimizar a derivação de embeddings de prompt, a pipeline StreamDiffusion pré-calcula esses embeddings de prompt e os armazena em uma cache, que são então chamados no modo de streaming ou interativo. Dentro da estrutura U-Net, o par chave-valor é calculado com base no embedding de prompt pré-calculado de cada quadro, e com modificações leves na U-Net, esses pares chave-valor podem ser reutilizados.

Aceleração de Modelo e Autoencoder Pequeno

A pipeline StreamDiffusion emprega o TensorRT, uma ferramenta de otimização da Nvidia para interfaces de aprendizado profundo, para construir os motores VAE e U-Net, para acelerar a velocidade de inferência. Para alcançar isso, o componente TensorRT realiza numerousas otimizações em redes neurais projetadas para aumentar a eficiência e melhorar a taxa de transferência para estruturas e aplicações de aprendizado profundo.

Para otimizar a velocidade, a pipeline StreamDiffusion configura a estrutura para usar dimensões de entrada fixas e tamanhos de lote estáticos para garantir alocação de memória óptima e gráficos computacionais para um tamanho de entrada específico, visando alcançar tempos de processamento mais rápidos.

A figura acima fornece uma visão geral da pipeline de inferência. A pipeline de difusão central abriga os componentes U-Net e VAE. A pipeline incorpora um lote de desruído, cache de ruído amostrado, cache de embedding de prompt pré-calculado e cache de valores do agendador para melhorar a velocidade e a capacidade da pipeline de gerar imagens em tempo real. O Filtro de Similaridade Estocástica ou SSF é implantado para otimizar o uso de GPU e também para controlar dinamicamente a passagem do modelo de difusão.

StreamDiffusion: Experimentos e Resultados

Para avaliar suas capacidades, a pipeline StreamDiffusion é implementada nas estruturas LCM e SD-turbo. O TensorRT da Nvidia é usado como acelerador de modelo, e para permitir eficiência leve, a pipeline emprega o componente TAESD. Vamos agora dar uma olhada em como a pipeline StreamDiffusion se sai quando comparada às estruturas atuais de ponta.

Avaliação Quantitativa

A figura a seguir demonstra a comparação de eficiência entre o U-Net sequencial original e os componentes de lote de desruído na pipeline, e como pode ser visto, a implementação da abordagem de lote de desruído ajuda a reduzir o tempo de processamento significativamente, quase 50%, quando comparado aos loops U-Net tradicionais em etapas de desruído sequenciais.

Além disso, o tempo de inferência médio em diferentes etapas de desruído também testemunha um aumento substancial com diferentes fatores de aceleração quando comparado às pipelines atuais de ponta, e os resultados são demonstrados na imagem a seguir.

Em seguida, a pipeline StreamDiffusion com o componente RCFG demonstra um tempo de inferência menor quando comparada às pipelines que incluem o componente CFG tradicional.

Além disso, o impacto de usar o componente RCFG é evidente nas imagens a seguir quando comparado ao uso do componente CFG.

Como pode ser visto, o uso do CFG intensifica o impacto do prompt textual na geração de imagem, e a imagem se assemelha muito mais ao prompt de entrada quando comparada às imagens geradas pela pipeline sem o uso do componente CFG. Os resultados melhoram ainda mais com o uso do componente RCFG, pois a influência dos prompts nas imagens geradas é bastante significativa quando comparada ao componente CFG original.

Pensamentos Finais

Neste artigo, falamos sobre o StreamDiffusion, uma pipeline de difusão em tempo real desenvolvida para gerar imagens interativas e realistas, abordando as limitações atuais das estruturas baseadas em difusão em tarefas que envolvem entrada contínua. O StreamDiffusion é uma abordagem simples e inovadora que visa transformar o ruído sequencial da imagem original em ruído em lote. O StreamDiffusion visa permitir alta taxa de transferência e fluxos fluidos, eliminando a abordagem tradicional de espera e interação adotada pelas estruturas baseadas em difusão atuais. Os ganhos de eficiência potenciais destacam o potencial da pipeline StreamDiffusion para aplicações comerciais que oferecem computação de alto desempenho e soluções atraentes para IA gerativa.

Um engenheiro por profissão, um escritor por coração. Kunal é um escritor técnico com um amor e compreensão profundos de AI e ML, dedicado a simplificar conceitos complexos nestes campos por meio de sua documentação envolvente e informativa.