Skip to content

過去の資料

yaneurao edited this page May 18, 2022 · 3 revisions

過去の資料

廃止したエンジンのエンジンオプションや、廃止したコマンドに関する資料です。

何かの時に復活させたりすると思うので資料として残してあります。

⚠ ここの情報は、いずれ整理するかも知れません。

なくなったエンジンオプションの資料

// 協力詰めsolver時

CM_Hash			: 協力詰め時の置換表サイズ(単位[MB])


// local-game-server時

EngineConfigDir			: "engine_configX.txt"が配置してあるフォルダ

EngineNuma				: 子プロセスでEngineを実行するプロセッサグループ(Numa node)
						  -1なら、指定なし。

BookSfenFile			: 連続自己対戦のときに定跡の局面まで進めるためのsfenファイル。
						  このファイルの棋譜のまま32手目まで進める。
						  book/book.sfen
						  のように指定する。

DepthLimit				: 探索深さ制限する(0 = 制限なし)
NodesLimit				: 探索node数を制限する(0 = 制限なし)
	→ この2つは、GUI側がgoコマンドのときにdepthとかnodeとか指定すべきような気はするが、
		とりあえずGUI側がそうなっていないので用意した。
		NodesLimitは正確にそのnodeで停止するわけではなく多少の誤差はある。

SkipLoadingEval  : 評価関数の読み込みをskipさせる。ゼロで埋めた評価関数を用意できないときや、
	新しい形式の評価関数が用意できないときに、評価関数の読み込みをskipさせるために用いる。
	"test evalconvert"コマンドと組み合わせて使う。詳しくは、解説.txtのほうを参照のこと。

SkillLevel : 手加減のためのもの。この値が 20 なら手加減なし。(通常のモード) 20未満であれば、手加減が有効。
	0 だと最弱。(R2000以上弱くなる) Stockfishの"Skill Level"をそのまま移植。

testコマンド

⚠ testコマンドは整理のため、ほとんどがなくなりました。しかし何かの折に復活させるかも知れません。

// ----------------------------
//   詰み関連のテストコマンド
// ----------------------------

test genmate          : 詰将棋の自動生成(やねうら王通常探索部のLEARN版のみ)

  自己対局を行い、その対局中に見つけた詰め将棋の局面をsfen形式で出力します。
  // 自己対局を行うので、評価関数は正常に読み込め、エンジンは正常に動作している必要があります。

  loop X          : 生成する個数がX。
  min_ply n       : 生成する詰将棋の最小手数n(奇数にすること)
  max_ply m       : 生成する詰将棋の最大手数m(奇数にすること)
  filename file名 : 生成するファイル名(sfen形式)

  例) test genmate loop 10000 min_ply 5 max_ply 7 filename mate.sfen
    とすると5手か7手の詰将棋がsfen形式で1万局面出力されます。
      // このコマンドは5秒ごとに生成した局面数を表示します。

    スレッド並列で生成するので、そのときのエンジンオプションのThreadsの数だけ並列生成します。
  例) // 8スレッドで生成したいなら、以下のようにします。
      Threads 8
      test genmate loop 10000 min_ply 5 max_ply 7 filename mate.sfen


test matebench        :  詰みルーチンに関するbenchをとる。

  このbenchには、"test genmate"コマンドで生成した詰み局面を利用すると良い。

  file file名  : 詰将棋のsfen文字列が書かれているファイル名
  num  問題数  : ファイルから読み込む問題数(先頭からこの行数だけ読み込む)
  loop X       : 問題をX回ずつ解かせる。
	      sfen文字列からPositionにセットする時間がロスするので、
	      何度かずつ同じを局面を繰り返し解かせる時に用いる。

  mate_ply N   : 奇数詰めルーチンを呼ぶ時の上限の詰み手数N。
  dfpn_mem M   : df-pnルーチン用のメモリをどれだけ割り当てるか。M [MB]。

  verbose      : 出力を多めにする。不詰がある時、その時のsfen文字列を出力する。

  mode M       : M が 1 : 奇数詰めのベンチをする ,  2 : df-pnルーチンのベンチをする。
                  1 + 2 = 3を指定すると両方のベンチをする。

  例) test matebench file mate/mate.sfen num 1000000
    mate/mate.sfenファイルを、その先頭から100万局面分読み込んでベンチを行う。


test matebench2   : tanuki-詰将棋ルーチンのベンチマークテスト
  // そのうち削除するかも知れないので説明は割愛


test dfpn         :  現在の局面に対してdf-pn詰将棋ルーチンを呼び出す

  // df-pnルーチン自体が現在調整中につき非公開なのでこのコマンドは使えません。

  解けた場合、その時の探索したノード数と読み筋を返す。

  nodes		: 探索ノード数の制限
  mem			: df-pn用のメモリ[MB]

  現在の局面は、"position"コマンドか"sfen"コマンドで設定する。
  positionコマンドの前には"isready"コマンドを送信してある必要がある。

  例) sfenで指定した局面をdf-pn詰将棋ルーチンで解かせる。

    isready
    sfen ln6+P/2sk1G3/p1ppn2pp/5BP2/9/2N6/P1PPPP2P/1SG6/LN1KR+r3 w 2G2L5Pb2s 72
    test dfpn

Apery(WCSC27)からやねうら王のKPPT形式に変換

⚠ この変換に用いていたtestコマンドを廃止したため、現在この方法では変換できません。いまどき、Apery(WCSC27)のKPPTのファイルから変換したい人がいるとは思えないので、変換できないこと自体は問題ないと考えますが、資料としては残っていて欲しいので、ここに貼り付けておきます。

Apery(WCSC27)で使われている評価関数ファイルと、やねうら王2017Earlyで使われている評価関数ファイルとの相互変換について

以下では 「Apery(WCSC27)で使われている評価関数ファイル」のことを"kppt16"と呼びます。 「やねうら王2017Earlyで使われている評価関数ファイル」のことを"kppt32"と呼びます。 「ponanza(WCSC26)で使われているらしい評価関数ファイル」のことを"kpp_kkpt32"と呼びます。

これらの相互変換は "test evalconvert"というコマンドで行なうことが出来ます。

例)

test evalconvert kppt16 eval/elmo_apery27 kppt32 eval/elmo_yane27 eval/elmo_apery27に格納されているkppt16の評価関数ファイルが、kppt32に変換されてeval/elmo_yane27に格納されます。 出力先のフォルダが存在しない場合は自動的に作成されます。

test evalconvert kppt32 eval/elmo_yane27 kppt16 eval/elmo_apery27 eval/elmo_yane27に格納されているkppt32の評価関数ファイルが、kppt16に変換されてeval/elmo_apery27に格納されます。 出力先のフォルダが存在しない場合は自動的に作成されます。

備考) 変換に際して、isreadyコマンドが走るので、このときに評価関数ファイルがEvalDirにないといけないが、 このファイルを用意できていなくて読み込みに失敗する場合は、SkipLoadingEval true (これにより、ファイルがないときにゼロクリアされたファイルを読み込んだことにする)としてから、この"test evalconvert"コマンドを実行すると良い。 SkipLoadingEvalオプションは、EVAL_LEARNをdefineしてビルドした実行ファイルでのみ使える隠しコマンド。

「やねうら大定跡」生成の記録

🌈 趣旨

やねうら大定跡とは、やねうら王を用いて長い時間をかけて深く探索し、新定跡の開拓、従来定跡を整備することを目的としたプロジェクトです。

このプロジェクトで生成された定跡自体は、やねうら王定跡フォーマット2016に従い、誰でも利用できる形で公開します。

⚠ これは、2016年ごろに行っていたプロジェクトです。現在このプロジェクトは終了しています。

💡 やねうら王大定跡は、以下のところからダウンロードできます。

対象棋譜 = record1.sfen(2ch棋譜)+α

・ 1 ~ 5手目 MultiPV 10 , depth 32  → 完了
・      6手目 MultiPV 10 , depth 28  → 完了
・      6手目 MultiPV 10 , depth 32  → 放置中 : 20コアで10日ほどかかる。
・ 7 ~ 8手目 MultiPV 10 , depth 24  → 完了
・ 7 ~ 8手目 MultiPV 10 , depth 28  → 放置中 : 20コアで2日ほどかかる。
・ 9 ~16手目 MultiPV 10 , depth 24  → 完了
・ 9 ~16手目 MultiPV 10 , depth 28  → 放置中 : 20コアで20日ほどかかる。
・ 17~32手目 MultiPV  5 , depth 18  → 完了
・ 17~18手目 MultiPV 10 , depth 28  → 放置中 : 20コアで20日ほどかかる。

今後の予定。

  1. 16手目ぐらいまでdepth 32で探索させたものが欲しい。
  2. 評価関数を改良してから生成しなおしたい。
  3. 技巧・Aperyなどの特定のソフトの搭載定跡に対してdepth 32で探索させたものを作りたい。
  4. floodgateの上位ソフトの棋譜の進行に対してdepth 32で探索させたものが欲しい。

🌛 デバッグ用

Hash 4096
MultiPV 10
Threads 4
makebook think records1.sfen yaneura_book1.db moves 5 depth 29

🌛 2016/07/10 - 2016/07/12

Hash 4096
MultiPV 10
Threads 10
makebook think records1.sfen yaneura_book1.db startmoves 7 moves 8 depth 28
// 3212 nodes

Hash 4096
MultiPV 10
Threads 40
makebook think records1.sfen yaneura_book1.db startmoves 6 moves 6 depth 32
// 489 nodes

Hash 4096
MultiPV 10
Threads 40
makebook think records1.sfen yaneura_book1.db startmoves 17 moves 18 depth 28
// 26652 nodes 20コアで1時間で60nodeほどしか進まない。

Hash 4096
MultiPV 10
Threads 40
makebook think records1.sfen yaneura_book1.db moves 5 depth 32
// 222 nodes
// 42 nodes
// もうちょっとなのだが..
// → 完了(2016/07/13 20:20)

🌛 2016/07/08

Hash 8192
MultiPV 10
Threads 40
makebook think records1.sfen yaneura_book1.db moves 6 depth 28
// 残710node

Hash 8192
MultiPV 10
Threads 40
makebook think records1.sfen yaneura_book1.db startmoves 9 moves 16 depth 24
// 53609node 5分で60ぐらいのペース。3日強ぐらい。
// 33952node(2016/07/08 13:30)
// 28028node(2016/07/09  1:00)
// 完了。(2016/07/11 19:40)

Hash 8192
MultiPV 5
Threads 20
makebook think records1.sfen yaneura_book1.db startmoves 17 moves 32 depth 18
// 103840node(2016/07/09 1:00~完了 2016/07/09 16:30)

🌛 2016/07/06

PC入れ替えにつき、やりなおし。

Hash 8192
MultiPV 10
Threads 40
makebook think records1.sfen yaneura_book1.db startmoves 9 moves 16 depth 24
// 53609node 5分で60ぐらいのペース。3日強ぐらい。
// 33952node(2016/07/08 13:30)


Hash 8192
MultiPV 10
Threads 40
makebook think records1.sfen yaneura_book1.db moves 6 depth 32
// 929 node。20日ぐらいかかる見込み。→ いったん放置。


Hash 8192
MultiPV 10
Threads 40
makebook think records1.sfen yaneura_book1.db moves 5 depth 32
// 残229nodes

Hash 8192
MultiPV 10
Threads 40
makebook think records1.sfen yaneura_book1.db startmoves 6 moves 6 depth 32
// 残630nodes

🌛 2016/07/05

Hash 8192
MultiPV 10
Threads 12
makebook think records1.sfen yaneura_book1.db moves 4 depth 32
// 206node。これなら2,3日で終わるか?
// 開始2016/07/05 6:50

Hash 8192
MultiPV 10
Threads 40
makebook think records1.sfen yaneura_book1.db startmoves 5 moves 5 depth 32
// 323node。40スレッドなので1日で終わる?
// 開始2016/07/06 12:30

Hash 8192
MultiPV 10
Threads 40
makebook think records1.sfen yaneura_book1.db startmoves 6 moves 6 depth 32
// 678node。
// 開始2016/07/06 12:30

Hash 8192
MultiPV 10
Threads 12
makebook think records1.sfen yaneura_book1.db moves 8 depth 24
// 4418 node。
// 開始2016/07/05 6:50 → 翌日終了。

Hash 1024
MultiPV 5
Threads 4
makebook think records1.sfen yaneura_book1.db moves 10 depth 18
// 6000ノードほど。1秒で2,3ノード処理できるから1時間かからない模様。
// → multipv 5で16手目までやることに。

Hash 1024
MultiPV 5
Threads 8
makebook think records1.sfen yaneura_book1.db moves 16 depth 18
// 51000ノードほど。丸一日あればいけそう。てか32手目まで入れても知れてるような。
// depth 18の指し手なんかあっても邪魔なだけか…。まあいいや、生成してみる。

Hash 8192
MultiPV 5
Threads 12
makebook think records1.sfen yaneura_book1.db moves 32 depth 18
// 42万nodeの模様。2,3日で終わるか。そうか。
// 開始2016/07/05 6:50