| name | train-llm-from-scratch |
| description | Train LLM From Scratch — Tutorial paso a paso para entrenar un LLM desde cero con PyTorch, basado en 'Attention Is All You Need' |
| url | https://github.com/FareedKhan-dev/train-llm-from-scratch |
| category | ia |
| fecha | 2026-06-02T00:00:00.000Z |
Train LLM From Scratch 🧠
Implementación completa de un modelo Transformer desde cero usando PyTorch, basada en el paper "Attention Is All You Need" (Vaswani et al., 2017). Permite entrenar tu propio LLM de millones o billones de parámetros con una sola GPU.
¿Qué hace?
Este repositorio es un tutorial práctico y educativo que guía paso a paso desde cero hasta un LLM funcional:
Componentes implementados
- Multi-Layer Perceptron (MLP) — Capas básicas de red neuronal
- Single-Head Attention — Mecanismo de atención simple
- Multi-Head Attention — Atención con múltiples cabezas
- Transformer Block — Combinación de attention + feed-forward + residual
- Modelo completo — Embedding + positional encoding + transformer blocks + LM head
- Training loop — Optimización, loss, gradient clipping
- Text generation — Inferencia con el modelo entrenado
Datos de entrenamiento
- Pile dataset: 825GB de texto diverso (libros, artículos, web, GitHub...)
- 22 datasets diferentes incluidos
- Muestra de ~10M tokens para entrenamiento rápido
Resultados
- Modelo de 13M parámetros entrenado exitosamente
- Genera texto coherente (con limitaciones evidentes de un modelo pequeño)
- Código modular y bien documentado
Casos de uso
- Aprendizaje profundo de transformers: Entender cada componente del Transformer
- Educación: Material de enseñanza para cursos de NLP/LLM
- Experimentación: Probar modificaciones al architecture sin frameworks pesados
- Investigación: Prototipar nuevas ideas de architecture
- Fine-tuning educativo: Adaptar el modelo a dominios específicos
Snippets útiles
Instalación
git clone https://github.com/FareedKhan-dev/train-llm-from-scratch.git
cd train-llm-from-scratch
pip install torch numpy tqdm
pip install datasets
Entrenamiento básico
config = {
"vocab_size": 50257,
"max_seq_len": 512,
"num_layers": 6,
"num_heads": 8,
"d_model": 512,
"d_ff": 2048,
"dropout": 0.1,
"batch_size": 32,
"learning_rate": 3e-4,
"warmup_steps": 2000,
"total_steps": 100000,
}
from model import TransformerModel
model = TransformerModel(config)
trainer = Trainer(model, config)
trainer.train()
trainer.save_model("my_llm.pth")
Inferencia con modelo entrenado
model = TransformerModel(config)
model.load_state_dict(torch.load("my_llm.pth"))
model.eval()
text = model.generate(
prompt="The future of AI is",
max_length=100,
temperature=0.8,
top_k=50
)
print(text)
Entrenar con GPU
export CUDA_VISIBLE_DEVICES=0
python train.py --device cuda
Entrenar con Pile subset
from datasets import load_dataset
dataset = load_dataset("pile", subset_name="subset_name", split="train[:1%]")
Cómo integrarlo
Como recurso educativo en el ecosistema Mastermind
- Material de referencia para entender transformers
- Código de ejemplo para implementar custom attention
- Base para experimentos de architecture
- Complemento al skill de dspy y evaluaciones LLM
Para experimentos de modelado
1. Usar como punto de partida para custom architectures
2. Modificar componentes (attention, normalization, etc.)
3. Probar diferentes datasets y tamaños
4. Integrar con herramientas de evaluación existentes
Pitfalls
- Requiere GPU: Entrenar incluso un modelo pequeño de 13M parámetros con Pile es lento en CPU
- Tiempo de entrenamiento: Con GPU moderna, 100K steps pueden tomar horas
- Pile dataset: El dataset completo es 825GB; usar subsets para experimentación
- No es production-ready: Modelo educativo, no optimizado para producción
- Dependencias: PyTorch con CUDA para GPU, numpy, tqdm
- Memoria: Modelo de 1B+ parámetros requiere GPU con 16GB+ VRAM
- No incluye: Tokenizador custom (usa el de GPT-2 por defecto)
Arquitectura
├── model.py — Implementación completa del Transformer
├── train.py — Training loop con optimización
├── generate.py — Inferencia y generación de texto
├── data.py — Carga y preprocessing de datos
├── config.py — Configuración de hiperparámetros
├── utils.py — Utilidades (logging, metrics)
└── notebooks/ — Notebooks explicativos paso a paso
Fecha de descubrimiento: 2026-06-02
Trending: #1 diario (861 estrellas hoy), 3,989 estrellas totales
Creado: 2025-01-12 (~17 meses)
Topics: gemini, large-language-models, llm, openai, training, transformers
Stack: Python, PyTorch, Jupyter Notebook (MIT)