EulerStack

Un ensamblador YAML modular para arquitecturas LLM

Diseña arquitecturas LLM con una sola especificación YAML declarativa y automatiza validación, normalización y compilación a través de un pipeline de 5 capas (DSL → Schema → IR → Compiler → CLI). Trae 31 presets en dos ejes (llm_ 16 × arch_ 15) como punto de partida, y compile --output-dir emite un directorio de modelo HuggingFace (config.json + model.safetensors) listo para entrenar con EulerForge. Los presets son solo puntos de partida — editar d_model / n_heads / número de capas permite ensamblar modelos de cualquier escala, y todos los mensajes del CLI están traducidos a 5 idiomas (ko/en/zh/ja/es).

Capacidades principales

Layer Templates & Schedule

Defina plantillas de capa con nombre (mixer + FFN + norm + residual) y use el schedule para especificar el orden y la cantidad de repeticiones.

Tipos de mixer Attention, Mamba, RetNet, Hyena
Tipos de FFN MLP, Gated MLP (SwiGLU), MoE (ruteo top-k)
Norm RMSNorm, LayerNorm (posiciones pre/post)
Residual Sequential, Parallel

Validación & realismo

Tres etapas (validación estructural de esquema → compatibilidad cruzada → heurísticas de realismo) que atrapan errores de diseño antes de compilar. Todos los errores se emiten en formato de 3 líneas (Category: what / Fix: / See:).

Estructura claves desconocidas, tipos/enum, campos obligatorios, restricciones numéricas
Compatibilidad mismatches mixer ↔ state (p. ej. mamba + kv_cache no permitido)
Realismo rango de head_dim (32–256), desviación de target_params (>30%), proporción de expertos MoE, ratio seq_len/d_model, consistencia de family_hint, vocab/tokenizer, tie_weight, rango de rope_scaling
Categorías de error ValidationError, CompatibilityError, CompileError, NormalizationError

Empieza con una sola página YAML

Una spec declarativa de unas diez líneas basta para describir la forma completa del modelo.

schema_version: 2 model: { name: "my-llm", d_model: 2048, vocab_size: 32000, max_seq_len: 4096, n_heads: 16 } tokenizer_contract: { type: hf, pretrained: gpt2 } embedding: { type: learned, positional: rope } layer_templates: decoder: mixer: { type: attention, attention: {} } ffn: { type: gated_mlp, activation: swiglu } layer_schedule: - { template: decoder, repeat: 24 } head: { type: causal_lm }

Presets: 31 sobre dos ejes

Compuestos por llm_ (16 tamaño × variante) y arch_ (15 en un recorrido por nivel de habilidad). Los presets son solo puntos de partida — editar d_model, n_heads y el número de capas permite ensamblar modelos de cualquier escala.

llm_ — tamaño × variante arquitectónica (16 presets)

4 tamaños (0.8B / 2B / 4B / 16B) × 4 variantes (simple / mistral / jamba / moe).

Escalasimplemistraljambamoe
0.8Bllm_0p8b_simple (~810M)llm_0p8b_mistral (~810M)llm_0p8b_jamba (~1.04B)llm_0p8b_moe (~770M)
2Bllm_2b_simple (~2.01B)llm_2b_mistral (~2.01B)llm_2b_jamba (~2.39B)llm_2b_moe (~2.05B)
4Bllm_4b_simple (~3.97B)llm_4b_mistral (~3.97B)llm_4b_jamba (~4.67B)llm_4b_moe (~4.03B)
16Bllm_16b_simple (~15.26B)llm_16b_mistral (~15.26B)llm_16b_jamba (~18.18B)llm_16b_moe (~15.71B)

Semántica de las variantes: simple = atención pura (Llama), mistral = atención + sliding window (1 global : 3 sliding por cada 4 capas), jamba = híbrido Mamba + Attention (3:1), moe = atención + MoE FFN (1 de cada 4 capas, 8 expertos, top-2).

arch_ — recorrido por nivel de habilidad (15 presets, todos ~2B)

La escala está fijada a ~2B para que la comparación aísle las elecciones arquitectónicas. El nivel experto cruza MoE × mixer como un espacio de diseño 2D; 2 entradas son composiciones speculativas aún no publicadas en la literatura.

NivelPreset~ParámetrosResumenBase de investigación
beginnerarch_beginner_gpt22.07BClassic Transformer (MHA + LayerNorm post + GeLU)Vaswani 2017, GPT-2
beginnerarch_beginner_llama2.01BModern baseline (GQA + RMSNorm pre + SwiGLU)Llama 2/3
intermediatearch_intermediate_mistral2.01B1 global : 3 sliding attentionMistral 7B
intermediatearch_intermediate_gemma22.08B1:1 alternating global/localGemma 2
intermediatearch_intermediate_qwen_longctx2.01BRoPE scaling factor 4, 32K ctxQwen 2/3
advancedarch_advanced_jamba2.39BMamba + Attention híbrido 3:1Jamba-1.5 (AI21)
advancedarch_advanced_samba1.99BMamba + Sliding attention 1:1Samba (Microsoft)
advancedarch_advanced_retnet2.21BPure RetNet (attention-free)Sun 2023
expertarch_expert_research2.22B4 mixers + MoE 3-phaseResearch-grade
expertarch_expert_mixtral_moe1.89BPure attn + every-layer MoE (8 × top-2)Mixtral 8x7B
expertarch_expert_striped_hyena1.96BHyena + Attention 4:1, 128KStripedHyena
expertarch_expert_blackmamba_moe2.10BMamba + MoE (MoE sobre mixer no-attn)BlackMamba, MoE-Mamba
expertarch_expert_deepseek_moe1.84BFine-grained MoE (32 × top-3)DeepSeek-V2/V3
expertarch_expert_retnet_moe1.98BRetNet + MoE (speculativo, sin paper)Sun 2023 + extrapolación MoE-Mamba
expertarch_expert_frontier_full_moe1.93BAttention-free, multi-mixer + all-MoE (el más speculativo)Predicción composicional

Sin límite superior — los presets son solo puntos de partida. EulerStack puede ensamblar modelos de cualquier tamaño editando d_model, n_heads y el número de capas.

Referencia del CLI

Sigue las convenciones comunes del CLI de la familia eulerwa. Todos los errores se emiten en el formato de 3 líneas (Category: what / Fix: / See:).

Comandos principales

validate Validación de la spec YAML (--report incluye reporte de realismo)
explain Resumen de la estructura del modelo (capas, estimación de parámetros)
compile IR → configuración JSON (--output) o directorio HF (--output-dir)
schema Impresión del esquema YAML
presets list / show Lista de presets y sus detalles

Opciones comunes

--lang Idioma de salida (ko/en/zh/ja/es). Opción raíz, por defecto ko
--preset Ruta al archivo YAML de spec
--validate-only Solo validar y terminar
--output / -o Ruta de salida del JSON de runtime
--output-dir Directorio de modelo HF (config.json + model.safetensors)
--print-config / --dry-run Imprime la configuración en stdout

CLI i18n en 5 idiomas

Todos los mensajes de help / logs / warnings / errores del CLI están traducidos a ko / en / zh / ja / es. El idioma por defecto es coreano (ko), y puede cambiarse con la opción raíz --lang o la variable de entorno EULERSTACK_LANG. Los nombres de comandos y opciones y las etiquetas Fix: / See: del formato de 3 líneas no se traducen, de modo que se preserva la compatibilidad de scripts.

eulerstack validate --preset my_model.yml
# Coreano (por defecto)

eulerstack --lang en validate --preset my_model.yml
# English

EULERSTACK_LANG=es eulerstack validate --preset my_model.yml
# También vía variable de entorno

Directorio de modelo HF → entrenamiento con EulerForge

compile --output-dir genera config.json y model.safetensors, creando un directorio de modelo compatible con HuggingFace. Es la ruta principal para encadenar con el pipeline de entrenamiento de EulerForge.

eulerstack compile --preset my_model.yml --output-dir ./my_model

# Cargar desde Python
from transformers import AutoModelForCausalLM
model = AutoModelForCausalLM.from_pretrained("./my_model", trust_remote_code=True)

Arquitectura de 5 capas

De la spec YAML a un modelo entrenable, cinco capas separan estrictamente las responsabilidades de cada etapa.

Layer 1: DSL Spec YAML v2 que el usuario escribe (definición declarativa del modelo)
Layer 2: Schema Validación estructural — claves desconocidas, tipos/enum, campos obligatorios, compatibilidad cruzada
Layer 3: IR Representación canónica normalizada (defaults, expansión de plantillas)
Layer 4: Compiler IR → configuración JSON o directorio de modelo HF (config.json + model.safetensors) — cargable con AutoModelForCausalLM.from_pretrained() para enlazar con el entrenamiento de EulerForge
Layer 5: CLI validate / explain / compile / schema / presets — todos con i18n en 5 idiomas

Tutoriales

Los tutoriales se mantienen en coreano (ko) y en inglés (en) en el repositorio fuente, bajo docs/tutorials/{ko,en}/. En esta página mostramos solo el índice; los documentos completos están en el repositorio.

Tutoriales principales

quickstart.mdLanding CLI neutro en idioma (usa --lang)
01_validate_a_spec.mdValidar una spec YAML
02_use_presets.mdUsar presets
03_compile_and_explain.mdCompile & explain
04_prepare_data.mdPreparar datos de entrenamiento
05_sanity_train.mdLoop de entrenamiento sanity
06_arch_walkthrough.mdNEW — recorrido paso a paso por los 15 presets arch_ (por nivel de habilidad)

Profundización en mixers (mixers/)

00_overview.mdVisión general — qué es un mixer y por qué mezclarlos (attention / mamba / retnet / hyena)
01_attention.mdAttention en detalle
02_mamba.mdMamba en detalle
03_retnet.mdRetNet en detalle
04_hyena.mdHyena en detalle

Todos los tutoriales están disponibles en el repositorio fuente.

Instalación y quickstart

Instalación

pip install -e .

# o incluyendo dependencias de desarrollo
pip install -e ".[dev]"

Quickstart

# Explorar presets (coreano por defecto)
eulerstack presets list

# Validar la spec + reporte de realismo
eulerstack validate --preset my_model.yml --report

# Generar directorio HF → entrenar con EulerForge
eulerstack compile --preset my_model.yml --output-dir ./my_model

# Ejemplo cambiando a mensajes en inglés
eulerstack --lang en validate --preset my_model.yml

Diseña arquitecturas LLM con EulerStack

Ensambla modelos híbridos combinando Attention, Mamba, RetNet, Hyena y MoE desde una sola página YAML, y obtén directamente un directorio de modelo HuggingFace listo para entrenar.

Empezar en GitHub