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>
This commit is contained in:
@@ -0,0 +1,28 @@
|
||||
# RTX 2060 12 GB — Turing, compute capability 7.5.
|
||||
#
|
||||
# Dos límites de la arquitectura Turing determinan este perfil:
|
||||
#
|
||||
# 1. No soporta bfloat16. Hay que entrenar en float16, que tiene rango
|
||||
# exponente reducido y desborda: por eso use_grad_scaler=true. Los picos
|
||||
# de loss se mitigan además con qk_norm y z_loss en el modelo.
|
||||
# 2. FlashAttention-2 exige Ampere (sm_80) o superior. El backend
|
||||
# mem_efficient de PyTorch sí corre acá y usa memoria O(n) igual.
|
||||
name: turing-2060
|
||||
device: cuda
|
||||
dtype: float16
|
||||
use_grad_scaler: true
|
||||
attention_backend: mem_efficient
|
||||
compile: true
|
||||
matmul_precision: high
|
||||
|
||||
# 12 GB con seq_len 2048 y un modelo de ~50M: micro-lote chico y acumulación
|
||||
# para llegar a un lote efectivo razonable (8 * 16 = 128 secuencias).
|
||||
micro_batch_size: 8
|
||||
grad_accum_steps: 16
|
||||
|
||||
min_compute_capability: [7, 5]
|
||||
|
||||
# Aproximado, y solo para la métrica de MFU: tensor cores en float16 con
|
||||
# acumulación en float32, que es lo que hace el entrenamiento con AMP.
|
||||
# Sirve para comparar corridas entre sí, no como dato de hardware.
|
||||
peak_tflops: 28.0
|
||||
Reference in New Issue
Block a user