Skip to content

Commit

Permalink
README.mdを更新
Browse files Browse the repository at this point in the history
  • Loading branch information
SakodaShintaro committed Apr 4, 2021
1 parent a493cad commit 141335d
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 102 deletions.
75 changes: 0 additions & 75 deletions NOTICE

This file was deleted.

53 changes: 26 additions & 27 deletions README.md
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であることを示しています。)

0 comments on commit 141335d

Please sign in to comment.