Chapitre 2 : Collecte et Prétraitement des Données
Introduction
La qualité et la diversité des données d'entraînement déterminent fondamentalement les capacités du modèle. Les LLM modernes sont entraînés sur des trillions de tokens provenant de sources diverses.
Sources de Données
Common Crawl
- Pétaoctets de données web
- Nécessite un filtrage intensif
- Point de départ le plus courant
Sources Curatées
data_sources = {
"Wikipedia": "Haute qualité, encyclopédique",
"Books": "Texte long, cohérent",
"ArXiv": "Articles scientifiques",
"GitHub": "Code et documentation",
"StackOverflow": "Format Q&R",
}
Pipeline de Traitement des Données
Données Web Brutes → Déduplication → Filtrage de Qualité → Tokenisation → Données d'Entraînement
1. Déduplication
from datasketch import MinHash, MinHashLSH
def create_minhash(text, num_perm=128):
"""Créer une signature MinHash pour la déduplication."""
m = MinHash(num_perm=num_perm)
for word in text.split():
m.update(word.encode('utf8'))
return m
2. Filtrage de Qualité
def quality_filter(text):
"""Filtrer les documents de faible qualité."""
# Filtre de longueur
if len(text.split()) < 50:
return False
# Filtre de répétition
lines = text.split('\n')
unique_lines = set(lines)
if len(unique_lines) / len(lines) < 0.5:
return False
# Détection de la langue
if not is_english(text):
return False
return True
3. Tokenisation
from transformers import AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("meta-llama/Llama-2-7b")
def tokenize_dataset(texts, max_length=2048):
"""Tokeniser et segmenter les textes pour l'entraînement."""
all_tokens = []
for text in texts:
tokens = tokenizer.encode(text)
all_tokens.extend(tokens)
# Créer des segments de longueur fixe
chunks = [
all_tokens[i:i+max_length]
for i in range(0, len(all_tokens), max_length)
]
return chunks
Échelle de l'Ensemble de Données
| Modèle | Tokens d'Entraînement | Taille des Données |
|---|---|---|
| GPT-3 | 300B | ~570 GB |
| LLaMA | 1.4T | ~1.4 TB |
| LLaMA 2 | 2T | ~2 TB |
Points Clés
Résumé
- Qualité des données > quantité de données
- Déduplication est cruciale pour l'efficacité de l'entraînement
- Sources diversifiées améliorent la généralisation du modèle