棋風をもった囲碁 AI を研究するプラットフォーム
囲碁 AI のための CLI 研究プラットフォームです。強力な共通実力層の上で、異なる棋風(style)を学習・比較・保存できるように設計しました。AI の時代になって、すべての棋士の手が唯一の「正解」へ収束していく —— 囲碁界で長く語られてきたこの懸念に、研究の立場から応えるという発想から生まれています。対局の最初の五十手に現れる個性を、style latent と複数アルゴリズムの比較によって学習可能な信号として扱い、単一の超強エンジンではなく、多くの個性が共存する研究環境を目指します。
Internal Research Platform囲碁界で長く語られてきた関心事 —— 個性・棋風 —— を、研究のテーマとして扱ってみるためのプラットフォーム。
対局の最初の五十手は、棋士の思考の形が最もはっきり現れる区間として長く語られてきました —— どこに打つか、どの辺から広げるか、いつ侵入するか。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-based、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 由来 policy —— 木なし |
pgs | stable | Policy-Gradient Search —— 木を使わない短い確率的ロールアウト |
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, optional) 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 Self-Play(Phase 5) |
| 09 | PGS —— Tree-Free Rollouts(Phase 5) |
| 10 | Style Loss + Style Classifier(Phase 5) |
| 11 | Bootstrap ELO 信頼区間(Phase 5) |
| 12 | Native C++ MCTS + GPU Batching(Phase 5) |
| 13 | 複数マシンでの分散 Self-Play(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) |
venv とインストールから最初の selfplay まで一画面で
5 言語 CLI、オプションの GUI、オプションのネイティブビルド
help と実行時出力は --lang ko|en|zh|ja|es で切り替わります。既定は韓国語。韓国囲碁文化に根ざしつつ、初日から多言語で設計されました。
pip install eulergo[app] で Toga ベースのクロスプラットフォーム GUI アプリ(Mac/Win/Linux/iOS/Android)を導入し、学習済みの checkpoint と直接対局できます。app コマンドはこのパッケージが import 可能なときにのみ CLI に公開されます(strict plugin ポリシー)。
bash eulergo/native/build.sh で root-parallel MCTS + C++ playouts を 19x19 の実用速度向けにビルドします。未ビルドでも native_mcts は自動で Python MCTS にフォールバックします。
商用エンジンではありません。ひとりの棋風(棋風)がどのように学習・比較・保存されうるかを探る、再現可能な実験環境を目指しています。
本プロジェクトは李世ドル九段の公開発言に触発されたものであり、ご本人とは一切の公式な関係はありません。
GitHub で始める お問い合わせ