はじめまして
普段はフリーのwebエンジニアをやっていますshutaです。
最近Mac mini M4を購入したのですがせっかくスペックが上がったので趣味の将棋のAIを導入してみました。
今回はその手順について書かせていただこうと思います。
筆者について
将棋ウォーズ六段
最新のAIについての知識はほぼゼロなのでご了承ください。
NNUE系とDL系
現在、将棋AIの評価関数はNNUE系とDL系の2つに分かれるようです。
NNUE系はニューラルネットワーク、DL系はディープラーニングで学習した評価関数とのことで、
DL系の方が読める局面は少なくなり、その分人間の思考により近く正確に局面を読むことができるようになるようです。
今回はそのどちらも導入してみます。
NNUE系の導入
まず、gitからやねうら王をcloneします。
$ git clone git@github.com:yaneurao/YaneuraOu.git
MakeFileを編集します。
YaneuraOu/source/MakeFileを開き、TARGET_CPUを変更してください。
- TARGET_CPU = AVX2
+ #TARGET_CPU = AVX2
+ TARGET_CPU = APPLEM1
MakeFileの編集はこれだけで大丈夫なはずです。
最後にビルドします。
$ cd YaneuraOu/source
$ make
これで/source内にYaneuraOu-by-gccというファイルができていればOKです
このファイルを適当なディレクトリ内に移動させます。
├── YaneuraOu-by-gcc
├── eval
└── book
後々使うのでeval、bookというフォルダも作成しておきます。
まずはこの状態で将棋所にエンジン登録してみましょう。
将棋所で対局->エンジン登録からディレクトリに移動させたYaneuraOu-by-gccを登録します。
これで対局開始してみます
eval内に評価関数ファイルがないので動きませんでした。
今回使用させていただいたやねうら王は探索エンジンのみで、評価関数ファイルは別で用意する必要があります。
フリーで公開されている評価関数はいくつもあり、有名なところだと水匠(https://github.com/yaneurao/YaneuraOu/releases/tag/suisho5 )などがあります。
今回は筆者の志向でqhapaq(https://github.com/qhapaq-49/qhapaq-bin/releases/tag/tagtest )を導入します。
js26.7zをインストール、解凍してeval/nn.binをYaneuraOu-by-gccと同じディレクトリのeval以下に配置します。
├── YaneuraOu-by-gcc
├── eval
│ └──nn.bin
└── book
評価関数ファイルを配置後、対局開始することができました。
book以下のディレクトリですが、定跡ファイルを配置することでAIに指定した定跡で指してもらうことができます。
私は振り飛車の研究がしたいので公開されている振り飛車の定跡ファイルを読み込ませています
https://github.com/32hiko/HoneyWaffleBook/releases
bookフォルダ内に定跡ファイルを置いた後はエンジン設定でファイルの指定をします。
├── YaneuraOu-by-gcc
├── eval
│ └──nn.bin
└── book
└──user_book2.db
これで振り飛車を指してくれるようになりました。
DL系の導入
DL系の場合もやねうら王からビルド可能です。
MakeFileを編集し、YANEURAOU_EDITIONを変更します。
- YANEURAOU_EDITION = YANEURAOU_ENGINE_NNUE
+ YANEURAOU_EDITION = YANEURAOU_ENGINE_DEEP_COREML
NNUE系と同じようにビルド後、フォルダを作成しファイルを配置します。
├── YaneuraOu-by-gcc
├── eval
└── book
└──user_book2.db
mac上で使用できるDL系評価関数が公開されているので使用させていただきます
https://github.com/select766/FukauraOu-CoreML/releases/tag/coreml-sample-20220613
こちらでDlShogiResnet10SwishBatch.mlmodelをダウンロードし、eval以下に配置後、DNN_Model1に「DlShogiResnet10SwishBatch.mlmodel」を指定
これで設定完了。対局できるようになりました。
最後に
公開されているソフトを組み合わせて簡単に将棋AIを導入することができました。
試しに対局してみましたがあまりに自然な強さで、このようなものが無料公開されているとは大変驚きです。
開発された方々に感謝申し上げます。