Do Common Crawl ao modelo base: como uma LLM aprende linguagem
Parte 1 de 2. O que acontece dentro de um modelo de linguagem antes de você mandar o primeiro prompt.
Quando você escreve uma pergunta no ChatGPT e recebe de volta um texto coerente, a sensação é de conversa. Mecanicamente não é nada disso. O que o modelo faz é calcular, token a token, qual pedaço de texto tem maior probabilidade de vir em seguida, e essa capacidade não nasce pronta. Ela é construída em fases, ao longo de um processo caro e demorado que acontece muito antes de qualquer usuário digitar alguma coisa.
Entender essas fases muda a forma como você usa a ferramenta. Prompt bom, agente robusto e uso seguro de IA dependem de saber o que o modelo realmente faz por baixo. Este primeiro artigo cobre a base: como uma LLM sai de parâmetros aleatórios e chega ao chamado modelo base, passando pela arquitetura Transformer, pela coleta de dados, pela tokenização e pelo pré-treinamento. No segundo artigo eu mostro como esse modelo base é transformado no assistente que você conhece.
De onde a LLM veio
LLMs fazem parte do campo de Natural Language Processing (NLP), a área que estuda como fazer máquinas lidarem com linguagem humana. Por muito tempo esse campo foi dominado pelas RNNs (Recurrent Neural Networks), redes que processavam texto de forma sequencial, uma palavra após a outra. Elas funcionavam, e foram importantes para a evolução da área, mas tinham limites estruturais sérios: perdiam contexto em textos longos, tinham dificuldade de capturar relações entre palavras distantes e batiam num teto de desempenho difícil de superar.
O ponto de virada veio em 2017, com o artigo “Attention Is All You Need”, do Google Brain. Ele apresentou a arquitetura Transformer, que abandonou a lógica sequencial das RNNs e colocou o mecanismo de atenção no centro. A ideia central é que o modelo passa a observar a frase inteira de uma vez, avaliando como cada palavra se relaciona com todas as outras, mesmo quando estão longe uma da outra na sequência.
Na RNN o contexto atravessa a cadeia inteira; no Transformer cada palavra olha diretamente para as outras.
Na RNN, para “voltou” fazer sentido, a informação sobre “gato” precisa atravessar toda a cadeia e chega enfraquecida. No Transformer, “voltou” olha diretamente para “gato” e “que fugiu”, sem depender da distância entre eles.
O que o Transformer resolveu
O impacto dessa mudança foi imediato em três frentes. O desempenho superou com folga as arquiteturas anteriores. O paralelismo da arquitetura tornou viável treinar modelos muito maiores, porque o processamento deixou de ser preso à ordem das palavras. E a representação da linguagem ganhou profundidade, capturando relações que as técnicas antigas simplesmente não enxergavam.
Foi sobre essa base que surgiram BERT, GPT, GPT-2, GPT-3 e, mais tarde, o ChatGPT, que popularizou o acesso a LLMs em 2022 e marcou o início da adoção massiva de IA generativa. Vale reter a essência sem entrar na matemática: o Transformer capta melhor a estrutura da linguagem porque analisa o texto de forma global, identifica relações amplas e percebe padrões que ficavam invisíveis antes. É isso que faz os modelos parecerem que raciocinam, no sentido de gerar respostas que conectam ideias, interpretam nuances e mantêm coerência ao longo de vários parágrafos. Sem essa arquitetura, a geração atual de LLMs e todo o ecossistema de aplicações que depende dela não existiria.
A matéria-prima: Common Crawl e FineWeb
Antes de uma LLM conseguir dialogar ou responder qualquer coisa, ela passa por uma fase de aprendizado em larga escala chamada pré-treinamento. O objetivo aqui é específico e vale fixar: não é decorar informação da web, é internalizar como a linguagem funciona. Estrutura de frase, transição entre ideias, variação de estilo, relação semântica, a lógica que conecta as palavras dentro de um contexto. É essa base que depois permite o modelo produzir texto coerente.
Boa parte desse conteúdo vem do Common Crawl, um projeto que varre a web continuamente e arquiva as páginas de forma sistemática. Ao longo dos anos isso virou um dos maiores acervos públicos de texto do mundo, na casa das centenas de bilhões de páginas. O problema é que esse acervo é cru. Tem texto útil, tem conteúdo repetido, tem página mal estruturada e tem muita coisa de baixa qualidade misturada. Ele entrega o volume que a rede precisa, mas não pode ser jogado direto no treinamento.
Para virar dado de treino, ele passa por pipelines de curadoria como o FineWeb. Essa etapa faz quatro coisas principais. Filtra URLs, removendo domínios ligados a conteúdo inadequado, spam, extremismo e afins, usando listas de bloqueio mantidas por várias organizações. Extrai o texto puro, jogando fora HTML, tags, scripts e todo o resto da estrutura da página, para o modelo não aprender padrão que não faz parte da linguagem humana. Filtra por idioma, retendo só as línguas que interessam ao treinamento. E tenta remover dados sensíveis, como endereços, documentos e informação bancária que aparecem na coleta bruta.
Do acervo cru do Common Crawl ao dataset final, passando pela curadoria do FineWeb.
No fim desse processo sobra um conjunto amplo, variado e linguisticamente relevante, que mantém diversidade de tema e estilo sem carregar o ruído da web bruta. Todo esse conteúdo é convertido numa sequência contínua de tokens, como se fosse um único dataset gigante atravessando redações formais, texto conversacional e vários domínios de conhecimento ao mesmo tempo. Nesse ponto o modelo ainda não está tentando responder pergunta nem resolver problema. Ele só está aprendendo a prever a continuação do texto e a perceber as regularidades que definem a linguagem. Essa fase é a fundação de tudo que vem depois. Sem esse mergulho inicial na linguagem, nenhuma etapa posterior teria do que partir.
Tokenização: por que o modelo não vê palavras
Depois de reunir e limpar o texto, esbarramos num limite básico: modelo não trabalha com palavra. Computador opera com número, não com frase, letra ou pontuação. Para o modelo aprender linguagem, o texto precisa virar uma sequência numérica que ele consiga processar. Esse processo é a tokenização, e ele acontece em camadas.
O primeiro passo é transformar cada caractere numa representação binária, usando codificação como UTF. Cada letra, símbolo ou espaço vira uma sequência de bits. Isso deixa o texto compatível com o hardware, mas ainda não serve para treinar a rede: as sequências ficam longas demais e não refletem bem as unidades de linguagem que o modelo precisa aprender. Para melhorar isso, agrupamos os bits. Juntando 8 bits temos um byte, que assume 256 valores possíveis. Esses valores param de ser lidos como número com significado e passam a funcionar como identificadores simbólicos. O byte vira a menor unidade bruta a partir da qual o vocabulário será construído.
Mesmo em bytes, o texto ainda é grande demais para ser processado com eficiência. Aí entra o Byte Pair Encoding (BPE). O BPE procura padrões que se repetem, pares de bytes ou sequências inteiras, e substitui cada padrão frequente por um novo identificador. Ele faz isso de forma iterativa: a cada passo, uma sequência frequente vira um símbolo único novo. O vocabulário cresce, mas o comprimento total dos dados diminui. O resultado é um conjunto de tokens que vai de caractere isolado até fragmento grande de palavra. Termo comum tende a virar um token único, termo raro é quebrado em várias partes. Esse equilíbrio deixa a representação compacta e flexível ao mesmo tempo.
O texto humano desce pelas camadas até virar uma sequência de IDs de token.
Depois de tokenizado, o modelo não enxerga “Olá, como vai você?”. Ele vê uma sequência de números como [89191, 11, 2526, 12156, 7888, 30]. Esses números não têm significado próprio, são só identificadores que apontam para pedaços de texto. Ferramentas como o tiktokenizer deixam isso visível, mostrando como cada palavra é fatiada em tokens e revelando quebras internas que a gente nem percebe ao ler. Uma palavra como “Procrastinação”, por exemplo, pode ser cortada em três tokens diferentes.
Isso importa mais do que parece. O Transformer trabalha exclusivamente com token. Todo o aprendizado dele vem de observar padrão nessas sequências numéricas: quais tokens aparecem juntos, qual costuma vir antes de qual, qual combinação é mais provável em determinado contexto. É a partir daí que ele aprende a prever o próximo token. A tokenização, então, define a forma como o modelo enxerga a linguagem. Uma tokenização boa facilita o aprendizado, melhora o desempenho e reduz o custo do treino. Uma tokenização ruim atrapalha tudo isso. Por isso ela é uma etapa fundamental e não um detalhe técnico: é onde o texto humano se transforma em algo que a LLM consegue processar.
O pré-treinamento: prever o próximo token, trilhões de vezes
Com a tokenização resolvida, dá pra explicar o mecanismo central que permite o modelo produzir texto: a previsão sequencial de tokens. A interação parece um diálogo, mas por baixo é estatística pura. Diante de uma entrada, o modelo calcula a probabilidade de cada token possível e escolhe o próximo elemento da sequência. Depois repete isso continuamente até a resposta terminar.
O ciclo começa convertendo a entrada em tokens. Cada palavra, fragmento, pontuação ou espaço vira um identificador numérico. Essa sequência vai pro Transformer, que calcula uma distribuição de probabilidade sobre todos os tokens do vocabulário, e estamos falando de dezenas ou centenas de milhares de possibilidades. O modelo nunca devolve uma resposta fixa: ele faz um sampling proporcional às probabilidades previstas. Token incompatível com o texto recebe probabilidade quase zero, token coerente vira candidato forte, e a escolha sai dessa distribuição. O token escolhido entra na sequência e o ciclo recomeça.
A cada passo o modelo prevê uma distribuição, escolhe um token e realimenta a sequência.
Essa capacidade de atribuir a probabilidade certa não vem de fábrica. O modelo começa o treino com parâmetros aleatórios, uma quantidade enorme de graus de liberdade, e o pré-treinamento vai calibrando esses valores até o modelo inferir com consistência qual token deve vir em seguida dentro de uma janela de contexto.
Essa janela de contexto é o segmento fixo sobre o qual o treino opera. Nas primeiras gerações de modelos ela era de uns 4 mil tokens. O loop segue sempre a mesma lógica repetitiva:
O mesmo loop repetido trilhões de vezes, cada volta ajustando os parâmetros um pouco.
Pra deixar concreto: imagine o contexto “Olá, tudo bem”, em que o próximo token esperado é ”?”. Nas primeiras tentativas o modelo pode dar probabilidade alta pra tokens totalmente errados. A comparação com o token correto aciona o ajuste, que aumenta a probabilidade do token certo, reduz a dos errados e reorganiza as relações internas envolvidas naquela previsão. Cada correção dessas é minúscula, mas aplicadas em escala massiva elas fazem o modelo aprender a estrutura da linguagem. É também por isso que o pré-treinamento é caro: envolve volume gigante de dados, máquinas de alto desempenho e longos períodos de cálculo em infraestrutura distribuída. Só pra ter noção, treinar um modelo relativamente pequeno como o Llama 3 de 8B parâmetros pode custar entre 2 e 5 milhões de dólares, e esse número dispara em modelos maiores.
Quando os parâmetros chegam num desempenho estável, o treino produz o modelo base. Ele tem domínio estatístico da estrutura da linguagem, mas ainda não sabe seguir instrução, interagir de forma controlada ou se comportar do jeito que a gente espera de um assistente. Isso depende das etapas seguintes.
O modelo base: poderoso e ainda inútil
Depois de coleta, preparação de dados, tokenização e pré-treinamento, chegamos ao modelo base. E aqui vem a parte que costuma surpreender quem nunca viu de perto: nesse estágio a LLM não funciona como assistente nenhum. Ela não foi instruída a seguir comando, responder pergunta de forma útil ou interagir de modo estruturado. O modelo base é essencialmente um mecanismo de continuação de sequência. Ele prevê o próximo token com base no padrão estatístico dos dados de treino, e por isso é bem descrito como um simulador de texto, refletindo a regularidade do conteúdo que processou.
Isso aparece no comportamento. Se você joga uma entrada simples como “Quanto é 2 + 2?”, o modelo base não entende que deveria devolver um número. Ele tende a prolongar a sequência de forma arbitrária, retornar fragmentos que lembram trechos do dataset, repetir padrões que aparecem com frequência e produzir uma variação diferente a cada execução. É o comportamento esperado de algo treinado só para prever sequência, sem nenhum ajuste voltado a interpretar instrução.
Como é um mecanismo de previsão estatística, o modelo base também alucina. Quando cai num contexto que extrapola o que ele viu no treino, ou num formato incompleto, ele completa com algo linguisticamente plausível, mesmo que esteja errado. Ele não avalia se aquilo é verdade, só prolonga o padrão aprendido. Essa é uma das razões de o modelo base, sozinho, não servir pra aplicação que exige confiabilidade e controle.
Mesmo com essas limitações, ele tem uma propriedade emergente importante: o in-context learning. O modelo consegue identificar um padrão dentro do próprio prompt e replicá-lo na geração, sem nunca ter sido treinado especificamente pra aquilo.
O modelo detecta a relação dentro do próprio prompt e continua o padrão, sem ter sido treinado para traduzir.
Essa mesma propriedade explica por que dá pra “fingir” um assistente com um modelo base. Se o prompt traz um formato de diálogo consistente, com “Usuário:” e “Assistente:” se alternando, o modelo reconhece a estrutura e continua no papel de assistente, porque é o próximo token mais provável dado aquele formato. Só que isso não é compreensão da tarefa, é manutenção da coerência estatística do formato apresentado.
Resumindo o que o modelo base é de fato: ele reproduz padrão mas não executa tarefa, é muito variável e pouco controlável, gera conteúdo plausível mas não confiável, se adapta ao formato do prompt mas não entende instrução, e tem conhecimento espalhado nos parâmetros sem nenhum mecanismo de direcionamento. É uma fundação e nada mais. A transformação disso num sistema que segue comando, mantém consistência e opera de forma previsível só acontece nas próximas fases, o supervised fine-tuning e o reinforcement learning, que são exatamente o assunto da segunda parte.
Próximos passos
Este artigo cobriu a fundação: da coleta de dados no Common Crawl até o modelo base, passando pelo Transformer, pela tokenização e pelo pré-treinamento. O que você tem no fim é um simulador de texto poderoso, mas cru, sem noção de instrução ou confiabilidade.
Na Parte 2: De modelo base a ChatGPT eu pego exatamente esse modelo base e mostro como ele vira o assistente que você usa no dia a dia, passando por supervised fine-tuning, uso de ferramentas e reinforcement learning. Se você quer ver como esse tipo de modelo aparece dentro de uma arquitetura real de software, vale ler também Amazon Bedrock na prática: IA como parte da arquitetura, onde a IA deixa de ser conceito e vira parte de um sistema em produção.
Escrevi este texto enquanto estudava o funcionamento interno das LLMs. Se fizer sentido pra você, a segunda parte pega o modelo base deste artigo e mostra como ele vira o ChatGPT. Me acompanhe no LinkedIn e no GitHub.