Pré-treinamento
O que é o pré-treinamento?
O pré-treinamento é a etapa responsável por transformar uma rede neural inicializada aleatoriamente em um modelo capaz de gerar linguagem natural. Durante esse processo, o modelo é exposto a uma grande quantidade de textos e aprende, de forma auto-supervisionada, a prever o próximo token1 de uma sequência.
Em cada iteração de treinamento, uma sequência de tokens é apresentada ao modelo. Com base no contexto disponível, ele tenta prever qual será o próximo token. A diferença entre a previsão e o token correto é medida por uma função de perda2. Esse erro é então propagado de volta pela rede através do algoritmo de Backpropagation3, ajustando milhões — ou até bilhões — de parâmetros para reduzir gradualmente esse erro.
Ao longo de bilhões de exemplos, o modelo deixa de memorizar apenas sequências específicas e passa a aprender padrões presentes na linguagem. Esse aprendizado permite capturar relações gramaticais, semânticas, sintáticas e até conhecimentos factuais contidos no corpus utilizado durante o treinamento.
De maneira simplificada, um LLM pode ser visto como um sistema extremamente sofisticado de autocompletar texto. Entretanto, sua capacidade de prever o próximo token faz com que ele aprenda representações estatísticas da linguagem, permitindo executar diversas tarefas sem ter sido treinado especificamente para cada uma delas.
Dados
Os dados representam a principal fonte de conhecimento de um LLM. Independentemente da arquitetura utilizada, um modelo somente poderá aprender padrões presentes nas informações às quais foi exposto.
Por esse motivo, a construção do corpus é considerada uma das etapas mais importantes do pré-treinamento. Um bom conjunto de dados deve possuir qualidade, diversidade, baixa duplicação e alta densidade de informação. Antes do treinamento, normalmente são aplicados processos de coleta, limpeza, filtragem, remoção de duplicatas e avaliação da qualidade dos documentos.
Quanto maior a diversidade de informações relevantes presentes no corpus, maior tende a ser a capacidade do modelo de generalizar4 para diferentes tarefas e contextos.
Tokenizador
Modelos não compreendem texto diretamente; eles operam apenas com números. Antes do treinamento, todo o corpus precisa ser convertido em uma sequência de identificadores numéricos chamados tokens.
Essa conversão é realizada por um tokenizador. Seu papel é construir um vocabulário5 e definir como cada trecho de texto será representado numericamente.
Existem diversos algoritmos para essa tarefa, sendo o Byte Pair Encoding (BPE)6 um dos mais utilizados em modelos da família GPT. Em vez de armazenar todas as palavras possíveis, o BPE aprende subpalavras frequentes presentes no corpus, permitindo representar palavras conhecidas e desconhecidas de forma eficiente.
Após essa etapa, todo o conjunto de dados passa a ser representado exclusivamente por sequências de IDs, que serão utilizadas durante o treinamento do modelo.
Modelo
O modelo é a estrutura matemática responsável por aprender os padrões existentes nos dados. Atualmente, praticamente todos os LLMs modernos são baseados na arquitetura Transformer, apresentada no artigo Attention Is All You Need.
Seu principal mecanismo é a Self-Attention7, que permite ao modelo analisar quais tokens do contexto são mais relevantes para prever o próximo token da sequência. Essa capacidade tornou possível trabalhar com dependências de longo alcance, superando diversas limitações das arquiteturas anteriores.
Além da atenção, o Transformer é composto por embeddings, camadas Feed Forward, normalizações, conexões residuais e outros componentes que, em conjunto, armazenam o conhecimento aprendido durante o treinamento nos parâmetros da rede.
A quantidade de parâmetros influencia diretamente a capacidade de representação do modelo, embora seu desempenho também dependa da qualidade dos dados e do volume de treinamento realizado.
Treinamento
Durante o treinamento, o modelo percorre repetidamente o corpus tokenizado realizando milhões de previsões do próximo token.
Na prática, os dados são processados em pequenos conjuntos chamados batches8, enquanto cada sequência possui um comprimento máximo definido pelo block size ou context window9.
O treinamento moderno é normalmente planejado em função do número total de tokens que o modelo verá ao longo de todo o processo. Para tornar esse treinamento viável, diversas otimizações são utilizadas, como Gradient Accumulation, Mixed Precision, compilação do PyTorch, Flash Attention e outras técnicas voltadas para desempenho e redução do consumo de memória.
Durante o treinamento também são gerados checkpoints10, que armazenam o estado completo do modelo e permitem interromper ou retomar o treinamento a qualquer momento.
Resultado
Ao final do pré-treinamento, o modelo aprende uma representação estatística da linguagem presente no corpus utilizado.
Se o conjunto de dados for amplo, diverso e de boa qualidade, e o modelo possuir capacidade suficiente para absorver essas informações, ele poderá realizar tarefas como responder perguntas, resumir textos, completar frases, traduzir idiomas e gerar conteúdo coerente — tudo isso apenas utilizando o conhecimento adquirido durante o pré-treinamento.
Benchmark
Após o treinamento, é necessário medir a qualidade do modelo de forma objetiva.
Para isso, o modelo é submetido a diferentes benchmarks, compostos por conjuntos padronizados de testes que avaliam capacidades como compreensão de texto, raciocínio, geração de código, tradução, conhecimento factual e diversas outras habilidades.
Essas avaliações permitem comparar modelos treinados em diferentes configurações, arquiteturas e conjuntos de dados, fornecendo métricas quantitativas que auxiliam na análise da qualidade do pré-treinamento e na evolução do desenvolvimento do modelo.
Notas
- Token: menor unidade de processamento utilizada pelo modelo. Um token pode representar uma palavra inteira, parte de uma palavra, um caractere ou um símbolo especial.
- Função de perda (Loss): mede o quão distante a previsão do modelo está da resposta correta. Quanto menor o loss, melhor tende a ser a capacidade preditiva do modelo.
- Backpropagation: algoritmo responsável por calcular como cada parâmetro do modelo contribuiu para o erro e ajustar seus valores utilizando gradientes.
- Generalização: capacidade do modelo de produzir boas respostas para exemplos nunca vistos durante o treinamento.
- Vocabulário: conjunto de todos os tokens conhecidos pelo modelo.
- Byte Pair Encoding (BPE): algoritmo que constrói o vocabulário encontrando as combinações de caracteres mais frequentes no corpus.
- Self-Attention: mecanismo que calcula a importância relativa entre os tokens de uma sequência para construir representações contextualizadas.
- Batch: conjunto de sequências processadas simultaneamente em uma única iteração.
- Context Window: quantidade máxima de tokens que o modelo consegue considerar simultaneamente.
- Checkpoint: arquivo contendo os pesos e o estado do treinamento em determinado momento.
- Supervised Fine-Tuning (SFT): etapa em que o modelo é refinado utilizando exemplos de entrada e resposta produzidos por humanos ou conjuntos de dados supervisionados.