O que é o ajuste de instruções?

5 de abril de 2024

Autores

Dave Bergmann

Senior Writer, AI Models, IBM

O que é o ajuste de instruções?

O ajuste de instruções é uma técnica para fazer ajuste fino de grandes modelos de linguagem (LLMs) em um conjunto de dados rotulado de prompts instrucionais e outputs correspondentes. Ele melhora o desempenho do modelo não apenas em tarefas específicas, mas também no seguimento de instruções em geral, ajudando assim a adaptar modelos pré-treinados para uso prático.

O ajuste de instrução é um subconjunto da categoria mais ampla de técnicas de ajuste fino usadas para adaptar modelos de base pré-treinados para tarefas subsequentes. Modelos de base podem ser ajustados finamente para uma variedade de propósitos, desde a personalização de estilo até o complemento do conhecimento central e vocabulário do modelo pré-treinado, ou a otimização do desempenho para um caso de uso específico. Embora o ajuste fino não seja exclusivo de nenhum domínio específico ou arquitetura de modelo de inteligência artificial, ele se tornou parte integrante do ciclo de vida dos LLMs. Por exemplo, a família de modelos Llama 2 da Meta é oferecida (em vários tamanhos) como um modelo base, como uma variante ajustada finamente para diálogo (Llama-2-chat) e como uma variante ajustada finamente para codificação (Code Llama).

O ajuste de instrução não é mutuamente exclusivo com outras técnicas de ajuste fino. Por exemplo, os modelos de bate-papo geralmente passam por ajustes de instruções e aprendizagem por reforço a partir do feedback humano (RLHF), uma técnica de ajuste fino que visa melhorar qualidades abstratas como utilidade e honestidade; modelos ajustados finamente para codificação frequentemente passam por ajuste de instruções (para otimizar amplamente respostas para seguimento de instruções) e ajuste adicional em dados específicos de programação (para aumentar o conhecimento do modelo sobre sintaxe e vocabulário de codificação).

Enquanto a geração dos LLMs remonta ao artigo de 2017 "Attention is All You Need", que introduziu modelos de transformadores em larga escala para tarefas de processamento de linguagem natural (PLN), a incorporação do ajuste de instrução e do RLHF, impulsionada por artigos influentes da Google (em 2021)1 e da OpenAI (em 2022)2, respectivamente, resultou nos LLMs modernos que iniciaram a atual era da IA generativa com o lançamento do ChatGPT.

Projeto 3D de bolas rolando em uma pista

As últimas notícias e insights sobre IA 


Descubra insights selecionadas por especialistas sobre IA, nuvem e outros assuntos no boletim informativo semanal Think. 

Por que ajustar LLMs?

A utilidade do ajuste de instrução, como a da maioria das técnicas de ajuste fino, reside no fato de que os LLMs pré-treinados não são otimizados para conversas ou seguimento de instruções. No sentido literal, os LLMs não respondem a um prompt: eles apenas adicionam texto a ele. O ajuste de instrução ajuda a tornar esse texto adicionado mais útil.

O processo de pré-treinamento para modelos de linguagem autorregressivos, LLMs usados para gerar texto, como o Llama 2 da Meta, o GPT da OpenAI, o Gemini do Google ou o Granite da IBM, otimiza esses LLMs para simplesmente prever a(s) próxima(s) palavra(s) em uma determinada sequência até que ela esteja completa.

Os LLMs são pré-treinados usando aprendizado autossupervisionado em um grande corpus de conteúdo escrito. No pré-treinamento, modelos autorregressivos recebem o início de uma amostra de texto e são repetidamente encarregados de prever a próxima palavra na sequência até o final do trecho. Para cada previsão, a próxima palavra real da frase de amostra original serve como "verdade absoluta". Através de algoritmos de otimização como gradiente descendente, que ajustam iterativamente os parâmetros do modelo, os pesos e vieses variáveis aplicados às operações matemáticas que ocorrem em cada nó de uma rede neural, de uma maneira que aproxima as previsões do modelo do texto original, o modelo "aprende" os padrões linguísticos em seus dados de treinamento (e, por extensão, o "conhecimento" transmitido nesses padrões linguísticos).

Embora esse processo de pré-treinamento proporcione uma habilidade impressionante de gerar texto linguisticamente coerente, ele não necessariamente alinha o desempenho do modelo com as necessidades práticas dos usuários humanos. Sem ajuste fino, um modelo de base pode responder a uma solicitação de "me ensine a fazer pão" com "em um forno de casa". Isso é uma forma gramaticalmente correta de completar a frase, mas não é o que o usuário queria.

No entanto, pré-treinar um LLM para qualquer propósito específico (como seguir instruções) é impraticável. O "grande" em "grandes modelos de linguagem" refere-se ao fato de que esses modelos frequentemente possuem bilhões de parâmetros: treinar esses enormes modelos do zero exige uma quantidade tremenda de energia, tempo, recursos computacionais e dados de treinamento. Por outro lado, o ajuste fino de um LLM já treinado requer muito menos dados e, especialmente ao usar métodos de ajuste fino com eficiência de parâmetros (PEFT), como ajuste fino parcial ou adaptação de baixa classificação (LoRA), apenas uma fração das demandas computacionais.

Embora o ajuste fino possa ser realizado através de praticamente qualquer paradigma de aprendizado de máquina, incluindo aprendizado por reforço, aprendizado semissupervisionado ou aprendizado autossupervisionado adicional, o ajuste de instrução envolve aprendizado supervisionado em pares rotulados (input, output). O que distingue o ajuste de instrução de outras formas de ajuste fino supervisionado (SFT) é que as amostras de input em um conjunto de dados de instrução consistem inteiramente em tarefas que se assemelham a solicitações que os usuários podem fazer em seus prompts; os outputs demonstram respostas desejáveis a essas solicitações. Ao ajustar os pesos do modelo para fazer com que os outputs do LLM se assemelhem aos exemplos no conjunto de dados de instrução, o LLM "aprende" a responder a um prompt como "me ensine a fazer pão " anexando texto que contém conselhos reais sobre como fazer pão.

Assim, o ajuste de instruções ajuda a preencher a lacuna entre o objetivo fundamental do modelo (a previsão da próxima palavra) e o objetivo do usuário de fazer com que o modelo siga instruções e execute tarefas específicas. Isso torna o comportamento do modelo mais útil e previsível.

Mistura de Especialistas | Podcast

Decodificando a IA: resumo semanal das notícias

Junte-se a nosso renomado painel de engenheiros, pesquisadores, líderes de produtos e outros enquanto filtram as informações sobre IA para trazerem a você as mais recentes notícias e insights sobre IA.

Como o ajuste de instruções funciona?

O ajuste fino dos LLMs em um conjunto de dados rotulado de tarefas variadas de seguimento de instruções resulta em uma maior capacidade de seguir instruções em geral, reduzindo a quantidade de informação no contexto necessária para prompts eficazes. Conjuntos de dados de instrução podem ser tanto criados manualmente quanto gerados por outro LLM.

Como articulado no influente artigo de 2022 da Google Research, "Finetuned Language Models are Zero-Shot Learners", o objetivo do ajuste de instrução é melhorar a capacidade dos LLMs de responder a instruções de PLN. Para isso, o ajuste de instrução "combina aspectos atraentes dos paradigmas de pré-treinamento-ajuste fino e de prompt". Em essência, ao incorporar organicamente os princípios de engenharia de prompt no ajuste fino supervisionado, o ajuste de instrução reduz a quantidade de engenharia de prompt e exemplares few-shot necessários para obter uma resposta útil e precisa do modelo ajustado finamente1.

Cada amostra de treinamento em um conjunto de dados de instrução compreende três elementos:

  • Uma instrução: um input de texto em linguagem natural que especifica uma determinada tarefa. Por exemplo, "traduza esta frase do inglês para o espanhol".
  • Informações adicionais: informações suplementares opcionais que fornecem contexto relevante para a tarefa em questão. Por exemplo, um input para uma tarefa de compreensão de leitura pode incluir um breve trecho (e então instruir o modelo a responder a uma determinada pergunta sobre ele).
  • Output desejado: o output de destino (produção) para o prompt fornecido, de acordo com as instruções e o contexto fornecidos. Isso servirá como uma verdade de base contra a qual as previsões do modelo serão avaliadas e otimizadas.

O artigo da Google observou que a variante ajustada de instrução de seu modelo LaMDA-PT, apelidada de FLAN (Finetuned Language Net), experimentou as maiores melhorias em tarefas que são naturalmente articuladas, como instruções, tradução, perguntas e respostas, compreensão de leitura e inferência de linguagem natural (NLI), que é a tarefa de determinar se uma determinada "hipótese" segue logicamente de uma determinada "premissa".

Para explicar isso, o artigo do FLAN nota uma observação feita por Brown, et al no artigo de pesquisa lançado para o modelo GPT-3 original em 2020: uma explicação para o motivo pelo qual os LLMs pré-treinados (sem ajuste fino adicional) têm dificuldades com tarefas como NLI é que passagens que se assemelham a uma tarefa típica de NLI são improváveis de ocorrer naturalmente no corpus de dados não rotulados usados para o pré-treinamento autossupervisionado3. Por outro lado, para tarefas que se assemelham mais ao objetivo direto de modelagem de linguagem do pré-treinamento (como tarefas de raciocínio de senso comum que, em última análise, exigem que o modelo complete uma frase corretamente), as instruções são amplamente redundantes (e, portanto, o ajuste de instrução proporciona menos benefício).

Talvez o mais importante, o artigo demonstrou que adicionar tarefas adicionais ao conjunto de dados de ajuste de instrução melhorou o desempenho do modelo ajustado de instrução mesmo em tarefas novas que não estavam representadas no conjunto de dados. Aqui reside o benefício fundamental do ajuste de instrução: uma melhoria holística na capacidade do modelo de seguir instruções em geral.

Ajuste de instruções vs. ajuste fino de várias tarefas

O artigo do FLAN também continha um estudo que explorava se os aparentes benefícios do ajuste fino de instruções eram devidos às próprias instruções ou simplesmente atribuíveis ao ajuste fino do modelo em múltiplas tarefas de PLN. Para examinar o papel das instruções no ajuste fino, o estudo de revocação fez o ajuste fino do modelo base em três configurações diferentes:

  • Sem template: apenas inputs e outputs foram fornecidos ao modelo. Por exemplo, o input para uma tarefa de tradução seria "o cão corre", e o output alvo seria "the dog runs".
  • Nome do conjunto de dados: cada input era precedido pelo nome da tarefa e do conjunto de dados. No nosso exemplo de tradução, o input, extraído da coleção de conjuntos de dados WMT 20144, seria "[Tradução: WMT 14 para o inglês] O cão corre".
  • Instruções FLAN: Os inputs seguiam os princípios de ajuste de instrução. Para este exemplo de tradução, o input seria "Por favor, traduza esta frase para o inglês: 'O cão corre'."

O estudo então mediu os resultados de cada modelo de linguagem ajustado finamente em uma série de tarefas de seguimento de instruções zero-shot. O modelo ajustado por instruções obteve uma precisão 18% maior do que o "sem modelo" e 8% maior do que o modelo de "nome do conjunto de dados". Isso indica que treinar com as próprias instruções é crucial para aprimorar o desempenho zero-shot em tarefas não vistas.

Ajuste fino da cadeia de pensamento (CoT)

O ajuste fino da cadeia de pensamento (CoT) solicita a um LLM não apenas responder a uma pergunta, mas também gerar uma justificativa de como chegou a uma resposta. Isso pode ser alcançado por meio de prompt few-shot com exemplares de raciocínio sequencial ou simplesmente adicionando "pense passo a passo" ao final de um prompt. Pesquisas demonstraram que o CoT prompting melhora significativamente as capacidades zero-shot de grandes modelos em diversas tarefas aritméticas, de raciocínio simbólico e outras tarefas de raciocínio lógico5. Wei, et al. descobriram que o ajuste de instrução que não inclui tarefas CoT no conjunto de dados de instrução diminui significativamente o desempenho do modelo nas avaliações de CoT, mas que adicionar conjuntos de dados CoT melhora o desempenho em todas as avaliações6.

Além disso, sua pesquisa descobriu que o ajuste fino de instrução em tarefas CoT, tanto com quanto sem exemplares few-shot, aumenta a capacidade de raciocínio CoT de um modelo em um ambiente zero-shot. Uma compreensão intuitiva desse benefício seria que, ao ser ajustado finamente para resolver um problema em etapas lógicas em vez de pular para uma resposta que simplesmente parece linguisticamente coerente, os modelos aprendem a produzir e aplicar melhor suas próprias habilidades de raciocínio.

Conjuntos de dados para ajuste de instrução

Há diversos conjuntos de dados para o propósito de ajuste de instrução de LLMs, muitos dos quais são de código aberto. Esses conjuntos de dados podem conter pares de linguagem natural (instrução, produção) escritos diretamente (ou coletados), usar modelos para converter conjuntos de dados anotados existentes em instruções ou mesmo utilizar outros LLMs para gerar exemplos.

Conjuntos de dados criados por humanos

Embora a criação direta de pares (instrução, output) seja simples, é um processo que demanda muito trabalho e, por fim, envolve uma quantidade significativa de tempo e custo. Diversos métodos foram propostos para transformar conjuntos de dados de linguagem natural em instruções, tipicamente aplicando modelos. O lançamento de múltiplos conjuntos de dados criados manualmente e de código aberto ajudou a reduzir o custo do ajuste fino em dados orgânicos.

Conjuntos de dados de instrução criados por humanos e de código aberto proeminentes incluem:

  • Flan: Foi usado pela primeira vez para fazer o ajuste fino do modelo LaMDA-PT do Google, resultando no modelo FLAN original, e o conjunto de dados Flan foi aprimorado desde então e utilizado para fazer o ajuste fino de vários LLMs. Modelos proeminentes com ajuste fino no Flan são FLAN-T5, Flan-UL2 e Flan-PaLM 540B (também conhecido como FLAN-T5-XXL).
  • OpenAssistant: OpenAssistant Conversations é um corpo de conversas multilíngue criado por humanos que se concentra em trocas de diálogo no estilo de assistente. Consiste em 91.829 prompts de usuários e 69.614 respostas de assistente extraídas de 66.497 árvores de conversação em 35 idiomas diferentes.
  • Dolly: o Dolly é um conjunto de dados em inglês com 15 mil instâncias de conversas geradas por humanos, projetado para possibilitar que LLMs interajam com usuários em padrões de diálogo semelhantes ao ChatGPT. Abrange uma ampla gama de tarefas e comportamentos humanos, incluindo sumarização, extração de informações, brainstorming, escrita criativa, classificação e resposta a perguntas.

Conjuntos de dados gerados pelo LLM

Motivados pela quantidade proibitiva de custo e trabalho necessários para gerar manualmente instruções e outputs, muitos conjuntos de dados de instrução usam as respostas de LLMs maiores para gerar prompts, outputs ou ambos. O uso de conjuntos de dados gerados por LLMs frequentemente tem o efeito adicional de ensinar modelos menores a emular o comportamento de modelos maiores, às vezes em uma dinâmica deliberada de professor/aluno.

  • Self-Instruct: o Self-Instruct foi construído com InstructGPT, uma versão ajustada com instruções do GPT-3. Os autores apresentaram "tarefas sementes" em linguagem natural e solicitaram que o InstructGPT gerasse exemplos adicionais, resultando em 52 mil instruções de treinamento. Um método modificado de autoinstrução foi utilizado por pesquisadores da Universidade de Stanford para gerar dados de treinamento para o Alpaca, a primeira variante com ajuste fino de instrução do LLaMA. É notável como o Alpaca superou levemente os benchmarks do InstructGPT no conjunto de dados Self-Instruct7.
  • Evol-Instruct: Como o nome sugere, Evol-Instruct propõe uma evolução na metodologia Self-Instruct, reescrevendo instruções usando estratégias em profundidade e em amplitude. A primeira evolui as instruções para aumentar a complexidade das instruções por meio de medidas como adicionar restrições, aumentar os passos de raciocínio e complicar o input. A última "transforma" instruções prévias para aumentar a diversidade e a cobertura de tópicos do conjunto de dados. O Evol-Instruct foi introduzido no artigo de pesquisa para WizardLM, que detalha como Evol-Instruct foi utilizado para fazer o ajuste fino do LLaMA.8
  • ShareGPT: O ShareGPT.com contém um repositório gerado por usuários de suas trocas com o ChatGPT. Os pesquisadores por trás do Vicuna, um ajuste notável do LLaMA, usaram 70 mil registros de conversas do ShareGPT e adaptaram suas seleções para conversas de múltiplas interações9.
  • OpenOrca: OpenOrca é uma coleção de dados de Flan Collection aumentada (link fora do ibm.com). O objetivo é replicar o conjunto de dados utilizado pela Microsoft para treinar o Orca e que explorou uma metodologia que se concentra explicitamente na otimização do uso de modelos maiores para refinar LLMs menores por meio do aprendizado por imitação.10

Com o aumento do poder dos LLMs, a utilidade dos conjuntos de dados de ajuste de instrução gerados por LLMs também aumentou. Um artigo de 2023 replicou o paradigma de ajuste fino do Alpaca, que ajustou o LLaMA com instruções geradas pelo InstructGPT, enquanto repetia o processo em paralelo com GPT-4 para gerar instruções. O modelo resultante, que denominaram LLaMA-GPT4, superou consideravelmente as pontuações de "utilidade" do equivalente Alpaca e chegou perto de igualar o próprio GPT-4 nas medidas de "utilidade", "honestidade" e "inofensivo"11.

Desafios e limitações do ajuste de instrução

Embora as técnicas de ajuste de instrução tenham gerado avanços importantes nos LLMs, ainda é necessário diversificar os conjuntos de dados de ajuste de instrução e esclarecer completamente seus benefícios.

O principal desafio do ajuste de instrução é a criação de instruções de alta qualidade para uso no ajuste fino. Os recursos necessários para criar um conjunto de dados de instrução suficientemente grande centralizaram as instruções em um punhado de conjuntos de dados de código aberto, o que pode ter o efeito de diminuir a diversidade dos modelos. Embora o uso de LLMs proprietários maiores para gerar instruções tenha ajudado a reduzir os custos, isso tem a desvantagem potencial de reforçar os vieses e deficiências desses LLMs proprietários em todo o espectro dos LLMs de código aberto. Esse problema é agravado pelo fato de que modelos proprietários são frequentemente, na tentativa de contornar o viés intrínseco dos pesquisadores humanos, usados para avaliar o desempenho de modelos menores.

Em um nível técnico, alguns pesquisadores levantaram preocupações de que o uso de modelos maiores para melhorar modelos menores pode ajudar os menores a imitar o estilo dos modelos maiores, mas não sua funcionalidade real. Um estudo empírico de 2023 sugeriu que muitos dos impressionantes ganhos de desempenho obtidos através do ajuste de instrução podem resultar da captura de padrões superficiais, em vez de uma melhoria mais genuína no raciocínio lógico12.

Da mesma forma, outros pesquisadores postularam que algumas melhorias relatadas podem depender um pouco da avaliação do desempenho de modelos ajustados por instrução em tarefas muito relacionadas às do conjunto de dados de treinamento de instruções. Através de testes mais direcionados de modelos ajustados por instrução dessa forma, Gudibande, et al. concluíram que "a ação de maior alavancagem para melhorar os modelos de código aberto é enfrentar o desafio difícil de desenvolver melhores modelos de base de linguagem, em vez de tomar o atalho de imitar sistemas proprietários"13.

Soluções relacionadas
IBM watsonx.ai

Treine, valide, ajuste e implemente recursos de IA generativa, modelos de base e recursos de aprendizado de máquina com o IBM watsonx.ai, um estúdio empresarial de última geração para construtores de IA. Crie aplicações de IA em uma fração do tempo com uma fração dos dados.

Conheça o watsonx.ai
Soluções de inteligência artificial

Use a IA a serviço de sua empresa com a experiência e o portfólio de soluções líder do setor da IBM à sua disposição.

Explore as soluções de IA
Serviços de IA

Reinvente os fluxos de trabalho e operações críticos adicionando IA para maximizar experiências, tomadas de decisão em tempo real e valor de negócios.

Explore os serviços de IA
Dê o próximo passo

Obtenha acesso completo aos recursos que abrangem o ciclo de vida do desenvolvimento da IA. Produza soluções poderosas de IA com interfaces fáceis de usar, fluxos de trabalhos e acesso a APIs e SDKs padrão do setor.

Explore o watsonx.ai Agende uma demonstração em tempo real
Notas de rodapé

OBSERVAÇÃO: todos os links fora do ibm.com.
1
 "Finetuned Language Models Are Zero-Shot Learners", Google (via arXiv), 3 de setembro de 2021 (última revisão em 8 de fevereiro de 2022).
2 "Aligning language models to follow instructions", OpenAI, 27 de janeiro de 2022.
3 "Language Models are Few-Shot Learners", arXiv, 22 de julho de 2020.
"WMT 2014", Papers With Code, 27 de junho de 2014.
5 "Language Models are Zero-Shot Logicers", arXiv, 24 de maio de 2022 (última revisão em 29 de janeiro de 2023).
6 "Scaling Instruction-Finetuned Language Models", Google (via arXiv), 6 de dezembro de 2022.
7 "Alpaca: A Strong, Replicable Instruction-Following Model", Stanford Center for Research on Foundation Models, 13 de março de 2023.
8 "WizardLM: Empowering Large Language Models to Follow Complex Instructions", arXiv, 10 de junho de 2023.
9 "Vicuna: An Open-Source Chatbot Impressing GPT-4 with 90%* ChatGPT Quality", LMSYS Org, 30 de março de 2023.
10 "Orca: Progressive Learning from Complex Explanation Traces of GPT-4", Microsoft, junho de 2023.
11 "Instruction Tuning with GPT-4", arXiv, 6 de abril de 2023.
12 "Do Models Really Learn to Follow Instructions? An Empirical Study of Instruction Tuning", arXiv, 19 de maio de 2023.
13 "The False Promise of Imitating Proprietary LLMs", arXiv, 25 de maio de 2023.