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>
28 lines
989 B
YAML
28 lines
989 B
YAML
# RTX 5090 32 GB — Blackwell, compute capability 12.0.
|
|
#
|
|
# Requiere PyTorch >= 2.7 compilado con CUDA 12.8: las versiones anteriores no
|
|
# conocen sm_120 y fallan al compilar kernels. Antes de usar este perfil hay que
|
|
# correr el smoke test de la Etapa 0 y verificar el entorno entero.
|
|
#
|
|
# Con bfloat16 desaparece el GradScaler: bf16 tiene el mismo rango exponente que
|
|
# fp32, así que no hay desbordes que escalar.
|
|
name: blackwell-5090
|
|
device: cuda
|
|
dtype: bfloat16
|
|
use_grad_scaler: false
|
|
attention_backend: flash
|
|
compile: true
|
|
matmul_precision: high
|
|
|
|
# 32 GB permiten un micro-lote 4x mayor con la misma acumulación reducida,
|
|
# manteniendo un lote efectivo comparable (32 * 4 = 128 secuencias) para que
|
|
# las curvas sean comparables entre placas.
|
|
micro_batch_size: 32
|
|
grad_accum_steps: 4
|
|
|
|
min_compute_capability: [12, 0]
|
|
|
|
# Aproximado, y solo para la métrica de MFU: bfloat16 denso (sin sparsity).
|
|
# Verificar con un benchmark real al migrar y ajustar este número.
|
|
peak_tflops: 209.5
|