2022年版 やねうら王質問スレッド

やねうら王に関するあらゆる質問はこの記事のコメント欄にお願いします。
ふかうら王の件もこの記事のコメント欄でお願いします。

質問内容は、然るべき場所(主にやねうら王Wiki)に転載させていただいたあと、そこで回答し、ここの質問投稿自体は1ヶ月程度で削除していきます。

また、質問前に下記のWikiをご覧ください。ほとんどすべての情報は、このWikiに書いてあります。

やねうら王Wiki : https://github.com/yaneurao/YaneuraOu/wiki

2022年版 やねうら王質問スレッド」への67件のフィードバック

  1. ふかうら王のインストール手順にTensorRTとCuDNNのバージョンが提示されています。
    TensorRT : 8.2.4.2
    CuDNN : 8.4.0.27

    正しくは、下記ではないでしょうか?
    TensorRT : 8.4.0.6
    CuDNN : 8.2.4.15

    • そこ、まだ新しいバージョンで動作確認とれてないんです。
      何かの節目節目に新しいバージョンで動作確認して、Visual Studioの.propファイル更新していきます。
      (あまり頻繁に書き換えても開発している人がTensorRTのバージョン変更するの面倒だと思うのでメジャーバージョンアップの時とかに更新していきます)

  2. 「やねうら王のインストール手順」 のページにある「定跡ファイルのダウンロード先」の項目に、「 評価関数ファイルのダウンロード先 から探してみてください。」とありますが、「評価関数ファイルのダウンロード先」のリンクが間違っているようで、やねうら王wikiのトップへジャンプしてしまいます。

  3. やねうら王に関するあらゆる質問をしていいというお言葉に甘えさせていただきます。
    『将棋神やねうら王2』はいつになったら発売してくださるのでしょうか?
    有料版ならではの機能、例えば私が喉から手が出るほど欲しい柿木定跡→やねうら王定跡コンバーターのようなものは、有料版に付けていただきたいと思っております。
    『宮本定跡』の唯一の長所は強さでなく、人間的なところです。そこにやねうら王エンジンの棋力が加わったらどうなるのか、考えてみただけで胸が躍ります。

    • > 柿木定跡→やねうら王定跡コンバーター

      いま見たら、柿木将棋の定跡ファイル(KJ2)、わりと読みやすそうな感じなので誰かがコンバーター書いてくれるかも…。

      • 柿木定跡→Bonanza定跡コンバーターは可能な人がおられましたが、匿名で非公開でした。柿木定跡→やねうら王定跡コンバーターも不可能ではないと思われます。柿木定跡、やねうらお様は読みやすいと感じられたようですが、一般人の感覚では逆立ちしても無理なのです。ぜひお願いします!

        • 読みやすいのかと思ったのは、柿木将棋V以降の形式(.KJ2)の方です。それ以前の形式の方は暗号みたいになってますね…。
          棋譜管理ソフトの開発者の方が変換機能を実装してくれないかなぁ…。> .KJ2

        • 前にコメントしたときのメールアドレスの話です。今入力しているメールアドレスだとコメントできてるのでIPアドレスではなくメールアドレスではじかれてるみたいです。

          • あ、そうなんですか。もしかして「てst」って書いてあったやつですか。これ、スパムかと思って、スパムですボタンを押してしまいましたw
            解除しておきました。

          • 直りましたね。ありがとうございます。

            「てst」は先ほど別のアドレスに変えてみる前に試してみたやつだと思うんですけど(もう覚えてない)、
            今のアドレスで書き込めなかったのって5/20あたりに気づいて(結局GitHubで書いた)、それ以前に最後にコメントしたのが1/15なのでもっと前からスパム判定だったんじゃないですかね・・・?

            まぁ直ったからいいか・・・。

  4. やねうら王とStockfishのコードを並べて勉強させていただいてます。
    丁寧なコメント、助かってます。
    【YaneuraOu/source/engine/yaneuraou-engine/yaneuraou-param.h】ではStockfishの内容もところどころ取り入れられてるように思われますが、やねうら王のparam.hの部分はStockfishではどのあたりに該当されますでしょうか?
    Stockfishを追っていても見当たりませんでした。

  5. こんにちは。
    お世話になっております。

    やねうら王wikiを参考に、飛車降る評価関数の作成に取り組んでいます。
    学習を走らせた際に、hirate evalやmove accuracy、test_cross_entropy〜,learn_cross_entropy〜などいろいろな値が出てきます。
    開発者の方々はロスを見て学習の進捗度や成果を判断なさるとお聞きするのですが、具体的にロスとはどの値を指しているのか、
    どこの値がどのように変化していくとある程度成功していると判断できるものなのでしょうか?

    • > ロスとはどの値

      cross_entropyとついてるのがロスですね。(正確には損失関数をcross entropyに設定した時のその関数の値)
      testとついているのは検証用のデータとのロス(違い)、learnとついているのは学習データとのロス。

      前者が下がってないと強くなってない可能性が高いです。

      • ありがとうございます!
        wikiやこちらのコメントのおかげで、楽しみが増えました。
        もうひとつだけお聞きしたいのですが、やねうら王のビルドを行うのにVSとclang,g++ではどのくらい性能差が生じてしまうのでしょうか?

          • そんなに差があるのですね。。
            勉強になります。
            wikiの学習の欄に
            “etaを連続的に変化させるには、
            eta1 0.01 eta2 500 eta1_epoch 100 eta3 30 eta2_epoch 500”
            とありますが、eta1とeta2のみで、徐々に率を落としたいときは2の方を小さくするという認識であってますよね?

            nodchipさんの学習記録も参考にしてますが、”eta1=1e-8 eta2=1.0 eta1_epoch=100″とありました。この場合は1.0に向けてどんどん増やしているってことですよね?
            学習率は進むに連れて下げていくものだと勝手に認識していて、私の認識違いなのか気になりました。。

          • > etaを連続的に変化させるには、

            それKPPTのころの学習なのでNNUEではそんなことしないほうがよろしいです。
            (学習率自体はlossが下がらなくなれば自動的に小さくなっていきます)

        • >>(学習率自体はlossが下がらなくなれば自動的に小さくなっていきます)
          これはnewbob機能がオンの場合の話ですよね?
          この機能リジェクト回数といい使いこなすのわりかし難しいですよね(汗

          • そこはデフォルトでONにしておくのが普通だと思います。> newbob
            気に要らなければ、一定の学習ごとにetaを1/2にするようなコードを自分で追加してもいいかと。

  6. VS2022でビルドしようとすると、{YaneuraOu-5.33\source\eval\nnue\trainer\trainer.h(16,10): fatal error C1083: include ファイルを開けません。’cblas.h’:No such file or directory (ソース ファイルをコンパイルしています eval\nnue\evaluate_nnue_learner.cpp)
    1> apery_book.cpp}
    とでてエラーになってしまいます。
    考えられる理由や改善策はありますかね..

    • NNUEの学習版のビルドは、OpenBLASというライブラリに依存してて、それインストールする必要があります。(OpenBLASとかでググってみてください)
      インストールわりと面倒なので、学習版は、MSYS2 + Clangでビルドするのがお勧めです。

      • お世話になっています。msys2にて学習用のmakeを試みたところ、 下記のエラーが出ます。最新の7.〇〇では問題なくmakeできますが、4.〇〇,5〇〇でこのエラーがでてしまいます。movepick.hの該当する行は最新のものと変わりないので、どう対応するべきか教えていただけますと幸いです。

        In file included from movepick.cpp:1:
        ./movepick.h:38:27: error: no member named ‘numeric_limits’ in namespace ‘std’
        static_assert(D <= std::numeric_limits::max(), “D overflows T”);
        ~~~~~^
        ./movepick.h:38:42: error: ‘T’ does not refer to a value
        static_assert(D <= std::numeric_limits::max(), “D overflows T”);
        ^
        ./movepick.h:22:19: note: declared here
        template
        ^
        ./movepick.h:38:46: error: no member named ‘max’ in the global namespace
        static_assert(D <= std::numeric_limits::max(), “D overflows T”);
        ~~^
        3 errors generated.
        make[1]: *** [Makefile:169: ../obj/movepick.o] Error 1

        • numeric_limitsがstdにないということなのでは。static_assertはコンパイル時のチェック用なので、削除しても動作に影響ないのでそれらの行は消してしまえばよいかと思います。

          ただ、やねうら王の開発方針としては比較的最新の環境でコンパイル通ればいいやと思っているので、いずれ、古いMSYS2(や、古いgcc/Clang)では、コンパイル通らなくなります。

  7. 無事にビルドできました。
    ありがとうございます。

    ソースコード読み比べていて気になったのですが、VSCodeでlearn.cppを近年のやねうら王と2018年のtanuki-で並べたところ、やねうら王側だけ18行の#if defined(EVAL_LEARN)から最後の#endif // EVAL_LEARN
    までアクティブではない色付け(?)となっているみたいで、画像のように薄い色で表示されてしまいます。
    elmo式学習のlambdaの式を変更して、その影響を調べるために、検証しようと思っているのですが、該当部分を書き換えても適応されないみたいです。
    最近興味を持ってばかりの初心者なので、調べても何が原因なのかはっきりせずです..
    教えていただけますと幸いです。

    左 tanuki-2018 右YaneuraOU
    https://i.imgur.com/V3fPVD5.gif

  8. Youtubeの動画拝見いたしました。
    AWSの使用なのですが、動画を参考にやってみようと思います。

    例えばギガ単位の大きいファイルを転送した際などに掛かる通信費等、CPU使用料以外にこれやるとお金高くなるから気をつけろよ要因は何かありますでしょうか…?

    • AWSではネットワーク帯域に関する課金は、下り(download)方向だけですので、将棋AIでは下りはほぼ使っていないので無視できるかと思います。
      インスタンスの終了忘れが一番怖いですね。それ以外は誤差です。(請求明細には翌日に反映されているので、それ見てどれくらいの料金になっているか確認しましょう)

      • コメントしてから迅速にご対応頂き感謝申し上げます。
        使用金額の件、了解です。
        初めてクラウドサービスを借りるのでその点が心配でした。
        使う時には常に切ることを肝に銘じますね。

  9. やねうら王evallearnで学習を行う際はthreadsとusi_hashコマンドをあらかじめlearnコマンド以前に打ち込んでおかなければPCスペックを活かしきれずに学習することになってしまいますか?

    それとも自動的にそのpcのスレッドとメモリは上限まで使用されるのでしょうか?

  10. https://github.com/yaneurao/YaneuraOu/wiki/%E6%80%9D%E8%80%83%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%B3%E3%82%AA%E3%83%97%E3%82%B7%E3%83%A7%E3%83%B3
    このページの記述、今はデフォルトが1024 MBになったので要らないのでは。

    > ⚠ この値はデフォルトでは16 MBとなっていて、ほとんどメモリを消費しませんが、その代わり、現代のPCでは少なすぎます。かならず、お使いのPCの空きメモリに合わせた値を設定してください。

  11. 現在、gensfen → learn → 新たな評価関数でgensfen →learn … のサイクルを行っています
    2点質問があるのですが、
    ・評価関数ごとにgensfenの速さは変わり得るのでしょうか? 早く作ってくれるときもあれば遅いときもあり困惑しています

    ・gensfenで教師を作る速さを上げるには、コアスレッド増やす以外で何かありますでしょうか?
    12c20tで 深さ9で1千万局面 作成に1,2日かかることもあり、相場が分かっておりません

    よろしくお願いいたします

    • > 評価関数ごとにgensfenの速さは変わり得るのでしょうか?

      普通はそこまで変わらないのですけど、まったくのゼロからですと、評価値がゼロばかりな評価関数だと探索深さがなかなか深くならないので時間がかかる、みたいなところはあるかもです。

      > gensfenで教師を作る速さを上げるには

      深さ減らすのが一番効果的ですね…。イテレーション(gensfen →learn … のサイクル)の最初のうちはそんなに深くしてもあまりそれには見合わないでしょうし…。

  12. やねうら王V7.50にて下記のような定跡ファイルを作成し、飛香落ちで対局したところうまく定跡にヒットしてくれません。

    #YANEURAOU-DB2016 1.00
    sfen lnsgkgsn1/1r5b1/ppppppppp/9/9/9/PPPPPPPPP/1B5R1/LNSGKGSNL w – 1
    3c3d 7g7f 0 32 100

      • 上記の件、私の勘違いでした。
        sfen文字列を改めて確認したらそもそも飛香落ちの局面ではありませんでした。

        下記のように修正したら通常通り定跡ヒットします。
        #YANEURAOU-DB2016 1.00
        sfen lnsgkgsn1/7b1/ppppppppp/9/9/9/PPPPPPPPP/1B5R1/LNSGKGSNL w – 1
        7a6b 7g7f 0 32 2

        お騒がして申し訳ありませんでした。

  13. 強い将棋ソフトの作り方の本を読みました。やねうら王の作り方の本は出ないのですか?個人的には、ルールの実装とか指し手生成とかマルチスレッド対応とか色々と気になってコードを読んだりしているのですが、初心者なので分からない事が多くて解説がほしいのです。

  14. そうですか…(T^T)
    また何かあったら告知お願いしますね。
    どうぞよろしくお願いいたします。

  15. wcsc33ではもうcsaのライブラリは使えません
    やねうら王は対策してますか

  16. こんにちは。恐れ入りますが、自分は「GNU Make 4.4.1」で”make normal”して構文エラーが出てきました。

    YaneuraOuのリポジトリのActionsを見ると、「Make CI (DeepLearning for Windows)」以外のmakeは昨日から全部落ちてるみたいですが、自分のビルド失敗とは同じ原因なのでしょうか。

  17. evallearnのgensfenコマンドについての質問です。depth9でloop4億ほどで生成しようとしたところ、1時間弱(毎回百数十万ほど)で止まってしまいます。タスクマネージャーを見る限りCPUはガッツリ動いてはいるようですが、cmd画面やファイルの更新も止まっています。
    環境は13900kでthreads24かつhash32gbで動かしています。
    msys2よりg++,Avx-2でビルドしたものでこのようになることを確認しています( 7.50と10/24時点で最新のものどちらも試しました)

    少ない情報で恐縮ですが、考えられる原因はなにかございますでしょうか?

  18. NNUEが表現力の限界に近付いていると聞きました。それを打破するために、入力としてPPやKKP、KPPなどを使うとどうなるか十分な検証はされているのでしょうか?
    恐らくされているでしょうし、重くなってNPSが落ちすぎる割に合わないのかもしれませんが、個人的に気になるところではあります。

    • そのへん、学習を回すだけの計算資源、誰も持ってないんですよねー。いま、tanuki-さんがPyTorchでNNUEの学習回す作業されてるんですけど、まだ、やねうら王純正の学習器より最終的な精度(棋力)が悪いようで…。あれがちゃんと動けばそういった実験もしやすくなるんでしょうけども…。

宮本憲一 へ返信する コメントをキャンセル

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