Skip to content

思考エンジンオプション

yaneurao edited this page May 8, 2022 · 34 revisions

思考エンジンオプションとは?

思考エンジンオプションとは、将棋所やShogiGUIなどのエンジンオプションの設定画面に出てくる項目のことです。 ここでは、各オプションの意味について解説します。

USI_Hash

置換表サイズを設定します。単位は MB (メガバイト)です。

🖋 置換表とは、探索した局面の情報を格納しておく表のことです。このサイズが小さいと探索した局面の情報を残しておけないので長時間思考させる時に、探索効率が悪化します。(棋力が低下します) 空きメモリの許す限り大きな値を設定することをお勧めします。

👉 1GB (ギガバイト)を割り当てるのであれば、1024を指定します。(1024 MB = 1 GB なので)

💡 やねうら王では、他の将棋ソフトにあるように、この数値が2の累乗でないといけないという制約はありませんし、また、サイズ制限も実質的にありません。128 GBでも1 TBでも空きメモリの許す限り確保できます。(タスクマネージャーで見ながら、空きメモリが枯渇しない範囲で設定しましょう。)

⚠ この値はデフォルトでは16 MBとなっていて、ほとんどメモリを消費しませんが、その代わり、現代のPCでは少なすぎます。かならず、お使いのPCの空きメモリに合わせた値を設定してください。 ⚠ ふかうら王では、現状(V7.50で)、このオプションは未使用です。今後使用するようになるかも知れませんが、現在このオプションの値は用いられません。ふかうら王では使用するメモリ量はNodesLimitで調整してください。

Threads

思考に用いるスレッド数を設定します。

🖋 スレッドとは、並列探索を行う時の並列数のことです。この値を4にすれば、4並列で探索します。例えば、CPUが「32コア64スレッド」であれば、64を設定するとCPUを完全に使い切ることができます。(少し余力を持たせたい時は、それより少し小さな値に設定します。) CPUが何コア何スレッドであるかは、CPUの名前で検索すればメーカーなどのページでその仕様を知ることができます。

👉 64スレッド(64並列)を割り当てるのであれば、64を指定します。

💡 スレッド数が2倍になると単位時間当たりに調べられる局面の数がおおよそ2倍になりますが、実効(実際の効果)が2倍あるわけではありません。例えば100スレッドで並列探索しても実効はその平方根である10倍程度の価値しかないと言われています。すなわち、100スレッドで1秒思考させるのは、1スレッドで10秒思考させる程度の価値しかありません。

⚠ スレッド数を増やすとCPU負荷も上がります。CPUに長時間100%の負荷をかけ続けるとそういう動作を想定されていないようなノートパソコンなどではCPUが熱暴走したり、最悪CPUが焼けて故障する場合があります。CPU温度を見るツールなどでCPU温度を見ながら、CPU温度が上がりすぎないように注意しましょう。

USI_Ponder

ponderを有効にするかどうか。

🖋 ponderとは、相手番で思考することです。

👉 有効にするなら true 、無効にするなら false を設定します。

💡 相手の次の一手を予想した指し手は、日本語では「予想手」と呼ばれますが、これをコンピュータ将棋では、「ponderの指し手」と呼びます。また予想手が当たることを「ponderがhitした」と言います。

💡 やねうら王では思考時間制御(今回に使用する時間の計算)の時に、USI_Ponderがオンであるかどうかを見ています。なぜなら、USI_Ponderがオン(true)であれば、ponderがhitした時に思考時間を節約できるからで、時間があまり気味になることが予想されるので、それを見越して、1手に通常より少し多めに思考時間を割り当てて良いと思われるからです。

⚠ USI_Ponderに関する注意点

USI_Ponderがオン(true)の時は、思考エンジンは相手の予想手も返すことになっています。通常、思考が完了した時に、最善と思われる指し手XXを

bestmove XX

の形でGUIに返すのですが、この時に、USI_Ponderがオンであれば、相手の予想手YYを付随して

bestmove XX ponder YY

のように返します。

しかし、やねうら王ではUSI_Ponderの設定値に拘わらず、常に"ponder YY"の部分も返すようにしています。なので、実際はこのオプションはやねうら王に対してponderの指し手を促す効力は持ちません。

では、何のためにこのオプションがあるかと言うと、これをGUI側でオンに設定すると、GUI側が相手番で、思考エンジンに対して、直前に予想手として返した指し手を指したあとの局面について思考するように局面を送ってきてくれます。(USIプロトコルの"go ponder"コマンド) そういう意味では、これはエンジンに対する司令ではなく、GUIに対する特別なオプションであるとも言えます。

Stochastic_Ponder

確率的ponder。

💡 dlshogiにある同名のオプションと同じ。ponderについては、USI_Ponderの説明を読むこと。

🖋 "go ponder"(ある局面に対してponderで思考せよという司令)でponderする時に、1手前の局面(相手番)で思考することによってそこからすべての指し手が探索されるので、ponderの指し手(予想手)のハズれがなくなり、dlshogiでは通常のponder動作より効率が良い(こうしたほうが強い)とされています。

⚠ やねうら王で、これをオンにしたほうが通常のponderより強くなるのかは計測できていないのでわかりません。ふかうら王では、これをオンにしたほうが強いと思われます。

⚠ これを有効化するとponderの1手前(相手番)の局面で思考しているため、GUIに表示される読み筋はおかしくなります。(GUI側に相手番のときにその1手前の局面でgoコマンドで思考させてくれる機能があると良いのですが…。)

WriteDebugLog

GUIとのやりとりをログファイルへ書き出す。その時のファイル名を指定します。

🖋 思考エンジン(やねうら王)は、GUI側(将棋所やShogiGUI)と、USIプロトコルという仕様に基づいてやりとりをしています。その内容をそのままファイルに書き出すためのエンジンオプションです。開発者向けです。

💡 このオプションは初期設定では、""(空の文字列)になっています。つまり何も設定されていないので、ログファイルは書き出されません。

👉 "log.txt"のように書き出したいログファイル名を設定すると、そのファイルが実行ファイルと同じ場所に作られて、そこに書き出されます。

💡 やねうら王では、USI拡張コマンドの"log"コマンドを実行するとそこ以降のGUIとのやりとりを、ログファイルに書き出す機能もあります。

かきかけ

かきかけ