90ac2a6582
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>
24 lines
592 B
YAML
24 lines
592 B
YAML
# Modelo diminuto a nivel de caracteres, solo para el smoke test de la Etapa 0.
|
|
#
|
|
# No produce nada útil: existe para validar en ~10 minutos que CUDA, el
|
|
# entrenador, el checkpointing, la reanudación y el flujo por SSH funcionan
|
|
# antes de comprometer días de cómputo.
|
|
name: char-smoke
|
|
vocab_size: 256 # se ajusta al vocabulario real del texto al cargar los datos
|
|
n_layer: 4
|
|
n_head: 4
|
|
n_kv_head: 2
|
|
d_model: 128
|
|
seq_len: 256
|
|
|
|
ffn_mult: 2.6667
|
|
ffn_multiple_of: 32
|
|
|
|
rope_theta: 10000.0
|
|
norm_eps: 1.0e-5
|
|
tie_embeddings: true
|
|
qk_norm: true
|
|
z_loss_weight: 1.0e-4
|
|
dropout: 0.0
|
|
init_std: 0.02
|