Instruction Tuning
O ajuste fino por instruções adapta um modelo de linguagem pré-treinado com pares de instrução e resposta para que siga pedidos. Aborda FLAN, InstructGPT, dados e VLMs.
O ajuste por instruções é o ajuste fino de um grande modelo de linguagem (LLM) pré-treinado com pares de instruções e respostas desejadas, para que siga pedidos escritos em linguagem corrente. Um modelo pré-treinado apenas continua o texto: quando a OpenAI lhe pediu para «Explicar a aterragem na Lua a uma criança de 6 anos em poucas frases», o GPT-3 continuou com pedidos semelhantes sobre gravidade e relatividade, enquanto o InstructGPT, ajustado por instruções, escreveu a explicação. Investigadores da Google descreveram o método no artigo FLAN de 2021, que ajustou um modelo de 137 mil milhões de parâmetros com mais de 60 conjuntos de dados de processamento de linguagem natural (NLP) reescritos como instruções; o modelo ajustado superou o desempenho zero-shot do GPT-3, com 175 mil milhões de parâmetros, em 20 das 25 tarefas que nunca tinha visto. Nos pipelines de modelos de conversação, esta mesma etapa é normalmente chamada de ajuste fino supervisionado (SFT), e os dois termos são usados como sinónimos.
Como funciona o ajuste por instruções#
Cada exemplo é formatado com um modelo que indica onde termina a instrução e começa a resposta, como os modelos de conversação dos modelos atuais ou os cabeçalhos «### Instruction» e «### Response» usados pelo Alpaca de Stanford. O treino usa a mesma função de perda do próximo token que o pré-treino, mas só contam os tokens da resposta, para que o modelo aprenda a produzir respostas em vez de prever as próprias instruções. Um exemplo de treino com o GPT-2 da OpenAI mostra esta configuração:
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("gpt2")
model = AutoModelForCausalLM.from_pretrained("gpt2")
optimizer = torch.optim.AdamW(model.parameters(), lr=5e-5)
# One instruction-response pair in the Alpaca prompt format
prompt_ids = tokenizer("### Instruction:\nName three animals that can fly.\n\n### Response:\n").input_ids
response_ids = tokenizer("Bats, eagles, and bees." + tokenizer.eos_token).input_ids
input_ids = torch.tensor([prompt_ids + response_ids])
# Label -100 drops the instruction from the loss, so the model learns only to respond
labels = torch.tensor([[-100] * len(prompt_ids) + response_ids])
for step in range(3):
loss = model(input_ids=input_ids, labels=labels).loss
loss.backward()
optimizer.step()
optimizer.zero_grad()
print(f"step {step}: loss {loss.item():.2f}")Só os 10 tokens da resposta contam para a perda, e três atualizações neste único exemplo reduzem-na de 4,45 para 1,49. Uma execução de ajuste por instruções aplica a mesma atualização a milhares ou milhões de pares de instrução-resposta diferentes, para que o modelo aprenda o hábito geral de responder, em vez de aprender apenas uma resposta.
O ajuste por instruções é normalmente a primeira etapa do pós-treino, e os dados podem vir de várias fontes:
Conjuntos de dados de instruções#
A coleção Flan da Google cresceu para 1.836 tarefas em 2022, e o ajuste por instruções com essa coleção melhorou, em média, o PaLM de 540 mil milhões de parâmetros em 9,4%. O InstructGPT da OpenAI combinou demonstrações escritas por avaliadores com aprendizagem por reforço com feedback humano (RLHF), e as pessoas preferiram os resultados do seu modelo de 1,3 mil milhões de parâmetros aos do GPT-3 de 175 mil milhões. O Alpaca de Stanford, lançado em março de 2023, ajustou o LLaMA 7B da Meta por menos de 600 dólares, usando 52.000 exemplos gerados por um modelo da OpenAI com o método Self-Instruct, um exemplo pioneiro de dados sintéticos como fonte de dados de instrução. O LIMA da Meta mostrou até onde se pode chegar com um conjunto de dados pequeno: ajustou um LLaMA de 65 mil milhões de parâmetros com apenas 1.000 exemplos cuidadosamente selecionados, e os seus autores concluíram que um modelo aprende quase todo o seu conhecimento durante o pré-treino, enquanto o ajuste por instruções lhe ensina o formato e o estilo das respostas. Métodos como a otimização direta de preferências (DPO) refinam depois o modelo ajustado com dados de preferências.
Ajuste visual por instruções#
Os modelos de visão e linguagem (VLMs) aprendem da mesma forma a seguir instruções sobre imagens. O LLaVA, publicado em abril de 2023, forneceu ao GPT-4, apenas de texto, as legendas e as caixas delimitadoras de imagens do COCO e pediu-lhe que escrevesse 158.000 conversas, descrições detalhadas e exemplos de raciocínio complexo sobre essas imagens; em seguida, ajustou com esses dados um modelo que liga um codificador de imagens CLIP a um modelo de linguagem, num método conhecido como ajuste visual por instruções. Os VLMs ajustados por instruções respondem a pedidos abertos sobre uma fotografia, e o bloco LLM dos Agentes da Ultralytics Platform depende dessa capacidade: envia a imagem, os resultados do YOLO26 a montante e um prompt escrito para o modelo de visão e linguagem selecionado.
Ajuste por instruções vs. termos relacionados#
O ajuste de prompts aprende alguns vetores de prompt flexíveis e mantém o modelo congelado, e a engenharia de prompts altera apenas o texto de entrada, enquanto o ajuste por instruções atualiza os pesos do modelo. O ajuste fino de domínio adapta um modelo a uma área como medicina ou direito, sem necessariamente lhe ensinar a seguir pedidos. O ajuste por instruções também pode ser feito com ajuste fino eficiente em parâmetros (PEFT): o QLoRA treina adaptadores LoRA num modelo quantizado de 4 bits, e os seus autores ajustaram por instruções um modelo de 65 mil milhões de parâmetros numa única GPU de 48 GB.










