やねうら王の検討用設定のお勧めを教えてください

2022/6/25追記
  この記事の内容は古いのでやねうら王のWikiを御覧ください。
  やねうら王Wiki : https://github.com/yaneurao/YaneuraOu/wiki/

将棋ソフトの思考エンジンの設定はわりと難しい。オプション項目がいっぱいあるし、その説明がGUI上できちんとなされていないからだ。(これはUSIプロトコル上、説明をエンジン作者が提供する手段がないので仕方がない)

だからこそ、無料で強い将棋ソフトが入手できる状況においても『将棋神やねうら王』のようなソフトが売れるわけであるな。ちなみに『将棋神やねうら王』では、エンジンオプションの説明を外部ファイル(engine_define.xml)によって行えるようになっている。

そうは言っても、やねうら王のGitHubにお勧めの設定を書いておくべきでは?とよく言われる。手短にまとめるのが難しいので私はずっと放置していたのだが、それもあって、なんとかちゃんねるの将棋スレで以下のようなテンプレが出てきた。

863 名前:名無し名人 (オッペケ Sref-qCV4)[] 投稿日:2018/10/25(木) 14:53:34.33 ID:AyapDDFir
現状、ソフト(dolphinなどやねうら王系列)をShogiGUIの検討モードで使用するために設定すべきオプションは
・USI_PonderをOFF
・Threadsを論理コア数に
Hash  USI_Hashをできる限り大きな値に
   // Hashオプションは廃止されました。
・NetworkDelay、NetworkDelay2を0に
・MinimumThinkingTimeを1000に
・(MaxMovsToDrawを256に)
・ContemptFromBlackをON
・EvalDirを評価関数を入れたフォルダ名に(orqhaなど)
・PvIntervalを0に
・ConsiderationModeをON
これだけの設定を正しく行うのは大変

そして、このテンプレがすでに独り歩きし始めている。

このテンプレがこれ以上拡散される前に、いくつか物申したい。

> ・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に関しては上で紹介した記事に詳しい説明があるのでそれを見て自分の用途にあった値にすべき。

やねうら王の検討用設定のお勧めを教えてください」への8件のフィードバック

  1. 素人質問ですがお願いします。
    用途は主に棋譜解析と検討です。

    ①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の値に設定にできなくて、このオプション名を使いたくなかったので使っていないのです)

      • 丁寧なご返事ありがとうございます。
        今後ともよろしくお願いいたします。

  2. 質問なのですが、ConsiderationModeは検討用の指し手表示のはずですが、やねうら王公式のお勧め検討用設定でオンになっていないのはどういった理由なのでしょうか?

    また、私は検討で使う場合には複数の指し手の候補を確認したいのでMultiPVを4にして、定跡部分の評価値を見たいのでBookFileをno_bookにしています。
    こういった設定は「自分の用途にあった値にすべき」ではないかと思ったのですがパフォーマンスなどの観点から初期値のほうが優れているのですか?

    最後に、お勧め検討用設定とお勧め対局用設定の違いは何かありますか?
    ThreadsやHashなどいずれも対局用でも同じことが当てはまりそうに思えたのですが。

    • MultiPV 4にすると同じ最善手に到達するのに4倍近くかかりますので、最善手のみを調べたい人にとっては余計なお世話だと思いますし、BookFileは、まあ好みがあると思いますし(定跡にhitするような序盤を検討したいかという問題など)、ConsiderationModeは、オンにしていると反復深化のキリのいいところごとにしか読み筋を出力しないので、出力タイミングがかなり遅くなりますし。(30分ぐらい検討させるときに20分のところで到達している勝ち筋が30分経過しないと表示されないとしたら嫌じゃないですか?)

Ta(ry へ返信する コメントをキャンセル

メールアドレスが公開されることはありません。 が付いている欄は必須項目です