TadaoYamaokaの日記

山岡忠夫Homeで公開しているプログラムの開発ネタを中心に書いていきます。

dlshogiをPyPIに登録

今までdlshogiの学習を行うために、python環境を作成して、boostをインストールして、C++からPythonモジュール(cppshogi)をビルドしてという手順が必要だったが、pipコマンドでインストールできるようにPyPIに登録した。

pip install dlshogi

アップデートの場合は、

pip install dlshogi -U

で、導入できるようにした。

学習用スクリプトも複数(train_hcpe.py~train_hcpe3.py)あったが、train.pyに統一した。

python -m dlshogi.train

で学習を実行できる。

これで、Google Colabでの学習も容易になる。


utilsにあったスクリプトは、dlshogi.utilsパッケージに移動した。

python -m dlshogi.utils.csa_to_hcpe3

のようにして、実行できる。

注意事項

新しいtrain.pyは、今までと保存形式が変わっている。互換性のために以前の形式も読めるようにしている。
詳細は、この記事を参照。

dlshogiの教師データのフォーマットには、hcpeフォーマット(指し手のみ、局面単位)と、hcpe3フォーマット(方策の分布、対局単位)の2つがあるが、自動判別してどちらも読めるようにしている。
複数ファイルを入力できるので、混在もできる。
hcpe3を指し手のみで学習するには、「--temperature 0」を指定する。
指し手のみの場合、方策が決定論的にならないように、エントロピー正則化項の係数「--beta 0.001」を指定するとよい。

「--use_average」と「--use_evalfix」と「--use_swa」はデフォルトオフだが指定した方がよい。

GPUにTensorCoreがある場合は、「--use_amp」を指定した方がよい。

その他

dlshogiのソースを修正しなくても、ユーザ定義のモデルファイルを学習できるように、「--user_network」オプションを追加した。
「--user_network package0.package1.ClassName」
のようにして、クラス名をパッケージ付きで指定する。

まとめ

学習環境の構築でハードルがあったが、簡単に構築できるようにした。
これでdlshogiの学習を簡単に試せるようになったと思う。


dlshogi.cppshogiと、cshogiと組み合わせて、Pythonのみでdlshogiのモデルを使って大会参加とかもできるので、ディープラーニングと将棋AIに興味あるけどC++は分からないという方も試してみてください。