kobanium / TamaGo

Computer go engine using Monte-Carlo Tree Search written in Python3.
Apache License 2.0
54 stars 10 forks source link

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

Open kaorahi opened 8 months ago

kaorahi commented 8 months ago

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

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

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

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

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

kobanium commented 8 months ago

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

kaorahi commented 8 months ago

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

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 commented 7 months ago

下書きその 2 です.

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

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

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

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

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

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

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

kobanium commented 7 months ago

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

kobanium commented 4 months ago

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