Engenharia de prompts

Compreendendo o Ajuste Fino de LLM: Personalizando Modelos de Linguagem Grande para suas Requisitos Únicos

mm
Adicione Unite.AI às suas fontes preferidas no Google
LLM Fine tuning representation - Midjourney

À medida que estamos em setembro de 2023, o cenário dos Modelos de Linguagem Grande (LLM) ainda está testemunhando o surgimento de modelos, incluindo Alpaca, Falcon, Llama 2, GPT-4 e muitos outros.

Um aspecto importante de aproveitar o potencial desses LLMs reside no processo de ajuste fino, uma estratégia que permite a personalização de modelos pré-treinados para atender a tarefas específicas com precisão. É por meio desse ajuste fino que esses modelos podem verdadeiramente se alinhar com requisitos individualizados, oferecendo soluções inovadoras e personalizadas para necessidades únicas.

No entanto, é essencial notar que nem todas as vias de ajuste fino são criadas igualmente. Por exemplo, acessar as capacidades de ajuste fino do GPT-4 vem com um preço premium, exigindo uma assinatura paga que é relativamente mais cara em comparação com outras opções disponíveis no mercado. Por outro lado, o domínio de código aberto está repleto de alternativas que oferecem um caminho mais acessível para aproveitar o poder dos modelos de linguagem grande. Essas opções de código aberto democratizam o acesso à tecnologia de IA avançada, fomentando inovação e inclusividade no cenário de IA em rápida evolução.

Por que o ajuste fino de LLM é importante?

O ajuste fino de LLM é mais do que uma melhoria técnica; é um aspecto crucial do desenvolvimento do modelo de LLM que permite uma aplicação mais específica e refinada em várias tarefas. O ajuste fino ajusta os modelos pré-treinados para se adequar melhor a conjuntos de dados específicos, melhorando seu desempenho em tarefas particulares e garantindo uma aplicação mais direcionada. Ele traz à tona a notável capacidade dos LLMs de se adaptar a novos dados, demonstrando flexibilidade que é vital no crescente interesse em aplicações de IA.

O ajuste fino de modelos de linguagem grande abre muitas oportunidades, permitindo que eles sejam excelentes em tarefas específicas, desde análise de sentimento até revisões de literatura médica. Ao ajustar o modelo base para um caso de uso específico, desbloqueamos novas possibilidades, melhorando a eficiência e a precisão do modelo. Além disso, facilita uma utilização mais econômica dos recursos do sistema, pois o ajuste fino requer menos poder computacional em comparação com o treinamento de um modelo do zero.

À medida que mergulhamos mais fundo nesse guia, discutiremos as complexidades do ajuste fino de LLM, fornecendo uma visão geral abrangente baseada nos últimos avanços e práticas recomendadas no campo.

Ajuste Fino Baseado em Instruções

A fase de ajuste fino no ciclo de vida da IA Geradora, ilustrada na figura abaixo, é caracterizada pela integração de entradas e saídas de instruções, juntamente com exemplos de raciocínio passo a passo. Essa abordagem facilita o modelo a gerar respostas que não apenas são relevantes, mas também precisamente alinhadas com as instruções específicas inseridas nele. É durante essa fase que os modelos pré-treinados são adaptados para resolver tarefas e casos de uso distintos, utilizando conjuntos de dados personalizados para melhorar sua funcionalidade.

Ciclo de Vida da IA Geradora - Ajuste Fino, Engenharia de Prompt e RLHF

Ciclo de Vida da IA Geradora – Ajuste Fino

Ajuste Fino de Tarefa Única

O ajuste fino de tarefa única se concentra em aprimorar a especialização do modelo em uma tarefa específica, como a suma. Essa abordagem é particularmente benéfica na otimização de fluxos de trabalho que envolvem documentos substanciais ou fios de conversa, incluindo documentos legais e bilhetes de suporte ao cliente. Notavelmente, esse ajuste fino pode alcançar melhorias significativas de desempenho com um conjunto relativamente pequeno de exemplos, variando de 500 a 1000, em contraste com os bilhões de tokens utilizados na fase de pré-treinamento.

Ilustração de Exemplo de Ajuste Fino de Tarefa Única

Ilustração de Exemplo de Ajuste Fino de Tarefa Única

 

Fundamentos do Ajuste Fino de LLM: Arquitetura de Transformer e Além

A jornada de compreensão do ajuste fino de LLM começa com a compreensão dos elementos fundamentais que constituem os LLMs. No coração desses modelos está a arquitetura de transformer, uma rede neural que utiliza mecanismos de autoatenção para priorizar o contexto das palavras sobre sua proximidade em uma sentença. Essa abordagem inovadora facilita uma compreensão mais profunda das relações distantes entre tokens na entrada.

À medida que navegamos pelas complexidades dos transformadores, encontramos um processo de várias etapas que começa com o codificador. Essa fase inicial envolve a tokenização da entrada e a criação de vetores de incorporação que representam a entrada e sua posição na sentença. As etapas subsequentes envolvem uma série de cálculos usando matrizes conhecidas como Pesquisa, Valor e Chave, culminando em uma pontuação de autoatenção que dita o foco em diferentes partes da sentença e vários tokens.

Arquitetura de Transformer

Arquitetura de Transformer

O ajuste fino é uma fase crítica no desenvolvimento dos LLMs, um processo que envolve fazer ajustes sutis para alcançar saídas mais desejáveis. Essa etapa, embora essencial, apresenta um conjunto de desafios, incluindo as demandas computacionais e de armazenamento de lidar com um vasto número de parâmetros. O Ajuste Fino Eficiente de Parâmetro (PEFT) oferece técnicas para reduzir o número de parâmetros a serem ajustados, simplificando o processo de treinamento.

Pré-Treinamento de LLM: Estabelecendo uma Base Forte

Nas etapas iniciais do desenvolvimento de LLM, o pré-treinamento ocupa o centro do palco, utilizando transformadores superparametrizados como a arquitetura fundamental. Esse processo envolve modelar a linguagem natural de várias maneiras, como bidirecional, autoregressiva ou sequência-para-sequência, em grandes corpora não supervisionados. O objetivo aqui é criar uma base que possa ser ajustada posteriormente para tarefas downstream específicas por meio da introdução de objetivos específicos de tarefa.

Pré-treinamento, Ajuste Fino

Pré-treinamento, Ajuste Fino

Uma tendência notável nessa esfera é o inevitável aumento na escala dos LLMs pré-treinados, medido pelo número de parâmetros. Dados empíricos consistentemente mostram que modelos maiores, combinados com mais dados, quase sempre resultam em melhor desempenho. Por exemplo, o GPT-3, com seus 175 bilhões de parâmetros, estabeleceu um padrão na geração de linguagem natural de alta qualidade e no desempenho de uma ampla gama de tarefas zero-shot com proficiência.

Ajuste Fino: O Caminho para a Adaptação do Modelo

Após o pré-treinamento, o LLM passa pelo ajuste fino para se adaptar a tarefas específicas. Apesar do desempenho promissor mostrado pelo aprendizado em contexto em LLMs pré-treinados, como o GPT-3, o ajuste fino permanece superior em configurações de tarefa específica. No entanto, a abordagem comum de ajuste fino de parâmetros completos apresenta desafios, incluindo altas demandas computacionais e de memória, especialmente ao lidar com modelos de grande escala.

Para modelos de linguagem grande com mais de um bilhão de parâmetros, a gestão eficiente da RAM do GPU é crucial. Um único parâmetro do modelo em precisão de 32 bits completa exige 4 bytes de espaço, traduzindo-se na necessidade de 4GB de RAM do GPU apenas para carregar um modelo com um bilhão de parâmetros. O processo de treinamento real exige ainda mais memória para acomodar vários componentes, incluindo estados do otimizador e gradientes, potencialmente exigindo até 80GB de RAM do GPU para um modelo dessa escala.

Para navegar pelas limitações da RAM do GPU, a quantização é usada, uma técnica que reduz a precisão dos parâmetros do modelo, diminuindo assim os requisitos de memória. Por exemplo, alterar a precisão de 32 bits para 16 bits pode reduzir pela metade a memória necessária para carregar e treinar o modelo. Mais adiante, neste artigo, aprenderemos sobre QLoRA, que utiliza o conceito de quantização para o ajuste.

Requisito de Memória do GPU do LLM em Relação ao Número de Parâmetros e Precisão

Requisito de Memória do GPU do LLM em Relação ao Número de Parâmetros e Precisão

 

Explorando as Categorias de Métodos PEFT

No processo de ajuste fino completo de Modelos de Linguagem Grande, é importante ter um conjunto computacional que possa lidar eficientemente não apenas com os pesos do modelo substanciais, que para os modelos mais avançados agora estão alcançando tamanhos na ordem de centenas de gigabytes, mas também gerenciar uma série de outros elementos críticos. Esses incluem a alocação de memória para estados do otimizador, gerenciamento de gradientes, ativações diretas e facilitação de memória temporária durante várias etapas do procedimento de treinamento.

Método Aditivo

Esse tipo de ajuste pode aumentar o modelo pré-treinado com parâmetros ou camadas adicionais, focando no treinamento apenas dos parâmetros recém-adicionados. Apesar de aumentar a contagem de parâmetros, esses métodos melhoram a eficiência do tempo e do espaço de treinamento. O método aditivo é ainda dividido em subcategorias:

  • Adaptadores: Incorporando redes totalmente conectadas pequenas pós-camadas de transformador, com notáveis exemplos sendo AdaMix, KronA e Compactor.
  • Prompts Suaves: Ajuste fino de um segmento das incorporações de entrada do modelo por meio do gradiente de descida, com IPT, prefix-tuning e WARP sendo exemplos proeminentes.
  • Outras Abordagens Aditivas: Incluem técnicas como LeTS, AttentionFusion e Ladder-Side Tuning.

Método Seletivo

Os PEFTs seletivos ajustam finamente um número limitado de camadas superiores com base no tipo de camada e na estrutura interna do modelo. Essa categoria inclui métodos como BitFit e LN tuning, que se concentram no ajuste de elementos específicos, como vieses do modelo ou linhas particulares.

Método Baseado em Reparametrização

Esses métodos utilizam representações de baixo rank para reduzir o número de parâmetros treináveis, sendo o mais renomado a Adaptação de Baixo Rank ou LoRA. Esse método aproveita uma decomposição de matriz de baixo rank simples para parametrizar a atualização de peso, demonstrando ajuste fino eficaz em subespaços de baixo rank.

1) LoRA (Adaptação de Baixo Rank)

LoRA surgiu como uma técnica de PEFT inovadora, introduzida em um artigo por Edward J. Hu e outros em 2021. Ele opera dentro da categoria de reparametrização, congelando os pesos originais do LLM e integrando novas matrizes treináveis de baixo rank em cada camada da arquitetura de Transformer. Essa abordagem não apenas reduz o número de parâmetros treináveis, mas também diminui o tempo de treinamento e os recursos computacionais necessários, apresentando assim uma alternativa mais eficiente ao ajuste fino completo.

Para compreender a mecânica da LoRA, é necessário revisitar a arquitetura de transformer, onde o prompt de entrada passa por tokenização e é convertido em vetores de incorporação. Esses vetores atravessam o codificador e/ou decodificador da arquitetura de transformer, encontrando mecanismos de autoatenção e redes de alimentação direta cujos pesos são pré-treinados.

LoRA utiliza o conceito de Decomposição de Valor Singular (SVD). Basicamente, a SVD divide uma matriz em três matrizes distintas, uma das quais é uma matriz diagonal que contém valores singulares. Esses valores singulares são cruciais, pois medem a importância de diferentes dimensões nas matrizes, com valores maiores indicando maior importância e valores menores denotando menor significância.

Decomposição de Valor Singular (SVD) de uma matriz retangular m × n

Decomposição de Valor Singular (SVD) de uma matriz m × n

Essa abordagem permite que a LoRA mantenha as características essenciais dos dados, reduzindo a dimensionalidade e, portanto, otimizando o processo de ajuste fino.

LoRA intervém nesse processo, congelando todos os parâmetros do modelo original e introduzindo um par de “matrizes de decomposição de rank” ao lado dos pesos originais. Essas matrizes menores, denotadas como A e B, passam por treinamento por meio do aprendizado supervisionado.

O elemento crucial nessa estratégia é o parâmetro chamado de “rank” (‘r’), que dita o tamanho das matrizes de baixo rank. Uma escolha cuidadosa de ‘r’ pode render resultados impressionantes, mesmo com um valor menor, criando assim uma matriz de baixo rank com menos parâmetros para treinar. Essa estratégia foi efetivamente implementada usando bibliotecas de código aberto, como HuggingFace Transformers, facilitando o ajuste fino de LoRA para várias tarefas com notável eficiência.

2) QLoRA: Levando a Eficiência de LoRA ao Nível Superior

Construindo sobre a base estabelecida pela LoRA, a QLoRA minimiza ainda mais os requisitos de memória. Introduzida por Tim Dettmers e outros em 2023, ela combina a adaptação de baixo rank com a quantização, empregando um formato de quantização de 4 bits denominado NormalFloat ou nf4. A quantização é essencialmente um processo que transita dados de uma representação de informação mais rica para uma com menos informação. Essa abordagem mantém a eficácia dos métodos de ajuste fino de 16 bits, desquantizando os pesos de 4 bits para 16 bits conforme necessário durante os processos computacionais.

Comparando métodos de ajuste fino: QLoRA melhora LoRA com quantização de precisão de 4 bits e otimiza a gestão de memória

Comparando métodos de ajuste fino: QLoRA melhora LoRA com quantização de precisão de 4 bits e otimiza a gestão de memória

QLoRA aproveita o NumericFloat4 (nf4), visando cada camada da arquitetura de transformer, e introduz o conceito de quantização dupla para reduzir ainda mais a pegada de memória necessária para o ajuste fino. Isso é alcançado realizando a quantização sobre as constantes já quantizadas, uma estratégia que evita os picos de memória típicos da verificação de gradientes por meio do uso de otimizadores paginados e gestão de memória unificada.

Guanaco, que é um ensemble ajustado por QLoRA, estabelece um padrão em soluções de chatbot de código aberto. Seu desempenho, validado por meio de avaliações sistemáticas humanas e automatizadas, destaca sua dominância e eficiência no campo.

As versões 65B e 33B do Guanaco, ajustadas utilizando uma versão modificada do conjunto de dados OASST1, surgem como contendores formidáveis a modelos renomados como ChatGPT e até mesmo GPT-4.

Ajuste Fino Usando Aprendizado por Reforço com Feedback Humano

O Aprendizado por Reforço com Feedback Humano (RLHF) entra em cena quando se ajusta modelos de linguagem pré-treinados para se alinhar mais de perto com os valores humanos. Esse conceito foi introduzido pela Open AI em 2017, estabelecendo as bases para uma melhor suma de documentos e o desenvolvimento de InstructGPT.

No núcleo do RLHF está o paradigma de aprendizado por reforço, um tipo de técnica de aprendizado de máquina onde um agente aprende a se comportar em um ambiente realizando ações e recebendo recompensas. É um loop contínuo de ação e feedback, onde o agente é incentivado a fazer escolhas que renderão a maior recompensa.

Traduzindo isso para o reino dos modelos de linguagem, o agente é o modelo em si, operando dentro do ambiente de uma janela de contexto dada e tomando decisões com base no estado, que é definido pelos tokens atuais na janela de contexto. O “espaço de ação” abrange todos os tokens potenciais que o modelo pode escolher, com o objetivo de selecionar o token que se alinha mais de perto com as preferências humanas.

O processo RLHF aproveita extensivamente o feedback humano, utilizando-o para treinar um modelo de recompensa. Esse modelo desempenha um papel crucial em guiar o modelo pré-treinado durante o processo de ajuste fino, incentivando-o a gerar saídas que estejam mais alinhadas com os valores humanos. É um processo dinâmico e iterativo, onde o modelo aprende por meio de uma série de “rolagens”, um termo usado para descrever a sequência de estados e ações que levam a uma recompensa no contexto da geração de linguagem.

Uma das notáveis potencialidades do RLHF é sua capacidade de fomentar a personalização em assistentes de IA, adaptando-os para ressoar com as preferências individuais dos usuários, seja seu senso de humor ou rotinas diárias. Isso abre caminhos para a criação de sistemas de IA que não apenas são tecnicamente competentes, mas também inteligentes emocionalmente, capazes de entender e responder a nuances na comunicação humana.

No entanto, é essencial notar que o RLHF não é uma solução infalível. Os modelos ainda são suscetíveis a gerar saídas indesejadas, um reflexo dos vastos e frequentemente não regulamentados e tendenciosos dados nos quais são treinados.

Conclusão

O processo de ajuste fino, uma etapa crítica na exploração do potencial total dos LLMs, como Alpaca, Falcon e GPT-4, tornou-se mais refinado e direcionado, oferecendo soluções personalizadas para uma ampla gama de tarefas.

Vimos o ajuste fino de tarefa única, que especializa os modelos em papéis específicos, e os métodos de Ajuste Fino Eficiente de Parâmetro (PEFT), incluindo LoRA e QLoRA, que visam tornar o processo de treinamento mais eficiente e economicamente viável. Esses desenvolvimentos estão abrindo portas para funcionalidades de IA de alto nível para uma audiência mais ampla.

Além disso, a introdução do Aprendizado por Reforço com Feedback Humano (RLHF) pela Open AI é um passo em direção à criação de sistemas de IA que entendem e se alinham mais de perto com os valores e preferências humanos, estabelecendo o palco para assistentes de IA que não apenas são inteligentes, mas também sensíveis às necessidades individuais dos usuários. Tanto o RLHF quanto o PEFT trabalham em sinergia para melhorar a funcionalidade e a eficiência dos Modelos de Linguagem Grande.

À medida que empresas, organizações e indivíduos buscam integrar esses LLMs ajustados finamente em suas operações, eles estão essencialmente acolhendo um futuro onde a IA é mais do que uma ferramenta; é um parceiro que entende e se adapta a contextos humanos, oferecendo soluções inovadoras e personalizadas.

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.