Connect with us

Inteligência artificial

UltraFastBERT: Exponencialmente Mais Rápido na Modelagem de Linguagem

mm

Modelos de linguagem e IA 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, recorrentes, incorporadas e de atenção — para processar o texto de entrada e produzir saídas relevantes.

Em sua maioria, as camadas feedforward dos grandes modelos de linguagem possuem a maioria dos parâmetros. Estudos mostram que esses modelos usam apenas uma fração dos neurônios disponíveis para o cálculo de saída durante a inferência.

Este artigo apresenta o UltraFastBERT, uma estrutura baseada no 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 à Modelagem de Linguagem Exponencialmente Mais Rápida

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 de atenção. Esses componentes são responsáveis por aprender a reconhecer padrões durante o treinamento e, em última análise, gerar saídas precisas com base nos textos de entrada. Cada um desses componentes tem alguns parâmetros, e nos modelos de linguagem, a maior parte 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 inferê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 esse conceito 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 de tamanho e processo de treinamento semelhantes, especialmente nas tarefas downstream. Devido às suas implementações de design, as camadas intermediárias na estrutura UltraFastBERT são exponencialmente mais rápidas,

Dado um réseau feedforward rápido (FFF) e um réseau feedforward (FF), cada um 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 um réseau feedforward rápido, e a diferença na complexidade temporal é principalmente devido ao fato de que, em um réseau feedforward rápido, 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 inferência em um réseau feedforward rápido resulta em CMM ou Multiplicação de Matriz Condicional, na qual as linhas de entrada dotam com as colunas de peso naturais individualmente, e a saída da operação de produto anterior determina o peso das colunas para prosseguir. Consequentemente, a rede usa todos os neurônios apenas para algumas entradas, e nenhuma entrada requer mais do que alguns neurônios para ser tratada pela rede. O produto de CMM contrasta com o DMM ou Multiplicação de Matriz Densa, que calcula o produto de todas as entradas com todas as colunas de peso.

Para resumir, o UltraFastBERT é uma estrutura baseada no BERT que fornece resultados comparáveis aos modelos de linguagem BERT de ponta que

  1. Utiliza apenas 0,3% dos neurônios disponíveis durante a fase de inferência e engaja apenas 12 neurônios de um total de 4095 neurônios para cada camada de inferência.
  2. Fornece um desempenho forte comparável aos modelos BERT de ponta, implementando estratégias de fine-tuning em tarefas downstream.
  3. Fornece uma implementação nativa da CMM ou Multiplicação de Matriz Condicional, que forma a base para a rede feedforward rápida e, em última análise, leva a um ganho de desempenho de 78x em comparação com a Multiplicação de Matriz Densa otimizada.

Redes Neurais Feedforward

Uma rede neural feedforward é uma das redes neurais artificiais mais diretas que move as informações apenas na direção para a frente, das entradas para as saídas, passando pelas entradas 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 as RNN ou Redes Neurais Recorrentes e CNN ou Redes Neurais Convolucionais. A arquitetura de uma rede neural feedforward rápida compreende três componentes: camadas de entrada, camadas ocultas e camadas de saída, e cada camada consiste em unidades chamadas neurônios, e cada camada está interconectada à outra 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 nem à entrada nem à saída e elas 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, aplicam 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 feedforward rápida está interconectado com cada neurônio na próxima camada, tornando as redes neurais feedforward completamente 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.

Em seguida, há duas fases principais no funcionamento de uma rede neural feedforward rápida:

Fase Feedforward

Na fase feedforward, a entrada é alimentada na rede e, em seguida, propaga para a frente. As camadas ocultas calculam a soma ponderada das entradas e introduzem 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 faça 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 estrutura 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 estrutura crammedBERT por redes feedforward rápidas. A estrutura UltraFastBERT faz as seguintes alterações nas redes feedforward originais.

  1. A estrutura elimina a diferença entre os nodos folha e não folha, usando a função de ativação GeLu em todos os nodos e equipando esses nodos 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.
  2. 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.

Em seguida, 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 elas 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 for 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 ela utilizaria apenas 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 é ilustrado na imagem abaixo.

Aqui, B representa o tamanho do lote, H representa a largura das camadas de entrada e M representa as colunas. Outra causa importante de preocupação com o uso da abordagem de Multiplicação de Matriz Condicional é se isso torna as redes feedforward rápidas incompatíveis com o processo já em uso para a Multiplicação de Matriz Densa e os frameworks de aprendizado profundo existentes. Felizmente, o uso da 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 MAC ou Multiplicação e Acumulação, e, consequentemente, substituir a DMM pela abordagem CMM beneficiará os CPUs, pois menos instruções MAC são necessárias para calcular a saída da camada por elemento. Portanto, apesar de empregar uma condicionalidade normalmente associada à ramificação, a “ramificação neural” atua como um acréscimo ao offset de memória para os 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 ponto de linha e 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 tarefas de fine-tuning e interferência para analisar como a estrutura se sai em comparação com os modelos de linguagem de ponta.

Resultados de Fine-Tuning

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, “Avg” 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 nas 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 sofre uma declínio, 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 são distribuídas em três níveis.

  1. No Nível 1, a implementação é construída usando rotinas do nível 1 do BLAS, nomeadamente produto escalar-vetor e produtos de ponto de vetor.
  2. No Nível 2, as implementações usam rotinas do nível 2 do BLAS, nomeadamente produtos escalares-vetor em lote e produtos de ponto de matriz-vetor em lote.
  3. 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 vetor da Multiplicação de Matriz Condicional.

Além disso, a estrutura UltraFastBERT implanta implementações de GPU usando núcleos personalizados CUDA ou PyTorch.

A tabela acima compara o desempenho da estrutura UltraFastBERT com seus antecessores, as estruturas baseadas no BERT, em termos de camadas feedforward e camadas feedforward rápidas, onde cada coluna contém os acelerações de implementação de inferência de feedforward rápido sobre feedforward quando elas usam os mesmos primitivos de rotinas de álgebra linear.

No entanto, é importante notar que os acelerações relatados na tabela acima são destinados a “comparações justas”, ou seja, tanto as implementações de feedforward rápido quanto as implementações de feedforward usam as mesmas operações primitivas de rotinas de álgebra linear. Além disso, nos Níveis 1 e 2, as implementações das redes feedforward rápidas são capazes de realizar a interferência 48x e 78x mais rápido do que a implementação de 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 inferê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 de tamanho e processo de treinamento semelhantes, especialmente nas 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 LLMs podem entregar um desempenho forte, engajando apenas uma fração de seus parâmetros para interferências individuais, pois a estrutura UltraFastBERT utiliza apenas 0,3% dos neurônios disponíveis durante a interferência e, ainda assim, consegue alcançar um aceleração de 78x sobre os tempos de interferência.

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.