Construir um corpus é enganosamente simples em conceito e brutalmente complexo na prática. No nível mais básico, você coleta texto, limpa e alimenta um modelo. Mas "limpar" é onde o trabalho real mora. Web scrapes brutos contêm páginas duplicadas, texto boilerplate de navegação, spam de SEO, erros de encoding, documentos truncados e vastas quantidades de conteúdo de baixa qualidade gerado por máquina. Projetos como o Common Crawl fornecem petabytes de dados brutos da web, mas transformar isso em um corpus de treinamento utilizável requer deduplicação agressiva (remoção de duplicatas exatas e quase-duplicatas), identificação de idioma, filtragem de qualidade e classificação de conteúdo. O Pile, RedPajama, FineWeb e DCLM cada um representam diferentes filosofias sobre como fazer essa filtragem, e as diferenças de qualidade nos modelos resultantes são mensuráveis.
A composição do corpus tem um impacto direto, frequentemente surpreendente, no que o modelo consegue fazer. Se 80% dos seus dados de treinamento são em inglês, o modelo será medíocre em francês mesmo que texto em francês esteja tecnicamente presente. Se seu corpus é pesado em código, o modelo fica melhor em raciocínio estruturado mesmo para tarefas sem código — essa foi uma das descobertas inesperadas do treinamento inicial do Codex na OpenAI. A proporção de diferentes domínios também importa: muita mídia social e o modelo aprende a ser superficial; muito texto acadêmico e ele fica formal demais. A maioria dos labs de fronteira trata seu mix de dados como um segredo bem guardado, porque é uma das poucas vantagens competitivas restantes que não se resume a ter mais GPUs.
A tokenização é a ponte entre um corpus bruto e o que o modelo realmente vê. Antes do treinamento, cada documento é dividido em tokens — unidades de subpalavras aprendidas por algoritmos como BPE (byte pair encoding) ou SentencePiece. O tokenizer é treinado no próprio corpus, então um corpus pesado em código produzirá um tokenizer que representa eficientemente construções de programação, enquanto um corpus multilíngue resulta em um tokenizer com melhor cobertura de scripts não-latinos. Esse passo geralmente é feito uma vez e então congelado: você tokeniza o corpus inteiro em shards binários que podem ser carregados eficientemente durante o treinamento. Para um corpus grande, isso é em si uma operação de vários dias e terabytes. Um corpus de 185 bilhões de tokens, por exemplo, pode produzir várias centenas de gigabytes de shards tokenizados.
O debate curadoria versus escala é uma das discussões mais importantes em andamento no campo. Por anos, a visão dominante era que mais dados é sempre melhor — jogue tudo e deixe o modelo resolver. Mas resultados empíricos têm mostrado repetidamente que um corpus menor e cuidadosamente curado pode superar um muito maior e ruidoso. A série Phi de modelos da Microsoft demonstrou que dados de alta qualidade semelhantes a "livro-texto" podiam produzir modelos pequenos surpreendentemente capazes. No outro extremo, as leis de escala Chinchilla mostraram que a maioria dos modelos era treinada com dados de menos em relação à contagem de parâmetros. A lição prática: qualidade de dados e quantidade de dados não são intercambiáveis, e os melhores resultados vêm de acertar ambos.