Modelos e plataformas de IA
EfficientViT: Transformador de Visão Eficiente em Memória para Visão Computacional de Alta Resolução

Devido à sua alta capacidade de modelo, os modelos de Transformador de Visão têm desfrutado de um grande sucesso nos tempos recentes. Apesar de seu desempenho, os modelos de transformador de visão têm um grande defeito: sua notável capacidade de computação vem com altos custos de computação, e é o motivo pelo qual os transformadores de visão não são a primeira escolha para aplicações em tempo real. Para resolver esse problema, um grupo de desenvolvedores lançou o EfficientViT, uma família de transformadores de visão de alta velocidade.
Quando trabalhando no EfficientViT, os desenvolvedores observaram que a velocidade dos atuais modelos de transformador é frequentemente limitada por operações de memória ineficientes, especialmente funções elementares e reorganização de tensores na rede de auto-atendimento de múltiplas cabeças (MHSA). Para resolver essas operações de memória ineficientes, os desenvolvedores do EfficientViT trabalharam em um novo bloco de construção usando um layout de sanduíche, ou seja, o modelo EfficientViT usa uma única rede de auto-atendimento de múltiplas cabeças limitada por memória entre camadas de rede de alimentação direta eficientes (FFN) que ajuda a melhorar a eficiência de memória e também a melhorar a comunicação de canal geral. Além disso, o modelo também descobre que as mapas de atenção frequentemente têm altas semelhanças entre as cabeças, o que leva à redundância computacional. Para resolver o problema de redundância, o modelo EfficientViT apresenta um módulo de atenção em cascata que alimenta as cabeças de atenção com diferentes divisões do recurso completo. O método não apenas ajuda a economizar custos computacionais, mas também melhora a diversidade de atenção do modelo.
Experimentos abrangentes realizados no modelo EfficientViT em diferentes cenários indicam que o EfficientViT supera os modelos eficientes existentes para visão computacional enquanto estabelece um bom equilíbrio entre precisão e velocidade. Então, vamos mergulhar mais fundo e explorar o modelo EfficientViT em mais detalhes.
Uma Introdução aos Transformadores de Visão e EfficientViT
Os Transformadores de Visão permanecem um dos frameworks mais populares na indústria de visão computacional porque oferecem desempenho superior e capacidades computacionais altas. No entanto, com a melhoria constante da precisão e do desempenho dos modelos de transformador de visão, os custos operacionais e a sobrecarga computacional também aumentam. Por exemplo, os modelos atuais conhecidos por fornecer desempenho de estado da arte em conjuntos de dados ImageNet, como SwinV2 e V-MoE, usam 3B e 14,7B parâmetros, respectivamente. O tamanho desses modelos, combinado com os custos computacionais e os requisitos, os torna praticamente inadequados para dispositivos e aplicações em tempo real.
O modelo EfficientNet visa explorar como melhorar o desempenho dos modelos de transformador de visão e encontrar os princípios por trás do design de arquiteturas de frameworks de transformador baseado em eficiência. O modelo EfficientViT é baseado em frameworks de transformador de visão existentes, como Swim e DeiT, e analisa três fatores essenciais que afetam as velocidades de interferência dos modelos, incluindo redundância computacional, acesso à memória e uso de parâmetros. Além disso, o modelo observa que a velocidade dos modelos de transformador de visão é limitada por memória, o que significa que a utilização total do poder de computação em CPUs/GPUs é proibida ou restrita por atrasos de acesso à memória, o que resulta em um impacto negativo na velocidade de execução dos transformadores. Funções elementares e reorganização de tensores na rede de auto-atendimento de múltiplas cabeças (MHSA) são as operações mais ineficientes em termos de memória. O modelo também observa que ajustar otimamente a razão entre FFN (rede de alimentação direta) e MHSA pode ajudar a reduzir significativamente o tempo de acesso à memória sem afetar o desempenho. No entanto, o modelo também observa alguma redundância nos mapas de atenção como resultado da tendência das cabeças de atenção a aprender projeções lineares semelhantes.
O modelo é o resultado final das descobertas durante o trabalho de pesquisa para o EfficientViT. O modelo apresenta um novo bloco de construção com um layout de sanduíche que aplica uma única camada de auto-atendimento de múltiplas cabeças limitada por memória entre as camadas de rede de alimentação direta (FFN) eficientes. A abordagem não apenas reduz o tempo necessário para executar operações limitadas por memória em MHSA, mas também torna o processo mais eficiente em termos de memória, permitindo que mais camadas de FFN facilitem a comunicação entre diferentes canais. O modelo também usa um novo módulo de atenção em cascata (CGA) que visa tornar os cálculos mais eficazes, reduzindo a redundância computacional não apenas nas cabeças de atenção, mas também aumentando a profundidade da rede, resultando em uma capacidade de modelo elevada. Finalmente, o modelo expande a largura do canal de componentes de rede essenciais, incluindo projeções de valor, enquanto reduz a largura do canal de componentes de rede com baixo valor, como dimensões ocultas nas redes de alimentação direta, para realocar os parâmetros no framework.

Como pode ser visto na imagem acima, o framework EfficientViT apresenta um desempenho melhor do que os atuais modelos CNN e ViT em termos de precisão e velocidade. Mas como o framework EfficientViT conseguiu superar alguns dos atuais frameworks de estado da arte? Vamos descobrir.
EfficientViT: Melhorando a Eficiência dos Transformadores de Visão
O modelo EfficientViT visa melhorar a eficiência dos modelos de transformador de visão existentes usando três perspectivas,
- Redundância computacional.
- Acesso à memória.
- Uso de parâmetros.
O modelo visa descobrir como os parâmetros acima afetam a eficiência dos modelos de transformador de visão e como resolvê-los para alcançar melhores resultados com maior eficiência. Vamos falar sobre eles em mais detalhes.
Acesso à Memória e Eficiência
Um dos fatores essenciais que afetam a velocidade de um modelo é o acesso à memória ou MAO. Como pode ser visto na imagem abaixo, vários operadores no transformador, incluindo adição elementar, normalização e reorganização frequente, são operações ineficientes em termos de memória, pois requerem acesso a diferentes unidades de memória, o que é um processo demorado.

Embora existam alguns métodos existentes que podem simplificar os cálculos de atenção de auto-atendimento padrão, como aproximação de baixo ranque e atenção esparsa, eles frequentemente oferecem aceleração limitada e degradam a precisão.
Por outro lado, o framework EfficientViT visa reduzir o custo de acesso à memória, reduzindo a quantidade de camadas ineficientes em termos de memória no framework. O modelo reduz a escala do DeiT-T e Swin-T para sub-redes menores com um throughput de interferência mais alto de 1,25X e 1,5X, e compara o desempenho dessas sub-redes com as proporções das camadas MHSA. Como pode ser visto na imagem abaixo, quando implementado, a abordagem melhora a precisão das camadas MHSA em cerca de 20 a 40%.

Eficiência Computacional
As camadas MHSA tendem a incorporar a sequência de entrada em múltiplos subespaços ou cabeças e calcular os mapas de atenção individualmente, uma abordagem que é conhecida por melhorar o desempenho. No entanto, os mapas de atenção não são baratos em termos computacionais, e para explorar os custos computacionais, o modelo EfficientViT explora como reduzir a redundância de atenção em modelos ViT menores. O modelo mede a similaridade de cosine máxima de cada cabeça e as cabeças restantes dentro de cada bloco, treinando os modelos DeiT-T e Swim-T com redução de largura e aceleração de inferência de 1,25x. Como pode ser observado na imagem abaixo, há um número alto de similaridade entre as cabeças de atenção, o que sugere que o modelo incorre em redundância computacional porque muitas cabeças tendem a aprender projeções semelhantes do recurso completo.

Para encorajar as cabeças a aprender padrões diferentes, o modelo aplica explicitamente uma solução intuitiva, na qual cada cabeça é alimentada apenas com uma porção do recurso completo, uma técnica que se assemelha à ideia de convolução em grupo. O modelo treina diferentes aspectos dos modelos reduzidos que apresentam camadas MHSA modificadas.
Eficiência de Parâmetros
Os modelos ViT médios herdam suas estratégias de design, como usar uma largura equivalente para projeções, definir a razão de expansão para 4 na FFN e aumentar as cabeças em estágios a partir de NLP transformadores. As configurações desses componentes precisam ser redesenhadas cuidadosamente para módulos leves. O modelo EfficientViT implanta a poda estruturada de Taylor para encontrar os componentes essenciais nas camadas Swim-T e DeiT-T automaticamente e explora os princípios subjacentes de alocação de parâmetros. Sob certas restrições de recursos, os métodos de poda removem canais não importantes e mantêm os canais críticos para garantir a maior precisão possível. A figura abaixo compara a razão de canais para as incorporações de entrada antes e após a poda na estrutura Swin-T. Foi observado que: Precisão de baseline: 79,1%; precisão podada: 76,5%.

A imagem acima indica que os dois primeiros estágios do framework preservam mais dimensões, enquanto os dois últimos estágios preservam muito menos dimensões. Isso pode significar que uma configuração de canal típica que dobra a largura do canal após cada estágio ou usa canais equivalentes para todos os blocos pode resultar em redundância substancial nos blocos finais.
Transformador de Visão Eficiente: Arquitetura
Com base nas descobertas obtidas durante a análise acima, os desenvolvedores trabalharam na criação de um novo modelo hierárquico que oferece velocidades de interferência rápidas, o modelo EfficientViT. Vamos dar uma olhada mais detalhada na estrutura do framework EfficientViT. A figura abaixo fornece uma ideia geral do framework EfficientViT.
Blocos de Construção do Framework EfficientViT
O bloco de construção para a rede de transformador de visão mais eficiente é ilustrado na figura abaixo.

O framework consiste em um módulo de atenção em cascata, um layout de sanduíche eficiente em termos de memória e uma estratégia de realocação de parâmetros que se concentram em melhorar a eficiência do modelo em termos de computação, memória e parâmetros, respectivamente. Vamos falar sobre eles em mais detalhes.
Layout de Sanduíche
O modelo usa um novo layout de sanduíche para construir um bloco de memória mais eficaz e eficiente para o framework. O layout de sanduíche usa menos camadas de auto-atendimento limitadas por memória e faz uso de redes de alimentação direta mais eficientes em termos de memória para a comunicação de canal. Para ser mais específico, o modelo aplica uma única camada de auto-atendimento para mistura espacial que é sandwichada entre as camadas de FFN. A design não apenas ajuda a reduzir o tempo de consumo de memória devido às camadas de auto-atendimento, mas também permite uma comunicação eficaz entre os canais dentro da rede, graças ao uso das camadas de FFN. O modelo também aplica uma camada de token de interação extra antes de cada camada de rede de alimentação direta, usando uma convolução enganosa (DWConv) e melhora a capacidade do modelo, introduzindo vieses de informação estrutural local.
Atenção em Cascata
Um dos principais problemas com as camadas MHSA é a redundância nas cabeças de atenção, o que torna os cálculos mais ineficientes. Para resolver o problema, o modelo propõe a atenção em cascata (CGA) para transformadores de visão, um novo módulo de atenção que se inspira nas convoluções em grupo de CNNs eficientes. Nessa abordagem, o modelo alimenta as cabeças de atenção individuais com divisões do recurso completo e, portanto, decompoem explicitamente o cálculo de atenção entre as cabeças. Dividir os recursos em vez de alimentar as cabeças de atenção com os recursos completos economiza cálculos e torna o processo mais eficiente, e o modelo continua a trabalhar para melhorar a precisão e a capacidade, encorajando as camadas a aprender projeções em recursos com informações mais ricas.

Realocação de Parâmetros
Para melhorar a eficiência dos parâmetros, o modelo realoca os parâmetros na rede, expandindo a largura do canal de componentes de rede essenciais, enquanto reduz a largura do canal de componentes de rede menos importantes. Com base na análise de Taylor, o modelo define dimensões de canal pequenas para as projeções em cada cabeça em cada estágio ou permite que as projeções tenham a mesma dimensão que a incorporação de entrada. A razão de expansão da rede de alimentação direta também é reduzida para 2, a partir de 4, para ajudar na redundância de parâmetros. A estratégia de realocação proposta pelo framework EfficientViT aloca mais canais para os módulos importantes, permitindo que eles aprendam representações em um espaço de alta dimensão melhor, minimizando a perda de informações de recursos. Além disso, para acelerar o processo de interferência e melhorar a eficiência do modelo, o modelo remove automaticamente os parâmetros redundantes nos módulos menos importantes.

A visão geral do framework EfficientViT pode ser explicada na imagem acima, onde as partes,
- Arquitetura do EfficientViT,
- Bloco de layout de sanduíche,
- Atenção em cascata.
EfficientViT: Arquiteturas de Rede

A imagem acima resume a arquitetura de rede do framework EfficientViT. O modelo apresenta uma incorporação de patch sobreposta [20,80] que incorpora patches de 16×16 em tokens de dimensão C1, o que melhora a capacidade do modelo de realizar aprendizado de representação visual de baixo nível. A arquitetura do modelo consiste em três estágios, onde cada estágio empilha os blocos de construção propostos do framework EfficientViT, e o número de tokens em cada camada de subsampling (2× subsampling da resolução) é reduzido por 4X. Para tornar o subsampling mais eficiente, o modelo propõe um bloco de subsampling que também apresenta o layout de sanduíche proposto, com a exceção de que um bloco de resíduo invertido substitui a camada de atenção para reduzir a perda de informações durante a amostragem. Além disso, em vez de usar a normalização de camada convencional (LN), o modelo usa a normalização de lote (BN), pois a BN pode ser incorporada às camadas lineares ou convolucionais anteriores, o que lhe dá uma vantagem de tempo de execução sobre a LN.
Família de Modelos EfficientViT
A família de modelos EfficientViT consiste em 6 modelos com diferentes escalas de profundidade e largura, e um número fixo de cabeças é alocado para cada estágio. Os modelos usam menos blocos nos estágios iniciais em comparação com os estágios finais, um processo semelhante ao seguido pelo framework MobileNetV3, pois o processo de processamento de estágios iniciais com resoluções maiores é demorado. A largura é aumentada ao longo dos estágios com um fator pequeno para reduzir a redundância nos estágios finais. A tabela anexa abaixo fornece os detalhes arquiteturais da família de modelos EfficientViT, onde C, L e H se referem à largura, profundidade e número de cabeças no estágio específico.

EfficientViT: Implementação do Modelo e Resultados
O modelo EfficientViT tem um tamanho de lote total de 2.048, é construído com Timm e PyTorch, é treinado a partir do zero por 300 épocas, usando 8 GPUs Nvidia V100, usa um agendador de taxa de aprendizado cosseno, um otimizador AdamW e realiza o experimento de classificação de imagens no ImageNet-1K. As imagens de entrada são recortadas aleatoriamente e redimensionadas para uma resolução de 224×224. Para os experimentos que envolvem classificação de imagens downstream, o framework EfficientViT ajusta o modelo por 300 épocas e usa o otimizador AdamW com um tamanho de lote de 256. O modelo usa a arquitetura RetineNet para detecção de objetos no COCO e treina os modelos por mais 12 épocas com as mesmas configurações.
Resultados no ImageNet
Para analisar o desempenho do EfficientViT, ele é comparado com os atuais modelos ViT e CNN no conjunto de dados ImageNet. Os resultados da comparação são relatados na figura abaixo. Como pode ser visto, a família de modelos EfficientViT supera os frameworks atuais na maioria dos casos e consegue alcançar um equilíbrio ideal entre velocidade e precisão.

Comparação com CNNs Eficientes e ViTs Eficientes
O modelo primeiro compara seu desempenho com CNNs eficientes, como EfficientNet, e frameworks CNN padrão, como MobileNets. Como pode ser visto, quando comparado com os frameworks MobileNet, os modelos EfficientViT obtêm uma pontuação de precisão superior, enquanto executam 3,0X e 2,5X mais rápido em CPU Intel e GPU V100, respectivamente.

A figura acima compara o desempenho do modelo EfficientViT com os modelos ViT de grande escala de estado da arte que executam o conjunto de dados ImageNet-1K.
Classificação de Imagens Downstream
O modelo EfficientViT é aplicado a várias tarefas downstream para estudar as capacidades de aprendizado de transferência do modelo, e a imagem abaixo resume os resultados do experimento. Como pode ser observado, o modelo EfficientViT-M5 consegue alcançar resultados melhores ou semelhantes em todos os conjuntos de dados, enquanto mantém um throughput muito mais alto. A única exceção é o conjunto de dados Cars, onde o modelo EfficientViT não consegue entregar em termos de precisão.

Detecção de Objetos
Para analisar a capacidade do EfficientViT de detectar objetos, ele é comparado com modelos eficientes na tarefa de detecção de objetos COCO, e a imagem abaixo resume os resultados da comparação.

Conclusões Finais
Neste artigo, falamos sobre o EfficientViT, uma família de modelos de transformador de visão rápidos que usam atenção em cascata e operações de memória eficientes. Experimentos abrangentes realizados para analisar o desempenho do EfficientViT mostraram resultados promissores, pois o modelo EfficientViT supera os atuais modelos CNN e de transformador de visão na maioria dos casos. Também tentamos fornecer uma análise sobre os fatores que afetam a velocidade de interferência dos transformadores de visão.












