Artigos · arXiv 2106.09685
LoRA: Low-Rank Adaptation of Large Language Models
Publicado em cs.CLcs.AIcs.LG arXivPDF
Resumo em três linhas
- 🎯 O ajuste fino completo de modelos de linguagem massivos como o GPT-3 175B exige retreinar e armazenar bilhões de parâmetros por tarefa downstream, criando gargalos proibitivos de armazenamento, VRAM e implantação.
- 🔧 Congela matrizes de pesos pré-treinados e injeta matrizes treináveis de decomposição de baixo posto () em camadas densas do Transformer, escalando o produto por e permitindo a fusão na implantação sem latência adicional.
- 📈 Para o GPT-3 175B, o LoRA reduz os parâmetros treináveis em 10.000x e a VRAM em 3x (de 1,2TB para 350GB), igualando ou superando o fine-tuning completo no GLUE, WikiSQL e SAMSum.
Resumo
Um paradigma importante do processamento de linguagem natural consiste no pré-treinamento em larga escala em dados de domínio geral e na adaptação para tarefas ou domínios específicos. À medida que pré-treinamos modelos maiores, o ajuste fino completo (full fine-tuning), que retreina todos os parâmetros do modelo, torna-se menos viável. Usando o GPT-3 175B como exemplo — implantar instâncias independentes de modelos ajustados, cada uma com 175B de parâmetros, é proibitivamente caro. Propomos a Adaptação de Baixo Posto, ou LoRA (Low-Rank Adaptation), que congela os pesos do modelo pré-treinado e injeta matrizes treináveis de decomposição de posto em cada camada da arquitetura Transformer, reduzindo significativamente o número de parâmetros treináveis para tarefas downstream. Em comparação com o GPT-3 175B ajustado com Adam, o LoRA pode reduzir o número de parâmetros treináveis em 10.000 vezes e a exigência de memória de GPU em 3 vezes. O LoRA apresenta desempenho igual ou superior ao fine-tuning na qualidade do modelo em RoBERTa, DeBERTa, GPT-2 e GPT-3, apesar de ter menos parâmetros treináveis, um rendimento de treinamento mais alto e, diferentemente dos adapters, nenhuma latência adicional de inferência. Também fornecemos uma investigação empírica sobre a deficiência de posto na adaptação de modelos de linguagem, o que elucida a eficácia do LoRA. Disponibilizamos um pacote que facilita a integração do LoRA com modelos PyTorch e fornecemos nossas implementações e checkpoints de modelos para RoBERTa, DeBERTa e GPT-2 em https://github.com/microsoft/LoRA.
Resumo original (inglês)
An important paradigm of natural language processing consists of large-scale pre-training on general domain data and adaptation to particular tasks or domains. As we pre-train larger models, full fine-tuning, which retrains all model parameters, becomes less feasible. Using GPT-3 175B as an example -- deploying independent instances of fine-tuned models, each with 175B parameters, is prohibitively expensive. We propose Low-Rank Adaptation, or LoRA, which freezes the pre-trained model weights and injects trainable rank decomposition matrices into each layer of the Transformer architecture, greatly reducing the number of trainable parameters for downstream tasks. Compared to GPT-3 175B fine-tuned with Adam, LoRA can reduce the number of trainable parameters by 10,000 times and the GPU memory requirement by 3 times. LoRA performs on-par or better than fine-tuning in model quality on RoBERTa, DeBERTa, GPT-2, and GPT-3, despite having fewer trainable parameters, a higher training throughput, and, unlike adapters, no additional inference latency. We also provide an empirical investigation into rank-deficiency in language model adaptation, which sheds light on the efficacy of LoRA. We release a package that facilitates the integration of LoRA with PyTorch models and provide our implementations and model checkpoints for RoBERTa, DeBERTa, and GPT-2 at https://github.com/microsoft/LoRA.
Guia de leitura
Problema e motivação
A adaptação de modelos de linguagem pré-treinados em larga escala para diversas aplicações downstream depende tradicionalmente do ajuste fino completo (atualizando todos os parâmetros para ). Para arquiteturas massivas como o GPT-3 175B, armazenar e servir cópias independentes de modelos de 175B de parâmetros é proibitivamente caro em termos de armazenamento, memória de GPU e sobrecarga de E/S. Técnicas anteriores de ajuste eficiente de parâmetros apresentam desvantagens evidentes:
- Camadas de Adapter em Série: Inserem módulos de gargalo sequencialmente nos blocos Transformer. Como essas operações sequenciais não podem ser paralelizadas, elas introduzem latência de inferência significativa — desacelerando as passagens diretas (forward passes) em até em regimes de serviço online com GPU única e lotes pequenos.
- Prefix / Prompt Tuning: Otimiza vetores contínuos de prompt anexados ao início das ativações das camadas. Esses métodos são difíceis de otimizar, escalam de maneira não monotônica com o tamanho do prompt e consomem o orçamento de comprimento de sequência que, de outra forma, estaria disponível para o contexto.
O LoRA aborda esse trade-off entre eficiência e qualidade com base na hipótese de que as atualizações de adaptação de pesos possuem um posto intrínseco baixo durante a transferência downstream.
Principais ideias
- Reparametrização de Baixo Posto: Para uma matriz densa congelada , parametriza a atualização de adaptação como , onde , e o posto .
- Zero Latência Adicional de Inferência: Como a reparametrização é linear, as matrizes de baixo posto treinadas podem ser incorporadas diretamente aos pesos pré-treinados () no momento da implantação, resultando em uma arquitetura de inferência idêntica e penalidade de latência zero em comparação ao fine-tuning.
- Modelo Base Compartilhado com Troca a Quente (Hot-Swapping): O modelo congelado grande permanece estático na memória da GPU; alternar entre tarefas exige apenas a troca das matrizes de baixo posto e , reduzindo drasticamente o armazenamento de centenas de gigabytes para dezenas de megabytes.
- Adaptação Seletiva de Atenção: Aplicar a decomposição de posto exclusivamente às projeções de autoatenção (especialmente consulta e valor ) atinge desempenho competitivo mantendo as camadas MLP feed-forward congeladas.
Método
Para uma camada de projeção densa que produz , o LoRA modifica o cálculo para:
Principais detalhes de implementação:
- Inicialização: é inicializada a partir de uma distribuição gaussiana aleatória e é inicializada com zeros, garantindo que no início do treinamento.
- Fator de Escala: A atualização é escalada por , onde é um hiperparâmetro constante. Ao otimizar com Adam, definir igual ao posto inicial evita a necessidade de reajustar as taxas de aprendizado ao experimentar diferentes valores de .
- Fusão na Implantação: Em produção, a matriz de pesos adaptada é explicitamente materializada como . Ao trocar de tarefa, é restaurado por meio de subtração () e fundido com os novos pesos do adapter ().
- Camadas Alvo: Embora aplicável a qualquer camada densa, os experimentos concentram-se principalmente nas projeções de atenção do Transformer (). Aplicar o LoRA com a e produz a eficiência ideal para downstream.
Resultados
- GPT-3 175B: O LoRA reduz os parâmetros treináveis de 175.255,8M para 4,7M ( ou ) ou 37,7M (), diminuindo o tamanho do checkpoint de 350GB para 35MB (uma redução de 10.000x) e a VRAM de treinamento de 1,2TB para 350GB. O throughput de treinamento aumenta em (de 32,5 para 43,1 tokens/s por GPU V100).
- Acurácia Downstream (GPT-3):
- Acurácia de validação de forma lógica no WikiSQL: O fine-tuning completo atinge ; o LoRA (37,7M) atinge .
- Acurácia de validação pareada no MultiNLI: O fine-tuning completo atinge ; o LoRA (4,7M) atinge .
- Sumarização de diálogos no SAMSum: O fine-tuning completo pontua 52,0 / 28,0 / 44,5 no ROUGE-1/2/L; o LoRA (4,7M) atinge 53,8 / 29,8 / 45,9.
- RoBERTa e DeBERTa (Benchmark GLUE): No RoBERTa Large, o LoRA se iguala ao fine-tuning ( vs de pontuação média) utilizando 0,8M de parâmetros contra 355,0M. No DeBERTa XXL (1.5B), o LoRA alcança média de no GLUE com 4,7M de parâmetros em comparação com do fine-tuning completo (1.500,0M de parâmetros).
- Análise do Posto Intrínseco: A análise de similaridade de subespaço revela que as direções singulares principais de para e se sobrepõem fortemente (similaridade normalizada para a dimensão 1). Além disso, amplifica direções que estão presentes, mas não fortemente enfatizadas em , exibindo um fator de amplificação para .
Limitações e questões em aberto
- Processamento em Lote Multitarefa (Multi-Task Batching): Quando os pesos de baixo posto são fundidos em para eliminar a latência de inferência, agrupar entradas para múltiplas tarefas simultaneamente em uma única passagem direta não é trivial.
- Seleção Heurística de Camadas: A prática atual baseia-se em heurísticas empíricas (adaptando e ) em vez de uma metodologia bem definida para determinar quais matrizes adaptar entre as camadas de atenção e MLP.
- Mudanças Extremas de Domínio (Extreme Domain Shifts): Para tarefas downstream que diferem drasticamente da distribuição de pré-treinamento (como a adaptação de um LLM em inglês para um idioma de destino distinto), a adaptação de baixo posto pode se mostrar insuficiente em comparação com uma adaptação de maior posto ou completa.
Termos-chave
- Low-Rank Adaptation (LoRA)
- Um método de ajuste fino eficiente em termos de parâmetros que congela os pesos do modelo base e treina matrizes de decomposição de baixo posto em paralelo com camadas densas.
- Intrinsic Rank
- A baixa dimensionalidade efetiva ou número de vetores singulares necessários para capturar uma adaptação de parâmetros significativa durante a transferência específica de tarefas.
- Adapter Layers
- Módulos externos de gargalo inseridos sequencialmente em blocos Transformer, que introduzem computação sequencial não paralelizável e latência de inferência.
- Prefix Tuning
- Uma estratégia de adaptação que anexa vetores contínuos treináveis aos tokens de entrada ou estados ocultos da camada, reduzindo o contexto disponível para a sequência.
- Weight Folding / Weight Merging
- A adição aritmética de matrizes de baixo posto diretamente à matriz de pesos pré-treinada para eliminar a sobrecarga de execução durante a inferência.
- Grassmann Distance Subspace Similarity
- Uma métrica que mede a sobreposição do espaço gerado pelas colunas entre matrizes de vetores singulares ortonormais de atualizações de adaptação.
- Feature Amplification Factor
- A razão entre a norma de Frobenius de e a projeção de sobre o subespaço singular de , medindo com que intensidade as direções específicas da tarefa são enfatizadas.
Perguntas
Por que o LoRA introduz zero latência adicional de inferência em comparação com os adapters?
Como o LoRA é linear (), o produto de baixo posto pode ser explicitamente computado e adicionado a antes da disponibilização em produção (). A inferência então executa a multiplicação de matrizes padrão sem as camadas de gargalo sequenciais que causam latência em arquiteturas de adapters.
A quais matrizes de pesos do Transformer o LoRA deve ser aplicado?
Experimentos no GPT-3 mostram que adaptar tanto os pesos de projeção de consulta () quanto os de valor () produz o melhor desempenho para um orçamento fixo de parâmetros. Adaptar múltiplas matrizes de atenção com um posto menor (ex.: ) supera alocar todos os parâmetros para um único tipo de matriz com um posto mais alto.
Qual posto $r$ é suficiente para adaptar modelos de linguagem grandes?
Um posto muito pequeno como , ou costuma ser suficiente para tarefas downstream. A análise de similaridade de subespaço revela que os principais vetores singulares aprendidos com postos baixos se sobrepõem significativamente àqueles aprendidos com postos mais altos (como ), enquanto postos mais altos capturam principalmente ruído aleatório de otimização.
Como o LoRA inicializa suas matrizes de baixo posto?
A matriz é inicializada usando uma distribuição gaussiana aleatória, enquanto a matriz é inicializada com zeros. Isso garante que no início do treinamento, mantendo inalterada a passagem direta do modelo pré-treinado.
A explicação desta página foi escrita por IA a partir do artigo e pode conter erros. Consulte o artigo para os detalhes.