あ、ひょっとしたら本将棋モードで三駒関係の学習可能かも
「専有メモリ量の関係で三駒関係は無理ぽ」って書いた覚えがありますが、データ構造を見直せば行けそうな気がして来ました。
まず、現在の実装だと評価関数内に「全特徴の平均(double型変数1個)と標準偏差(double型変数16個)」を保存しています*1。
で、この評価関数のインスタンスを、現在学習中のもの1個と過去のエース評価関数20個*2を128GBしか無いメモリに載せる関係上、KKP/KPPは無理だと判断していました。
ただ、過去のエースに関しては標準偏差を保存しとく必要が無いので、ここをザクッと減らしたらKKP/KPP有りでもメモリに載るかも。
…ただ、二駒関係の方が収束は速いと思うので、まずはこのまま学習を進めて、頭打ちになったら三駒関係有効にして再度ゼロから再開する事にします。
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:頻繁に実行され、性能に影響が大きいコード
Reflection-Play(反省会モード)は効果無しとの結論に至った
以前Reflection-Playを有効にして強くなった事があったんですが、これはReflection-Playの効果では無く、単に運が良かっただけみたいです。
という訳で、今日からは本命の本将棋モードでの学習に着手します。
評価項目を駒割+PPT+王将の移動可能範囲に限定したんで、1ヶ月有れば収束してくれないかなぁ。
川中島の戦いじゃないんだから…
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に記載してあります