S
将棋エンジンの微細な計算差を検出・原因特定
by SH11235
ノード数乖離の原因を計測データから特定:rshogi と YaneuraOu(将棋エンジン)に debug ログを挿入してビルド・計測し、両者の探索ノード数の差分がどこで発生しているかを局所化できます。 コード比較では見つからない微細な差を発見:静的コード比較では特定できない、実際の動作時の微細な乖離を計測データから事実ベースで絞り込めます。 段階的な drill-down で原因を限定:root から開始して、1 ply(局面の深さ)ずつ掘り下げ、最初にズレる箇所を効率的に特定できます。 同一局面確認で仮説を検証:key(局面のハッシュ値)と SFEN を同時に出力し、両者が本当に同じ局面を評価しているか確認できます。 効率的なデバッグプロセスで長時間化を回避:最短ルート(depth 一致帯確定 → root 粒度で first mismatch 確定 → 段階的 drill-down)に従うことで、無駄なく原因にたどり着けます。 将棋 AI エンジン開発者:複数のエンジン実装間の微細な計算差を科学的に特定し、実装の正確性を向上させられます。 エンジンの最適化パフォーマンス向上に携わる人:乖離原因が分かれば、どの部分の改善が効果的かが明確になります。 静的コード比較だけでは解決できない問題に直面している人:実行時の計測データを使うことで、コード上では見えない動作時の差分を発見できます。 デバッグの時間効率を重視する人:フロー化された最短ルートに従うことで、原因特定にかかる時間を大幅に削減できます。 このスキルは rshogi と YaneuraOu(YO)の探索ノード数乖離を調査するもので、$ARGUMENTS で計測目標を受け取ります。入力例:startpos d28 root move breakdown、startpos d14 history at PLY3 path 4a3b/7g7f、startpos d14 A/B test mate_1ply。 対象ファイルパス:rshogi は crates/rshogi-core/src/search/(alpha_beta.rs、engine.rs、qsearch.rs など)と crates/rshogi-core/src/mate/;YO は /mnt/nvme1/development/YaneuraOu/source/(yaneuraou-search.cpp、movepick.cpp など)。 実行フロー(最短ルート):(1)compare_nodes で depth ごとの差分を出し、d<=N 一致・d=N+1 初乖離を確定。(2)root 粒度で first mismatch 1 件確定(iter、mc、mv、nd、val の軽量ログのみ)。(3)同一文脈ゲート(root_move + pm1 + pm2 + ply + depth)で 1 ply ずつ drill-down、各段で最初にズレる child 1 件だけ追う。(4)val より nd を優先(fail-high/fail-low で val は揺れやすい)。(5)同一訪問確認を必須化(parent_key/child_key + SFEN を同時出力し、同一局面か確認)。
レビューテストドキュメント