AobaZeroで遊ぼう4

bleu48.hatenablog.com

 

さらに続きます。

前回CPUのp200を投入しました。

思っていたよりちょっと弱い気がしましたので比較実験をしました。

 

使った評価関数はこちらの「20190722_193305log_win500k_lr00001_wd00002_m64_iter_856000.txt」です。

Re: FloodgateのAobaZero命名則について | コンピュータ将棋や囲碁の掲示板 | 3515

学習率を下げて強くなったものだそうです。手元計測ではw674に対してGPUでp800の対戦を20戦させて17勝3敗でした。有意に強いですね。

 

1.1スレッドCPU vs 4スレッドCPU

前者は公式バイナリ,後者は開発版をビルドしたものです。さすがにアレなのでp50での比較。

500戦で335勝140敗25分。有意差ありですね。

 

2.GPU vs 4スレッドCPU

前者が開発版CPUビルド,後者は開発版GPUビルドです。理由はRyzenのノートでテストしたため公式バイナリだとOpenCLがうまく動かなかったためです。p100で対戦してみました。

500戦で280勝196敗24分。こちらも有意差ありとみていいでしょう。

 

3.AobaZero_w667_n_p200 vs AobaZero_w667_n_p200_t4

floodgateにてGPUでp200(ほぼ即指し)とCPUの4スレッドのp200を投入しておりました。上記の件に気付いてからGPU版を投入したので対戦数が異なりますが,レーティング差が60ほどあります。(見た範囲では常に30~80の間)

評価関数はw667で合わせてあります。

これだけでどのくらいの精度と言えませんが常に差があって逆転はなかったように思います。

 

ということで,低プレイアウト数でマルチスレッド側が若干弱いようです。

理由がマルチスレッドだけだとすれば,バーチャルロスの効果かなぁと推測してみます。バーチャルロスとは探索中のスレッドの結果を負けと仮定しておくマルチスレッドの計算法です。仮定しなければ同時に走っているスレッドが同じ探索をする可能性があるためなるべく他のスレッドを探索させようとするものです。

しかしながら,p50くらいで4スレッドだとバーチャルロスが1割近くになります。これは悪影響大きそうです。相対的にプレイアウト数が多くなれば無視できるものと考えます。

 

ところで,マルチスレッド化は当然CPU専用ではありません。

GPUの場合は1スレッドでは十分な負荷がかからず待ち時間に取られているようです。

CPU・GPUの環境に寄りますが手元のベンチマークではマルチスレッド化で3倍から4倍程度の負荷をかけることが可能になっているようです。当然GPUの排熱には注意しましょう。

 

ってことで,ゲーミングノートでもカジュアルにp3200級を計測可能になったので連休に色々対戦してみました。

AobaZero側がp3200,対戦相手は一手10秒です。

vs dlshogi_wcsc29 14勝6敗

vs dlshogi_wcsc28 17勝3敗

vs 技巧2(1スレッド) 4勝16敗

AobaZero側がp6400,対戦相手は一手10秒です。

vs 技巧1(1スレッド) 8勝11敗1分

vs ぽんぽこ(1スレッド) 6勝14敗

これで優劣をコメントするつもりはありませんが,一方的な展開になっていないって位の結論は言えます。

 

ちなみにfloodgateで1080Tiでp20kを投入してみます。p30kの結果も出てますが,評価関数が違うので比較を楽しみんで下さい。

マルチスレッド版そのうち公式にリリースされれば学習速度も3倍増するんでしょうか?