GA将?開発日記~王理のその先へ~

ネタ勢最強を目指して絶賛開発中。

あ、ひょっとしたら本将棋モードで三駒関係の学習可能かも

 「専有メモリ量の関係で三駒関係は無理ぽ」って書いた覚えがありますが、データ構造を見直せば行けそうな気がして来ました。

 まず、現在の実装だと評価関数内に「全特徴の平均(double型変数1個)と標準偏差(double型変数16個)」を保存しています*1

 で、この評価関数のインスタンスを、現在学習中のもの1個と過去のエース評価関数20個*2を128GBしか無いメモリに載せる関係上、KKP/KPPは無理だと判断していました。

 ただ、過去のエースに関しては標準偏差を保存しとく必要が無いので、ここをザクッと減らしたらKKP/KPP有りでもメモリに載るかも。

 …ただ、二駒関係の方が収束は速いと思うので、まずはこのまま学習を進めて、頭打ちになったら三駒関係有効にして再度ゼロから再開する事にします。

*1:16は学習用マシンの論理コア数

*2:強かった評価関数

Intelさん、PARROTの実装はよ

 https://pc.watch.impress.co.jp/docs/2004/1109/kaigai133.htm

 PC Watchの過去ログをつらつら眺めていたら、PARROT(Power AwaReness thRough selective dynamically Optimized Traces)という懐かしい単語が。もう15年前かぁ。

 私が理解した範囲だと、プログラムのホットコード*1に対して、ホットコードの実行と並行してガリガリ最適化してやって性能を上げる技術だったと思います。

 んで、現在のマルチコアCPUでは各コアにPARROTのハードウェアを実装する必要は無くて、1つのダイに1個の最適化を行うモジュールが有れば事足りると思うんで、実装すれば十分ペイすると思うんですがねぇ。

 仮に「1つのコアのサイズ」と「PARROTモジュールのサイズ」が同一だと仮定すると、コアを1個減らしてPARROTモジュールを積めば、現行のCPUと同じダイサイズを維持出来ます。

 で、その際の性能ですが、PARROTによる性能向上率を20%と仮定すると、「7コア+PARROTモジュール」で「8.4コア分の性能」、「15コア+PARROTモジュール」で「18コア分の性能」、「31コア+PARROTモジュール」で「37.2コア分の性能」と、コア数が増えるに連れメリットがどんどん大きくなります。

 こっから先は個人的な話になりますが、コンピュータ将棋の学習・対局では同じコードを全てのコアで処理しますので、PARROTによる効果は非常に高いんじゃないかと想像しています。

 という訳で、最近のIntelはつまずいている感が強いんで、起死回生の一手としてPARROTの実装はよ! と言っておきます。

*1:頻繁に実行され、性能に影響が大きいコード

本将棋モード、学習開始

 とりあえず最適っぽいメタパラメータは見付かったんで、本将棋モードの学習開始。

 スレッドのアフィニティマスク設定時に極力同じ物理コアに割り当てない様にとか、セコい改良をチョロっとだけして、後は5五将棋モードそのままです。

 ただ、評価項目に関してはメモリ専有量の関係で駒割・PPT・王将の移動可能範囲に限定しました。

 後1ヶ月チョイで学習を終わらせないといけないんですが、可能かなぁ… 正直、不安。

Reflection-Play(反省会モード)は効果無しとの結論に至った

 以前Reflection-Playを有効にして強くなった事があったんですが、これはReflection-Playの効果では無く、単に運が良かっただけみたいです。

 という訳で、今日からは本命の本将棋モードでの学習に着手します。

 評価項目を駒割+PPT+王将の移動可能範囲に限定したんで、1ヶ月有れば収束してくれないかなぁ。

Winboardプロトコルの解析、ちょっと進んだ

 Winboardエンジンの標準入出力を覗き見してログファイルに保存するプログラムを作って、それを参考にプロトコル解析してみた。

 んで、現状ではShokidokiとLimaを起動して、5五将棋モードで対局させられる程度には解析出来た(はず)。ちゃんと強い設定になっているかどうかは謎だけど。

 という訳で、選手権後に自作の5五将棋対局サーバをWinboardプロトコル対応させる目処はつきました。

 これで、Fairy-Stockfish・Shokidoki・Limaの3ソフト相手に連続対局させる事は可能になりそうです。

川中島の戦いじゃないんだから…

13:56:26 @ core::rl::GameAggregator::aggregate() > 2200局終了
13:56:26 @ core::rl::GameAggregator::aggregate() > +---+---+---+---+---+---+---+---+---+
13:56:26 @ core::rl::GameAggregator::aggregate() > |   |   |   |   |   |v歩|   |   |^と|
13:56:26 @ core::rl::GameAggregator::aggregate() > +---+---+---+---+---+---+---+---+---+
13:56:26 @ core::rl::GameAggregator::aggregate() > |v香|v桂|   |^杏|   |   |   |   |   |
13:56:26 @ core::rl::GameAggregator::aggregate() > +---+---+---+---+---+---+---+---+---+
13:56:26 @ core::rl::GameAggregator::aggregate() > |v歩|^龍|   |   |   |v桂|   |   |v歩|
13:56:26 @ core::rl::GameAggregator::aggregate() > +---+---+---+---+---+---+---+---+---+
13:56:26 @ core::rl::GameAggregator::aggregate() > |   |   |v歩|   |   |v王|^歩|   |   |
13:56:26 @ core::rl::GameAggregator::aggregate() > +---+---+---+---+---+---+---+---+---+
13:56:26 @ core::rl::GameAggregator::aggregate() > |   |^桂|   |   |v歩|^金|   |   |   |
13:56:26 @ core::rl::GameAggregator::aggregate() > +---+---+---+---+---+---+---+---+---+
13:56:26 @ core::rl::GameAggregator::aggregate() > |   |^歩|^歩|   |   |^王|   |   |^歩|
13:56:26 @ core::rl::GameAggregator::aggregate() > +---+---+---+---+---+---+---+---+---+
13:56:26 @ core::rl::GameAggregator::aggregate() > |^歩|   |   |v龍|^角|   |v金|^歩|^香|
13:56:26 @ core::rl::GameAggregator::aggregate() > +---+---+---+---+---+---+---+---+---+
13:56:26 @ core::rl::GameAggregator::aggregate() > |^香|   |   |   |   |   |   |   |   |
13:56:26 @ core::rl::GameAggregator::aggregate() > +---+---+---+---+---+---+---+---+---+
13:56:26 @ core::rl::GameAggregator::aggregate() > |   |v角|   |v銀|   |vと|   |   |   |
13:56:26 @ core::rl::GameAggregator::aggregate() > +---+---+---+---+---+---+---+---+---+
13:56:26 @ core::rl::GameAggregator::aggregate() > 歩,香,桂,銀,金,角,飛,
13:56:26 @ core::rl::GameAggregator::aggregate() >  3, 0, 0, 2, 0, 0, 0,
13:56:26 @ core::rl::GameAggregator::aggregate() >  2, 0, 1, 1, 2, 0, 0,
13:56:26 @ core::rl::GameAggregator::aggregate() > 手番:後手
13:56:26 @ core::rl::GameAggregator::aggregate() > 手数:131

 前線まで王将が出張ってく必要、無くない?

第11回UEC杯5五将棋大会 in GAT2019版のGA将?を公開しました

 第11回UEC杯5五将棋大会 in GAT2019版のGA将?を公開しました。

 下記URLのからダウンロード可能です。動作環境や使い方に関しては、ZIPフィアル内のReadMe.txtをご参照下さい。

 ZIPファイルへの直リンク:
  https://drive.google.com/open?id=1mOWW2AYmJ554KMsM8XbpHsCSKd_Fa6ik

 GA将のウェブサイト内:
  http://gasyou.is-mine.net/archive/index.html

 また、何か問題が有りましたら、お手数ですが本エントリのコメント欄もしくはメール・Twitter*1でご連絡頂けると幸いです。

# 2019/03/14 15:30現在、公開の準備中です。10分ほどで公開完了予定です。

 2019/03/14 15:41に作業完了しました。

# 2019/03/15 15:42 AVX2命令をサポートしていないCPUで動作しない可能性が有りましたので、ZIPファイルを差し替えました。
# 問題が発生している方は、お手数ですが再度ダウンロードして頂けないでしょうか。動作している方に関しては、再DLの必要は有りません。

*1:アドレス・アカウントはReadMe.txtに記載してあります