守护棋风的围棋 AI 研究平台
面向围棋 AI 的 CLI 研究平台。在强大的共同实力层之上,可学习、比较并保存不同的棋风(style)。这是我们对围棋界长期以来的一种关切的研究式回应 —— AI 时代里,每位棋手的下法似乎正向唯一的“正解”收敛。EulerGo 将一局棋前约 50 手所呈现的个性视为可学习的信号,通过 style latent 与多算法对比加以刻画,目标是一个让多种“棋风”并存的研究环境,而非单一的超强引擎。
Internal Research Platform围棋界长期以来对"棋风"的关切,我们把它当作一个可以研究的课题来做。
一局棋的前 50 手,长期以来被视为最能显示棋手思考方式的一段 —— 落子何处、先经营哪一边、何时侵入。EulerGo 以这段开局所呈现的风格差异为出发点,将其作为可学习的信号来处理。
与其把一个单一强大的网络变得更强,EulerGo 选择在一个共同实力层之上放置可替换的棋风头 —— 让多个不同的"棋风"在同一基础上并存,而不是收敛为一种。
这是研究平台,不是商用引擎。如何定义、训练、度量、分类并保存风格?EulerGo 希望为这些问题提供一个可复现的实验场所。
一个模型,多种人格。同一基础,不同手感。
输入张量在 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 链路,保证可审计。
训练风格分类器,自动标注每局棋属于哪种人格。v1 基于 reference,v2 基于学习模型(--model)。通过 --style-loss-weight 可在训练过程中直接强化个性信号。
在同一接口下可比较的多个算法族
| 算法 | Tier | 说明 |
|---|---|---|
mcts | stable | AlphaZero 级 PUCT MCTS —— 默认 baseline |
random | stable | 合法着法均匀采样(对照) |
gumbel | beta | Gumbel root selection —— 简化对照 baseline |
gumbel_full | stable | Sequential-halving + 完整 σ(q),忠实于 Danihelka 2022 |
qzero | stable | Searchless Q-derived policy —— 无树 |
pgs | stable | Policy-Gradient Search —— 无树的短随机 rollout |
native_mcts | stable | Root-parallel MCTS + C++ playouts(19x19 实用速度) |
distributed_selfplay | planned | 多机 selfplay(通过 coordinator / worker 运行) |
自我提升循环的数据流
基于插件自动发现的单一入口 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 应用
| 01 | EulerGo 入门 —— 入门 + --workers 多核(5 分钟) |
| 02 | 9x9 风格比较 —— 同算法、不同超参 |
| 03 | 多算法比较(Phase 4) |
| 04 | 读取 JSON 棋谱(Phase 4) |
| 05 | 循环赛 + ELO 估计 |
| 06 | Style Latent 输入通道(Phase 3 引入) |
| 07 | 19x19 Baseline 复现 |
| 08 | QZero —— Searchless 自我对弈(Phase 5) |
| 09 | PGS —— 无树 rollout(Phase 5) |
| 10 | Style Loss + Style Classifier(Phase 5) |
| 11 | Bootstrap ELO 置信区间(Phase 5) |
| 12 | Native C++ MCTS + GPU Batching(Phase 5) |
| 13 | 多机分布式自我对弈(Phase 6) |
| 14 | 基于信息增益的 Tournament Scheduler(Phase 6) |
| 15 | Web Dashboard(Phase 6, i18n) |
| 16 | 19x19 长时训练 Pipeline(Phase 6) |
| 17 | Style Classifier v2 —— 学习型分类器(Phase 6) |
| 18 | 桌面/移动应用 —— 直接与 checkpoint 对弈(Phase 6.1) |
从虚拟环境与安装到第一次 selfplay,一屏完成
五语 CLI、可选 GUI、可选原生构建
所有 help 和运行时输出通过 --lang ko|en|zh|ja|es 切换。默认为韩语。扎根韩国围棋文化,自第一天起即设计为多语言。
pip install eulergo[app] 安装基于 Toga 的跨平台 GUI 应用(Mac/Win/Linux/iOS/Android),可直接与训练好的 checkpoint 对弈。app 命令仅在该包可 import 时才暴露(strict plugin 策略)。
bash eulergo/native/build.sh 为 19x19 实用速度构建 root-parallel MCTS + C++ playouts。即使未构建,native_mcts 也会自动回退到 Python MCTS。
这不是一款商业引擎。它致力于成为一个可复现的实验环境,用来探索个人棋风(棋风)如何被学习、比较与守护。
本项目由李世石九段的公开发言所启发,但与其本人无任何形式的官方关联。
在 GitHub 上开始 联系我们