2022/6/25追記
この記事の内容は古いのでやねうら王のWikiを御覧ください。
やねうら王Wiki : https://github.com/yaneurao/YaneuraOu/wiki/
将棋ソフトの思考エンジンの設定はわりと難しい。オプション項目がいっぱいあるし、その説明がGUI上できちんとなされていないからだ。(これはUSIプロトコル上、説明をエンジン作者が提供する手段がないので仕方がない)
だからこそ、無料で強い将棋ソフトが入手できる状況においても『将棋神やねうら王』のようなソフトが売れるわけであるな。ちなみに『将棋神やねうら王』では、エンジンオプションの説明を外部ファイル(engine_define.xml)によって行えるようになっている。
『将棋所』のエンジン設定は項目の説明がなく、その説明文を思考エンジン開発者側から提供することが不可能であり、初心者には設定困難だった。『将棋神やねうら王』のほうは、項目の並び順・表示名、簡易説明、日本語説明文などを別ファイルで指定してやることが出来る。 pic.twitter.com/dp0M3IB7GE
— やねうら王 (@yaneuraou) July 18, 2018
そうは言っても、やねうら王のGitHubにお勧めの設定を書いておくべきでは?とよく言われる。手短にまとめるのが難しいので私はずっと放置していたのだが、それもあって、なんとかちゃんねるの将棋スレで以下のようなテンプレが出てきた。
863 名前:名無し名人 (オッペケ Sref-qCV4)[] 投稿日:2018/10/25(木) 14:53:34.33 ID:AyapDDFir
現状、ソフト(dolphinなどやねうら王系列)をShogiGUIの検討モードで使用するために設定すべきオプションは
・USI_PonderをOFF
・Threadsを論理コア数に
・HashUSI_Hashをできる限り大きな値に
// Hashオプションは廃止されました。
・NetworkDelay、NetworkDelay2を0に
・MinimumThinkingTimeを1000に
・(MaxMovsToDrawを256に)
・ContemptFromBlackをON
・EvalDirを評価関数を入れたフォルダ名に(orqhaなど)
・PvIntervalを0に
・ConsiderationModeをON
これだけの設定を正しく行うのは大変
そして、このテンプレがすでに独り歩きし始めている。
やねうら王系列をShogiGUIの検討モードで使用するための設定オプション 1/2
— Hi Kitten (@Hey_Nyah) November 2, 2018
・USI_PonderをOFF
・Threadsを論理コア数に
▶Hashをできる限り大きな値に
▶NetworkDelay、NetworkDelay2を0に
▶MinimumThinkingTimeを1000に
▶(MaxMovsToDrawを256に)https://t.co/8F0ojpLC6j
このテンプレがこれ以上拡散される前に、いくつか物申したい。
> ・NetworkDelay、NetworkDelay2を0に
わかっている人以外がNetworkDelay , NetworkDelay2 の値を変更するのは、私は反対。以下の記事にも末尾に追記した。
NetworkDelay,NetworkDelay2のデフォルト値は何故0ではないのですか?
> ・Hashをできる限り大きな値に
ここは「空き物理メモリの範囲内で」と書いておいて欲しい。
PCに16GBのメモリを搭載しているので「16000」とか設定する人が後を絶たない。
また、できる限りと書くと本当にギリギリに設定してしまう人がいて、WindowsUpdateなどのためにバックグラウンドで何かプログラムが走るとメモリスワップが起きて著しくパフォーマンスが低下したりする。
> ・MinimumThinkingTimeを1000に
> ・(MaxMovsToDrawを256に)
> ・PvIntervalを0に
> ・ContemptFromBlackをON
> ・USI_PonderをOFF
検討で使うならUSI_Ponder関係ないし、残り4つも別にデフォルト値で良いと思う。
それから、Threadsを論理コア数にするとCPU温度が上がりすぎて一般的な家庭用PCでは困る。CPUが破損したとかクレームが来ると困るので、激指もやねうら王もデフォルトでは物理コア数に設定している。
結論的には、私のお勧めとしては、次のようになる。
やねうら王公式のお勧め検討用設定)
・Threadsを物理コア数に
※ 論理コア数に設定したほうが棋力は上がるけどもCPU発熱注意。
・Hashを空き物理メモリの範囲で大きめの値に
※ ただし、空き物理メモリに200MBぐらいは余裕があるように設定すること
・EvalDirを評価関数を入れたフォルダ名に(orqhaなど)
・その他はデフォルト値(元の値のまま変更しない)
※ ただし、NetworkDelay,NetworkDelay2に関しては上で紹介した記事に詳しい説明があるのでそれを見て自分の用途にあった値にすべき。
スワップは解散しておくと、メモリの設定を詰めやすくなりますよね。
素人質問ですがお願いします。
用途は主に棋譜解析と検討です。
①HashとUSI Hashと二種類ありますが、
皆さんがHashと言われているのは、
ただのHashでいいですよね?
②Hashは1024の倍数で設定しているのですが、
(1024 2048 4096 8192)
例えば、3072(1024+2048)とか 1536(1024+512)とか 9984(8192+1024+512+256)
でも意味がありますか?
③Hashの衝突は50%以上で発生していると聞きましたが、75%とか90%まで読ませるのは時間の無駄ですか?(極端にNPSが下がっているようには見えません)
④Hashを上げすぎると、NPSが極端に下がるのですが(3000kN/Sが600kN/S)、どういう理屈でしょうか?(物理メモリには余裕を持たせています。)
(16GB)
⑤USI HashはHashと同じ数字にした方がいいですか?違いが分かっていなくて、USI Hashを最小限にして、Hashにメモリを回した方がいいですか?
宜しくお願い致します。
1.ですです。 2. やねうら王系は、2の累乗である必要はないです。tanuki-詰将棋エンジンは2の累乗でないと。 3.衝突自体はHash利用率20%ぐらいでもしてます。Hash利用率90%で読ませるのは無駄ではないですが、かなり効率落ちてます。 4. 上げすぎてメモリのswapが起きているのでは。 5. やねうら王系ではUSI_Hashは無視されます。(将棋所で先後個別のHashの値に設定にできなくて、このオプション名を使いたくなかったので使っていないのです)
丁寧なご返事ありがとうございます。
今後ともよろしくお願いいたします。
質問なのですが、ConsiderationModeは検討用の指し手表示のはずですが、やねうら王公式のお勧め検討用設定でオンになっていないのはどういった理由なのでしょうか?
また、私は検討で使う場合には複数の指し手の候補を確認したいのでMultiPVを4にして、定跡部分の評価値を見たいのでBookFileをno_bookにしています。
こういった設定は「自分の用途にあった値にすべき」ではないかと思ったのですがパフォーマンスなどの観点から初期値のほうが優れているのですか?
最後に、お勧め検討用設定とお勧め対局用設定の違いは何かありますか?
ThreadsやHashなどいずれも対局用でも同じことが当てはまりそうに思えたのですが。
MultiPV 4にすると同じ最善手に到達するのに4倍近くかかりますので、最善手のみを調べたい人にとっては余計なお世話だと思いますし、BookFileは、まあ好みがあると思いますし(定跡にhitするような序盤を検討したいかという問題など)、ConsiderationModeは、オンにしていると反復深化のキリのいいところごとにしか読み筋を出力しないので、出力タイミングがかなり遅くなりますし。(30分ぐらい検討させるときに20分のところで到達している勝ち筋が30分経過しないと表示されないとしたら嫌じゃないですか?)
色々ありがとうございます!
特にConsiderationModeはちゃんと理解できてなかったので勉強になりました。とりあえずお勧め設定に変えてしばらく使ってみます。
(`・ω・´)ゞ はい