Início
topics
Ajuste fino
Publicado: 15 de março de 2024
Colaboradores: Dave Bergmann
O ajuste fino no aprendizado de máquina é o processo de adaptação de um modelo pré-treinado para tarefas ou casos de uso específicos. Ele se tornou uma técnica fundamental de deep learning, especialmente no processo de treinamento de modelos de base usados para IA generativa.
O ajuste fino pode ser considerado um subconjunto da técnica mais ampla de aprendizagem por transferência: a prática de aproveitar o conhecimento que um modelo existente já aprendeu como ponto de partida para aprender novas tarefas.
A ideia por trás do ajuste fino é que, basicamente, é mais fácil e mais barato aprimorar os recursos de um modelo base pré-treinado que já adquiriu amplos conhecimentos relevantes para a tarefa em questão do que treinar um novo modelo do zero para esse propósito específico. Isso é especialmente válido para modelos de deep learning com milhões ou até mesmo bilhões de parâmetros, como os grandes modelos de linguagem (LLMs) que ganharam destaque no campo do processamento de linguagem natural (PLN) ou as complexas redes neurais convolucionais (CNNs) e os transformadores de visão (ViTs) usados para tarefas de computer Vision, como classificação de imagens, detecção de objetos ou segmentação de imagens.
Ao aproveitar o treinamento anterior do modelo por meio do aprendizado de transferência, o ajuste fino pode reduzir a quantidade de poder computacional caro e de dados rotulados necessários para obter grandes modelos adaptados a casos de uso de nicho e necessidades comerciais. Por exemplo, o ajuste fino pode ser usado para simplesmente ajustar o tom de conversa de um LLM pré-treinado ou o estilo de ilustração de um modelo de geração de imagem pré-treinado; ele também pode ser usado para complementar o aprendizado do conjunto de dados de treinamento original de um modelo com dados proprietários ou conhecimento especializado e específico do domínio.
O ajuste fino desempenha, portanto, um papel importante na aplicação real de modelos de aprendizado de máquina, ajudando a democratizar o acesso e a personalização de modelos sofisticados.
Este e-book descreve como as organizações podem incorporar com segurança a IA generativa e o aprendizado de máquina em seus negócios para obter uma vantagem competitiva significativa.
Embora o ajuste fino seja aparentemente uma técnica usada no treinamento de modelos, trata-se de um processo distinto do que é convencionalmente chamado de "treinamento". Por uma questão de desambiguação, os cientistas de dados normalmente se referem ao último como pré-treinamento nesse contexto.
No início do treinamento (ou, neste contexto, pré-treinamento), o modelo ainda não "aprendeu" nada. O treinamento começa com uma inicialização aleatória dos parâmetros do modelo – os vieses e pesos variáveis aplicados às operações matemáticas que ocorrem em cada nó da rede neural.
O treinamento ocorre de forma iterativa em duas fases: em uma passagem adiante, o modelo faz previsões para um lote de inputs de amostra do conjunto de dados de treinamento e uma função de perda mede a diferença (ou perda) entre as previsões do modelo para cada input e as respostas "corretas" (ou verdade absoluta); durante a retropropagação, um algoritmo de otimização, normalmente gradiente descendente, é usado para ajustar os pesos do modelo em toda a rede para reduzir a perda. Esses ajustes nos pesos do modelo são a forma como o modelo "aprende". O processo é repetido em várias épocas de treinamento até que o modelo seja considerado suficientemente treinado.
O aprendizado supervisionado convencional, que normalmente é usado para pré-treinar modelos para tarefas de computer vision, como classificação de imagens, detecção de objetos ou segmentação de imagens, usa dados rotulados: os rótulos (ou anotações) fornecem a variedade de respostas possíveis e o output da verdade absoluta de cada amostra.
Em geral, os LLMs são pré-treinados por meio de aprendizado autossupervisionado (SSL), no qual os modelos aprendem por meio de tarefas pré-textuais projetadas para extrair a verdade absoluta a partir da estrutura inerente dos dados não rotulados. Essas tarefas de pretexto transmitem conhecimentos valiosos para as tarefas posteriores. Em geral, elas adotam uma das duas abordagens:
Autoprevisão: mascarar uma parte do input original e incumbir o modelo de reconstruí-la. Esse é o modo de treinamento dominante para LLMs.
Aprendizagem contrastiva: treinamento de modelos para aprender incorporações semelhantes para inputs relacionados e incorporações diferentes para inputs não relacionados. É usado principalmente em modelos de computer vision projetados para aprendizado com poucas amostras ou sem amostras, como pré-treinamento de imagem-linguagem contrastante (CLIP).
Assim, o SSL permite o uso de conjuntos de dados extremamente grandes no treinamento sem o ônus de ter que anotar milhões ou bilhões de pontos de dados. Isso economiza uma enorme quantidade de trabalho, mas, ainda assim, exige muitos recursos computacionais.
Por outro lado, o ajuste fino envolve técnicas para treinar ainda mais um modelo cujos pesos já foram atualizados por meio de treinamento prévio. Usando o conhecimento prévio do modelo base como ponto de partida, o ajuste fino adapta o modelo treinando-o em um conjunto de dados menor e específico da tarefa.
Embora esse conjunto de dados específico da tarefa pudesse teoricamente ter sido usado para o treinamento inicial, treinar um modelo grande do zero em um pequeno conjunto de dados apresenta o risco de sobreajuste: o modelo pode aprender a ter um bom desempenho nos exemplos de treinamento, mas ter um desempenho ruim com novos dados. Isso tornaria o modelo inadequado para a tarefa específica e anularia o propósito do treinamento do modelo.
O ajuste fino, portanto, oferece o melhor dos dois mundos: aproveitar o amplo conhecimento e a estabilidade obtidos com o pré-treinamento em um enorme conjunto de dados e aprimorar a compreensão do modelo de conceitos mais detalhados e específicos. Dada a crescente proeza dos modelos de base de código aberto, os benefícios muitas vezes podem ser desfrutados sem qualquer ônus financeiro, computacional ou logístico do pré-treinamento.
O ajuste fino usa os pesos de um modelo pré-treinado como ponto de partida para um treinamento adicional em um conjunto menor de dados de exemplos que refletem mais diretamente as tarefas específicas e os casos de uso para os quais o modelo será utilizado. Em geral, envolve aprendizado supervisionado, mas também pode envolver aprendizado por reforço, aprendizado autossupervisionado ou aprendizado semi-supervisionado.
Os conjuntos de dados usados para o ajuste fino transmitem o conhecimento específico do domínio, o estilo, as tarefas ou os casos de uso para os quais o modelo pré-treinado está sendo ajustado. Por exemplo:
Um LLM pré-treinado para linguagem geral pode ser ajustado para codificação com um novo conjunto de dados contendo solicitações de programação relevantes e trechos de código correspondentes para cada uma delas.
Um modelo de classificação de imagens usado para identificar determinadas espécies de aves pode aprender novas espécies por meio de amostras de treinamento rotuladas adicionais.
Um LLM pode aprender a emular um estilo de escrita específico por meio do aprendizado autossupervisionado em textos de amostra que representam esse estilo.
O aprendizado semi-supervisionado, uma subcategoria do aprendizado de máquina que incorpora dados rotulados e não rotulados, é vantajoso quando o cenário requer um aprendizado supervisionado, mas há uma escassez de exemplos rotulados adequados. O ajuste fino semi-supervisionado produziu resultados promissores para tarefas de computer vision1 e PNL2 e ajuda a reduzir a carga de aquisição de uma quantidade suficiente de dados rotulados.
O ajuste fino pode ser usado para atualizar os pesos de toda a rede, mas, por motivos práticos, nem sempre é esse o caso. Existe uma grande variedade de métodos alternativos de ajuste fino, geralmente chamados de ajuste fino com eficiência de parâmetros (PEFT), que atualizam apenas um determinado subconjunto de parâmetros do modelo. Os métodos PEFT, que serão explorados posteriormente nesta seção, podem diminuir as demandas computacionais e reduzir o esquecimento catastrófico– o fenômeno no qual o ajuste fino causa a perda ou a desestabilização do conhecimento básico do modelo – geralmente sem comprometer significativamente o desempenho.
Dada a grande variedade de técnicas de ajuste fino e as muitas variáveis inerentes a cada uma, alcançar o desempenho ideal do modelo geralmente requer várias iterações de estratégias e configurações de treinamento, ajuste dos conjuntos de dados e dos hiperparâmetros, como o tamanho do lote, a taxa de aprendizado e os termos de regularização, até que se chegue a um resultado satisfatório, de acordo com as métricas mais relevantes para seu caso de uso.
O meio mais conceitualmente simples de fazer o ajuste fino é simplesmente atualizar toda a rede neural. Essa metodologia simples se assemelha basicamente ao processo de pré-treinamento: as únicas diferenças fundamentais entre os processos de ajuste fino completo e de pré-treinamento são o conjunto de dados que está sendo usado e o estado inicial dos parâmetros do modelo.
Para evitar mudanças desestabilizadoras no processo de ajuste fino, certos hiperparâmetros (atributos do modelo que influenciam o processo de aprendizagem, mas que não são parâmetros aprendíveis) podem ser ajustados em relação às suas especificações durante o pré-treinamento: por exemplo, uma taxa de aprendizagem menor (que reduz a magnitude de cada atualização dos pesos do modelo) tem menos probabilidade de levar a um esquecimento catastrófico.
O ajuste fino completo, assim como o processo de pré-treinamento ao qual se assemelha, é muito exigente em termos de computação. Para os modelos modernos de deep learning com centenas de milhões ou até mesmo muitos bilhões de parâmetros, isso costuma ser proibitivamente caro e impraticável.
O ajuste fino com eficiência de parâmetros (PEFT) engloba uma variedade de métodos para reduzir o número de parâmetros treináveis que precisam ser atualizados para adaptar efetivamente um grande modelo pré-treinado às aplicações específicas subsequentes. Ao fazer isso, o PEFT diminui significativamente os recursos computacionais e o armazenamento de memória necessários para produzir um modelo com um ajuste fino eficaz. Os métodos PEFT muitas vezes demonstraram ser mais estáveis do que os métodos de ajuste fino completo, especialmente para casos de uso de PLN.3
Ajuste fino parcial
Também chamados de ajuste fino seletivo, os métodos parciais de ajuste fino visam reduzir as demandas computacionais, atualizando apenas o subconjunto selecionado de parâmetros pré-treinados mais críticos para modelar o desempenho nas tarefas relevantes posteriores. Os parâmetros restantes são "congelados", garantindo que não serão alterados.
A abordagem de ajuste fine parcial mais intuitiva é atualizar somente as camadas externas da rede neural. Na maioria das arquiteturas de modelo, as camadas internas do modelo (mais próximas da camada de input) capturam apenas recursos amplos e genéricos: por exemplo, em uma CNN usada para classificação de imagens, as camadas iniciais normalmente identificam edges e texturas; cada camada subsequente identifica recursos cada vez mais finos até que a classificação final seja prevista na camada mais externa. De modo geral, quanto mais semelhante for a nova tarefa (para a qual o modelo está sendo ajustado) à tarefa original, mais úteis serão os pesos pré-treinados das camadas internas para essa nova tarefa relacionada (e, portanto, menos camadas precisarão ser atualizadas).
Outros métodos de ajuste fino parcial, incluindo a atualização apenas dos termos de viés de toda a camada do modelo (em vez dos pesos específicos do nó)4 e métodos de ajuste fino "esparsos" que atualizam apenas um subconjunto selecionado de pesos gerais em todo o modelo.5
Ajuste fino aditivo
Em vez de ajustar os parâmetros existentes de um modelo pré-treinado, os métodos aditivos adicionam parâmetros ou camadas extras ao modelo, congelam os pesos pré-treinados existentes e treinam apenas esses novos componentes. Essa abordagem ajuda a manter a estabilidade do modelo, garantindo que os pesos pré-treinados originais permaneçam inalterados.
Embora isso possa aumentar o tempo de treinamento, reduz significativamente os requisitos de memória porque há muito menos gradientes e estados de otimização para armazenar: de acordo com Lialin, et al, treinar todos os parâmetros de um modelo requer de 12 a 20 vezes mais memória de GPU do que apenas os pesos do modelo.6 Outras economias de memória podem ser alcançadas por meio da quantização dos pesos do modelo congelado: uma redução na precisão usada para representar os parâmetros do modelo, conceitualmente semelhante à redução da taxa de bits de um arquivo de áudio.
Um sub-ramo dos métodos aditivos é o ajuste de prompt. Conceitualmente, é semelhante à engenharia de prompts, que se refere à adaptação de "prompts rígidos", ou seja, instruções escritas por um humano em linguagem natural, para orientar o modelo em direção ao output desejado, por exemplo, especificando um determinado tom ou fornecendo exemplos que facilitam o aprendizado em poucas etapas. O ajuste de prompt introduz solicitações prompts flexíveis criadas por IA: incorporações vetoriais aprendíveis que são concatenadas ao prompt rígido do usuário. Em vez de treinar novamente o modelo, o ajuste de prompt envolve o congelamento dos pesos do modelo e, em vez disso, treina o próprio prompt flexível. Rápido e eficiente, o ajuste de prompt permite que os modelos alternem mais facilmente entre tarefas específicas, embora com uma desvantagem na interpretabilidade.
Adaptadores
Outro subconjunto do ajuste fino aditivo injeta módulos adaptadores– novas camadas específicas da tarefa adicionadas à rede neural – e treina esses módulos adaptadores em vez de ajustar qualquer um dos pesos do modelo pré-treinado (que estão congelados). De acordo com o artigo original, que mediu os resultados no modelo de linguagem mascarada BERT, os adaptadores alcançaram um desempenho equivalente ao de um ajuste fino completo embora tenham treinado apenas 3,6% do número de parâmetros.7
Reparametrização
Métodos baseados em reparametrização, como Adaptação de Baixa Classificação (LoRA), aproveitam a transformação de baixa classificação de matrizes de alta dimensão (como a enorme matriz de pesos de um modelo pré-treinado em um modelo transformador). Essas representações de baixa classificação omitem informações irrelevantes de alta dimensão para capturar a estrutura subjacente de baixa dimensão dos pesos do modelo, reduzindo muito o número de parâmetros treináveis. Isso acelera drasticamente o ajuste fino e reduz a memória necessária para armazenar as atualizações do modelo.
A LoRA evita a otimização direta da matriz de pesos do modelo e, em vez disso, otimiza uma matriz de atualizações dos pesos do modelo (ou pesos delta), que é inserida no modelo. Essa matriz de atualizações de peso é, por sua vez, representada como duas matrizes menores (isto é, de baixa classificação), reduzindo bastante o número de parâmetros a serem atualizados – o que, por sua vez, acelera drasticamente o ajuste fino e reduz a memória necessária para armazenar as atualizações do modelo. Os próprios pesos do modelo pré-treinado permanecem congelados.
Um benefício adicional da LoRA é que, como o que está sendo otimizado e armazenado não são novos pesos do modelo, mas sim a diferença (ou delta) entre os pesos pré-treinados originais e os pesos ajustados, diferentes LoRAs específicas da tarefa podem ser "trocadas" conforme necessário para adaptar o modelo pré-treinado, cujos parâmetros reais permanecem inalterados, a um determinado caso de uso.
Diversos derivados da LoRA foram desenvolvidos, como a QLoRA, que reduz ainda mais a complexidade computacional ao quantificar o modelo do transformador anterior ao LoRA.
O ajuste fino é uma parte essencial do ciclo de desenvolvimento do LLM, permitindo que os recursos linguísticos brutas dos modelos de base sejam adaptados para uma variedade de casos de uso, de chatbots a codificação e outras áreas criativas e técnicas.
Os LLMs são pré-treinados usando aprendizado autossupervisionado em um enorme corpus de dados não rotulados. Modelos de linguagem autorregressiva, como o GPT da OpenAI, o Gemini do Google ou os modelos Llama da Meta, são treinados para simplesmente prever a(s) próxima(s) palavra(s) em uma sequência até que ela seja concluída. No pré-treinamento, os modelos recebem o início de uma frase de amostra extraída dos dados de treinamento e são repetidamente encarregados de prever a próxima palavra na sequência até o final da amostra. Para cada previsão, a próxima palavra real da frase de amostra original serve como verdade absoluta.
Apesar de este pré-treinamento proporcionar recursos poderosos de geração de texto, ele não oferece uma compreensão real da intenção do usuário. De forma fundamental, os modelos de linguagem autorregressivos não respondem a um prompt; eles apenas adicionam texto a ele. Sem uma orientação muito específica na forma de engenharia de prompts, um LLM pré-treinado (que não foi ajustado) simplesmente prevê, de uma forma gramaticalmente coerente, quais podem ser as próximas palavras em uma determinada sequência que é iniciada pelo prompt. Se o prompt for "ensine-me a fazer um currículo", um LLM pode responder "usando o Microsoft Word". É uma maneira válida de concluir a frase, mas não está alinhada com o objetivo do usuário. O modelo pode já ter um conhecimento substancial sobre a elaboração de currículos, obtido a partir de conteúdos relevantes incluídos no seu corpus de pré-treinamento, mas sem um ajuste fino, este conhecimento pode não ser acessado.
O processo de ajuste fino, portanto, desempenha um papel crucial não apenas na adaptação de modelos de base para o tom e os casos de uso exclusivos seus ou do seu negócio, mas também em torná-los totalmente adequados para uso prático.
O ajuste de instrução é um subconjunto do ajuste fino supervisionado (SFT), frequentemente usado para ajustar LLMs para uso em chatbot, que prepara o LLM para gerar respostas que atendam mais diretamente às necessidades do usuário: em outras palavras, para seguir melhor as instruções. Exemplos rotulados, seguindo o formato (prompt, resposta) – em que os exemplos de prompt compreendem tarefas orientadas por instruções, como "traduza a seguinte frase do inglês para o espanhol" ou "classifique a seguinte frase como positiva ou negativa" – demonstram como responder a prompts que representam uma variedade de casos de uso, como resposta a perguntas, resumo ou tradução. Ao atualizar os pesos do modelo para minimizar a perda entre os outputs do modelo e as amostras rotuladas, o LLM aprende a acrescentar texto aos prompts de uma maneira mais útil e a seguir melhor as instruções em geral.
Continuando com o exemplo de prompt anterior de "ensine-me a fazer um currículo", o conjunto de dados usado para SFT pode conter vários pares de (prompt, resposta), demonstrando que a maneira desejada de responder aos prompts que começam com "ensine-me a fazer" é fornecer sugestões passo a passo, em vez de simplesmente completar a frase.
Embora o ajuste de instruções possa ensinar ao modelo comportamentos tangíveis e diretos, como a estruturação de suas respostas, pode ser proibitivamente trabalhoso e difícil ensinar qualidades humanas abstratas, como ajuda, precisão dos fatos, humor ou empatia, por meio de exemplos rotulados.
Para alinhar melhor os resultados do modelo com o comportamento humano ideal, especialmente para casos de uso conversacional, como chatbots, o SFT pode ser complementado com aprendizado por reforço – mais especificamente, aprendizado por reforço com feedback humano (RLHF). O RLHF, também chamado de aprendizado por reforço a partir de preferências humanas, ajuda a ajustar os modelos para qualidades complexas, mal definidas ou difíceis de especificar por meio de exemplos discretos.
Considere a comédia: ensinar um modelo a ser "engraçado" com o SFT não requer apenas o custo e o trabalho de escrever (ou adquirir) piadas suficientes para criar um padrão que possa ser aprendido, mas também exige que o que um determinado cientista de dados considera engraçado esteja alinhado com o que a base de usuários acharia engraçado. Basicamente, o RLHF oferece uma alternativa matematicamente de crowdsourcing: solicitar que o LLM gere piadas e fazer com que os testadores humanos avaliem sua qualidade. Essas classificações podem ser usadas para treinar um modelo de recompensa para prever os tipos de piadas que receberão feedback positivo e, por sua vez, esse modelo de recompensa pode ser usado para treinar o LLM por meio do aprendizado por reforço.
De forma mais prática, o RLHF visa enfrentar os desafios existenciais dos LLMs, como alucinações, refletindo preconceitos sociais inerentes aos dados de treinamento ou lidando com inputs de usuários rudes ou adversos.
O ajuste fino pode ser usado para uma ampla variedade de finalidades, desde a personalização até a complementação do conhecimento central do modelo, até a extensão do modelo para tarefas e áreas totalmente novas.
Estilo de personalização: os modelos podem ser ajustados para refletir o tom desejado de uma marca, desde a implementação de padrões comportamentais complexos e estilos de ilustração idiossincráticos até modificações simples, como iniciar cada troca com uma saudação educada.
Especialização: as habilidades linguísticas gerais dos LLMs podem ser aprimoradas para tarefas específicas. Por exemplo, os modelos Llama 2 da Meta foram lançados como modelos de base, variantes ajustadas por chatbot (Llama-2-chat) e variantes ajustadas por código (Code Llama).
Adição de conhecimento específico do domínio: embora os LLMs sejam pré-treinados em um enorme corpus de dados, eles não são oniscientes. O uso de amostras de treinamento adicionais para complementar o conhecimento do modelo de base é particularmente relevante em contextos jurídicos, financeiros ou médicos, que normalmente implicam o uso de um vocabulário especializado que pode não ter sido suficientemente representado no pré-treinamento.
Aprendizado "few-shot": os modelos que já têm um forte conhecimento generalizado muitas vezes podem ser ajustados para textos de classificação mais específicos usando comparativamente poucos exemplos demonstrativos.
Lidar com casos extremos: você pode querer que seu modelo lide com determinadas situações que provavelmente não foram abordadas no pré-treinamento de uma maneira específica. Ajustar um modelo com exemplos rotulados dessas situações é uma maneira eficaz de garantir que elas sejam tratadas adequadamente.
Incorporação de dados proprietários: sua empresa pode ter seu próprio pipeline de dados proprietários, altamente relevante para seu caso de uso específico. O ajuste fino permite que esse conhecimento seja incorporado ao modelo sem precisar treiná-lo do zero.
Treine, valide, ajuste e implemente IA generativa, modelos de base e recursos de aprendizado de máquina com facilidade, além de criar aplicativos de IA em uma fração do tempo com uma fração dos dados.
O watsonx AI studio oferece uma biblioteca de modelos de base econômicos de nível corporativo desenvolvidos pela IBM, modelos de código aberto e modelos fornecidos por fornecedores terceirizados para ajudar clientes e parceiros a escalar e operacionalizar rapidamente a IA generativa com risco mínimo.
Saiba como, por que e quando ajustar um modelo de base no watsonx.ai com esta série de tutoriais e guias em vídeo.
Explore e valide casos de uso com modelos dee base para automatizar, simplificar e acelerar os processos existentes ou agregar valor de uma nova maneira.
Saiba mais sobre o aprendizado zero-shot (ZSL) – um cenário de aprendizado de máquina no qual um modelo de IA é treinado para reconhecer e categorizar objetos ou conceitos sem ter visto nenhum exemplo de antemão – e como os modelos podem ser ajustados para um melhor desempenho zero-shot.
Todos os links são externos ao site ibm.com
1 "Big Self-Supervised Models are Strong Semi-Supervised Learners," arXiv, 26 de outubro de 2020
2 "CSS-LM: A Contrastive Framework for Semi-supervised Fine-tuning of Pre-trained Language Models," arXiv, 2 de março de 2021
3 "On the Effectiveness of Parameter-Efficient Fine-Tuning," arXiv, 28 de novembro de 2022
4 "BitFit: Simple Parameter-efficient Fine-tuning for Transformer-based Masked Language-models," arXiv, 18 de junho de 2021 (última atualização em 5 de setembro de 2022)
5 "Scaling Sparse Fine-Tuning to Large Language Models," arXiv, 2 de fevereiro de 2024
6 "Scaling Down to Scale Up: A Guide to Parameter-Efficient Fine-Tuning," arXiv, 28 de março de 2023
7 "Parameter-Efficient Transfer Learning for NLP," arXiv, 13 de junho de 2019