Melhorando Modelos de Linguagem com QCQA pra Gerenciar Memória Melhor
A QCQA melhora os modelos de linguagem otimizando o uso de memória sem perder precisão.
― 7 min ler
Índice
Modelos de linguagem grandes (LLMs) ficaram super populares pra tarefas como chatbots, criação de conteúdo e mais. Eles conseguem gerar texto, produzir imagens e até criar música. Mas, um dos principais desafios ao usar esses modelos é a memória necessária pra armazenar as características chave e valor usadas na geração de texto. Esse armazenamento de memória é conhecido como KV-cache. Quando o KV-cache fica muito grande, pode deixar o modelo mais lento e limitar a quantidade de texto que ele consegue gerar.
O Problema com o KV-cache
Quando se trabalha com inferência autoregressiva, que é o método usado pelos LLMs pra gerar texto, o modelo precisa lembrar das características chave e valor anteriores. O tamanho do KV-cache cresce com base em vários fatores, como o número de cabeças no modelo, o comprimento do texto de entrada e o tamanho do lote de entrada.
Conforme as tarefas de linguagem ficam mais complexas, os LLMs precisam de mais cabeças e camadas pra gerenciar entradas de texto mais longas. Esse aumento leva a um crescimento significativo no tamanho do KV-cache, que pode ficar maior que os próprios parâmetros do modelo. Esse uso excessivo de memória pode deixar o processamento mais lento e mais econômico em termos de energia.
Pra resolver esses problemas, os pesquisadores criaram técnicas pra reduzir o tamanho do KV-cache. Alguns métodos envolvem usar precisão menor pra essas características, manter apenas as características significativas, ou agrupar as cabeças de atenção pra compartilhar características KV.
Técnicas de Atenção Agrupada
Duas técnicas populares pra reduzir o tamanho do KV-cache são Atenção de Múltiplas Consultas (MQA) e Atenção de Consultas Agrupadas (GQA).
Atenção de Múltiplas Consultas (MQA)
No MQA, todas as cabeças de consulta são combinadas em um único grupo. Isso significa que só uma cabeça de chave e valor é usada pra toda a camada. Isso pode reduzir significativamente o tamanho do KV-cache, mas pode também resultar numa queda na precisão do modelo.
Atenção de Consultas Agrupadas (GQA)
O GQA vai um passo além, dividindo as cabeças de consulta em grupos menores. Cada grupo compartilha uma única cabeça de chave e valor. Embora o GQA possa reduzir o tamanho do KV-cache de forma mais eficaz que o MQA, ele ainda tem suas desvantagens. O GQA pode não garantir sempre o melhor equilíbrio entre o tamanho do cache e a precisão.
A Necessidade de uma Nova Abordagem
Tanto o MQA quanto o GQA não garantem um equilíbrio ideal entre o tamanho da memória e a qualidade da geração de texto. Isso se deve principalmente à falta de consciência sobre a qualidade dos agrupamentos das cabeças de consulta. Os pesquisadores descobriram que poderia haver uma maneira melhor de agrupar as cabeças de consulta pra manter a precisão enquanto ainda reduz o tamanho do KV-cache.
Introduzindo o QCQA
Pra enfrentar esses desafios, apresentamos a Atenção de Consultas Agrupadas com Qualidade e Consciência de Capacidade (QCQA). O QCQA usa um algoritmo evolutivo pra determinar a melhor maneira de agrupar as cabeças de consulta, permitindo flexibilidade no tamanho do grupo e melhorando a qualidade geral da geração de texto.
O QCQA identifica os melhores agrupamentos para as cabeças de consulta enquanto controla a pegada de memória. Esse método melhora o desempenho do modelo sem aumentar excessivamente o tamanho do KV-cache.
Conquistas com QCQA
Nossas descobertas mostram que o QCQA leva a uma precisão melhor em comparação ao GQA, usando um tamanho de KV-cache similar. Por exemplo, em testes com o modelo Llama2 B, o QCQA demonstrou maior precisão sem precisar de mais treinamento. Mesmo após o ajuste fino de ambos, QCQA ainda se saiu melhor para o mesmo tamanho de cache.
Além disso, o QCQA requer menos memória que o GQA pra alcançar precisão comparável. Ao otimizar o agrupamento das cabeças de consulta, mostramos que o QCQA abre a porta pra uma melhor gestão do KV-cache na inferência autoregressiva de LLMs.
Como o QCQA Funciona
O QCQA emprega uma abordagem em duas etapas.
Etapa 1: Agrupando Cabeças de Consulta
Na primeira etapa, o QCQA forma grupos de cabeças de consulta pra cada camada. Esse agrupamento não é limitado a tamanhos iguais; ele pode variar de acordo com o que funciona melhor pro desempenho do modelo. Essa flexibilidade permite que o QCQA ajuste os tamanhos dos grupos de uma forma que melhora a precisão geral.
Etapa 2: Avaliando o Impacto do Agrupamento
Na segunda etapa, o QCQA avalia como os agrupamentos escolhidos afetam a precisão do modelo. Camadas que são críticas pra precisão mantêm sua estrutura original, enquanto camadas menos impactantes podem usar os novos agrupamentos pra minimizar as necessidades de memória.
Ambas as etapas utilizam uma função computacional chamada erro de compartilhamento de peso (WSE) pra ajudar a avaliar quanto de precisão pode ser sacrificado ao agrupar cabeças. Essa função opera sem precisar dos cálculos caros normalmente exigidos pra checar a precisão do LLM.
Benefícios do QCQA
Os benefícios do QCQA podem ser vistos através de vários testes realizados em múltiplos modelos e tarefas de LLM. Nossos resultados mostram consistentemente que o QCQA supera o GQA, alcançando maior precisão enquanto requer menos memória.
Resultados Sem Ajuste Fino
Em testes sem ajuste fino, o QCQA mostrou melhorias significativas em relação ao GQA. Por exemplo, com certos tamanhos de cache, a precisão do GQA caiu drasticamente, enquanto o QCQA manteve seu desempenho, demonstrando um tradeoff muito melhor entre o tamanho do KV-cache e a precisão do modelo.
Resultados Com Ajuste Fino
Quando o ajuste fino foi aplicado, o QCQA ainda superou o GQA em vários tamanhos de cache. Isso significa que mesmo que ambos os métodos recebessem treinamento adicional, o QCQA ainda conseguia manter um nível de precisão mais alto.
Avaliação em Diferentes Tarefas
Nós também testamos o QCQA em uma variedade de tarefas, incluindo compreensão e raciocínio em linguagem natural, usando conjuntos de dados padrão. Em todas as instâncias, o QCQA alcançou maior precisão que o GQA, provando assim ser uma alternativa confiável pra gestão de memória em LLMs.
Conclusão
A introdução do QCQA marca um avanço significativo na otimização do equilíbrio entre requisitos de memória e precisão em LLMs. Ao utilizar um algoritmo evolutivo pra agrupar cabeças de consulta, o QCQA oferece tanto flexibilidade quanto ganhos de desempenho que eram anteriormente impossíveis com métodos como MQA e GQA.
Através de testes extensivos, demonstramos que o QCQA consistentemente fornece melhores resultados, exigindo menos KV-cache sem comprometer a qualidade da geração de texto. Isso abre oportunidades pra um uso mais eficiente de LLM em várias aplicações.
À medida que os LLMs continuam a evoluir, o desenvolvimento de métodos como o QCQA desempenhará um papel crucial em garantir que eles continuem acessíveis e eficientes pra várias aplicações do mundo real. O potencial de melhorar o desempenho sem exigir recursos excessivos torna o QCQA uma abordagem promissora pra futuras pesquisas e implementações de LLM.
Título: QCQA: Quality and Capacity-aware grouped Query Attention
Resumo: Excessive memory requirements of key and value features (KV-cache) present significant challenges in the autoregressive inference of large language models (LLMs), restricting both the speed and length of text generation. Approaches such as Multi-Query Attention (MQA) and Grouped Query Attention (GQA) mitigate these challenges by grouping query heads and consequently reducing the number of corresponding key and value heads. However, MQA and GQA decrease the KV-cache size requirements at the expense of LLM accuracy (quality of text generation). These methods do not ensure an optimal tradeoff between KV-cache size and text generation quality due to the absence of quality-aware grouping of query heads. To address this issue, we propose Quality and Capacity-Aware Grouped Query Attention (QCQA), which identifies optimal query head groupings using an evolutionary algorithm with a computationally efficient and inexpensive fitness function. We demonstrate that QCQA achieves a significantly better tradeoff between KV-cache capacity and LLM accuracy compared to GQA. For the Llama2 $7\,$B model, QCQA achieves $\mathbf{20}$\% higher accuracy than GQA with similar KV-cache size requirements in the absence of fine-tuning. After fine-tuning both QCQA and GQA, for a similar KV-cache size, QCQA provides $\mathbf{10.55}\,$\% higher accuracy than GQA. Furthermore, QCQA requires $40\,$\% less KV-cache size than GQA to attain similar accuracy. The proposed quality and capacity-aware grouping of query heads can serve as a new paradigm for KV-cache optimization in autoregressive LLM inference.
Autores: Vinay Joshi, Prashant Laddha, Shambhavi Sinha, Om Ji Omer, Sreenivas Subramoney
Última atualização: 2024-06-08 00:00:00
Idioma: English
Fonte URL: https://arxiv.org/abs/2406.10247
Fonte PDF: https://arxiv.org/pdf/2406.10247
Licença: https://creativecommons.org/licenses/by-nc-sa/4.0/
Alterações: Este resumo foi elaborado com a assistência da AI e pode conter imprecisões. Para obter informações exactas, consulte os documentos originais ligados aqui.
Obrigado ao arxiv pela utilização da sua interoperabilidade de acesso aberto.