Entre em contato

Inteligência artificial

LoRa, QLoRA e QA-LoRA: Adaptabilidade eficiente em grandes modelos de linguagem por meio de fatoração de matriz de baixa classificação

mm

Publicado

 on

LoRA: Adaptação de baixo nível de modelos de linguagem grande

Os Large Language Models (LLMs) conquistaram um nicho único, oferecendo capacidades incomparáveis ​​na compreensão e geração de texto semelhante ao humano. O poder dos LLMs pode ser atribuído ao seu enorme tamanho, muitas vezes com bilhões de parâmetros. Embora esta enorme escala alimente o seu desempenho, ela simultaneamente gera desafios, especialmente quando se trata de adaptação de modelos para tarefas ou domínios específicos. Os caminhos convencionais de gestão de LLMs, como o ajuste fino de todos os parâmetros, apresentam um pesado custo computacional e financeiro, representando assim uma barreira significativa à sua adoção generalizada em aplicações do mundo real.

Em um artigo do artigo anterior, nos aprofundamos no ajuste fino de Large Language Models (LLMs) para adaptá-los a requisitos específicos. Exploramos várias metodologias de ajuste fino, como ajuste fino baseado em instruções, ajuste fino de tarefa única e ajuste fino com eficiência de parâmetros (PEFT), cada um com sua abordagem única para otimizar LLMs para tarefas distintas. No centro da discussão estava a arquitetura do transformador, a espinha dorsal dos LLMs, e os desafios colocados pelas demandas computacionais e de memória para lidar com um grande 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 grandes, classificados por número de parâmetros. Notavelmente: Palma, FLORESCER, etc.

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

Enter Low-Rank Adaptation (LoRA) foi introduzido pela Microsoft neste papel, com o objetivo de mitigar esses desafios e tornar os LLMs mais acessíveis e adaptáveis.

O ponto crucial do LoRA reside em sua abordagem de adaptação do modelo, sem se aprofundar nos meandros do retreinamento de todo o modelo. Ao contrário do ajuste fino tradicional, onde cada parâmetro está sujeito a alterações, o LoRA adota uma rota mais inteligente. Ele congela os pesos do modelo pré-treinado e introduz matrizes de decomposição de classificação treináveis ​​em cada camada da arquitetura do Transformer. Esta 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 LLM

Refletindo sobre a jornada de ajuste do LLM, podem-se identificar diversas estratégias empregadas pelos profissionais 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 se adequar à tarefa específica em questão. No entanto, à medida que os modelos cresceram em tamanho e complexidade, também aumentaram as exigências computacionais desta abordagem.

A próxima estratégia que ganhou força foi o ajuste fino de subconjuntos, uma versão mais contida de sua antecessora. Aqui, apenas um subconjunto dos parâmetros do modelo é ajustado, reduzindo até certo ponto a carga computacional. Apesar dos seus méritos, o ajuste fino do subconjunto ainda não foi capaz de acompanhar a taxa de crescimento do tamanho dos LLMs.

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

Introdução ao LoRA

A classificação de uma matriz nos dá uma ideia das dimensões criadas por suas colunas, sendo determinada pelo número de linhas ou colunas únicas que possui.

  • Matriz de classificação completa: sua classificação corresponde ao menor número entre suas linhas ou colunas.
  • Matriz de classificação baixa: com uma classificação notavelmente menor do que a contagem de linhas e colunas, ela captura menos recursos.

Agora, os grandes modelos compreendem uma compreensão ampla do seu domínio, como a linguagem nos modelos de linguagem. Mas, para ajustá-los para tarefas específicas, muitas vezes só é necessário destacar uma pequena parte desses entendimentos. É aqui que LoRA brilha. Isso sugere que a matriz que apresenta esses ajustes de peso pode ser de classificação inferior, capturando assim menos recursos.

LoRA limita de forma inteligente a classificação desta matriz de atualização, dividindo-a em duas matrizes de classificação menores. Portanto, em vez de alterar toda a matriz de pesos, altera apenas uma parte dela, tornando a tarefa de ajuste fino mais eficiente.

Aplicando LoRA a transformadores

LoRA ajuda a minimizar a carga de treinamento em redes neurais, concentrando-se em matrizes de peso específicas. Na arquitetura do Transformer, determinadas matrizes de peso estão vinculadas ao mecanismo de autoatenção, a saber, Wq, Wk, Wv e Wo, além de mais duas no módulo Multi-Layer Perceptron (MLP).

Arquitetura de transformadores

Arquitetura de Transformadores

 

cabeças de atenção do transformador

Cabeças de atenção do transformador

Explicação matemática por trás do LoRA

Vamos analisar a matemática por trás do LoRA:

  1. Matriz de peso pré-treinada :
    • Tudo começa com uma matriz de peso pré-treinada de dimensões . Isso significa que a matriz tem linhas e colunas.
  2. Decomposição de baixa classificação:
    • Em vez de atualizar diretamente toda a matriz , que pode ser computacionalmente caro, o método propõe uma abordagem de decomposição de baixa classificação.
    • A atualização para pode ser representado como um produto de duas matrizes: e .
      • tem dimensões
      • tem dimensões
    • O ponto chave aqui é que a classificação é bem menor que os dois e , o que permite uma representação mais eficiente computacionalmente.
  3. Training:
    • Durante o processo de treinamento, continua sem alteração. Isso é chamado de “congelamento” dos pesos.
    • Por outro lado, e são os parâmetros treináveis. Isso significa que, durante o treinamento, são feitos ajustes nas matrizes e para melhorar o desempenho do modelo.
  4. Multiplicação e adição:
    • Ambos e a atualização (que é o produto de e ) são multiplicados pela mesma entrada (denotada como ).
    • As saídas dessas multiplicações são então somadas.
    • Este processo é resumido na equação: Aqui, representa a saída final após aplicar as atualizações à entrada .

Resumindo, este método permite uma forma mais eficiente de atualizar uma matriz de peso grande, representando as atualizações usando uma decomposição de baixa classificação, o que pode ser benéfico em termos de eficiência computacional e uso de memória.

Animação LORA

LORA

Inicialização e dimensionamento:

Ao treinar modelos, a forma como inicializamos os parâmetros pode afetar significativamente a eficiência e eficácia do processo de aprendizagem. No contexto da nossa atualização da matriz de pesos usando e :

  1. Inicialização de Matrizes e :
    • Matriz : Esta matriz é inicializada com valores gaussianos aleatórios, também conhecidos como distribuição normal. A lógica por trás do uso da inicialização gaussiana é quebrar a simetria: neurônios diferentes na mesma camada aprenderão características diferentes quando tiverem pesos iniciais diferentes.
    • Matriz : Esta matriz é inicializada com zeros. Ao fazer isso, a atualização começa como zero no início do treinamento. Garante que não haja nenhuma mudança abrupta no comportamento do modelo no início, permitindo que o modelo se adapte gradualmente conforme aprende valores apropriados durante o treinamento.
  2. Dimensionando a saída de :
    • Depois de calcular a atualização , sua saída é escalonada por um fator de onde é uma constante. Ao dimensionar, a magnitude das atualizações é controlada.
    • A escala é especialmente crucial quando a classificação mudanças. Por exemplo, se você decidir aumentar a classificação para obter mais precisão (ao custo da computação), o dimensionamento garante que você não precisará ajustar muitos outros hiperparâmetros no processo. Ele fornece um nível de estabilidade ao modelo.

Impacto prático da LoRA

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

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

Impacto LoRa no ajuste GPT-3

Impacto LoRa no ajuste fino do GPT-3

A metodologia LoRA não só incorpora um avanço significativo no sentido de tornar os LLMs mais acessíveis, mas também sublinha o potencial para colmatar a lacuna entre os avanços teóricos e as 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, o LoRA está preparado para desempenhar um papel fundamental na adoção e implantação mais ampla de LLMs em cenários do mundo real.

QLoRA (Quantizado)

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

Quantização

Quantização

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

Quantização em LLM

Quantização em LLM

Aqui está uma análise mais simples do QLoRA:

  1. Quantização Inicial: Primeiro, o Large Language Model (LLM) é quantizado em até 4 bits, reduzindo significativamente o consumo de memória.
  2. Treinamento LoRA: Em seguida, o treinamento LoRA é realizado, mas na precisão padrão de 32 bits (FP32).

Agora, você deve estar se perguntando: por que voltar para 32 bits para treinamento depois de reduzir para 4 bits? Bem, para treinar adaptadores LoRA com eficácia no FP32, os pesos do modelo também precisam ser revertidos para o FP32. Essa alternância é feita de maneira inteligente e passo a passo para evitar sobrecarregar a memória da GPU.

LoRA encontra sua aplicação prática no Hugging Face Ajuste fino eficiente de parâmetros (PEFT) biblioteca, simplificando sua utilização. Para quem deseja usar o QLoRA, ele é acessível por meio de uma combinação do bits e bytes e bibliotecas PEFT. Além disso, o HuggingFace Biblioteca de Aprendizado por Reforço de Transformador (TRL) facilita o ajuste fino supervisionado com suporte integrado para LoRA. Juntas, essas três bibliotecas fornecem o kit de ferramentas essencial para o ajuste fino de 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íficos.

Após o ajuste fino do QLoRA, os pesos precisam voltar para um formato de alta precisão, o que pode levar à 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 classificação a cada grupo individualmente. Um novo método, denominado Controle de qualidade-LoRA, tenta combinar os benefícios da quantização e da adaptação de baixo escalão, mantendo o processo eficiente e o modelo eficaz para as tarefas desejadas.

Conclusão

Neste artigo abordamos os desafios colocados pelo seu enorme tamanho de parâmetro. Investigamos as práticas tradicionais de ajuste fino e suas demandas computacionais e financeiras associadas. O ponto crucial do LoRA reside na sua capacidade de modificar modelos pré-treinados sem treiná-los totalmente, reduzindo assim os parâmetros treináveis ​​e tornando o processo de adaptação mais econômico.

Também nos aprofundamos brevemente no Quantized LoRA (QLoRA), uma mistura de LoRA e Quantização que reduz o consumo de memória do modelo, mantendo a precisão essencial para o treinamento. Com essas técnicas avançadas, os profissionais estão agora equipados com bibliotecas robustas, facilitando a adoção e implantação mais fácil de LLMs em um espectro de cenários do mundo real.

Matriz

Matriz

Essas estratégias são elaboradas para equilibrar entre 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 recursos de computação e armazenamento.

Passei os últimos cinco anos mergulhando no fascinante mundo do Machine Learning e Deep Learning. Minha paixão e experiência me levaram a contribuir para mais de 50 projetos diversos de engenharia de software, com foco particular em AI/ML. Minha curiosidade contínua também me atraiu para o Processamento de Linguagem Natural, um campo que estou ansioso para explorar mais.