Files
msaldain 90ac2a6582 Etapa 0: entorno, configuración validada, modelo y entrenador
Base del proyecto ENLACE: un modelo de lenguaje propio entrenado desde cero,
en español, para asistencia general y familiar. El plan completo está en
docs/PLAN.md.

Esta etapa establece el andamiaje y lo verifica de punta a punta:

- Configuración por capas (hardware × model × train × data) validada con
  pydantic. Ningún hiperparámetro vive en el código y una config inválida
  falla al arrancar, no a las tres horas de entrenamiento.
- Perfiles de hardware que aíslan el salto de GPU: la RTX 2060 (Turing) no
  soporta bfloat16 ni FlashAttention-2, así que entrena en float16 con
  GradScaler y backend mem_efficient; el perfil de la 5090 ya está escrito.
  backends.py valida el perfil contra la GPU real antes de empezar.
- Transformer decoder-only estilo Llama: RMSNorm, SwiGLU, RoPE, GQA,
  embeddings atados, QK-norm y z-loss. Los dos últimos son lo que mantiene
  estable el entrenamiento en float16.
- Entrenador con schedule WSD, acumulación de gradiente, precisión mixta,
  checkpointing atómico y reanudación exacta.
- Cargadores de datos con estado serializable: bytes para el smoke test y
  shards uint16 para el corpus real.

48 tests, entre ellos el crítico: reanudar desde un checkpoint reproduce los
pesos de una corrida ininterrumpida, parámetro por parámetro.

Verificado en CPU: 300 pasos sobre texto en español, loss 3.07 -> 1.63.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-27 23:04:45 -03:00

32 lines
767 B
YAML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Pretraining del modelo base (Etapa 2 del plan).
run_name: pretrain-tiny-50m
out_dir: runs
seed: 1337
# ~3B tokens con lote efectivo 128 x 2048 tokens = 262144 tokens por paso.
max_steps: 11500
optimizer:
lr: 6.0e-4
beta1: 0.9
beta2: 0.95
eps: 1.0e-8
weight_decay: 0.1
grad_clip: 1.0
# WarmupStableDecay: el LR sube, se mantiene plano la mayor parte de la
# corrida, y solo decae en el último ~10%. La fase de decay es también donde
# se sube el peso del corpus de estilo (annealing), y es lo que permite
# extender esta corrida más adelante sin recalcular el schedule.
schedule:
kind: wsd
warmup_steps: 500
decay_steps: 1150
min_lr_ratio: 0.0
log_every: 10
eval_every: 500
eval_batches: 20
checkpoint_every: 1000
sample_every: 1000