Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

MCTS過程のアニメーション機能 #93

Open
kaorahi opened this issue Jan 10, 2024 · 5 comments
Open

MCTS過程のアニメーション機能 #93

kaorahi opened this issue Jan 10, 2024 · 5 comments
Labels
enhancement New feature or request

Comments

@kaorahi
Copy link
Contributor

kaorahi commented Jan 10, 2024

#91 を参照 (やっつけ試作あり).

この試作は, lz-analyze に以下の細工をしたもの.

  • 探索が進むたびに, 探索した系列を「最善応手系列」と詐称して出力
  • 適当に sleep をはさみながら途中経過を出力することで, 一手ずつ打っているようにアニメーション

GUI 側の対応が不要なのが利点 (Lizzie, LizzieYzy, LizGoban の「サブ碁盤に PV を常時表示する機能」がそのまま使える). GUI をだますハックなので細かな不具合は割り切らざるをえないのが欠点 (LizGoban だと visits グラフが乱れる).

別案は, まじめに専用コマンドを独自導入する方法. 「一手ずつアニメーション」のような本来 GUI 側が働くべき役割を GUI にまかせられるのが利点. GUI 側の実装がそこそこ手間なので, 実状として LizGoban 専用になってしまいそうなのが欠点.

どちらにしても, 清書する価値があるかやや迷っています. 実際に使うのは, MCTS を解説するときにデモとして数秒流すか, 自分で数回眺めて「ふうん」と思うか, ぐらいで終わりそうなので…

@kobanium kobanium added the enhancement New feature or request label Jan 10, 2024
@kobanium
Copy link
Owner

年に何回か囲碁AIのお話をする機会があるので、個人的にはあったら嬉しい機能はあります。
本実装するのであれば、大変申し訳無いのですが、既存のlz-analyzeへの影響度や可読性の低下を踏まえると別案のGUIに役割を持たせて、専用コマンドを独自実装する方が望ましいですね...。
実質LizGoban専用になってしますし、GUIの実装にしわ寄せをしてしまうので、手が空いていて気が向いたら...、程度の優先度で考えていただければ嬉しいです。

@kaorahi
Copy link
Contributor Author

kaorahi commented Jan 11, 2024

では, いつか気が向いたときのネタということにさせてください. やっつけ試作でも動作はするので, 自分のデモ用にはもうこれでいいかと思いかけていました.

https://github.com/kaorahi/TamaGo/tree/mcts_step

折衷案で, TamaGo と GUI の間を仲介するプロキシを実装する手もありそうです. TamaGo に対しては専用コマンドを叩きつつ, GUI に対しては lz-analyze のふりをする.

専用コマンドとしては, MCTS のステップ実行機能を追加する感じでしょうかね. tree.search_mcts() を一回呼んで, いま探索した path に関する情報を返す.

(自分へのメモ)
batch_size > 1 の場合も想定して, 下記を忘れないこと

        if len(self.batch_queue.node_index) > 0:
            self.process_mini_batch(board)

@kaorahi
Copy link
Contributor Author

kaorahi commented Jan 19, 2024

下書きその 2 です.

https://github.com/kaorahi/TamaGo/tree/mcts_step2

アプローチはやっつけ試作のままですが, アニメーションのコードを別ディレクトリに分けました. これなら許容できないでしょうか?

既存ファイルについては, なるべく汚さないよう以下の変更にとどめています.

  • mcts.search_with_callback() を導入
  • 長い関数を分けて部分利用できるように
  • オプション引数に応じて lz-analyze の実体を切り替えるための最低限の追記

専用コマンドアプローチと大差ない汚れ量におさまっていないでしょうか.

python3 main.py --animation-pv-wait 1.0 --animation-move-wait 0.3

のように実行すると, lz-analyze の出力を探索過程のアニメーションに差しかえます. (系列ごとに1秒停止, 一手ごとに0.3秒停止)

やっつけ試作ではノードの value や visits をフォントの色やサイズで表示していましたが, ひとまずそこはコメントアウトしました. これなら LizGoban 専用ではなく Lizzie でも使えます.

@kobanium
Copy link
Owner

対応が遅くなり申し訳ございません。
ただいま確認中ですので、一通り確認が終わりましたらコメントします。

@kobanium
Copy link
Owner

@kaorahi
対応が遅くなり大変申し訳ございません。
一通りコードを確認しました。mcts_step2ブランチの内容であれば、コアの部分が特に難解になることもなくいい感じの内容に収められていると思います。
こちらのブランチのマージリクエストを発行していただけますか。

kobanium added a commit that referenced this issue May 2, 2024
MCTS過程のアニメーション(#93)の実装
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants