ベンチマーク用スクリプトを使いやすくする
dlshogiに付属するベンチマーク計測用のスクリプトについて、少し使いにくい点があったためコードを一部書き直しました。
■不便であった点
今回いじったbenchmark.pyは、スクリプト内にベタ書きされた局面を読み込み、それを秒読み指定で局面数分ループを回していますが、各指定局面での探索結果(bestmove, info)は特に保存しておらず、ただ標準出力しているだけでした。
これだとサマリとしてnpsやdepth、nodesの平均や最大最小値をとることが出来ず、計測作業には不便です。
■改良点
ベンチを回した結果をlogファイルに書き出すように、一部書き直しました。具体的には、書き出す情報は一旦nps, nodes, depthの3つとし、これらの最大、最小、平均、中央値を出すようにしています。また、これに伴い、cshogi側も一部コードを書き直して、infoを取得できるようにしています。
以下は、電竜戦で使用したLightweight-EFをbyoyomi=5000で回した際の結果になります。
nps_ave=66710.78 nodes_ave=336131.11 depth_ave=25.61 nps_median=70183.0 nodes_median=353832.0 depth_median=24.0 nps_max=94505.0 nodes_max=475269.0 depth_max=44.0 nps_min=24390.0 nodes_min=124978.0 depth_min=7.0
問題なく出力できていそうです。
これでベンチマークテストも少しやりやすくなったかと思います。
今後はヒストグラム出力にも対応させる予定です。