dlshogi互換エンジン「ふかうら王」を公開しました。
ふかうら王(dlshogi互換エンジン) Technology Preview #1
https://github.com/yaneurao/YaneuraOu/commit/8dc5e58c7490220edd74541045a0499ff7871c4d
dlshogiはAperyの指し手生成や盤面操作のためのフレームワークとして使用している。今回、Aperyに依存する部分をすべてやねうら王に依存するように書き換えた。Aperyとやねうら王の細かい違いがあるため、これは簡単な作業ではなかったが、とりあえず、ある程度のところまでやねうら王に移植してくることができた。ついでにdlshogiにあった潜在的なバグもかなり修正した。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
- dlshogi互換エンジン - dlshogiの詰将棋ルーチンをオフにして、1スレッドで5万ノードを探索して、探索したノードが完全に同一、NNへの入力特徴量の値と 出力特徴量の値が完全に同一であることを確認した。 - いまのところONNX RUNTIMEのみ対応 - CUDA,TensorRTのコードそのうち移植する - TimeManagementまだ。とりあえず、NodesLimitでノード数を指定できるのでこれで対局してください。 - GPUなしで対局するときはいまのところDNN_Batch_Size1は1~16ぐらいが最適値かも。 - GCT電竜の評価関数ファイル(model-0000167.onnx)をmodel.onnxとrenameして Evalフォルダに放り込むと読み込めることは確認した。 - 世界将棋AI 電竜戦バージョン(「GCT電竜」同梱) : https://github.com/TadaoYamaoka/DeepLearningShogi/releases/tag/denryu2020 - ふかうら王の実行ファイルの配置フォルダに onnxruntime.dll , DirectML.dll が必要っぽい。GCT電竜からコピーしてくるべし。 - 詰将棋ルーチン、未搭載。あとで実装する。 - 評価関数は独立して使えるように設計してあるが、もう少し手を入れないと。これは気が向いたら作業する。 - いまのところVisual Studioでしかビルドできない。 - ビルド方法については、docs/解説.txt に書きました。 - dlshogiにない特徴 - MultiPV対応 - stopコマンド対応 - USIまわりのUSIプロトコルへの準拠度の高さ - 今後の予定 - CUDA,TensorRT対応 - TimeManagement - 詰将棋探索 - df-pn - VIRTUAL_LOSSを可変に - 高効率なメモリマネージメント - 特徴因子の追加 - EvalフォルダにNNのアーキテクチャ(入出力特徴量含む)に関するtagファイルを配置すればそれを自動的に構築する機能。 - Policy Network最適化 |
また、先週はMCTSを利用した定跡生成部を作っていたのだが、結局、dlshogiの探索部のようになるので、dlshogi側のMCTS探索と似たプログラムを2つメンテしていくのは大変だから、この新しい探索部で定跡生成を行うことにした。
あと、ソースコードはかなり丁寧にコメントを追加したので、dlshogiのソースコードを読んでみたいという人は、やねうら王に移植されたソースコードを見たほうがはるかにわかりやすいと思う。
dl系のソフトってどれくらいのノード数読ませたら十分なんですか?私はいつも水匠を10億ノードで研究しているのですが、それと同じくらいにするには?
dlshogiは水匠の1/200ぐらいのノード数で同じぐらいの強さのようです。