Closed3

[M1 Mac Pro] 最新の将棋AIを動かしたい

harrythecodeharrythecode

本記事でやりたい事

M1 macOS上で最新の将棋AIを動かしたい

検証環境

  • OS: macOS Monterey 12.6 (執筆時点最新)
  • CPU: Apple M1 Pro
  • Memory: 16GB
  • Software:
$ make -v
GNU Make 3.81

$ g++ -v
Apple clang version 13.1.6 (clang-1316.0.21.2.5)

$ gcc -v
Apple clang version 13.1.6 (clang-1316.0.21.2.5)

使うもの達

分類 ソフトウェア
将棋エンジン やねうら王
評価エンジン 水匠5
将棋GUI 将棋所

知っておくと便利な知識

USI

将棋をソフトウェアで動かすためにルールを決める必要があります。そこで考え出されたのが「USI (Universal Shogi Interface)」という規格です。ここでは例えば、以下のように将棋の駒達をコンピュータでも理解できるように表しています。[1]

先手の玉:K、後手の玉:k (Kingの頭文字)
先手の飛車:R、後手の飛車:r (Rookの頭文字)
先手の角:B、後手の角:b (Bishopの頭文字)
先手の金:G、後手の金:g (Goldの頭文字)
先手の銀:S、後手の銀:s (Silverの頭文字)
先手の桂馬:N、後手の桂馬:n (kNightより)
先手の香車:L、後手の香車:l (Lanceの頭文字)
先手の歩:P、後手の歩:p (Pawnの頭文字)

将棋・評価エンジンの違い

自分なりの解釈で意訳をすると

  • USIのルールに基づいて将棋のコマ達を動かす為に必要なのが「将棋エンジン」
  • 将棋エンジンに、どの手の評価が高いかを教えるのが「評価エンジン(関数)」

です。ちなみにやねうら王さんの「評価関数を作ってみよう」は評価エンジンを理解する上で有用なので興味のある方は一度みると良いです。

脚注
  1. http://shogidokoro.starfree.jp/usi.html ↩︎

harrythecodeharrythecode

セットアップ

将棋エンジン: やねうら王のビルド

M1 Macにやねうら王とelmoをインストールするをそのまま真似しています。

  1. やねうら王のソースコードをとってくる
$ git clone https://github.com/yaneurao/YaneuraOu.git
$ cd YaneuraOu
  1. M1 Mac用にビルドオプションを変更 (source/Makefileを編集)
$ git diff
diff --git a/source/Makefile b/source/Makefile
index ee98f6a9..850e3ef9 100644
--- a/source/Makefile
+++ b/source/Makefile
@@ -52,7 +52,7 @@ YO_CLUSTER = OFF
 # --- Intel/AMD系 (x86/x64 Platform)
 #TARGET_CPU = AVX512VNNI
 #TARGET_CPU = AVX512
-TARGET_CPU = AVX2
+#TARGET_CPU = AVX2
 #TARGET_CPU = SSE42
 #TARGET_CPU = SSE41
 #TARGET_CPU = SSSE3
@@ -63,7 +63,7 @@ TARGET_CPU = AVX2
 #TARGET_CPU = ZEN2
 #TARGET_CPU = ZEN3
 # -- ARMとか
-#TARGET_CPU = OTHER
+TARGET_CPU = OTHER
 #TARGET_CPU = GRAVITON2
 #TARGET_CPU = WASM

@@ -145,6 +145,7 @@ endif
 ifneq (,$(findstring clang++,$(COMPILER)))
        # stdlib
        # CPPFLAGS += -stdlib=libstdc++
+       CPPFLAGS += -stdlib=libc++

        # C++17のfilesystem
        # LDFLAGS += -lstdc++fs
  1. ビルドする
$ cd source
$ make
$ ls
YaneuraOu-by-gcc

評価エンジン: 水匠5

最新のやねうら王では標準の実行ファイルに評価関数の水匠が埋め込まれるとのことですが、Windows以外の環境(Linux/Mac/etc)だと別途評価関数をコンパイルして読み込ませる必要があります。

MacにはRar解凍ソフトが標準で入ってなかったので以下を入れました。

https://formulae.brew.sh/cask/rar

brew install --cask rar

unrarコマンドが信頼されないソフトウェアとして認識されるので「アプリケーションが悪質なソフトウェアであるかどうかAppleで確認できない」の手順通りに信頼させる必要があります。

https://github.com/HiraokaTakuya/get_suisho5_nn

(cd 水匠5; unrar e source.rar) && \
g++ -O2 get_suisho5_nn.cpp -o get_suisho5_nn && \
./get_suisho5_nn

https://kaworu.jpn.org/cpp/g++_最適化オプション

-O2では、ほとんどの最適化を行います。ループの展開や関数のインライン展開は行いません。-Oよりもコンパイル時間が増えるが、生成コードの効率がよくなります。

将棋GUI: 将棋所

以下のサイトからソフトウェアをダウンロードします。

http://shogidokoro.starfree.jp/mac/index.html

Apple Silicon版の将棋所は現時点では公開できません。

との注意書きがありますが「将棋所Mac 2.1.0」はM1チップでも動きます。(2022-10-24時点)

コンパイルした「やねうら王」と「水匠」を以下のように配置して将棋所で読み込みます。

.
├── YaneuraOu-by-gcc
└── eval
    └── nn.bin
このスクラップは2022/10/24にクローズされました