教師データ生成時(800探索)の性能

要約

 教師データ生成時のレートはfloodgate換算で

  • Miacis:2700程度
  • やねうら王:2800〜2900程度?
  • AobaZero:3000程度

 また探索バッチサイズはできれば1で生成するべきだとわかった。

背景

 AobaZeroが800回の探索でKrist_483_473stb_16t_100mに勝ったという話が出ている。

 800回の探索というのは教師データ生成における設定であり、これが強ければ強いほど質の高いデータを生成できるので最終的な性能も上がると考えられる。

 Miacisは128ch、10ブロックというやや小さめのネットワークを使っており、その分学習が早く終わったりNPSが高くなることに利点を見出している。しかし800回の探索については性能が低めになっていると思われるため、今回はその性能を測定した。

実験1

 対戦相手にはYaneuraOu/Kristallweizen(1スレッド 100Kノード)を用いた。細かい条件は違うかもしれないが、おおむねfloodgateのKrist_483_473stb_100k(レート2787(2020/04/11時点))と同じと考えて良いのではないかと思われる。

 対局結果は次のようになった。

対局回数 勝数 引き分け数 敗数 勝率 相対Eloレート
1000 413 7 580 41.65% -58.6

 つまりMiacisの教師データ生成時のレートは2700程度と考えられる。

 NNUE系のプログラムが一般的にどの程度の探索量で教師データを生成しているのかは知らないのだが、たとえばやねうら王公式サイトでは

depth 18 + 100kだとかdepth 18 + 200kだとか打ち切りノード数は探索部に合わせて現実的な時間に収まるように調整している。

 とあるので、Krist_483_473stb_100kのレート2787と同じくらいか、200kつまり2倍なのでレート+100程度と思われる(depth18はもっと強いのかもしれない?)。

 またAobaZeroのp800は

とおおむねレート3000近くある。

 こうして比較してみるとやはりMiacisの教師データ生成時のレートは低めであり、もう少し改善するべきだと考えれる。

実験2

 また、Miacisではデータ生成を高速化するために、学習時の探索についてもバッチサイズを4にして学習している。(32局を並列で対局するので、GPUが一度に計算する最大の局面数は128)

 バッチサイズを1より大きくすることが性能に悪影響を与えるのかどうかについても検証した。実験1と同様の対戦相手に対して探索バッチサイズのみを変えてそれぞれ1000局対局を行った。

f:id:tokumini:20200411100312p:plain

 探索バッチサイズを大きくするほど性能が落ちている。バッチサイズが大きいときにはバーチャルロスなどの関係で最善読み筋以外にも探索が割り当てられやすく、最善読み筋が伸びきる前に800回へ達してしまうためだと考えられる。

 探索バッチサイズを32などにすれば大きく性能が落ちるだろうとは思っていたが、4でもレートが25ほど落ちてしまうとは意外だった。

 並列対局数を4倍にすれば探索バッチサイズ1でも同じ生成速度になるはずだが、並列対局数を増やすとその分だけ置換表を保持する必要があるのでより多くのCPUメモリが必要になる。

余談

 現在、大学は立入禁止になっているため、パソコンが落ちると再起動させる手段がない。使用メモリ量を増やしてパソコンが固まるなどすると困るので正直いじりたくない。レート-25には目をつぶるか……。