Capítulo 2: Recolección y preprocesamiento de datos
Introducción
La calidad y diversidad de los datos de entrenamiento determina fundamentalmente las capacidades del modelo. Los LLMs modernos se entrenan con billones de tokens provenientes de fuentes diversas.
Fuentes de datos
Common Crawl
- Petabytes de datos web
- Requiere filtrado intensivo
- Punto de partida más común
Fuentes curadas
data_sources = {
"Wikipedia": "Alta calidad, enciclopédico",
"Books": "Texto extenso y coherente",
"ArXiv": "Artículos científicos",
"GitHub": "Código y documentación",
"StackOverflow": "Formato de preguntas y respuestas",
}
Pipeline de procesamiento de datos
Datos web crudos → Eliminación de duplicados → Filtrado de calidad → Tokenización → Datos de entrenamiento
1. Eliminación de duplicados
from datasketch import MinHash, MinHashLSH
def create_minhash(text, num_perm=128):
"""Crear firma MinHash para eliminación de duplicados."""
m = MinHash(num_perm=num_perm)
for word in text.split():
m.update(word.encode('utf8'))
return m
2. Filtrado de calidad
def quality_filter(text):
"""Filtrar documentos de baja calidad."""
# Filtro por longitud
if len(text.split()) < 50:
return False
# Filtro por repetición
lines = text.split('\n')
unique_lines = set(lines)
if len(unique_lines) / len(lines) < 0.5:
return False
# Detección de idioma
if not is_english(text):
return False
return True
3. Tokenización
from transformers import AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("meta-llama/Llama-2-7b")
def tokenize_dataset(texts, max_length=2048):
"""Tokenizar y fragmentar textos para entrenamiento."""
all_tokens = []
for text in texts:
tokens = tokenizer.encode(text)
all_tokens.extend(tokens)
# Crear fragmentos de longitud fija
chunks = [
all_tokens[i:i+max_length]
for i in range(0, len(all_tokens), max_length)
]
return chunks
Escala del conjunto de datos
| Modelo | Tokens de entrenamiento | Tamaño de datos |
|---|---|---|
| GPT-3 | 300B | ~570 GB |
| LLaMA | 1.4T | ~1.4 TB |
| LLaMA 2 | 2T | ~2 TB |
Puntos clave
Summary
- Calidad de los datos > cantidad de datos
- Eliminación de duplicados es fundamental para la eficiencia del entrenamiento
- Fuentes diversas mejoran la generalización del modelo