Constituer un corpus est d'une simplicité trompeuse en théorie et d'une complexité brutale en pratique. Au niveau le plus élémentaire, on rassemble du texte, on le nettoie et on le fournit au modèle. Mais le « nettoyage » est là où réside le vrai travail. Les collectes brutes du web contiennent des pages en double, du texte de navigation générique, du spam SEO, des erreurs d'encodage, des documents tronqués et d'immenses quantités de contenu de faible qualité généré par des machines. Des projets comme Common Crawl fournissent des pétaoctets de données web brutes, mais les transformer en corpus d'entraînement utilisable exige une déduplication agressive (suppression des doublons exacts et quasi-doublons), une identification des langues, un filtrage de qualité et une classification du contenu. The Pile, RedPajama, FineWeb et DCLM représentent chacun une philosophie différente de ce filtrage, et les différences de qualité dans les modèles résultants sont mesurables.
La composition du corpus a un impact direct, souvent surprenant, sur les capacités du modèle. Si 80 % de vos données d'entraînement sont en anglais, le modèle sera médiocre en français même si du texte français est techniquement présent. Si votre corpus est riche en code, le modèle s'améliore en raisonnement structuré même pour des tâches non liées au code — c'est l'une des découvertes inattendues des premiers entraînements de Codex chez OpenAI. Le ratio entre différents domaines compte aussi : trop de textes de réseaux sociaux et le modèle apprend à être superficiel ; trop de textes académiques et il devient guindé. La plupart des laboratoires de pointe traitent leur composition de données comme un secret bien gardé, car c'est l'un des rares avantages concurrentiels qui ne se résume pas à avoir plus de GPU.
La tokenisation est le pont entre un corpus brut et ce que le modèle voit réellement. Avant l'entraînement, chaque document est découpé en tokens — des unités de sous-mots apprises par des algorithmes comme BPE (byte pair encoding) ou SentencePiece. Le tokeniseur est entraîné sur le corpus lui-même, de sorte qu'un corpus riche en code produira un tokeniseur qui représente efficacement les constructions de programmation, tandis qu'un corpus multilingue produira un tokeniseur avec une meilleure couverture des écritures non latines. Cette étape est généralement effectuée une seule fois puis figée : on tokenise l'ensemble du corpus en fragments binaires qui peuvent être chargés efficacement pendant l'entraînement. Pour un grand corpus, c'est en soi une opération de plusieurs jours et plusieurs téraoctets. Un corpus de 185 milliards de tokens, par exemple, peut produire plusieurs centaines de gigaoctets de fragments tokenisés.
Le débat entre curation et échelle est l'une des discussions les plus importantes en cours dans le domaine. Pendant des années, la vision dominante était que plus de données, c'est toujours mieux — on met tout dedans et on laisse le modèle s'en occuper. Mais les résultats empiriques ont démontré à répétition qu'un corpus plus petit et soigneusement organisé peut surpasser un corpus beaucoup plus volumineux mais bruyant. La série Phi de Microsoft a démontré que des données de haute qualité, semblables à des manuels scolaires, pouvaient produire des petits modèles étonnamment performants. À l'autre extrême, les lois de mise à l'échelle de Chinchilla ont montré que la plupart des modèles étaient entraînés sur trop peu de données par rapport à leur nombre de paramètres. La leçon pratique : la qualité et la quantité des données ne sont pas interchangeables, et les meilleurs résultats viennent quand on maîtrise les deux.