SparseGPT: menos parâmetros é melhor?

Feb 09 2023
Como se livrar de 100 bilhões de parâmetros e inferir alegremente em uma GPU
Qual é a limitação dos modelos de linguagem? Ouvimos falar das maravilhas do GPT3, LaMDA e assim por diante, do suposto número gigantesco de parâmetros no GPT4 (mas parece que são apenas rumores). Por outro lado, mais parâmetros também significam que ele ocupa mais espaço e também precisa de mais hardware de alto desempenho para treiná-lo (sem falar no custo e no consumo).
imagem feita pelo autor usando difusão estável

Qual é a limitação dos modelos de linguagem? Ouvimos falar das maravilhas do GPT3 , LaMDA , e assim por diante, do suposto número gigantesco de parâmetros no GPT4 (mas parece que são apenas rumores). Por outro lado, mais parâmetros também significam que ele ocupa mais espaço e também precisa de mais hardware de alto desempenho para treiná-lo (sem falar no custo e no consumo).

A família de transformadores pré-treinados generativos (GPT) é uma das famílias mais proeminentes de modelos de linguagem, mas não a única. Os modelos de linguagem (LMs) demonstraram ser capazes de uma variedade de tarefas e os LMs amplos mostraram comportamentos surpreendentes, como aprendizado no contexto. Por outro lado, no entanto, eles não são acessíveis como treinamento ou inferência.

O consórcio BigScience tentou democratizar o acesso aos LMs com a publicação do BLOOM. Antes do BLOOM, todos os LMs eram treinados por grandes empresas (Google, Microsoft, NVIDIA, OpenAI). O BLOOM é um recurso institucional e está disponível no HuggingFace. Ele tem apenas um pequeno problema - tem 175 bilhões de parâmetros grandes (requer 320 GB de espaço e “pelo menos cinco GPUs A100 com 80 GB de memória cada para inferência”)

Por outro lado, tivemos o StableDiffusion , um modelo de código aberto que até superou o DALL-E da marca OpenAI e que todos podemos usar inferência em nossa GPU (se ela tiver pelo menos 8 GB de memória). É por isso que muitas pessoas se perguntam se o código aberto funcionou para a conversão de texto em imagem, quando será possível para o LM?

Este artigo parece ter encontrado uma resposta. Vamos descobrir juntos

Como explicam os autores, a maioria das abordagens atuais depende da quantização, mas isso reduz a precisão do modelo. No entanto, existe outra maneira de reduzir o tamanho e o peso de um modelo. Poda .

O conceito de poda não é novo. a ideia na verdade se originou com árvores de decisão, onde ramificações inúteis foram cortadas (ou mesmo como uma técnica para reduzir o overfitting). No caso de redes neurais, isso significa remover pesos ( remoção não estruturada ) ou linhas/colunas inteiras das matrizes de peso ( remoção estruturada ). no entanto, essas abordagens requerem retreinamento extensivo (porque, caso contrário, a precisão é prejudicada).

a imagem é daqui do pixabay

Portanto, queremos uma abordagem que nos permita fazer a remoção sem retreinar o modelo (remoção única). Infelizmente, essas abordagens eram muito complexas computacionalmente para modelos com bilhões de parâmetros :

Neste artigo, propomos o SparseGPT, o primeiro método preciso de corte único que funciona eficientemente na escala de modelos com 10 a 100 bilhões de parâmetros. O SparseGPT funciona reduzindo o problema de remoção a uma instância extremamente grande de regressão esparsa. Ele é baseado em um novo solucionador de regressão esparsa aproximada, usado para resolver um problema de compactação em camadas, que é eficiente o suficiente para ser executado em poucas horas nos maiores modelos GPT disponíveis abertamente (parâmetros 175B), usando uma única GPU. Ao mesmo tempo, o SparseGPT é preciso o suficiente para reduzir a precisão insignificante após a remoção, sem nenhum ajuste fino. ( papel original )

“Esquerda: Comparação de SparseGPT contra redução de magnitude em OPT-175B. Direita: Comprimindo toda a família de modelos OPT (135M, 350M, . . . , 66B, 175B) para diferentes padrões de dispersão usando SparseGPT” — fonte da imagem: artigo original

Em geral, podemos resumir a contribuição deste artigo:

  • o modelo pode ser reduzido em 50-60% sem perder muita precisão (enquanto os métodos anteriores colapsaram em mais de 30% da esparsidade).
  • * Seu método é compatível com métodos de compressão subseqüentes, como quantização.
  • O método é local (baseado em uma atualização dos pesos de uma camada) e o modo generaliza com a magnitude do modelo (modelos maiores podem ser mais esparsos sem sacrificar os pesos).

O primeiro problema é que a otimização dessa abordagem requer várias aproximações cuidadosas para reduzir a complexidade e o tempo de execução, de modo que ela seja aplicada ao transformador.

A ideia é fazer uma poda independente das diferentes linhas da matriz de pesos, mas isso apresenta desafios

“Ilustração do desafio RowHessian. As linhas são podadas independentemente, os pesos podados estão em branco. A informação hessiana é usada para reconstrução de peso. Como as máscaras podem ser diferentes por linha, o cálculo inverso deve ser executado independentemente para cada linha.” fonte da imagem: artigo original

Resumidamente, a seleção da máscara de poda é uma variação de AdaPrune, enquanto subsequentemente os pesos são podados de forma incremental em cada coluna usando inversos Hessianos.

fonte da imagem: artigo original
fonte da imagem: artigo original

Os autores usaram a família de modelos OPT e BLOOM neste estudo. OPT, de fato, permite que eles usem diferentes modelos de 125M a 175B para que possam avaliar a lei de escala.

Eles usaram o WikiTest2 (um conjunto de dados frequentemente usado como referência para tarefas de NLP) como seu conjunto de dados. Os autores verificaram a perplexidade após usar o algoritmo SparseGPT ou esparsidade não estruturada e analisaram o impacto em modelos de tamanhos diferentes. Os resultados mostram que a esparsidade entra em colapso com a poda não estruturada e não é viável com grandes LMs.

Em contraste, SparseGPT mostra uma tendência diferente:

Em geral, há uma clara tendência de modelos maiores serem significativamente mais fáceis de esparificar, o que especulamos que pode ser devido a eles serem mais superparametrizados e também mais resistentes a ruídos em geral. Acreditamos que uma investigação mais detalhada desse fenômeno seria um ótimo tópico para trabalhos futuros. ( papel original )

fonte da imagem: artigo original

Em seguida, os autores examinaram mais de perto grandes LMs usando BLOOM e OPT 175B, observando que com SparseGPT eles conseguiram obter uma perplexidade razoável mesmo com 80% de esparsidade. Em outras palavras:

Notavelmente, o SparseGPT é capaz de remover cerca de 100 bilhões de pesos desses modelos, com impacto limitado na precisão do modelo.

“Figura 5: Esquerda: compactando uniformemente o BLOOM-176B em vários níveis de esparsidade com SparseGPT e redução de magnitude, respectivamente. Direita: esparsidade de 50% + compressão conjunta de quantização de 4 bits versus 3 bits na família OPT” — fonte da imagem: artigo original

Para completar esta análise, os autores também compararam modelos densos (não podados) com modelos após a aplicação de seu algoritmo. Os resultados mostram estar de acordo com o que foi visto antes, com a poda não afetando muito os resultados.

fonte da imagem: artigo original

Em conclusão, os autores mostraram um novo algoritmo que consegue reduzir bastante o número de pesos do modelo (até 50–60%) sem afetar seriamente o desempenho do modelo. Isso permitirá no futuro reduzir as necessidades computacionais para usar grandes LMs. Também reduz muito o custo de inferência (praticamente até 100 B de parâmetros zerados).

Outro resultado interessante é que t modelos maiores são mais fáceis de esparificar. De fato, à medida que o número de parâmetros aumenta, a queda de precisão relativa para o modelo esparso é menor (“até o ponto em que a indução de 50% de esparsidade resulta em praticamente nenhuma diminuição de precisão nos modelos maiores”).

Embora alguns artigos apontem que esses modelos grandes são mal ajustados. Portanto, permanece uma questão em aberto se o fato de tantos parâmetros poderem ser definidos como zero também não é derivado de subajuste.

Gaspacho: versão densa de tomate esparso. mago por Dennis Klein em unsplash.com

Os autores também sugerem perspectivas para o futuro:

Um caminho natural para trabalhos futuros seria investigar mecanismos de ajuste fino para tais modelos de grande escala, o que permitiria maior recuperação de precisão. Conjecturamos que isso deve ser possível e que provavelmente pelo menos 80-90% de esparsidade pode ser alcançado com poda progressiva e ajuste fino. Outra extensão que planejamos investigar é a aplicabilidade de nossas abordagens durante o treinamento, para reduzir o custo computacional de pré-treinamento desses modelos massivos. ( papel original )

Estou esperando que eles disponibilizem a versão podada de uma forma de código aberto para testá-la.

Se você achou isso interessante:

Você pode procurar meus outros artigos, também pode se inscrever para ser notificado quando eu publicar artigos e também pode se conectar ou entrar em contato comigo no LinkedIn . Se você quiser me apoiar, bata palmas e compartilhe , ou também pode se inscrever aqui (você pode acessar todas as histórias no Medium e eu ganho uma pequena comissão sem nenhum custo extra para você).

Aqui está o link para meu repositório GitHub, onde pretendo coletar código e muitos recursos relacionados a aprendizado de máquina, inteligência artificial e muito mais.

ou você pode estar interessado em um dos meus artigos recentes:

Tudo menos tudo o que você precisa saber sobre ChatGPT AI permite projetar novas proteínas a partir do zero Crie seu aplicativo de pintura com AI e Streamlit