Un experimento educativo para construir, entrenar y evaluar un Modelo de Lenguaje Pequeño/Grande experimental completamente desde cero usando PyTorch. El modelo de pre-entrenamiento actual tiene 12.46M parámetros (dim=256, 6 capas), escala pensada para validar el pipeline en CPU local. El objetivo final es escalar a 100M–300M parámetros en entorno cloud.
El modelo se basa en la filosofía de "Cerebro Pequeño, Lógica Fuerte", donde el razonamiento (Chain of Thought) prevalece sobre el almacenamiento masivo de datos factuales, apoyándose en la externalización de conocimientos usando la herramienta autónoma de búsqueda (Tool-calling).
En lugar de basarnos en el viejo paper de 2017, la arquitectura del Transformer se basa en los avances punta actuales:
- RoPE (Rotary Position Embeddings): Mejor extrapolación contextual.
- SwiGLU: Activaciones neuronales más densas en las capas ocultas (estilo LLaMa).
- RMSNorm: Mayor control, estabilidad temporal y rendimiento puro.
- Grouped-Query Attention (GQA): Reducción drástica del caché de Key/Value, ideal para correr las inferencias rápidamente en CPU locales.
- Acumulación de Gradientes & Precisión Mixta: Maximización de hardware modesto a través de tensores BFloat16.
- Fase 1 - Adquisición del Lenguaje: Pre-entrenamiento inicial con datasets limpios focalizados (como
TinyStories) para que la red adquiera gramática impecable sin intoxicarse. - Fase 2 - Razonamiento (TinyLogic): Entrenamiento progresivo mediante un currículum de 7 niveles (habilidades cognitivas crecientes) usando trazas de pensamiento
<think>. - Fase 3 - Agente Autónomo: Integración de tool-calling para conectar con APIs externas.
/model: Código de la arquitectura neuronal pura (model.py) y tokenizadores base./scripts: Flujos de entrenamiento pesados, utilidades de procesamiento de bits y descargas./data: Submódulo para almacenamiento binario transitorio (Ignorado en GIT)./tests: Unit-tests de integridad matricial de PyTorch./docs: Documentos de diseño subyacentes e ideas futuras./logs: Histórico de métricas y analíticas.
Hemos implementado un sistema de aprendizaje graduado inspirado en el desarrollo humano, consolidando un corpus sintético de alta diversidad:
- Logic Pipeline (3,528 muestras):
- L0-L1 (Foundation): Categorización y lógica concreta simple.
- L2-L3 (Structured): Lógica transitiva, secuencias y deducción multi-paso.
- L4 (Advanced): Abstracción, razonamiento probabilístico y meta-lógica.
- Planning Domain (163 muestras):
- Agentic (COGA): Razonamiento sobre primitivas de memoria, scratchpad y herramientas.
- Technical/Creative/Household: Descomposición de tareas complejas en planes de ejecución lógicos.
Deduplicación: Todo el dataset ha sido procesado mediante scripts/deduplicate_dataset.py usando embeddings semánticos (all-MiniLM-L6-v2) para garantizar que la red no aprenda de redundancias sintéticas.
# 1. Instalar dependencias
pip install -r requirements.txt
# 2. Descargar TinyStories y entrenar tokenizador BPE
python scripts/download_and_tokenize.py
# 3. Tokenizar y guardar el dataset en binario
python scripts/prepare_data.py
# 4. Arrancar el pre-entrenamiento
python scripts/train.py
# 5. Fine-tuning con LoRA
python scripts/finetune.py --lora_r 8 --lora_alpha 16 --data_file data/tool_dataset_real.json
# 6. (Opcional) Inferencia interactiva con tool-calling
python scripts/chat.py
# 7. Evaluar el modelo (perplexity y accuracy en tool-calling)
python scripts/eval.py --checkpoint checkpoints/ckpt_sft_latest.ptEl finetuning por defecto usa data/tool_dataset_real.json, pero puedes cambiar el archivo con --data_file.
ckpt_pretrain_latest.ptyckpt_pretrain_best.ptson checkpoints de pretraining.ckpt_sft_latest.ptes el checkpoint de fine-tuning.- Los nombres antiguos siguen aceptados como fallback mientras se migra el repo.
Construido artesanalmente desde cero.