Buscar

LLM: o que é um modelo de linguagem e como funciona

LLM explicado sem mistério: como o modelo prevê o próximo token, o que é janela de contexto, por que ele alucina e quando usar modelo aberto.

Gabriel Pedroso11 min de leitura
llm, modelo de linguagem que transforma texto em tokens e prevê a continuação

Num mesmo dia, o assistente da empresa resume um contrato longo sem errar uma cláusula. Uma hora depois, ele cita uma lei com número e artigo que não existem. Quem viu as duas cenas costuma concluir que a ferramenta é instável.

As duas respostas saíram do mesmo mecanismo. Um LLM (large language model, ou modelo de linguagem grande) faz uma coisa só: recebe um texto e calcula qual pedaço de texto deve vir em seguida. O resumo correto e a lei inventada são o mesmo cálculo aplicado a situações diferentes.

Entender esse cálculo explica por que a resposta muda quando você reformula a pergunta e por que conferir continua sendo trabalho seu.

Um LLM não consulta fatos. Ele calcula a continuação mais provável de um texto, e quase tudo o que ele faz bem, e quase tudo o que faz errado, sai dessa mecânica.

1Textoa pergunta entra como texto
2Tokenso texto vira pedaços numerados
3Modelobilhões de pesos calculam probabilidades
4Próximo tokenescolhe um e repete o ciclo
5Respostaa sequência volta a ser texto
Repare no passo 4: o modelo escolhe um token por vez e devolve cada escolha para a entrada antes de calcular o próximo.

O que é um LLM, sem a parte mágica

Modelo de linguagem é um programa que atribui probabilidade a sequências de texto. Dado o começo de uma frase, ele estima quais continuações são mais prováveis. O "grande" do nome vem de duas coisas: a quantidade de texto usada no treino e a quantidade de pesos internos que esse treino ajusta.

A arquitetura que tornou esse tamanho viável é o Transformer, descrita em junho de 2017 no artigo Attention Is All You Need. Os oito autores propuseram trocar as redes recorrentes, que processam a sequência passo a passo, por um mecanismo chamado atenção. A atenção relaciona todas as partes do texto entre si de uma vez. O artigo tratava de tradução automática, e o ganho que pesou depois foi outro: o Transformer treina em paralelo, o que permitiu alimentar modelos com volumes de texto antes inviáveis.

Visto de fora, o funcionamento segue o diagrama acima. O texto de entrada vira tokens. O modelo calcula uma probabilidade para cada token possível, escolhe um e o acrescenta ao fim do texto. Depois o ciclo recomeça. A resposta que aparece na tela é essa repetição, até o modelo gerar um sinal de fim ou bater no limite.

Nada nesse processo consulta uma base de dados. Quando um LLM acerta a capital de um país, ele acerta porque essa sequência apareceu muitas vezes no treino e a continuação certa ficou com probabilidade alta. A mesma lógica explica por que ele escreve bem sobre assunto comum e tropeça em detalhe raro.

Tokens e janela de contexto

O LLM não lê letras nem palavras. Ele lê tokens, pedaços de texto que podem ser um caractere, parte de uma palavra, uma palavra inteira ou uma pontuação. A OpenAI dá uma regra de bolso para contar tokens em inglês: um token tem cerca de quatro caracteres, e cem tokens dão perto de 75 palavras. A mesma página avisa que outros idiomas têm outra proporção, então a conta do inglês não vale para o português sem medir.

Token importa por dois motivos. O primeiro é preço, porque API de modelo cobra por token de entrada e de saída. O segundo é a janela de contexto, o total de texto que o modelo enxerga de uma vez.

A janela inclui tudo: a instrução de sistema, o histórico da conversa, os documentos colados, a pergunta e a própria resposta que está sendo escrita. Por isso uma conversa muito longa pode perder o começo, e por isso colar o documento certo junto da pergunta melhora a resposta.

O modelo em si também não guarda memória entre conversas. Quando um produto parece lembrar de você, é o aplicativo que guarda anotações e as recoloca no contexto a cada sessão nova. O modelo continua recebendo texto e devolvendo texto. É por isso que a forma de escrever o prompt pesa tanto: ele é boa parte do material que o modelo tem para trabalhar.

Como um LLM aprende: pré-treinamento, ajuste fino e RLHF

O treino acontece em etapas, e cada uma muda uma coisa diferente.

O pré-treinamento é a etapa cara. O modelo recebe uma quantidade enorme de texto e aprende a prever o próximo token, ajustando seus pesos a cada erro. No fim dessa etapa, ele domina gramática, estilo, muito fato e muito código, mas ainda não sabe conversar. Um modelo só pré-treinado completa texto. Se você escreve uma pergunta, ele pode continuar com outras perguntas parecidas.

O ajuste fino supervisionado ensina formato. Pessoas escrevem exemplos de pedido e de resposta boa, e o modelo treina mais um pouco sobre eles. É nessa etapa que ele passa a se comportar como assistente.

O RLHF (reinforcement learning from human feedback, ou aprendizado por reforço com feedback humano) refina o comportamento. Avaliadores comparam respostas do modelo e indicam qual preferem. O modelo é então ajustado para produzir mais respostas do tipo preferido. Os autores do InstructGPT descreveram essa receita em março de 2022: primeiro ajuste com exemplos escritos por pessoas, depois reforço a partir de rankings de respostas.

Repare que nenhuma dessas etapas liga o modelo a uma fonte de verdade. O ajuste fino e o RLHF mudam o jeito de responder. O conhecimento continua sendo o que ficou gravado nos pesos durante o pré-treinamento, e esse conhecimento tem uma data de corte.

Por que ele erra com tanta confiança

A continuação mais provável é a que segue os padrões do texto de treino. Uma citação jurídica tem formato previsível, com número de lei, artigo e parágrafo, e o modelo aprendeu esse formato muito bem. Quando falta o conteúdo específico, o formato continua disponível, e a saída sai com cara de citação verdadeira.

Esse é o mecanismo da alucinação de IA. O modelo, por padrão, não tem uma etapa que confira a resposta contra uma fonte antes de escrevê-la. O tom seguro vem do estilo do texto de treino, que raramente hesita.

O risco sobe em pergunta sobre fato raro, número exato, evento posterior à data de corte e referência bibliográfica. Ele cai quando você entrega o texto-fonte no contexto e pede que a resposta se limite a esse texto.

Produtos que buscam na web ou nos documentos da empresa usam esse recurso. Eles localizam o trecho relevante e o colocam no contexto antes de o modelo responder. O LLM continua prevendo tokens, só que agora a continuação mais provável é a que concorda com o texto que está logo acima dela.

O que é parâmetro e por que o número engana

Parâmetro é cada peso numérico que o treino ajusta dentro de um LLM. Um modelo de 8 bilhões de parâmetros guarda 8 bilhões desses números, e eles ocupam memória. É o tamanho que define se o modelo roda num notebook ou precisa de um servidor com várias placas de vídeo.

O número virou argumento de venda, e ele diz menos do que parece. O próprio artigo do InstructGPT mostrou isso. Na avaliação dos autores, as pessoas preferiram as respostas de um modelo com 1,3 bilhão de parâmetros às do GPT-3 de 175 bilhões, um modelo com cerca de cem vezes mais pesos. O menor tinha passado pelo ajuste com feedback humano.

Qualidade do dado, tempo de treino, ajuste fino e a tarefa específica também pesam. Para comparar dois modelos, teste os dois no seu trabalho real. Use a tabela de desempenho do fabricante como ponto de partida e decida pelo seu teste.

LLM fechado, de pesos abertos ou pequeno e local

Existem duas formas de acesso, e uma variação que importa para empresa pequena.

O modelo fechado (GPT, Claude, Gemini) roda no servidor do fornecedor. Você usa pelo aplicativo ou pela API, paga por assinatura ou por token, e o texto que você envia sai da sua rede. A comparação entre os três está em ChatGPT vs Claude vs Gemini.

O modelo de pesos abertos (Llama, Mistral, DeepSeek, Qwen) tem o arquivo com os pesos treinados publicado. Você baixa e roda onde quiser. A família Llama 3.1 saiu em julho de 2024 em três tamanhos, de 8, 70 e 405 bilhões de parâmetros, segundo a página do modelo no Hugging Face. Aberto, aqui, quer dizer que o peso é seu para rodar, e a licença continua valendo: o Llama 3.1 vem com uma licença comercial própria, e o download exige aceitar os termos e compartilhar dados de contato.

O modelo pequeno local é o caso de pesos abertos que cabe no seu computador. O Ollama baixa e roda esses modelos com um comando, e o texto não sai da máquina.

Fechado (API)Pesos abertosPequeno e local
Acessoaplicativo ou API do fornecedordownload dos pesos, roda em servidor próprio ou alugadodownload dos pesos, roda no notebook
Custoassinatura ou cobrança por tokenhardware ou nuvem que você contratao computador que você já tem
Onde o dado ficano servidor do fornecedorna infraestrutura que você controlana máquina local
Para que servetarefa difícil e uso geralvolume alto e dado sensívelrascunho, classificação e uso offline
Quem mantémo fornecedora sua equipevocê

A escolha raramente é exclusiva. Um arranjo comum combina o modelo fechado para tarefa difícil com um modelo pequeno para volume e dado sensível, caminho detalhado no post sobre IA local e modelos pequenos.

Como começar a usar sem se enganar

Saber que o modelo prevê texto muda a forma de trabalhar com ele. Estes passos valem para qualquer LLM, fechado ou aberto:

  1. Dê o texto em vez de confiar na memória. Se a resposta depende de contrato, política ou planilha, cole o trecho no contexto e peça que o modelo responda só com base nele.
  2. Confira número, nome e citação. São os pontos onde a continuação provável mais se afasta do fato. Abra a fonte antes de repassar.
  3. Peça a fonte junto com a resposta. Em produto com busca, exija o link. Sem busca, trate qualquer referência como pista a verificar.
  4. Teste na sua tarefa. Rode os mesmos pedidos reais em dois ou três modelos e compare o resultado. Isso diz mais que a contagem de parâmetros.
  5. Decida para onde o dado pode ir. Defina o que pode ser enviado à API de um fornecedor e o que só passa por modelo local.
  6. Estime o tamanho em tokens. Antes de automatizar, meça a entrada e a saída típicas. Esse número define o custo e mostra se o documento cabe na janela.

Um modelo de linguagem é bom em tudo que se parece com continuar um texto bem escrito: resumir, reescrever, traduzir, rascunhar código e classificar. Ele erra quando a continuação provável e o fato divergem, e isso acontece mais no detalhe específico do que na ideia geral.

A peça que tornou isso possível nasceu com outro objetivo. O artigo que apresentou o Transformer, em junho de 2017, testava o modelo em tradução de inglês para alemão e de inglês para francês.

Ferramentas citadas neste post

  • DSPy: Framework em Python para programar modelos de linguagem com módulos e otimizadores em vez de prompts escritos à mão, para quem constrói sistemas com LLM.