InteligĂȘncia artificial

LoRA, QLoRA e QA-LoRA: Adaptabilidade Eficiente em Modelos de Linguagem Grande por meio da Fatoração de Matrizes de Baixa Ordem

mm
LoRA : Low-Rank Adaptation of Large Language Models

Os Modelos de Linguagem Grande (LLMs) criaram um nicho único, oferecendo capacidades sem precedentes em compreender e gerar textos semelhantes aos humanos. O poder dos LLMs pode ser atribuído ao seu tamanho enorme, que frequentemente alcança bilhões de parâmetros. Embora essa escala seja fundamental para o seu desempenho, também gera desafios, especialmente quando se trata de adaptação de modelos para tarefas ou domínios específicos. As abordagens convencionais de gerenciamento de LLMs, como o ajuste fino de todos os parâmetros, apresentam um ônus computacional e financeiro significativo, o que representa uma barreira significativa para a sua adoção generalizada em aplicações do mundo real.

Em um artigo anterior, exploramos o ajuste fino de Modelos de Linguagem Grande (LLMs) para atender a requisitos específicos. Analisamos várias metodologias de ajuste fino, como Ajuste Fino Baseado em Instruções, Ajuste Fino de Tarefa Única e Ajuste Fino Eficiente de Parâmetros (PEFT), cada uma com sua abordagem única para otimizar LLMs para tarefas distintas. Central à discussão estava a arquitetura do transformador, a espinha dorsal dos LLMs, e os desafios impostos pelas demandas computacionais e de memória de lidar com um vasto número de parâmetros durante o ajuste fino.

ParĂąmetros em LLM

https://huggingface.co/blog/hf-bitsandbytes-integration

A imagem acima representa a escala de vários modelos de linguagem grande, ordenados pelo número de parâmetros. Notavelmente: PaLM, BLOOM, etc.

Até este ano, houve avanços que levaram a modelos ainda maiores. No entanto, ajustar esses modelos gigantescos e de código aberto em sistemas padrão é inviável sem técnicas de otimização especializadas.

Então, entra a Adaptação de Baixa Ordem (LoRA), introduzida pela Microsoft neste artigo, visando mitigar esses desafios e tornar os LLMs mais acessíveis e adaptáveis.

A essência da LoRA reside em sua abordagem para adaptação de modelos sem mergulhar nas complexidades de re-treinar o modelo inteiro. Ao contrário do ajuste fino tradicional, onde todos os parâmetros são sujeitos a alterações, a LoRA adota uma rota mais inteligente. Ela congela os pesos do modelo pré-treinado e introduz matrizes de decomposição de rank treináveis em cada camada da arquitetura do Transformador. Essa abordagem reduz drasticamente o número de parâmetros treináveis, garantindo um processo de adaptação mais eficiente.

A Evolução das Estratégias de Ajuste de LLM

Refletindo sobre a jornada do ajuste de LLM, é possível identificar várias estratégias empregadas por praticantes ao longo dos anos. Inicialmente, o foco estava no ajuste fino dos modelos pré-treinados, uma estratégia que envolve uma alteração abrangente dos parâmetros do modelo para atender às necessidades específicas. No entanto, à medida que os modelos cresceram em tamanho e complexidade, também aumentaram as demandas computacionais dessa abordagem.

A próxima estratégia que ganhou destaque foi o ajuste fino de subconjunto, uma versão mais restrita de sua predecessor. Aqui, apenas um subconjunto dos parâmetros do modelo é ajustado, reduzindo a carga computacional em certa medida. Apesar de seus méritos, o ajuste fino de subconjunto ainda não conseguiu acompanhar a taxa de crescimento do tamanho dos LLMs.

À medida que os praticantes aventuraram-se a explorar avenidas mais eficientes, o ajuste fino completo emergiu como uma abordagem rigorosa, mas gratificante.

Introdução à LoRA

A ordem de uma matriz nos dá uma visão das dimensões criadas por suas colunas, determinada pelo número de linhas ou colunas únicas que ela tem.

  • Matriz de Ordem Completa: Sua ordem corresponde ao menor número entre suas linhas ou colunas.
  • Matriz de Baixa Ordem: Com uma ordem notavelmente menor que tanto o número de linhas quanto o de colunas, ela captura menos recursos.

Agora, os grandes modelos têm uma compreensão ampla de seu domínio, como a linguagem nos modelos de linguagem. No entanto, ajustá-los para tarefas específicas frequentemente requer apenas destacar uma pequena parte dessas compreensões. É aqui que a LoRA brilha. Ela sugere que a matriz que mostra essas ajustes de pesos pode ser uma matriz de baixa ordem, capturando assim menos recursos.

A LoRA limita inteligentemente a ordem da matriz de atualização, dividindo-a em duas matrizes menores de baixa ordem. Portanto, em vez de alterar a matriz de pesos inteira, ela muda apenas uma parte dela, tornando o processo de ajuste fino mais eficiente.

Aplicando a LoRA aos Transformadores

A LoRA ajuda a minimizar a carga de treinamento em redes neurais, focando em matrizes de pesos específicas. Na arquitetura do Transformador, certas matrizes de pesos estão ligadas ao mecanismo de auto-atendimento, nomeadamente Wq, Wk, Wv e Wo, além de duas mais no módulo do Perceptron Multicamada (MLP).

Arquitetura dos Transformadores

Arquitetura dos Transformadores

 

Cabeças de Atenção do Transformador

Cabeças de Atenção do Transformador

Explicação Matemática por trás da LoRA

Vamos desmembrar a matemática por trás da LoRA:

  1. Matriz de Pesos Pré-Treinada :
    • Elle começa com uma matriz de pesos pré-treinada de dimensões . Isso significa que a matriz tem linhas e colunas.
  2. Decomposição de Baixa Ordem:
    • Em vez de atualizar diretamente a matriz inteira , o que pode ser computacionalmente caro, o método propõe uma abordagem de decomposição de baixa ordem.
    • A atualização para pode ser representada como o produto de duas matrizes: e .
      • tem dimensões
      • tem dimensões
    • A chave aqui é que a ordem é muito menor que tanto quanto , o que permite uma representação computacionalmente mais eficiente.
  3. Treinamento:
    • Durante o processo de treinamento, permanece inalterada. Isso é referido como “congelar” os pesos.
    • Por outro lado, e são os parâmetros treináveis. Isso significa que, durante o treinamento, ajustes são feitos nas matrizes e para melhorar o desempenho do modelo.
  4. Multiplicação e Adição:
    • Tanto quanto a atualização (que é o produto de e ) são multiplicados pelo mesmo input (denotado como ).
    • Os resultados dessas multiplicações são então adicionados.
    • Esse processo é resumido na equação: Aqui, representa a saída final após aplicar as atualizações ao input .

Em resumo, esse método permite uma forma mais eficiente de atualizar uma grande matriz de pesos, representando as atualizações por meio de uma decomposição de baixa ordem, o que pode ser benéfico em termos de eficiência computacional e uso de memória.

Animação da LoRA

LoRA

Inicialização e Escala:

Quando se treina modelos, a forma como os parâmetros são inicializados pode afetar significativamente a eficiência e a eficácia do processo de aprendizado. No contexto da nossa atualização da matriz de pesos usando e :

  1. Inicialização das Matrizes e :
    • Matriz : Essa matriz é inicializada com valores Gaussianos aleatórios, também conhecida como distribuição normal. A razão por trás do uso da inicialização Gaussiana é quebrar a simetria: diferentes neurônios na mesma camada aprenderão recursos diferentes quando tiverem pesos iniciais diferentes.
    • Matriz : Essa matriz é inicializada com zeros. Ao fazer isso, a atualização começa como zero no início do treinamento. Isso garante que não haja uma mudança abrupta no comportamento do modelo no início, permitindo que o modelo se adapte gradualmente à medida que aprende valores apropriados durante o treinamento.
  2. Escala da Saída de :
    • Após computar a atualização , sua saída é escalada por um fator de onde é uma constante. Ao escalonar, a magnitude das atualizações é controlada.
    • A escala é especialmente crucial quando a ordem muda. Por exemplo, se você decidir aumentar a ordem para obter mais precisão (com o custo de computação), a escala garante que você não precise ajustar muitos outros hiperparâmetros no processo. Isso fornece um nível de estabilidade ao modelo.

Impacto Prático da LoRA

A LoRA demonstrou seu potencial para ajustar LLMs a estilos artísticos específicos de forma eficiente por pessoas da comunidade de IA. Isso foi notadamente demonstrado na adaptação de um modelo para imitar o estilo artístico de Greg Rutkowski.

Como destacado no artigo com o GPT-3 175B como exemplo. Ter instâncias individuais de modelos ajustados com 175B de parâmetros cada é bastante caro. Mas, com a LoRA, os parâmetros treináveis diminuem 10.000 vezes, e o uso de memória da GPU é reduzido para um terço.

Impacto da LoRA no Ajuste Fino do GPT-3

Impacto da LoRA no Ajuste Fino do GPT-3

A metodologia da LoRA não apenas representa um passo significativo para tornar os LLMs mais acessíveis, mas também destaca o potencial para reduzir a lacuna entre avanços teóricos e aplicações práticas no domínio da IA. Ao aliviar os obstáculos computacionais e promover um processo de adaptação de modelo mais eficiente, a LoRA está bem posicionada para desempenhar um papel fundamental na adoção e implantação mais ampla de LLMs em cenários do mundo real.

QLoRA (Quantizada)

Embora a LoRA seja um divisor de águas na redução das necessidades de armazenamento, ela ainda exige uma GPU robusta para carregar o modelo para treinamento. É aqui que entra a QLoRA, ou LoRA Quantizada, que combina a LoRA com a Quantização para uma abordagem mais inteligente.

Quantização

Quantização

Normalmente, os parâmetros de peso são armazenados em um formato de 32 bits (FP32), significando que cada elemento da matriz ocupa 32 bits de espaço. Imagine se pudéssemos comprimir a mesma informação em apenas 8 ou até 4 bits. Essa é a ideia central por trás da QLoRA. A quantização refere-se ao processo de mapear valores contínuos e infinitos para um conjunto menor de valores finitos e discretos. No contexto dos LLMs, refere-se ao processo de converter os pesos do modelo de tipos de dados de alta precisão para tipos de dados de baixa precisão.

Quantização em LLM

Quantização em LLM

Aqui está uma explicação mais simples da QLoRA:

  1. Quantização Inicial: Primeiro, o Modelo de Linguagem Grande (LLM) é quantizado para 4 bits, reduzindo significativamente a pegada de memória.
  2. Treinamento da LoRA: Em seguida, o treinamento da LoRA é realizado, mas na precisão padrão de 32 bits (FP32).

Agora, você pode se perguntar, por que voltar aos 32 bits para treinamento após reduzir para 4 bits? Bem, para treinar adaptadores da LoRA de forma eficaz em FP32, os pesos do modelo precisam reverter para FP32 também. Essa troca de volta e forth é feita de forma inteligente e passo a passo para evitar sobrecarregar a memória da GPU.

A LoRA encontra sua aplicação prática na biblioteca de Ajuste Fino Eficiente de Parâmetros (PEFT) da Hugging Face, simplificando sua utilização. Para aqueles que desejam usar a QLoRA, ela está acessível por meio de uma combinação das bibliotecas bitsandbytes e PEFT. Além disso, a biblioteca de Aprendizado de Reforço de Transformadores (TRL) da HuggingFace facilita o ajuste fino supervisionado com suporte integrado para a LoRA. Juntas, essas três bibliotecas fornecem a ferramenta essencial para ajustar um modelo pré-treinado selecionado, permitindo a geração de descrições de produtos persuasivas e coerentes quando solicitadas com instruções de atributos específicas.

Após o ajuste fino da QLoRA, os pesos precisam reverter para um formato de alta precisão, o que pode levar a perda de precisão e falta de otimização para acelerar o processo.

Uma solução proposta é agrupar a matriz de pesos em segmentos menores e aplicar quantização e adaptação de baixa ordem a cada grupo individualmente. Um novo método, nomeado QA-LoRA, tenta combinar os benefícios da quantização e da adaptação de baixa ordem, mantendo o processo eficiente e o modelo eficaz para as tarefas desejadas.

Conclusão

Neste artigo, tocamos nos desafios impostos pelo tamanho enorme dos parâmetros. Discutimos práticas de ajuste fino tradicionais e suas demandas computacionais e financeiras associadas. A essência da LoRA reside em sua capacidade de modificar modelos pré-treinados sem re-treinar o modelo inteiro, reduzindo assim os parâmetros treináveis e tornando o processo de adaptação mais rentável.

Também exploramos brevemente a QLoRA (Quantizada), uma combinação da LoRA com a Quantização, que reduz a pegada de memória do modelo enquanto mantém a precisão essencial para o treinamento. Com essas técnicas avançadas, os praticantes agora estão equipados com bibliotecas robustas, facilitando a adoção e a implantação de LLMs em uma ampla gama de cenários do mundo real.

Matrix

Matrix

Essas estratégias são projetadas para equilibrar a capacidade de tornar os LLMs adaptáveis para tarefas específicas e garantir que os processos de ajuste fino e implantação não sejam excessivamente exigentes em termos de computação e recursos de armazenamento.

Eu passei os Ășltimos cinco anos me imergindo no fascinante mundo de Aprendizado de MĂĄquina e Aprendizado Profundo. Minha paixĂŁo e expertise me levaram a contribuir para mais de 50 projetos de engenharia de software diversificados, com um foco particular em IA/ML. Minha curiosidade contĂ­nua tambĂ©m me levou em direção ao Processamento de Linguagem Natural, um campo que estou ansioso para explorar mais.