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>
46 lines
1.1 KiB
TOML
46 lines
1.1 KiB
TOML
[project]
|
|
name = "enlace"
|
|
version = "0.1.0"
|
|
description = "Modelo de lenguaje propio, entrenado desde cero, para asistencia general y familiar en español."
|
|
requires-python = ">=3.11"
|
|
|
|
# Las versiones se pinean con cuidado: el salto a Blackwell (RTX 5090, sm_120)
|
|
# exige torch >= 2.7 con CUDA 12.8. Turing (RTX 2060, sm_75) funciona con
|
|
# cualquier torch reciente. Ver configs/hardware/ y docs/HARDWARE.md.
|
|
dependencies = [
|
|
"torch>=2.5",
|
|
"pydantic>=2.7",
|
|
"omegaconf>=2.3",
|
|
"numpy>=1.26",
|
|
]
|
|
|
|
[project.optional-dependencies]
|
|
data = [
|
|
"datasets>=2.20", # streaming del corpus; nunca se baja entero
|
|
"tokenizers>=0.20",
|
|
"fasttext-wheel>=0.9", # filtro de idioma
|
|
"datasketch>=1.6", # deduplicación MinHash
|
|
]
|
|
dev = [
|
|
"pytest>=8.0",
|
|
"ruff>=0.6",
|
|
]
|
|
|
|
[build-system]
|
|
requires = ["hatchling"]
|
|
build-backend = "hatchling.build"
|
|
|
|
[tool.hatch.build.targets.wheel]
|
|
packages = ["enlace"]
|
|
|
|
[tool.pytest.ini_options]
|
|
testpaths = ["tests"]
|
|
addopts = "-q"
|
|
|
|
[tool.ruff]
|
|
line-length = 100
|
|
target-version = "py311"
|
|
|
|
[tool.ruff.lint]
|
|
select = ["E", "F", "I", "UP", "B"]
|