探索ノード数とハッシュメモリの話

独り歩きしている数字として探索ノード数とハッシュメモリの話をメモしておきます。

 

たまたま最近AlphaZero式(PV-MCTSと言う表現の方が通り良くなったかもしれませんが)で将棋のプログラム開発を再開しました。元ネタは2017年春ですので3年近く地下に沈んでました。

その間,dlshogiやAobaZeroがどんどん強くなって来ましたので一気にキャッチアップしたいと思います。オンラインで質問させて頂けるのは感謝感謝です。

で,ふとオリジナルの論文を確認してたところelmoにハッシュメモリを1GBしか渡してないというところが気になりました。CPUが64スレッドのDual Xeonなのに!?

 

たまたまハードウェア構成を変更していたThreadripperの負荷テストを兼ねて本条件のレーティング計測をやっています。

100戦程度終わってからblogを書くつもりだったのですが,チームメイトにも早々に見つかってしまいましたので計測中としてリンクを晒しておきます。

wdoor.c.u-tokyo.ac.jp

 

マシンスペックとしては第二世代のThreadripper 32コア64スレッドです。評価関数は選手権優勝時のelmo,探索エンジンは最新のやねうら王(古いのを探すのが面倒で)です。ベンチマーク上は20Mnps前後だったと思います。

現在レーティングが3700程度,探索ノード数固定のKrist_483_473stb_16t_100mにも及びませんし,JKishi18gouにも負けています。JKishi18gouは確か6コアのノートPCです。

elmoと同世代の話をするとデスクトップの4コアでレート3800くらいを記録した記憶があります。β版のshotgunがノートPCで3500です。

 

ということで,ハッシュメモリを適切に設定しないと探索の大半が無駄になり弱いことが明白です。無駄は理解していたのですがどの程度酷い行為であるかを確認したのは無駄過ぎて今回が初めてです。

 

え~っと,これでも20Mnpsだと言われれば20Mnpsで探索した結果です。

メモリが足りないとどんだけ早いマシンもどれだけ長時間探索させてもあまり意味がありません。そういうお話です。やねうら王エンジンを初めて使われる方がよくやることでこのメモリ設定を疎かにしがちです。かならず適当な分量のメモリを用意してあげて下さい。

 

 ところで,AbemaTVの探索エンジンの話です。

直接情報を得ているわけではないので多くの推察からですが,探索ノード数を時間経過で計測された方によると13500knps程度だそうです。ハイエンドデスクトップの領域ですから,結構良いマシンです。

ただ,使われ方が3エンジン並列にMultiPVが5だと言うことでひとつの読み筋に対して15分の1しか使われていません。

そしてこの読み筋ですと2コアのノートくらいじゃないかと予測したものと一致しております。

bleu48.hatenablog.com

 

種明かし終わりと言った感じです。

 

また,記事になっているものを読む限りだとハッシュメモリの設定が上手にされているかちょっと不安な表現もありました。それはさすがに大丈夫と思いたいですね。

 

もう少し真面目な話をすると探索ノード数は比例して寄与するものではありません。

GPS将棋の論文などが詳しいですが密結合でも4ノードで2倍,疎結合なら8ノードで2倍と言われています。木構造の探索はアルゴリズム上難しく並列計算で効率よく求めるのが困難なのです。

え~っと上記の例にすると64スレッドの探索だと4の3乗倍のノード数ですが,探索速度は2の3乗倍と単純に推測できます。8倍速です。64倍の計算量で速度が8倍ですから相当無駄が多いことが分かります。

これに8個の条件を順番に計算させるとなんと1倍速と同じ性能しか出ません。

64スレッドが独立に64個の条件を計算したときと同じ速度です。

 

ちょっと分かりにくいかもしれませんが大勢いても仕事が捗るとは限らないので小さな仕事は完全に手分けした方がいいと言う話です。

分かっている人は分かっていると思うので,近いうちに棋譜解析などでやねうら王にも搭載して頂けるような気がします。

 

その辺を前提において,電王トーナメントのshotgunの効用の話がやっと始まります。

---

追記:

検討エンジン用のMultiPV実装については以前に記載している。これだと局面評価精度をあまり落とすことなくMultiPVができる。良し悪しは当然あって全く読み筋が外れる手については探索が遅れるし,当然以前のエンジンのように同時にPVが見られるわけでもないのでGUI側にも対応が必要になる。

bleu48.hatenablog.com

---

追記2:

Abemaの件,15エンジン別働の方がマシって表現もある気がした。もちろん前向きな改善策としての提案である。