Técnicas esparsas para aceleração de 100x na inferência de Grandes Modelos de Linguagem. Explore os segredos por trás das técnicas de LLM-Pruner, dobrando a velocidade de inferência para resultados mais rápidos.
Introdução
É bem conhecido que existem três fatores centrais que afetam o desempenho de Grandes Modelos de Linguagem (LLM) em GPUs: (1) poder computacional da GPU, (2) entrada/saída (I/O) da GPU e (3) tamanho da memória da GPU. Vale notar que, para os LLMs atuais, o fator (2) é o principal gargalo durante o estágio de inferência.
Este blog foca na viabilidade de acelerar a inferência de LLMs em placas gráficas de consumo através de poda ou esparsidade, com base nos artigos de pesquisa mais recentes e práticas de engenharia.
Primeiramente, referindo-se à análise das métricas de latência de inferência de LLM em [1], as três conclusões a seguir são extraídas:
- Nos estágios de prompting e geração de tokens do LLM, o estágio de geração de tokens leva muito mais tempo devido à latência de I/O incorrida ao carregar os parâmetros do modelo.
- Na inferência de LLM, tanto os módulos de Atenção quanto o MLP são gargalos, sendo que o módulo MLP é responsável por cerca de dois terços da latência de I/O.
- A proporção de All Reduce (comunicação entre GPUs) é relativamente baixa, indicando que a principal direção de otimização está dentro da própria arquitetura transformer.
Para dados detalhados, consulte a figura abaixo:
Para melhorar a eficiência da inferência, várias técnicas foram exploradas, incluindo quantização, decodificação de inferência, destilação e esparsidade. Este blog foca na esparsidade e fornece uma introdução aprofundada.
Introdução à Esparsidade.
A poda de modelo, também conhecida como esparsidade de modelo, difere da quantização de modelo, pois, em vez de comprimir cada parâmetro de peso, os métodos de esparsidade tentam “remover” diretamente certos parâmetros de peso. O princípio da poda de modelo é reduzir o número de parâmetros e a carga computacional no modelo, eliminando pesos “não importantes”, enquanto tenta manter a precisão do modelo.
O artigo [17] introduz primeiro o método de poda de pesos: todos os pesos abaixo de um certo limiar são podados, seguido de ajuste fino até que a precisão atinja o nível desejado. Os autores deste artigo realizaram experimentos em LeNet, AlexNet e VGGNet para verificar a eficácia da poda.
Outra conclusão sobre as regularizações L1 e L2 sugere que a regularização L1 tem melhor desempenho sem ajuste fino, enquanto a regularização L2 tem melhor desempenho com ajuste fino. Além disso, as camadas iniciais da rede são mais sensíveis à poda, tornando uma abordagem de poda iterativa preferível. Além disso, com base em experimentos, os autores propõem a hipótese do Lottery Ticket.
A Hipótese do Lottery Ticket afirma que, para uma rede pré-treinada, existe uma sub-rede que pode alcançar precisão semelhante à rede original sem exceder as rodadas de treinamento da rede original. Essa sub-rede é semelhante a ganhar um bilhete de loteria.
Para restaurar a precisão do modelo, normalmente é necessário retreinar o modelo após a poda. O pipeline típico de três estágios para poda de modelo consiste em etapas de treinamento, poda e ajuste fino, com mudanças na conectividade da rede antes e depois da poda, conforme mostrado na figura abaixo.
Enquanto isso, de acordo com os objetos que podem ser esparsificados em modelos de deep learning, a esparsidade em redes neurais profundas inclui principalmente esparsidade de peso, esparsidade de ativação e esparsidade de gradiente.
A introdução acima é uma breve descrição da esparsidade. A seguir, compartilharemos em três partes a proposição chave “Como o LLM Acelera a Inferência Através da Esparsidade.” A primeira parte, “Como os Grandes Modelos Podam”, será discutida. A segunda parte abordará “Como Acelerar a Inferência Usando Esparsidade de Ativação”, e a terceira parte se aprofundará em “O Impacto dos Compiladores de Esparsidade na Inferência de LLM.”
Neste guia abrangente, exploraremos a parte um, “Revelando Técnicas de LLM-Pruner: Dobrando a Velocidade de Inferência”, de autoria de Zachary, da equipe novita.ai.
Como os LLMs são Podados
LLMs frequentemente têm escalas de centenas de bilhões de parâmetros, tornando métodos convencionais de retreinamento ou poda iterativa impraticáveis. Portanto, métodos como poda iterativa e a hipótese do lottery ticket [2,3] só podem ser aplicados a modelos de menor escala.
A poda pode ser efetivamente aplicada a tarefas de visão e modelos de linguagem de menor escala. No entanto, os métodos de poda ideais requerem um retreinamento extenso do modelo para recuperar a perda de precisão causada pela remoção de elementos podados. Portanto, ao lidar com modelos da escala do GPT, o custo também se torna proibitivamente alto. Embora existam alguns métodos de poda one-shot que comprimem modelos sem a necessidade de retreinamento, seu custo computacional é muito alto para ser aplicado a modelos com bilhões de parâmetros.
Recentemente, houve avanços nas técnicas de poda para LLMs, que serão discutidos por sua vez neste blog.
SparseGPT
SparseGPT[12] é a primeira técnica precisa de poda one-shot no cenário de LLM que pode operar efetivamente em modelos com escalas de 100–1000 bilhões de parâmetros. O princípio de funcionamento do SparseGPT simplifica o problema de poda em uma instância de regressão esparsa em grande escala. Baseia-se em novos solucionadores de regressão esparsa aproximada para resolver problemas de compressão hierárquica, e sua eficiência é suficiente para executar no maior modelo GPT (175B parâmetros) usando uma única GPU em questão de horas. Além disso, o SparseGPT alcança alta precisão sem exigir qualquer ajuste fino, e a perda de precisão após a poda pode ser insignificante. Por exemplo, quando executado nos maiores modelos de linguagem generativa publicamente disponíveis (OPT-175B e BLOOM-176B), o SparseGPT atinge 50–60% de esparsidade em testes one-shot, com perda mínima de precisão medida por perplexidade ou precisão de teste zero-shot.
Para código de engenharia, consulte o projeto: https://github.com/IST-DASLab/sparsegpt
A Figura 1 apresenta os resultados experimentais, destacando dois pontos principais: em primeiro lugar, como mostrado na Figura 1 (esquerda), o SparseGPT é capaz de podar até 60% de esparsidade uniforme por camada nas variantes de 175B parâmetros da família OPT, com perda mínima de precisão. Em contraste, a única linha de base one-shot conhecida que funciona nesta escala — Poda por Magnitude — mantém a precisão apenas até 10% de esparsidade e colapsa completamente além de 30% de esparsidade.
Em segundo lugar, conforme ilustrado na Figura 2 (direita), o SparseGPT também pode impor precisamente esparsidade em padrões esparsos semi-estruturados mais rigorosos, porém amigáveis ao hardware, como 2:4 e 4:8. Embora esses padrões frequentemente acarretem perda adicional de precisão em comparação com linhas de base densas, particularmente para modelos menores, as acelerações computacionais podem ser inferidas diretamente desses padrões esparsos. Além disso, a esparsidade induzida pela técnica pode se misturar bem com compressão adicional obtida através de quantização.
LLM-Pruner
LLM-Pruner[13] é um método de poda estruturada que remove seletivamente estruturas de acoplamento não essenciais com base em informações de gradiente, maximizando a esparsidade enquanto retém a maior parte da funcionalidade do LLM. O LLM-Pruner, através do LoRA, restaura eficientemente o desempenho de modelos podados com apenas 3 horas e 50K dados.
O LLM-Pruner é o primeiro framework projetado especificamente para poda estruturada de LLMs, com as vantagens resumidas a seguir: (i) Compressão independente de tarefa, onde modelos de linguagem comprimidos mantêm sua capacidade como solucionadores multitarefa. (ii) Demanda reduzida por corpus de treinamento original, com compressão exigindo apenas 50.000 amostras publicamente disponíveis, reduzindo significativamente o orçamento para aquisição de dados de treinamento. (iii) Compressão rápida, com o processo de compressão concluído em três horas. (iv) Framework de poda estruturada automática, onde todas as dependências estruturais são agrupadas sem necessidade de qualquer design manual.
Para avaliar a eficácia do LLM-Pruner, experimentos extensivos foram conduzidos em três modelos de linguagem de grande escala: LLaMA-7B, Vicuna-7B e ChatGLM-6B. Modelos comprimidos foram avaliados usando nove conjuntos de dados para avaliar a qualidade da geração e o desempenho de classificação zero-shot de modelos podados.
Referenciando a tabela abaixo, podar o LLaMA-7B em 20% usando LLM-Pruner com 2,59 milhões de amostras resultou em uma diminuição mínima no desempenho do modelo, mas um aumento notável de 18% na velocidade de inferência.

Resultados do LLM-Pruner com 2,59M amostras
Wanda
Wanda[14], um método de poda baseado em pesos e ativações, é uma abordagem nova, simples e eficaz com o objetivo de induzir esparsidade em LLMs pré-treinados. Inspirado por observações recentes de características de valor significativo em LLMs, o Wanda poda pesos multiplicando cada saída pela ativação de entrada correspondente pelo valor quantizado mínimo. Notavelmente, o Wanda não requer retreinamento ou atualizações de peso, e LLMs podados podem ser usados como estão. A avaliação do Wanda em LLaMA e LLaMA-2 valida sua superioridade sobre linhas de base estabelecidas de poda por magnitude, demonstrando competitividade em comparação com métodos recentes que envolvem atualizações densas de peso.
Para o código de engenharia, consulte o projeto: https://github.com/locuslab/wanda
Perplexidade WikiText de modelos LLaMA e LLaMA-2 podados. Wanda tem desempenho competitivo em relação ao melhor método anterior SparseGPT, sem introduzir qualquer atualização de peso.
Referindo-se à figura acima, Wanda e SparseGPT demonstram desempenho comparável na poda de modelos.
Desvantagens dos Métodos de Poda Convencionais:
- Suporte de Hardware: Alcançar aceleração de tempo de relógio através de esparsidade não estruturada é desafiador devido a dificuldades conhecidas com hardware moderno. Por exemplo, desenvolvimentos recentes como SparseGPT alcançaram 60% de esparsidade não estruturada através de poda zero-shot, mas não resultaram em efeitos significativos de aceleração de tempo de relógio.
- Desafios de Implantação: Atender a requisitos específicos através de esparsidade de modelo em contextos como In-Context Learning apresenta desafios. Embora muitos trabalhos tenham demonstrado a eficácia da poda específica de tarefa, manter modelos diferentes para cada tarefa entra em conflito com o próprio posicionamento do LLM, representando obstáculos de implantação.
Conclusão:
Em resumo, métodos inovadores de poda como SparseGPT, LLM-Pruner e Wanda oferecem novas perspectivas e meios técnicos para podar grandes modelos enquanto mantêm alto desempenho. No entanto, ainda são necessárias mais pesquisas e exploração para enfrentar desafios no suporte de hardware e aplicações práticas. No próximo post do blog, exploraremos a segunda parte: “Como Acelerar a Inferência Usando Esparsidade de Ativação.”
Artigos de Referência
[1]Deja Vu: Contextual Sparsity for Efficient LLMs at Inference Time
[4]The Hardware Lottery
[6]Rethinking the Role of Scale for In-Context Learning: An Interpretability-based Case Study at 66 Billion Scale
[12]SparseGPT: Massive Language Models Can Be Accurately Pruned in One-Shot
[13]LLM-Pruner: On the Structural Pruning of Large Language Models
[14]A Simple and Effective Pruning Approach for Large Language Models
[17]Learning both Weights and Connections for Efficient Neural Networks
novita.ai fornece API Stable Diffusion e centenas de APIs rápidas e mais baratas de geração de imagens por IA para 10.000 modelos. 🎯 Geração mais rápida em apenas 2s, Pagamento Conforme o Uso, a partir de $0,0015 por imagem padrão, você pode adicionar seus próprios modelos e evitar manutenção de GPU. Gratuito para compartilhar extensões de código aberto.
Leitura recomendada
