EulerGo

守护棋风的围棋 AI 研究平台

面向围棋 AI 的 CLI 研究平台。在强大的共同实力层之上,可学习、比较并保存不同的棋风(style)。这是我们对围棋界长期以来的一种关切的研究式回应 —— AI 时代里,每位棋手的下法似乎正向唯一的“正解”收敛。EulerGo 将一局棋前约 50 手所呈现的个性视为可学习的信号,通过 style latent 与多算法对比加以刻画,目标是一个让多种“棋风”并存的研究环境,而非单一的超强引擎。

Internal Research Platform

方法

围棋界长期以来对"棋风"的关切,我们把它当作一个可以研究的课题来做。

认真对待开局 50 手

一局棋的前 50 手,长期以来被视为最能显示棋手思考方式的一段 —— 落子何处、先经营哪一边、何时侵入。EulerGo 以这段开局所呈现的风格差异为出发点,将其作为可学习的信号来处理。

共同实力层 + 可替换的棋风头

与其把一个单一强大的网络变得更强,EulerGo 选择在一个共同实力层之上放置可替换的棋风头 —— 让多个不同的"棋风"在同一基础上并存,而不是收敛为一种。

面向研究

这是研究平台,不是商用引擎。如何定义、训练、度量、分类并保存风格?EulerGo 希望为这些问题提供一个可复现的实验场所。

工作原理 —— 强共同实力层 + 可替换风格头

一个模型,多种人格。同一基础,不同手感。

Style Latent 输入通道

输入张量在 9 个 base 通道之上添加 N 个 style 通道。每个 style 维度是一个在整个棋盘上广播的常数平面。style_vector=None 时与原 9 通道模型完全向后兼容。Trainer 通过 features.shape[1] 自动检测 in_channels,并从 checkpoint 的 architecture metadata 自动恢复。

算法可切换

在同一 self-play / eval / league 接口之上,仅需 --algorithm 一个参数即可在 MCTS、Gumbel、QZero、PGS、native_mcts、random 之间切换。算法是旋钮。条件相同,指标相同。

自我提升循环

selfplay → train → checkpoint → 更强的 selfplay → analyze / league。每次迭代自动写入 RunManifest(seed/git/profile/version),pipeline 以 chain.json 记录每次 warm-start 链路,保证可审计。

Style Loss + 自动标注

训练风格分类器,自动标注每局棋属于哪种人格。v1 基于 reference,v2 基于学习模型(--model)。通过 --style-loss-weight 可在训练过程中直接强化个性信号。

算法矩阵

在同一接口下可比较的多个算法族

算法 Tier 说明
mctsstableAlphaZero 级 PUCT MCTS —— 默认 baseline
randomstable合法着法均匀采样(对照)
gumbelbetaGumbel root selection —— 简化对照 baseline
gumbel_fullstableSequential-halving + 完整 σ(q),忠实于 Danihelka 2022
qzerostableSearchless Q-derived policy —— 无树
pgsstablePolicy-Gradient Search —— 无树的短随机 rollout
native_mctsstableRoot-parallel MCTS + C++ playouts(19x19 实用速度)
distributed_selfplayplanned多机 selfplay(通过 coordinator / worker 运行)

一览 Pipeline

自我提升循环的数据流

selfplay
training_data.npz
game_NNNN.json
train
checkpoint
selfplay
--checkpoint
analyze / league
# Phase 3+ self-improvement loop
selfplay (with algorithm, style_vector) → training_data.npz (9+N channels) + game_NNNN.json
  → train → checkpoint (architecture metadata)
  → selfplay (--checkpoint) → 更强的风格信号
  → analyze / league → 风格 + 强度比较 (ELO, bootstrap CI)

CLI 表面(概览)

基于插件自动发现的单一入口 eulergo

命令 说明
selfplay生成自我对弈棋局(--algorithm--workers N)
train神经网络训练(PyTorch、--style-loss-weight)
shuffle训练数据打乱与合并
export导出 / 列出 checkpoint
eval两个配置间的对局评估
analyze开局分析与风格比较
league循环赛 + ELO(--bootstrap CI)
algorithms列出可用算法及其 tier
classify风格自动标注(reference 或学习 v2)
coordinator(Phase 6) 分布式 selfplay 协调器
worker(Phase 6) 分布式 selfplay 工作节点
tournament(Phase 6) 基于信息增益的动态配对
dashboard(Phase 6) Web 仪表板(i18n)
pipeline(Phase 6) 迭代训练 pipeline
app(Phase 6.1, 可选) 基于 Toga 的 GUI 应用 —— pip install eulergo[app]

所有 help 运行时输出均通过 --lang ko|en|zh|ja|es 翻译。

教程索引

18 篇分步指南 —— 从入门到分布式训练与 GUI 应用

01EulerGo 入门 —— 入门 + --workers 多核(5 分钟)
029x9 风格比较 —— 同算法、不同超参
03多算法比较(Phase 4)
04读取 JSON 棋谱(Phase 4)
05循环赛 + ELO 估计
06Style Latent 输入通道(Phase 3 引入)
0719x19 Baseline 复现
08QZero —— Searchless 自我对弈(Phase 5)
09PGS —— 无树 rollout(Phase 5)
10Style Loss + Style Classifier(Phase 5)
11Bootstrap ELO 置信区间(Phase 5)
12Native C++ MCTS + GPU Batching(Phase 5)
13多机分布式自我对弈(Phase 6)
14基于信息增益的 Tournament Scheduler(Phase 6)
15Web Dashboard(Phase 6, i18n)
1619x19 长时训练 Pipeline(Phase 6)
17Style Classifier v2 —— 学习型分类器(Phase 6)
18桌面/移动应用 —— 直接与 checkpoint 对弈(Phase 6.1)

安装与快速上手

从虚拟环境与安装到第一次 selfplay,一屏完成

# 虚拟环境 + dev 安装
python -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"

# 需要 PyTorch 神经网络训练时
pip install -e ".[nn]"

# 9x9 self-play(RandomPolicy,无需 PyTorch)
eulergo selfplay --games 10 --board-size 9 --simulations 30

# 查看可用算法
eulergo algorithms

# 使用不同算法 selfplay
eulergo selfplay --algorithm gumbel --games 5 --board-size 9

# 比较两个算法(基于 JSON 的丰富指标)
eulergo analyze outputs/algo_mcts_9x9 \
  --compare outputs/algo_gumbel_9x9 \
  --name-a mcts --name-b gumbel

i18n 与平台

五语 CLI、可选 GUI、可选原生构建

五语 CLI

所有 help 运行时输出通过 --lang ko|en|zh|ja|es 切换。默认为韩语。扎根韩国围棋文化,自第一天起即设计为多语言。

eulergo --lang en selfplay --games 1
eulergo --lang zh selfplay --games 1
eulergo --lang ja selfplay --games 1

可选 GUI 应用(Toga)

pip install eulergo[app] 安装基于 Toga 的跨平台 GUI 应用(Mac/Win/Linux/iOS/Android),可直接与训练好的 checkpoint 对弈。app 命令仅在该包可 import 时才暴露(strict plugin 策略)。

可选原生 C++ MCTS

bash eulergo/native/build.sh 为 19x19 实用速度构建 root-parallel MCTS + C++ playouts。即使未构建,native_mcts 也会自动回退到 Python MCTS。

EulerGo 是内部研究项目

这不是一款商业引擎。它致力于成为一个可复现的实验环境,用来探索个人棋风(棋风)如何被学习、比较与守护。

本项目由李世石九段的公开发言所启发,但与其本人无任何形式的官方关联。

在 GitHub 上开始 联系我们