Modelos e plataformas de IA
UltraFastBERT: Uma Introdução a Modelos de Linguagem Exponencialmente Mais Rápidos
Modelos de linguagem e inteligência artificial gerativa, renomados por suas capacidades, são um tópico quente na indústria de IA. Pesquisadores globais estão aprimorando sua eficácia e capacidade. Esses sistemas, tipicamente modelos de aprendizado profundo, são pré-treinados em dados rotulados extensivos, incorporando redes neurais para auto-atenção. Eles usam várias camadas – feedforward, recorrente, incorporada e atenção – para processar texto de entrada e produzir saídas relevantes.
Na maioria dos casos, as camadas feedforward dos grandes modelos de linguagem contêm a maioria dos parâmetros. Estudos mostram que esses modelos usam apenas uma fração dos neurônios disponíveis para computação de saída durante a inferência.
Este artigo apresenta o UltraFastBERT, uma estrutura baseada em BERT que combina a eficácia dos principais modelos BERT, mas usando apenas 0,3% dos neurônios durante a inferência, especificamente 12 de 4095 em cada camada. Vamos explorar a arquitetura, funcionalidade e resultados do UltraFastBERT. Vamos começar.
UltraFastBERT: Uma Introdução a Modelos de Linguagem Exponencialmente Mais Rápidos
Tradicionalmente, um modelo de linguagem emprega diferentes componentes para equipar-se com capacidades de geração de conteúdo, incluindo camadas feedforward, recorrentes, incorporadas e atenção. Esses componentes são responsáveis por aprender a reconhecer padrões durante o treinamento e, eventualmente, gerar saídas precisas com base nos textos de entrada. Cada um desses componentes tem alguns parâmetros, e em modelos de linguagem, a maioria desses parâmetros é mantida pelas camadas feedforward. No entanto, essas camadas feedforward não utilizam 100% dos neurônios disponíveis para gerar saída para cada entrada no momento da interferência, o que leva a um desperdício de recursos que aumenta a complexidade, o tempo de computação e os custos computacionais.
Em sua essência, a estrutura UltraFastBERT é uma variante da estrutura BERT, construída sobre o conceito de que as camadas feedforward não utilizam 100% dos neurônios disponíveis para gerar saída para cada entrada no momento da interferência, o que leva a um desperdício de recursos que aumenta a complexidade, o tempo de computação e os custos computacionais. A estrutura UltraFastBERT substitui as camadas feedforward por redes feedforward mais rápidas em sua arquitetura, o que resulta na estrutura UltraFastBERT utilizando apenas 0,3% dos neurônios disponíveis, enquanto entrega resultados comparáveis aos modelos BERT com tamanho e processo de treinamento semelhantes, especialmente em tarefas downstream.
Dada uma rede feedforward rápida (FFF) e uma rede feedforward (FF), cada uma com n número de neurônios, a complexidade temporal de uma passagem para a frente em uma rede feedforward é O(n), enquanto a complexidade temporal é O(log2n) para uma rede feedforward rápida. A diferença na complexidade temporal é principalmente devido ao fato de que, em uma rede feedforward rápida, os neurônios são organizados em uma árvore binária balanceada e, quando a entrada é fornecida, a rede executa apenas um ramo da árvore condicionalmente. Além disso, realizar interferência em uma rede feedforward rápida resulta em CMM ou Multiplicação de Matriz Condicional, na qual as linhas de entrada fazem o produto escalar com as colunas de peso naturais individualmente, e a saída da operação de produto escalar anterior determina o peso das colunas para prosseguir. Resultantemente, a rede usa todos os neurônios apenas para algumas entradas, e nenhuma entrada requer mais de alguns neurônios para ser tratada pela rede.
Para resumir, o UltraFastBERT é uma estrutura baseada em BERT que fornece resultados comparáveis aos modelos de linguagem BERT de ponta, que
- Utiliza apenas 0,3% dos neurônios disponíveis durante a fase de interferência e engaja apenas 12 neurônios de um total de 4095 neurônios para cada camada de interferência.
- Fornece um desempenho forte comparável aos modelos BERT de ponta, implementando estratégias de ajuste fino em tarefas downstream.
- Fornece uma implementação nativa da CMM ou Multiplicação de Matriz Condicional que forma a base para a rede feedforward rápida e, eventualmente, leva a um aumento de 78x no desempenho em comparação com a multiplicação de matriz densa otimizada.
Redes Neurais Feedforward
Uma rede neural feedforward é uma das redes neurais artificiais mais simples que move a informação apenas na direção para a frente, das células de entrada para as células de saída, via células ocultas. Um dos principais destaques de uma rede neural feedforward rápida é que não há loops ou ciclos nessa rede, e elas são mais simples de construir em comparação com RNN ou Redes Neurais Recorrentes e CNN ou Redes Neurais Convolucionais. A arquitetura de uma rede neural feedforward rápida compreende três componentes, nomeadamente camadas de entrada, camadas ocultas e camadas de saída, e cada camada consiste em unidades chamadas neurônios, e cada camada está interconectada às outras com a ajuda de pesos.
Os neurônios presentes nas camadas de entrada recebem as entradas e as encaminham para a próxima camada. A quantidade de neurônios em cada camada de entrada é determinada pela dimensão dos dados de entrada. Em seguida, temos as camadas ocultas que não estão expostas à entrada ou à saída e são responsáveis pelos cálculos necessários. Os neurônios em cada camada oculta tomam a soma ponderada das saídas dadas pela camada anterior, empregam uma função de ativação e passam o resultado para a próxima camada, e o processo se repete. Finalmente, temos a camada de saída que produz a saída para as entradas dadas. Cada neurônio em cada camada de uma rede neural feedforward rápida está interconectado com cada neurônio na próxima camada, tornando as redes neurais FFF totalmente conectadas. Pesos são usados para representar a força da conexão entre os neurônios, e a rede atualiza esses pesos para aprender os padrões, atualizando os pesos com base no erro que ocorre na saída.
Avançando, há duas fases principais no funcionamento de uma rede neural feedforward rápida: a fase feedforward e a fase de retropropagação.
Fase Feedforward
Na fase feedforward, a entrada é alimentada na rede e, em seguida, propagada para a frente. As camadas ocultas calculam a soma ponderada das entradas, introduzindo não linearidade no modelo, passando a soma das entradas por uma função de ativação, como ReLu, Sigmoid e TanH. O processo se repete até que os pesos atinjam a camada de saída, e o modelo faz uma previsão.
Fase de Retropropagação
Uma vez que o modelo faz uma previsão, ele calcula o erro entre a saída gerada e a saída esperada. O erro é, então, retropropagado pela rede, e a rede usa um algoritmo de otimização de descida de gradiente para ajustar os pesos, tentando minimizar o erro.
UltraFastBERT: Arquitetura e Funcionamento do Modelo
A estrutura UltraFastBERT é construída sobre a arquitetura crammedBERT, e a estrutura UltraFastBERT emprega todos os componentes da arquitetura crammedBERT, exceto a natureza das camadas intermediárias. Em vez disso, a estrutura UltraFastBERT substitui o codificador de transformador nas redes feedforward contidas nas camadas intermediárias da arquitetura crammedBERT por redes feedforward rápidas. A estrutura UltraFastBERT faz as seguintes alterações nas redes feedforward originais.
- A estrutura elimina a diferença entre nós folha e não-folha, usando a função de ativação GeLu em todos os nós e equipando esses nós com pesos de saída e removendo vieses de saída por completo. Após isso, a estrutura fixa o tamanho da folha em 1.
- Finalmente, a estrutura permite várias árvores de redes feedforward rápidas em paralelo, calculando conjuntamente as camadas de saída intermediárias. A estrutura consegue fazer isso, somando as árvores individuais e, em seguida, apresentando a soma como a camada de saída intermediária.
Avançando, no treinamento, a estrutura UltraFastBERT segue o procedimento de treinamento empregado pela estrutura crammedBERT, que inclui desabilitar o dropout no pré-treinamento e usar o cronograma de aprendizado triangular de 1 ciclo. O modelo é, então, ajustado para maximizar seu desempenho em uma ampla variedade de tarefas, principalmente do benchmark GLUE, por um total de 5 épocas.
Interferência
A interferência é uma parte importante para uma rede feedforward rápida, e essas redes feedforward rápidas em si formam uma grande parte dos grandes modelos de linguagem, e são conhecidas por seu potencial de aceleração excepcional. Para entender esse potencial de aceleração, vamos considerar um exemplo de um dos modelos de linguagem mais avançados, o GPT-3, no qual as redes feedforward em cada camada de transformador consistem em mais de 49.100 neurônios. Se treinável, uma rede feedforward rápida (profundidade máxima de 15) poderia substituir a rede feedforward original. A rede feedforward rápida introduzida teria mais de 65.000 neurônios, mas apenas utilizaria 16 desses neurônios para interferência, o que equivale a aproximadamente 0,03% dos neurônios disponíveis para o GPT-3.
Algoritmo e Compatibilidade
A estrutura UltraFastBERT usa um algoritmo pseudocódigo recursivo para interferência de rede feedforward rápida, e o algoritmo é mostrado na imagem abaixo.

Aqui, B representa o tamanho do lote, H representa a largura das camadas de entrada, e M representa colunas. Outra grande causa de preocupação com o uso da abordagem de Multiplicação de Matriz Computacional é se isso torna as redes feedforward rápidas incompatíveis com o processo que está em uso para a Multiplicação de Matriz Densa e os frameworks de aprendizado profundo existentes. Felizmente, o uso de CMM não afeta o desempenho ou introduz incompatibilidade, embora aumente a complexidade de cache.
É vital notar que, como parte da rede feedforward rápida, a multiplicação de matriz densa de thread único depende da execução das instruções de multiplicação e acumulação, e, resultante disso, substituir DMM pela abordagem CMM beneficiará os CPUs, pois menos instruções de multiplicação e acumulação são necessárias para computar a saída da camada por elemento. Portanto, apesar de empregar uma condicionalidade que é normalmente associada à ramificação, a “ramificação neural” atua como uma adição ao offset de memória para ponteiros relevantes na estrutura. Portanto, na estrutura UltraFastBERT, a previsão de ramificação de instrução nunca é totalmente engajada para facilitar a condicionalidade da CMM, e apenas carrega as colunas relevantes da matriz de peso individualmente. Além disso, como a estrutura executa produtos de linha-coluna, o processamento paralelo de vetor de instrução única (SIMD) ainda é uma boa opção para acelerar as implementações de interferência para dispositivos específicos.
UltraFastBERT: Desempenho e Resultados
Vamos falar sobre o desempenho da estrutura UltraFastBERT para ajuste fino, bem como para tarefas de interferência, para analisar como a estrutura se sai em comparação com os modelos de linguagem de ponta.
Resultados de Ajuste Fino
A figura a seguir demonstra o desempenho de vários modelos nos conjuntos de dados de teste GLUE-dev. Aqui, N representa o número de neurônios disponíveis para as estruturas para treinamento, “Média” representa a pontuação média de todas as tarefas.

Como pode ser claramente visto, a estrutura UltraFastBERT, que foi treinada no GPU A6000 por mais de 24 horas, consegue reter quase 96% do desempenho preditivo em tarefas downstream do GLUE em comparação com a estrutura BERT original. Além disso, também pode ser visto que, com o aumento da profundidade das redes feedforward rápidas, o desempenho das estruturas testemunha uma queda, embora a maioria da degradação do desempenho ocorra apenas para a tarefa CoLa. Se a tarefa CoLa for descartada por um momento, a estrutura UltraFastBERT retorna uma pontuação de desempenho preditivo de cerca de 98,6%.
Resultados de Interferência
Nesta seção, vamos comparar o desempenho de várias redes feedforward ou redes feedforward rápidas em implementações de interferência, e essas implementações estão distribuídas em três níveis.
- Na implementação do Nível 1, a implementação é construída usando rotinas do Nível 1 do BLAS, nomeadamente produto escalar-vetor e produtos de vetor-vetor.
- No Nível 2, as implementações usam rotinas do Nível 2 do BLAS, nomeadamente produto escalar-vetor em lote e produtos de matriz-vetor em lote.
- No Nível 3, as implementações usam a abordagem de multiplicação de matriz-matriz do Nível 3 do BLAS, e embora seja a implementação mais rápida disponível para redes feedforward, essas implementações não estão disponíveis para redes feedforward rápidas, pois a biblioteca não suporta a esparsidade de nível de vetor da Multiplicação de Matriz Computacional.
Além disso, a estrutura UltraFastBERT implanta implementações de GPU usando kernels personalizados de CUDA ou PyTorch.

A tabela acima compara o desempenho da estrutura UltraFastBERT com seus antecessores, as estruturas baseadas em BERT, em termos de camadas feedforward e camadas feedforward rápidas, onde cada coluna contém os aumentos de velocidade de inferência de rede feedforward rápida sobre feedforward quando usam as mesmas primitivas de operações de álgebra linear.
No entanto, é importante notar que os aumentos de velocidade relatados na tabela acima são destinados a “comparações justas”, ou seja, tanto as implementações de rede feedforward rápida quanto as implementações de rede feedforward usam as mesmas operações primitivas de álgebra linear. Além disso, nos Níveis 1 e 2, as implementações de redes feedforward rápidas são capazes de realizar a interferência 48x e 78x mais rápido do que a implementação de rede feedforward mais rápida, respectivamente.
Pensamentos Finais
Neste artigo, falamos sobre o UltraFastBERT, uma variante da estrutura BERT, construída sobre o conceito de que as camadas feedforward não utilizam 100% dos neurônios disponíveis para gerar saída para cada entrada no momento da interferência, o que leva a um desperdício de recursos que aumenta a complexidade, o tempo de computação e os custos computacionais, e substitui as camadas feedforward por redes feedforward mais rápidas em sua arquitetura, o que resulta na estrutura UltraFastBERT utilizando apenas 0,3% dos neurônios disponíveis, enquanto entrega resultados comparáveis aos modelos BERT com tamanho e processo de treinamento semelhantes, especialmente em tarefas downstream.
Devido às suas implementações de design, as camadas intermediárias na estrutura UltraFastBERT são exponencialmente mais rápidas. Além disso, o desempenho forte entregue pela estrutura UltraFastBERT é uma prova de que os modelos de linguagem podem entregar um desempenho forte, engajando apenas uma fração de seus parâmetros para interferências individuais, como a estrutura UltraFastBERT utiliza apenas 0,3% dos neurônios disponíveis durante a interferência e, ainda assim, consegue alcançar um aumento de 78x na velocidade em relação aos tempos de interferência.












