1 pontos por GN⁺ 2024-01-23 | 1 comentários | Compartilhar no WhatsApp

Fazendo fine-tuning eficiente de LLMs com a técnica LoRA

  • LoRA (Low-Rank Adaptation) é uma técnica para fazer fine-tuning de LLMs (Large Language Models) de forma mais eficiente.
  • Em vez de ajustar todos os parâmetros da rede neural, o LoRA atualiza apenas algumas matrizes de baixa rank.

Acompanhando os exemplos de código

  • Todo o código apresentado no artigo pode ser encontrado no Studio correspondente.
  • Clique em "Run" para obter uma cópia completa do ambiente de código e deixar tudo pronto para executar os arquivos.

Entendendo o LoRA

  • LLMs pré-treinados são chamados de modelos base por causa de sua versatilidade em diferentes tarefas.
  • Ajustar um LLM pré-treinado para um conjunto de dados ou tarefa específica é algo feito por meio de fine-tuning.
  • O LoRA oferece uma alternativa mais eficiente ao aproximar as mudanças nos pesos das camadas durante o treinamento em um formato de baixa rank.

Codificando o LoRA do zero

  • A camada LoRA pode ser implementada em PyTorch da seguinte forma.
class LoRALayer(torch.nn.Module):
  def __init__(self, in_dim, out_dim, rank, alpha):
    super().__init__()
    self.A = torch.nn.Parameter(...)
    self.B = torch.nn.Parameter(...)
    self.alpha = alpha

  def forward(self, x):
    return self.alpha * (x @ self.A @ self.B)
  • O LoRA é aplicado principalmente às camadas lineares (feedforward) da rede neural.

Fazendo fine-tuning com LoRA -- exemplo prático

  • O LoRA pode ser aplicado a vários tipos de redes neurais, não apenas GPTs ou modelos de geração de imagem.
  • É apresentado um exemplo prático usando um pequeno modelo BERT em uma tarefa de classificação de texto.

Comparação com o fine-tuning tradicional

  • Com a configuração padrão do LoRA, foi alcançada uma acurácia de teste de 89,44%.
  • Em comparação com o fine-tuning tradicional, o LoRA mostrou desempenho melhor com menos parâmetros.

Otimizando a configuração do LoRA

  • É possível melhorar o desempenho ajustando as configurações de hiperparâmetros do LoRA.
  • Dá para encontrar a melhor configuração experimentando diferentes combinações de hiperparâmetros.

Conclusão

  • Ao codificar o LoRA do zero e fazer fine-tuning do modelo DistilBERT em uma tarefa de classificação, confirmou-se que o LoRA apresenta desempenho melhor do que fazer fine-tuning apenas da última camada do modelo.

Opinião do GN⁺

  • O LoRA é uma técnica importante para fazer fine-tuning eficiente de grandes modelos de linguagem e tem potencial para reduzir custos computacionais à medida que o tamanho dos modelos cresce.
  • Por meio de exemplos práticos, é possível entender como aplicar o LoRA e desenvolver a capacidade de usá-lo em problemas reais.
  • O processo de ajustar os hiperparâmetros do LoRA para otimizar o desempenho mostra uma abordagem comum no tuning de modelos de machine learning.

1 comentários

 
GN⁺ 2024-01-23
Comentários no Hacker News
  • Estou acompanhando a tecnologia por meio do LLMs 101 do Maxime Labonne. Ainda acho estranho que, em ciência da computação, ainda se diga algo como "não sabemos exatamente como os hiperparâmetros afetam o resultado, então tente vários valores e encontre o melhor".
  • LoRA e LoRa são coisas diferentes, e há frustração com a confusão causada pelo uso da mesma sigla.
  • Ainda não está claro quando se deve fazer fine-tuning. Antes eu pensava nisso como algo para mudar o comportamento do modelo, mas ultimamente parece que algumas empresas estão usando fine-tuning para adicionar conhecimento.
  • Há uma pergunta sobre quais são os principais casos de uso de fine-tuning.
  • É um bom artigo sobre LoRA. Não sou especialista na área, mas entendo que, no artigo original, o LoRA era aplicado apenas à última camada densa. Vale notar que, no QLoRA, esse método é usado e parece haver efeitos interessantes.
  • Não tenho certeza de que entendo por que o LoRA funciona. Consigo entender aplicá-lo à última camada, mas não entendo a lógica de aplicá-lo repetidamente a cada camada linear. Pergunto se alguém pode explicar a intuição.
  • Gostaria que o protocolo sem fio LoRa fosse open source.
  • Eu esperava que fosse algo sobre rádio definido por software, mas ainda assim é interessante.
  • Adicionei um exercício para implementar o forward pass do LoRA do zero. A ideia do LoRA é bonita, e a implementação é bem simples.
  • Há uma pergunta sobre qual é a biblioteca mais popular para fine-tuning.
  • Prefiro a abordagem baseada em configuração do Axolotl a começar do zero. O Axolotl oferece suporte a mistral, llama-2 e a muitas técnicas mais recentes.
  • O foco está em fine-tuning centrado em dados, concentrando-se em coletar e fazer a curadoria dos dados de fine-tuning em vez de aprender LoRA do zero.