Pular para o conteúdo principal
InicioTutoriaisInteligência Artificial (IA)

Um guia introdutório para aperfeiçoar os LLMs

O ajuste fino dos modelos de linguagem ampla (LLMs) revolucionou o processamento de linguagem natural (PLN), oferecendo recursos sem precedentes em tarefas como tradução de idiomas, análise de sentimentos e geração de texto. Essa abordagem transformadora aproveita modelos pré-treinados como o GPT-2, aprimorando seu desempenho em domínios específicos por meio do processo de ajuste fino.
abr. de 2024  · 12 min leer

No último ano e meio, o campo do processamento de linguagem natural (PLN) passou por uma transformação significativa devido à popularização dos modelos de linguagem grande (LLMs). As habilidades de linguagem natural que esses modelos apresentam permitiram aplicações que pareciam impossíveis de serem realizadas há alguns anos.

Os LLMs estão ampliando os limites do que antes era considerado possível, com recursos que vão desde a tradução de idiomas até a análise de sentimentos e a geração de textos.

No entanto, todos sabemos que o treinamento desses modelos é demorado e caro. Por isso, o ajuste fino de grandes modelos de linguagem é importante para adaptar esses algoritmos avançados a tarefas ou domínios específicos.

Esse processo aprimora o desempenho do modelo em tarefas especializadas e amplia significativamente sua aplicabilidade em vários campos. Isso significa que podemos aproveitar a capacidade de processamento de linguagem natural dos LLMs pré-treinados e treiná-los ainda mais para executar nossas tarefas específicas.

Hoje, explore a essência dos modelos de linguagem pré-treinados e aprofunde-se no processo de ajuste fino.

Portanto, vamos navegar pelas etapas práticas de ajuste fino de um modelo como o GPT-2 usando o Hugging Face.

Entendendo como funcionam os modelos de linguagem pré-treinados

O modelo de linguagem é um tipo de algoritmo de aprendizado de máquina projetado para prever a palavra subsequente em uma frase, com base em seus segmentos anteriores. Ele se baseia na arquitetura Transformers, que é explicada em detalhes em nosso artigo sobre Como funcionam os Transformers.

Modelos de linguagem pré-treinados, como o GPT (Generative Pre-trained Transformer), são treinados em grandes quantidades de dados de texto. Isso permite que os LLMs compreendam os princípios fundamentais que regem o uso de palavras e sua disposição na linguagem natural.

Imagem do autor. Entrada e saída do LLM.

Imagem do autor. Entrada e saída do LLM.

A parte mais importante é que esses modelos não só são bons em compreender a linguagem natural, mas também em gerar textos semelhantes aos humanos com base na entrada que recebem.

E a melhor parte de tudo isso?

Esses modelos já estão abertos para as massas usando APIs. Se quiser saber como tirar proveito dos LLMs mais avançados da OpenAI, você pode aprender como fazê-lo seguindo esta folha de dicas sobre a API da OpenAI.

O que é o ajuste fino e por que ele é importante?

O ajuste fino é o processo de pegar um modelo pré-treinado e treiná-lo ainda mais em um conjunto de dados específico do domínio.

A maioria dos modelos LLM atuais tem um desempenho global muito bom, mas falha em problemas específicos orientados a tarefas. O processo de ajuste fino oferece vantagens consideráveis, incluindo despesas de computação reduzidas e a capacidade de aproveitar modelos de ponta sem a necessidade de construir um modelo desde o início.

Os transformadores concedem acesso a uma ampla coleção de modelos pré-treinados adequados para várias tarefas. O ajuste fino desses modelos é uma etapa crucial para melhorar a capacidade do modelo de executar tarefas específicas, como análise de sentimentos, resposta a perguntas ou resumo de documentos, com maior precisão.

Imagem do autor. Visualizando o processo de ajuste fino.

Imagem do autor. Visualização do processo de ajuste fino.

O ajuste fino adapta o modelo para ter um melhor desempenho em tarefas específicas, tornando-o mais eficaz e versátil em aplicações do mundo real. Esse processo é essencial para adaptar um modelo existente a uma tarefa ou domínio específico.

A participação ou não no ajuste fino depende de suas metas, que normalmente variam de acordo com o domínio ou a tarefa específica em questão.

Os diferentes tipos de ajuste fino

O ajuste fino pode ser abordado de várias maneiras, dependendo principalmente de seu foco principal e de seus objetivos específicos.

Ajuste fino supervisionado

A abordagem de ajuste fino mais simples e comum. O modelo é treinado em um conjunto de dados rotulado específico para a tarefa-alvo a ser executada, como classificação de texto ou reconhecimento de entidades nomeadas.

Por exemplo, treinaríamos nosso modelo em um conjunto de dados contendo amostras de texto rotuladas com o sentimento correspondente para análise de sentimento.

Aprendizado com poucos disparos

Há alguns casos em que a coleta de um grande conjunto de dados rotulados é impraticável. O aprendizado com poucas fotos tenta resolver isso fornecendo alguns exemplos (ou fotos) da tarefa necessária no início dos prompts de entrada. Isso ajuda o modelo a ter um contexto melhor da tarefa sem um extenso processo de ajuste fino.

Aprendizagem por transferência

Embora todas as técnicas de ajuste fino sejam uma forma de aprendizagem por transferência, essa categoria tem o objetivo específico de permitir que um modelo execute uma tarefa diferente daquela em que foi inicialmente treinado. A ideia principal é aproveitar o conhecimento que o modelo adquiriu em um conjunto de dados grande e geral e aplicá-lo a uma tarefa mais específica ou relacionada.

Ajuste fino específico do domínio

Esse tipo de ajuste fino tenta adaptar o modelo para entender e gerar textos específicos de um determinado domínio ou setor. O modelo é ajustado em um conjunto de dados composto de texto do domínio de destino para melhorar seu contexto e conhecimento de tarefas específicas do domínio.

Por exemplo, para gerar um chatbot para um aplicativo médico, o modelo seria treinado com registros médicos, para adaptar seus recursos de compreensão de linguagem ao campo da saúde.

Um guia passo a passo para aperfeiçoar um LLM

Já sabemos que o ajuste fino é o processo de pegar um modelo pré-treinado e atualizar seus parâmetros treinando em um conjunto de dados específico para sua tarefa. Então, vamos exemplificar esse conceito com o ajuste fino de um modelo real.

Imagine que estamos trabalhando com o GPT-2, mas detectamos que ele é muito ruim em inferir os sentimentos dos tweets.

Uma pergunta natural que vem à mente é: Podemos fazer algo para melhorar seu desempenho?

Podemos tirar proveito do ajuste fino treinando nosso modelo GPT-2 pré-treinado a partir do modelo Hugging Face com um conjunto de dados contendo tweets e seus sentimentos correspondentes para que o desempenho melhore. Aqui está um exemplo básico de ajuste fino de um modelo para classificação de sequências:

Etapa 1: Escolha um modelo pré-treinado e um conjunto de dados

Para fazer o ajuste fino de um modelo, sempre precisamos ter em mente um modelo pré-treinado. No nosso caso, vamos fazer um ajuste fino simples usando o GPT-2.

Captura de tela do Hugging Face Datasets Hub. Selecionando o modelo GPT2 da OpenAI.

Captura de tela do Hugging Face Datasets Hub. Selecionando o modelo GPT2 da OpenAI.

Lembre-se sempre de selecionar uma arquitetura de modelo adequada para sua tarefa.

Etapa 2: Carregar os dados a serem usados

Agora que temos nosso modelo, precisamos de alguns dados de boa qualidade para trabalhar, e é exatamente aí que a biblioteca datasets entra em ação.

No meu caso, usarei a biblioteca de conjuntos de dados Hugging Face para importar um conjunto de dados contendo tweets segmentados por seu sentimento (Positivo, Neutro ou Negativo).

from datasets import load_dataset

dataset = load_dataset("mteb/tweet_sentiment_extraction")
df = pd.DataFrame(dataset['train'])

Se verificarmos o conjunto de dados que acabamos de baixar, ele é um conjunto de dados que contém um subconjunto para treinamento e um subconjunto para teste. Se convertermos o subconjunto de treinamento em um quadro de dados, ele terá a seguinte aparência.

O conjunto de dados a ser usado.

O conjunto de dados a ser usado.

Etapa 3: Tokenizador

Agora que já temos nosso conjunto de dados, precisamos de um tokenizador para prepará-lo para ser analisado pelo nosso modelo.

Como os LLMs trabalham com tokens, precisamos de um tokenizador para processar o conjunto de dados. Para processar seu conjunto de dados em uma única etapa, use o método Datasets map para aplicar uma função de pré-processamento em todo o conjunto de dados.

É por isso que a segunda etapa é carregar um tokenizador pré-treinado e tokenizar nosso conjunto de dados para que ele possa ser usado para o ajuste fino.

from transformers import GPT2Tokenizer

# Loading the dataset to train our model
dataset = load_dataset("mteb/tweet_sentiment_extraction")

tokenizer = GPT2Tokenizer.from_pretrained("gpt2")
tokenizer.pad_token = tokenizer.eos_token
def tokenize_function(examples):
   return tokenizer(examples["text"], padding="max_length", truncation=True)

tokenized_datasets = dataset.map(tokenize_function, batched=True)

BÔNUS: Para melhorar nossos requisitos de processamento, podemos criar um subconjunto menor do conjunto de dados completo para ajustar nosso modelo. O conjunto de treinamento será usado para ajustar nosso modelo, enquanto o conjunto de teste será usado para avaliá-lo.

small_train_dataset = tokenized_datasets["train"].shuffle(seed=42).select(range(1000))
small_eval_dataset = tokenized_datasets["test"].shuffle(seed=42).select(range(1000))

Etapa 4: Inicializar nosso modelo básico

Comece carregando seu modelo e especifique o número de rótulos esperados. No cartão do conjunto de dados de sentimento do Tweet, você sabe que há três rótulos:

from transformers import GPT2ForSequenceClassification

model = GPT2ForSequenceClassification.from_pretrained("gpt2", num_labels=3)

Etapa 5: Avaliar método

O Transformers oferece uma classe Trainer otimizada para treinamento. No entanto, esse método não inclui como avaliar o modelo. É por isso que, antes de iniciar nosso treinamento, precisaremos passar ao Trainer uma função para avaliar o desempenho do nosso modelo.

import evaluate

metric = evaluate.load("accuracy")

def compute_metrics(eval_pred):
   logits, labels = eval_pred
   predictions = np.argmax(logits, axis=-1)
   return metric.compute(predictions=predictions, references=labels)

Etapa 6: Ajuste fino usando o método Trainer

Nossa etapa final é configurar os argumentos de treinamento e iniciar o processo de treinamento. A biblioteca Transformers contém a classe Trainer, que oferece suporte a uma ampla gama de opções e recursos de treinamento, como registro, acúmulo de gradiente e precisão mista. Primeiro, definimos os argumentos de treinamento juntamente com a estratégia de avaliação. Depois que tudo estiver definido, podemos treinar o modelo com facilidade usando o comando train().

from transformers import TrainingArguments, Trainer

training_args = TrainingArguments(
   output_dir="test_trainer",
   #evaluation_strategy="epoch",
   per_device_train_batch_size=1,  # Reduce batch size here
   per_device_eval_batch_size=1,    # Optionally, reduce for evaluation as well
   gradient_accumulation_steps=4
   )


trainer = Trainer(
   model=model,
   args=training_args,
   train_dataset=small_train_dataset,
   eval_dataset=small_eval_dataset,
   compute_metrics=compute_metrics,

)

trainer.train()

Após o treinamento, avalie o desempenho do modelo em um conjunto de validação ou teste. Novamente, a classe do instrutor já contém um método de avaliação que cuida disso.

import evaluate

trainer.evaluate()

Essas são as etapas mais básicas para realizar o ajuste fino de qualquer LLM. Lembre-se de que o ajuste fino de um LLM é altamente exigente em termos de computação, e seu computador local pode não ter potência suficiente para isso.

Você pode aprender a fazer o ajuste fino de LLMs mais avançados diretamente na interface do OpenAI seguindo este tutorial sobre Como fazer o ajuste fino do GPT 3.5.

Ajuste fino das práticas recomendadas

Para garantir o sucesso do ajuste fino, considere as seguintes práticas recomendadas:

Qualidade e quantidade de dados

A qualidade de seu conjunto de dados de ajuste fino afeta significativamente o desempenho do modelo. Todos nós conhecemos a frase:

"Entrada de lixo, saída de lixo"

Portanto, sempre garanta que os dados sejam limpos, relevantes e suficientemente grandes.

Ajuste de hiperparâmetros

O ajuste fino geralmente é um processo longo que precisa ser repetido. Sempre explore várias configurações de taxas de aprendizado, tamanhos de lote e o número de épocas de treinamento para identificar a melhor configuração para o seu projeto.

Ajustes precisos são essenciais para garantir que o modelo aprenda de forma eficiente e se adapte bem a dados não vistos, evitando a armadilha do ajuste excessivo.

Avaliação regular

Avalie regularmente o progresso do modelo durante o treinamento para monitorar sua eficácia e implementar as modificações necessárias. Isso envolve a avaliação do desempenho do modelo usando um conjunto de dados de validação distinto durante todo o período de treinamento.

Essa avaliação é fundamental para determinar o desempenho do modelo na tarefa em questão e seu potencial de superajuste ao conjunto de dados de treinamento. Com base nos resultados da fase de validação, os ajustes podem ser feitos conforme necessário para otimizar o desempenho.

Evitando as armadilhas do ajuste fino do LLM

Às vezes, o ajuste fino pode levar a resultados abaixo do ideal. Cuidado com as seguintes armadilhas:

Ajuste excessivo

O uso de um conjunto de dados pequeno para treinamento ou a extensão excessiva do número de épocas pode produzir um ajuste excessivo. Isso geralmente é caracterizado pelo fato de o modelo mostrar alta precisão em nosso conjunto de dados de treinamento, mas não conseguir generalizar para novos dados.

Ajuste insuficiente

Por outro lado, um treinamento insuficiente ou uma baixa taxa de aprendizado pode resultar em subajuste, em que o modelo não consegue aprender a tarefa adequadamente.

Esquecimento catastrófico

No processo de ajuste fino para uma tarefa específica, há o risco de o modelo perder o conhecimento amplo que adquiriu inicialmente. Esse problema, conhecido como esquecimento catastrófico, pode diminuir a capacidade do modelo de ter um bom desempenho em uma variedade de tarefas usando o processamento de linguagem natural.

Vazamento de dados

Certifique-se sempre de que os conjuntos de dados de treinamento e validação estejam separados e que não haja sobreposição, pois isso pode gerar métricas de alto desempenho enganosas.

Considerações finais e etapas futuras.

Embarcar na jornada de ajuste fino de grandes modelos de linguagem abre um mundo de possibilidades para aplicativos de IA.

Ao compreender e aplicar os conceitos, as práticas e as precauções descritas, é possível adaptar com eficácia esses modelos poderosos para atender a necessidades específicas, liberando todo o seu potencial no processo.

Para continuar aprendendo sobre o ajuste fino, recomendo enfaticamente que você realize alguns ajustes finos mais avançados. Você pode começar com o curso Conceitos de LLM da DataCamp, que abrange muitas das principais metodologias de treinamento e as pesquisas mais recentes. Alguns outros bons recursos a serem seguidos são:

Temas

Comece sua jornada de IA hoje mesmo!

Course

Introduction to LLMs in Python

4 hr
4.3K
Learn the nuts and bolts of LLMs and the revolutionary transformer architecture they are based on!
See DetailsRight Arrow
Start Course
Veja MaisRight Arrow
Relacionado

blog

25 exemplos práticos da transformação da IA nos setores

Desde a reformulação da saúde e do comércio eletrônico até a revolução da agricultura e das finanças, descubra exemplos reais de IA que impulsionam o crescimento, a eficiência e a inovação.

Nahla Davies

15 min

blog

O que é um algoritmo?

Aprenda algoritmos e sua importância no aprendizado de máquina. Entenda como os algoritmos resolvem problemas e executam tarefas com etapas bem definidas.
DataCamp Team's photo

DataCamp Team

11 min

blog

O que são redes neurais?

As NNs são modelos computacionais inspirados no cérebro, usados no aprendizado de máquina para reconhecer padrões e tomar decisões.
Abid Ali Awan's photo

Abid Ali Awan

7 min

tutorial

Primeiros passos com o Claude 3 e a API do Claude 3

Saiba mais sobre os modelos Claude 3, benchmarks de desempenho detalhados e como acessá-los. Além disso, descubra a nova API Python do Claude 3 para geração de texto, acesso a recursos de visão e streaming.
Abid Ali Awan's photo

Abid Ali Awan

tutorial

Dominando a retropropagação: Um guia abrangente para redes neurais

Mergulhe nos fundamentos da retropropagação em redes neurais com um guia prático para treinar e avaliar um modelo para um cenário de uso de classificação de imagens.
Zoumana Keita 's photo

Zoumana Keita

14 min

tutorial

Como usar o Midjourney: Um guia abrangente para a criação de obras de arte geradas por IA

Descubra o poder do Midjourney, uma ferramenta de IA generativa para criar obras de arte impressionantes. Saiba como começar, escrever prompts eficazes e otimizar seu uso com nosso guia passo a passo.
Kurtis Pykes 's photo

Kurtis Pykes

12 min

See MoreSee More