大会に参加する時の設定 - mizar/YaneuraOu GitHub Wiki
大会に参加する時の注意点
本記事は、将棋AIの大会である
- 世界コンピュータ将棋選手権(WCSC: World Computer Shogi Championship)
- WCSCのトップページはいまのところ存在しない。WCSCを運営する協会であるCSAのサイトから辿る。
- コンピュータ将棋協会: CSA: Computer Shogi Association
- http://www2.computer-shogi.org/
- 世界将棋AI 電竜戦
- コンピュータ将棋連続対局場所(floodgate)
- http://wdoor.c.u-tokyo.ac.jp/shogi/floodgate.html
- 💡これは大会ではなく、常設の対局サーバー
に参加する時の注意点についてまとめています。
それぞれの大会について詳しくは、将棋AIの大会 - やねうら王ニュースをご覧ください。
ビルド~エンジン設定
-
ビルド手順
-
エンジンオプション
気をつけるべきエンジン設定
🌈 最大手数
大会によって持時間や引き分けとなる最大手数が異なります。
大会名 | 持時間 | 最低消費時間 | 最大手数 |
---|---|---|---|
WCSC32 | 15分 + 5秒加算 | 0秒(秒未満切り捨て) | 320手 |
電竜戦 | 10分 + 2秒加算 | 0秒(秒未満切り捨て) | 512手 |
floodgate | 5分 + 10秒加算 | 0秒(秒未満切り捨て) | 256手 |
⚠ 最大手数は、今後ルールで変更されていく可能性が高いので、その大会のルールをよく確認しましょう。
思考エンジンオプションのMaxMovesToDrawを適切に設定する必要があります。
またどの大会も1秒未満で指せば計測上0秒で指したことになりますので、MinimumThinkingTimeは、1000が良いと思います。(あまり短い時間で指すと悪手を指してしまうと思う場合は、2000に設定するのもアリ)
また、上記の大会では、入玉ルールはCSAルール(27点法)なので、EnteringKingRuleを CSARule27 に設定する必要があります。(デフォルトでこうなっているはず…)
⚠ floodgateは負荷が高い時に通信のラグが大きいことがあります。エンジン設定のNetworkDelay,NetworkDelay2を少し大きめの値にしておかないと切れ負けすることがあります…が、floodgateは通信ラグが大きい時は参加しないというのも一つの自衛手段だと思います。
サーバーに接続
Windowsでサーバーに接続
将棋所を用います。ShogiGUIは現状、サーバーに接続する機能がないので使えません。
floodgateと電竜戦は、将棋所にそれぞれ専用の接続機能が用意されています。
将棋所のメニューの「通信対局」の
- サーバ通信対局(floodgate)
- サーバ通信対局(電竜戦)
がそれです。
Ubuntuでサーバーに接続
usiToCsa.rb
サーバーとのやりとりはCSA通信プロトコルで行う必要があります。
- CSA通信プロトコル : https://www2.computer-shogi.org/protocol/
- shogi-server(floodgateと電竜戦の対局サーバ)の拡張仕様 : https://shogi-server.osdn.jp/protocol.html
- ⚠ 世界コンピュータ将棋選手権の対局サーバはfloodgateの対局サーバと仕様の細部が異なり(CSA通信プロトコルに定義されていないメッセージ送信を単に無視するのではなく、反則負けと見なす場合があるなど)、shogi-serverの独自拡張仕様にも対応していません。特に独自のCSA通信部を開発している場合はfloodgateや電竜戦で対局できていたとしても注意が必要です。
また、GUIと思考エンジンはUSIプロトコルでやりとりをしています。
思考エンジンは、普通、CSA通信プロトコルを実装していないので(やねうら王、ふかうら王は実装していません)、思考エンジンが直接サーバーとやりとりすることはできません。
そこで、Ubuntuからサーバーに接続するには、USIプロトコルをCSA通信プロトコルに変換してくれるアダプターを用いる必要があります。
このアダプターに相当するのが、usiToCsa.rbというRubyで書かれたスクリプトなのですが、本家のスクリプトはフィッシャールール(1手ごとに秒加算をするルール)に対応していません。いまはどの大会もフィッシャールールを採用していますので、要するに本家のスクリプトでは大会に参加するのに問題があります。
本家のスクリプトはどうもメンテナンスされていないようですので、本家のusiToCsa.rbをforkして、フィッシャールールに対応し、本家にあったバグ(ponder stopでresignを返した場合に投了してしまうなど)を修正したものを山岡さんが公開されています。
- usiToCsa.rbのdlshogi対応 - TadaoYamaokaの開発日記 : https://tadaoyamaoka.hatenablog.com/entry/2020/04/28/220054
- https://github.com/TadaoYamaoka/shogi-server/blob/master/bin/usiToCsa.rb
⚠ dlshogiチームややねうら王チームは、このスクリプトを用いて実際に大会に参加しているので大きなバグはないと思っていますが、将棋所ほど多くの人が使っているわけではないので何か特殊な状況だと不具合が出る可能性はあります。その意味で、Windowsで参加するチームがあえて使うものではないと思います。
usi-tee-ws
usiToCsa.rb を用いる場合、指し手や現在の読み筋がユーザーに見えません。(大会の中継サイトなどで棋譜を確認することはできますが、反映されるまでにタイムラグがあります。)
そこで、USIプロトコルのやりとりを中継してHTTP/WebSocket 経由で出力するソフトを、思考エンジンとusiToCsa.rbとの間に入れて使うという方法があります。
Mizarさんの公開されているusi-tee-wsがこれを行うためのソフトです。
- usi-tee-ws : https://github.com/mizar/usi-tee-ws
AWS EC2を使う
大会ではマシンスペックの制限がないので、マシンスペックが高い方が有利ですが、手軽にハイスペックなマシンを調達するために、多くの参加チームは、クラウドサービスを用いています。
- AWS(Amazon Web Services) EC2
- GCP(Google Cloud Platform)
AWSの設定手順は、AWSでやねうら王をご覧ください。
このようなクラウドサービスでは、Linux系のOSを用いる方が、Windows系のOSを用いるより時間あたりの料金が安いのでLinux系のOSを用いるチームが多いです。この場合、Ubuntuでビルドして動かすのが普通ですので、Ubuntuで参加する方は、以下の記事も参考にしてください。
また、AWSについては、やねうら王公式ブログのAWS関連の記事AWS EC2 - やねうら王ニュースも参考になると思います。