Una plataforma de investigación para una IA de Go con estilo
Una plataforma CLI de investigación para IA de Go, diseñada para que distintos estilos personales (pungmyo, 기풍) puedan aprenderse, compararse y preservarse sobre una capa común fuerte de habilidad. Es nuestra respuesta, desde la investigación, a una preocupación de largo recorrido en el mundo del Go: que, en la era de la IA, las jugadas de cada profesional tienden a converger hacia una única "respuesta correcta". EulerGo trata la individualidad que se manifiesta en las primeras ~50 jugadas como una señal aprendible mediante un style latent y la comparación multi-algoritmo, buscando un entorno de investigación donde convivan muchos estilos en lugar de un único super-motor monolítico.
Internal Research PlatformUna plataforma que toma un interés de largo recorrido en el mundo del Go —— la individualidad, el pungmyo —— y lo trata como un tema digno de investigación.
Las primeras cincuenta jugadas de una partida suelen describirse como el tramo en el que más se nota el pensamiento de cada jugador —— dónde juega, qué lado construye primero, cuándo invade. EulerGo parte de las diferencias de estilo en esa fase inicial y las trata como una señal aprendible.
En lugar de hacer más fuerte una única red poderosa, EulerGo coloca una capa común de habilidad debajo de cabezas de estilo intercambiables —— de modo que varios "personajes" distintos puedan coexistir sobre la misma base en lugar de converger en uno.
Esto es una plataforma de investigación, no un motor comercial. ¿Cómo se define, se entrena, se mide, se clasifica y se preserva un estilo? EulerGo está pensado como un lugar para correr experimentos reproducibles en torno a esas preguntas.
Un modelo, muchos personajes. Misma base, manos distintas.
El tensor de entrada añade N canales de estilo sobre 9 canales base. Cada dimensión de estilo es un plano constante transmitido por broadcast sobre todo el tablero. Con style_vector=None es totalmente compatible con el modelo de 9 canales. El Trainer detecta in_channels automáticamente desde features.shape[1] y los restaura desde el metadato de arquitectura del checkpoint.
Sobre la misma interfaz de self-play / eval / league, un único flag --algorithm cambia entre MCTS, Gumbel, QZero, PGS, native_mcts y random. El algoritmo es una perilla —— comparación en igualdad de condiciones, mismas métricas.
selfplay → train → checkpoint → selfplay más fuerte → analyze / league. Cada iteración escribe un RunManifest (seed/git/profile/version) automáticamente, y el pipeline registra chain.json para que cada cadena de warm-start sea auditable.
Entrena un clasificador de estilo para etiquetar automáticamente a qué personaje pertenece cada partida. La v1 es basada en referencia; la v2 es un modelo aprendido (--model). El flag --style-loss-weight refuerza directamente la señal de individualidad durante el entrenamiento.
Varias familias comparadas sobre una interfaz común
| Algoritmo | Tier | Descripción |
|---|---|---|
mcts | stable | PUCT MCTS de clase AlphaZero —— baseline por defecto |
random | stable | Uniforme sobre jugadas legales (control) |
gumbel | beta | Gumbel root selection —— baseline contrastivo simplificado |
gumbel_full | stable | Sequential-halving + σ(q) completa, fiel a Danihelka 2022 |
qzero | stable | Política derivada de Q sin búsqueda —— sin árbol |
pgs | stable | Policy-Gradient Search —— rollouts estocásticos cortos sin árbol |
native_mcts | stable | Root-parallel MCTS + playouts en C++ (19x19 práctico) |
distributed_selfplay | planned | Selfplay multi-máquina (ejecutado vía coordinator / worker) |
El flujo de datos del bucle de auto-mejora
Un único punto de entrada eulergo con auto-descubrimiento de plugins
| Comando | Descripción |
|---|---|
selfplay | Genera partidas de self-play (--algorithm, --workers N) |
train | Entrenamiento de red neuronal (PyTorch, --style-loss-weight) |
shuffle | Mezcla y combina datos de entrenamiento |
export | Exporta / lista checkpoints |
eval | Evaluación cara a cara entre dos configuraciones |
analyze | Análisis de apertura y comparación de estilo |
league | Torneo round-robin + ELO (--bootstrap CI) |
algorithms | Lista los algoritmos disponibles con sus tiers |
classify | Etiquetado automático de estilo (basado en referencia o v2 aprendida) |
coordinator | (Phase 6) Coordinador de selfplay distribuido |
worker | (Phase 6) Worker de selfplay distribuido |
tournament | (Phase 6) Emparejamiento dinámico por ganancia de información |
dashboard | (Phase 6) Dashboard web (i18n) |
pipeline | (Phase 6) Pipeline de entrenamiento iterativo |
app | (Phase 6.1, opcional) App GUI basada en Toga —— pip install eulergo[app] |
Todo el texto de help y la salida en tiempo de ejecución se traduce vía --lang ko|en|zh|ja|es.
18 guías paso a paso —— desde introducción hasta entrenamiento distribuido y la app GUI
| 01 | Primeros pasos con EulerGo —— introducción + --workers multi-core (5 min) |
| 02 | Comparación de estilo 9x9 —— mismo algoritmo, diferentes hiperparámetros |
| 03 | Comparación multi-algoritmo (Phase 4) |
| 04 | Lectura de registros de partida JSON (Phase 4) |
| 05 | Liga + estimación de ELO |
| 06 | Canales de entrada Style-Latent (introducido en Phase 3) |
| 07 | Reproducción de baseline 19x19 |
| 08 | QZero —— Self-play sin búsqueda (Phase 5) |
| 09 | PGS —— Rollouts sin árbol (Phase 5) |
| 10 | Style Loss + Style Classifier (Phase 5) |
| 11 | Intervalos de confianza ELO por bootstrap (Phase 5) |
| 12 | Native C++ MCTS + GPU Batching (Phase 5) |
| 13 | Self-play distribuido multi-máquina (Phase 6) |
| 14 | Tournament Scheduler por ganancia de información (Phase 6) |
| 15 | Dashboard web (Phase 6, i18n) |
| 16 | Pipeline de entrenamiento largo 19x19 (Phase 6) |
| 17 | Style Classifier v2 —— clasificador aprendido (Phase 6) |
| 18 | App de escritorio/móvil —— jugar directamente contra un checkpoint (Phase 6.1) |
De venv e instalación a tu primer selfplay en una sola pantalla
CLI en 5 idiomas, GUI opcional, build nativo opcional
Todo el texto de help y la salida en tiempo de ejecución cambia vía --lang ko|en|zh|ja|es. El idioma por defecto es el coreano. Arraigado en la cultura del baduk coreano, multilingüe desde el primer día.
pip install eulergo[app] instala una app GUI multiplataforma basada en Toga (Mac/Win/Linux/iOS/Android) para jugar directamente contra un checkpoint entrenado. El comando app solo se expone cuando el paquete es importable (política de plugins estricta).
bash eulergo/native/build.sh compila root-parallel MCTS + playouts en C++ para una velocidad práctica en 19x19. Si la build no está presente, native_mcts cae automáticamente al MCTS de Python.
No es un motor comercial. Aspira a ser un entorno experimental reproducible sobre cómo el estilo personal (pungmyo) puede aprenderse, compararse y preservarse.
El proyecto fue inspirado por las declaraciones públicas de Lee Sedol; no está afiliado oficialmente a él de ninguna forma.
Empezar en GitHub Contacto