-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
a493cad
commit 141335d
Showing
2 changed files
with
26 additions
and
102 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,43 +1,42 @@ | ||
# Miacis | ||
|
||
MiacisはUSIプロトコルに対応した将棋用思考エンジンです。[将棋所](http://shogidokoro.starfree.jp/)、[将棋GUI](http://shogigui.siganus.com/)などを用いて対局、検討を行うことができます。 | ||
|
||
深層学習フレームワークとしてPyTorchを利用しています。PyTorchのライセンス規約はNOTICEに、Miacis自身のライセンスはLICENSEに記載しています。 | ||
基本的に[AlphaZero](https://arxiv.org/abs/1712.01815)を模倣したものとなっており、深層強化学習を利用した評価関数を用いてモンテカルロ木探索を行います。 | ||
|
||
独自の工夫点として、評価値をスカラーではなくカテゴリカル分布を用いて出力します。これは[Categorical DQN](https://arxiv.org/abs/1707.06887)にヒントを得たものとなっています。 | ||
|
||
## コンパイル方法 | ||
コンパイル時にはPyTorchのC++APIである[LibTorch](https://pytorch.org/get-started/locally/)を必要とします。下例のようにスクリプトを使うなどしてMiacisと同階層にlibtorchを解凍しておくか、すでにダウンロード済みならばCMakeLists.txt9行目におけるlibtorchへのパスを適切に設定してください。 | ||
|
||
Ubuntu18.04, CUDA10.0, cuDNN7.1, libtorch1.2(for CUDA10.0)の環境においてcmake3.10.2, g++7.4.0でビルドできることが確認できています。以下にLinuxでコンパイルする手順例を示します。 | ||
コンパイルにはcmakeを利用します。ライブラリとして | ||
|
||
``` | ||
# Miacisの取得 | ||
git clone https://github.com/SakodaShintaro/Miacis | ||
* CUDA(cuDNN含む) | ||
* LibTorch | ||
* TensorRT | ||
* TRTorch | ||
|
||
# libtorchの取得(Miacisと同階層にlibtorchが解凍される) | ||
Miacis/scripts/download_libtorch.sh | ||
を必要とします。環境構築は複雑なのでDockerを利用することをお勧めします。 | ||
|
||
# コンパイル | ||
mkdir Miacis/src/cmake-build-release | ||
cd Miacis/src/cmake-build-release | ||
cmake .. -DCMAKE_BUILD_TYPE=Release | ||
make -j4 | ||
``` | ||
## Dockerによる環境構築 | ||
|
||
正常にコンパイルが進むと```cmake-build-release```以下に | ||
* Miacis_shogi_scalar | ||
* Miacis_shogi_categorical | ||
* Miacis_othello_scalar | ||
* Miacis_othello_categorical | ||
Dockerおよび[NVIDIA Container Toolkit](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html#docker)をインストールしてあるUbuntuを前提とします。 | ||
以下に | ||
|
||
というプログラムが得られます。```*_scalar```は評価値をスカラとして一つ出力するモデルであり、AlphaZeroとほぼ同等のモデルとなります。```*_categorical```は評価値の確率分布を出力するモデルとなります。 | ||
1. Dockerfileをダウンロードする | ||
2. miacis_trtorchというイメージをタグをpytorch1.7-cuda11.1-trt7.2.1として作成する | ||
3. miacis_trtorchというイメージをもとにmiacis_containerという名前でコンテナを作成する | ||
|
||
以前はWindows(Visual Studio2017にCMake拡張を入れた環境)でもコンパイル可能ではありましたが、現在可能であるかは未確認です。 | ||
を行うコマンドを示します。適当な空のディレクトリ内で実行してください。 | ||
|
||
## 対局方法 | ||
USIオプションで指定するパスに評価関数パラメータを配置すると思考エンジンとして利用することができます。Miacis_scalarは```sca_bl10_ch128.model```というファイル、Miacis_categoricalは```cat_bl10_ch128.model```というファイルにPyTorchの定める形式でパラメータが格納されている必要があります。(bl10はブロック数が10であること、ch128はチャネル数が128であることを示しています。) | ||
```shell | ||
wget https://raw.githubusercontent.com/SakodaShintaro/Miacis/master/scripts/Dockerfile | ||
docker build -t miacis_trtorch:pytorch1.7-cuda11.1-trt7.2.1 . | ||
docker run --gpus all -it --name miacis_container miacis_trtorch:pytorch1.7-cuda11.1-trt7.2.1 bash | ||
``` | ||
|
||
## 学習方法 | ||
MiacisはAlphaZeroと同様の形式による強化学習で評価関数パラメータの最適化を行うことができます。学習する際にはalphazero_settings.txtを実行プログラムと同ディレクトリに配置しパラメータ等を適切に設定してください。プログラムを実行して「alphaZero」と入力することで現在同ディレクトリに置かれている```cat(sca)_bl10_ch128.model```を初期パラメータとした学習が始まります。 | ||
正常にコンパイルが進むとコンテナ内の```/root/Miacis/src/cmake-build-release```以下に```Miacis_shogi_categorical```というプログラムが得られます。 | ||
|
||
プログラムを実行して「initParams」と入力するとランダムに初期化したパラメータが```cat(sca)_bl10_ch128.model```という名前で出力されます。同名のファイルがすでに存在している場合も上書きされるのでご注意ください。 | ||
## 対局方法 | ||
|
||
学習の際には```cat(sca)_bl10_ch128_before_alphazero.model```という名前で学習前のパラメータが保存されるため、誤って学習を行ってしまった場合はこれをリネームすることで学習前のパラメータに復帰することができます。 | ||
USIオプション```model_name```で指定するパスに評価関数パラメータを配置すると思考エンジンとして利用することができます。デフォルトでは```Miacis_shogi_categorical``` | ||
と同じディレクトリに```shogi_cat_bl10_ch256.model```というファイルにパラメータが格納されている必要があります。(bl10はブロック数が10であること、ch256はチャネル数が256であることを示しています。) |