今回は前回の続きで学習済みデータを用いてFloodgateに放流させました。
Floodgateとは
Floodgateは将棋AI同士が自動で対局を行うオンライン将棋サーバーです。
主に将棋AIの開発や研究者によって利用されており、AIを実戦環境に投入して強さを客観的に評価できる場として知られています。
Floodgateの特徴は以下の通りである。
-
将棋AI同士が 24時間自動で対局 する
-
対局結果に基づき レーティングが付与 される
-
対局ごとに CSA形式の棋譜 が生成される
-
人が操作する必要がなく、放置運用が可能
そのためFloodgateは、
「学習した将棋AIがどの程度実戦で戦えるのか」
「実戦でどのような局面に弱いのか」
を確認するための 実戦評価環境 として非常に有用である。
Floodgateへの接続方法
FloodgateはCSAプロトコルを使用してるため、USI対応の将棋エンジンをそのまま接続することはできません。
そこで本開発では、USIエンジンとCSAサーバーを橋渡しするツールとして
usiToCsa.rbを使用しました。
usiToCsa.rb
という役割を持っています。
これにより、
自作したdlshogiベースの将棋AIをFloodgate上で対局させることが可能になりました。
Floodgate接続用スクリプトの作成
Floodgateへの接続は、コマンドを毎回手入力するのではなくシェルスクリプト化して行った。
このスクリプトの役割は以下の通りである。
-
USIエンジン(dlshogi_onnxruntime)を起動
-
Floodgateサーバに接続
-
対局を1局処理する
実行すると、
-
「Wait for a game start…」と表示され
-
対局が開始
-
対局終了後にプロセスが終了する
という挙動になる。
この段階で、
自作将棋AIがFloodgate上で対局できること を確認できた。
直面した問題:1局でプロセスが終了する
実際に接続してみると、
1局の対局が終わるたびにプログラムが終了してしまい、
連続して対局を行うことができない という問題が発生した。
このままでは、
-
常に手動で再接続する必要がある
-
放置運用ができない
-
大量の棋譜を集めるのが難しい
という課題があった。
Floodgateを「実戦棋譜収集の場」として使うためには、
連続して対局を回し続けられる仕組み が必要だった。
連続放流のためのrunnerスクリプト作成
この問題を解決するため、
接続スクリプトをループ実行する runner スクリプト を作成した。
仕組みは単純で、
-
1局終了したら
-
数秒待機し
-
再度 Floodgate に接続する
という処理を無限ループで行う。
この runner を使うことで、
-
対局 → 終了 → 再接続
-
放置したまま連続対局
が可能になりました。。
結果として、
自作将棋AIを 常時Floodgateに放流し続ける状態 を実現できた。

Floodgate上での動作確認と対局履歴
連続放流が始まると、
FloodgateのWebページ上で以下を確認できるようになった。
-
自分のエンジンIDが表示される
-
対戦相手・勝敗・対局時間が記録される
-
各対局に対応する CSA形式棋譜 へのリンクが表示される
これにより、
-
実戦環境で自作将棋AIが動作していること
-
対局が継続的に行われていること
を視覚的に確認できた。
棋譜取得の現状と運用方針
Floodgateでは、
対局ごとに CSA形式の棋譜 が生成される。
ただし、
接続に使用している usiToCsa.rb では
棋譜を自動保存する仕組みが用意されていない。
そのため現時点では、
-
FloodgateのWebページから
-
CSA棋譜を手動で保存
という方法を採用している。
現在は 連続放流を優先 し、
棋譜の保存については、
後からまとめて取得する方法を検討する方針 の予定。
まとめと今後の予定
本記事では、
-
学習した将棋AIを実戦用に整備し
-
Floodgateに接続
-
連続放流を可能にする仕組みを構築した
ところまでをまとめた。
これにより、
-
自作将棋AIを実戦環境に投入できた
-
実戦対局を自動で回し続けられる状態になった
-
再学習に利用可能な棋譜を取得できる環境が整った
今後は、
-
Floodgateで蓄積したCSA棋譜を一括取得し
-
dlshogiの学習データへ変換
-
再学習による棋力向上を検証する
という流れを進めていく予定である。
