Fine-tuning
O ajuste fino continua o treinamento de um modelo pré-treinado com dados específicos da tarefa para adaptá-lo usando muito menos dados e computação. Abrange como funciona, PEFT e código.
O ajuste fino é o processo de continuar treinando um modelo que já foi treinado com um grande conjunto de dados, atualizando alguns ou todos os seus pesos com um conjunto menor e específico para a tarefa. Os pesos pré-treinados já codificam conhecimentos gerais, como bordas, texturas e formas em modelos de visão, ou gramática e fatos em grandes modelos de linguagem (LLMs); assim, o ajuste fino alcança alta precisão com muito menos dados rotulados e poder computacional do que o treinamento a partir de pesos aleatórios. É a forma mais comum de realizar o aprendizado por transferência e como são criados a maioria dos modelos personalizados de detecção de objetos e dos assistentes de chat a partir de modelos de base pré-treinados.
Como funciona o ajuste fino#
Uma execução de ajuste fino carrega pesos pré-treinados, substitui ou redimensiona qualquer camada vinculada à tarefa original, como um classificador ou uma cabeça de detecção, e treina com os novos dados usando a função de perda e o otimizador habituais. Três escolhas determinam quanto do modelo original é preservado:
- Taxa de aprendizado: O ajuste fino usa uma taxa de aprendizado menor do que o pré-treinamento, geralmente após um breve aquecimento, para que as atualizações refinem as características pré-treinadas em vez de substituí-las. O ULMFiT foi além com taxas de aprendizado discriminativas, dividindo a taxa por 2,6 para cada camada abaixo da camada superior.
- Quais camadas são treinadas: Congelar as camadas iniciais do backbone mantém fixas as características gerais, reduz o uso de memória e diminui o risco de sobreajuste em conjuntos de dados pequenos. O descongelamento gradual treina primeiro a nova cabeça e depois libera as camadas mais profundas.
- Duração do treinamento: Quanto mais tempo um modelo treina apenas com dados novos, mais habilidades originais perde devido ao esquecimento catastrófico.
A configuração adequada depende da memória disponível, da quantidade de dados rotulados e da relevância das habilidades originais:
Ajuste fino completo e ajuste fino eficiente em parâmetros#
O ajuste fino completo atualiza todos os pesos. Para um LLM com 7 bilhões de parâmetros, isso significa manter gradientes e o estado do otimizador para 7 bilhões de valores, além de salvar uma cópia completa do modelo para cada tarefa. O ajuste fino eficiente em parâmetros (PEFT) congela os pesos pré-treinados e treina, em vez disso, um pequeno conjunto de parâmetros adicionados ou selecionados; a biblioteca PEFT da Hugging Face implementa os métodos mais comuns. O LoRA adiciona matrizes treináveis de baixo posto ao lado de matrizes de pesos congeladas e, em comparação com o ajuste fino completo do GPT-3 175B com Adam, reduziu os parâmetros treináveis em 10.000 vezes e a memória da GPU em 3 vezes. O QLoRA treina adaptadores LoRA sobre um modelo-base quantizado em 4 bits, o que tornou possível ajustar um modelo de 65 bilhões de parâmetros em uma única GPU de 48 GB.
Os LLMs passam por várias etapas de ajuste fino após o pré-treinamento. O ajuste por instruções treina com pares de prompts e respostas, e métodos baseados em preferências, como o aprendizado por reforço com feedback humano (RLHF) e a otimização direta de preferências (DPO), alinham então as respostas às preferências humanas.
Ajuste fino e termos relacionados#
- Aprendizado por transferência: A ideia mais ampla de reutilizar um modelo treinado para uma tarefa em outra tarefa. O ajuste fino atualiza os pesos pré-treinados, enquanto a extração de características os mantém congelados e treina apenas uma nova cabeça.
- Treinamento do zero: Começa com pesos aleatórios e exige muito mais dados rotulados e poder computacional. É adequado para novas arquiteturas e domínios com pouca semelhança com qualquer dado de pré-treinamento disponível.
- Sondagem linear: Treina apenas um classificador linear sobre características congeladas, geralmente para medir quanto uma representação pré-treinada já consegue capturar.
- Engenharia de prompts e geração aumentada por recuperação (RAG): Alteram o comportamento de um LLM por meio da entrada, sem modificar os pesos.
Ajuste fino de um detector de objetos#
Executar train() em um checkpoint YOLO26 pré-treinado com um novo conjunto de dados faz o ajuste fino: todos os pesos compatíveis são transferidos, e o padrão cls_remap=True copia as linhas do classificador cujos nomes de classe correspondem; assim, no conjunto de dados African Wildlife, as saídas de elefante e zebra começam com as linhas pré-treinadas no COCO, enquanto as de búfalo e rinoceronte, que não existem no COCO, começam do zero.
from ultralytics import YOLO
# Carrega pesos YOLO26n pré-treinados no COCO; YOLO("yolo26n.yaml") treinaria do zero
model = YOLO("yolo26n.pt")
# Faz o ajuste fino com 1.052 imagens de treinamento de búfalos, elefantes, rinocerontes e zebras
results = model.train(data="african-wildlife.yaml", epochs=30, imgsz=640)Nesta execução de 30 épocas, o padrão optimizer="auto" seleciona AdamW com lr0=0.00125, uma taxa calculada com base nas 4 classes do conjunto de dados, pois a execução tem menos de 10.000 iterações.










