LoginSignup
6
3

More than 1 year has passed since last update.

M1 Macにやねうら王とelmoをインストールする

Last updated at Posted at 2021-12-06

はじめに

将棋は割と好きな方で、将棋ウォーズで指したり、AbemaTVで将棋見たりしています。
仕事のチームメイトに将棋大好きエンジニアがいて、評価ソフトの話を最近聞きました。
大きくはGUIと評価エンジンが分かれており、それらを組み合わせて使うようです。

ちょっとまだよくわかってない部分があるのですが、今日はやねうら王とelmo(評価エンジン)をインストールして将棋所というGUIアプリケーションから使ってみたいと思います。

環境

色々調べてみるとMacで動かす系の記事は割とあるみたいなので、今回はM1 Macで動かしてみたいと思います。

MacOSX 12.0.1 (M1 Mac)
YaneuraOu https://github.com/yaneurao/YaneuraOu/commit/2176528e7f586cc8c256e050cbbcb1094b47a9c8
elmo https://github.com/mk-takizawa/elmo/releases/tag/elmo_wcsc27
将棋所Mac 1.4.2

導入

やねうら王のビルド

$ git clone https://github.com/yaneurao/YaneuraOu.git
$ cd YaneuraOu

M1用にMakefileに変更を加える。

diff --git a/source/Makefile b/source/Makefile
index 69deb874..12e5c12a 100644
--- a/source/Makefile
+++ b/source/Makefile
@@ -49,7 +49,7 @@ YANEURAOU_EDITION = YANEURAOU_ENGINE_NNUE
 # --- 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
@@ -60,7 +60,7 @@ TARGET_CPU = AVX2
 #TARGET_CPU = ZEN2
 #TARGET_CPU = ZEN3
 # -- ARMとか
-#TARGET_CPU = OTHER
+TARGET_CPU = OTHER
 #TARGET_CPU = GRAVITON2


@@ -131,7 +131,8 @@ endif
 # clang用にCPPFLAGSなどを変更
 ifneq (,$(findstring clang++,$(COMPILER)))
        # stdlib
-       CPPFLAGS += -stdlib=libstdc++
+       ##CPPFLAGS += -stdlib=libstdc++
+       CPPFLAGS += -stdlib=libc++

        # C++17のfilesystem
        # LDFLAGS += -lstdc++fs

そしてビルド

$ cd source
$ make
$ ls
YaneuraOu-by-gcc

エラーが表示されず、バイナリファイル YaneuraOu-by-gcc が作成されていればOK。

以降のelmo実行環境用にディレクトリを作って、必要なディレクトリも作成しておきます。

$ mkdir ~/yaneuraou-elmo-exe
$ cp YaneuraOu-by-gcc ~/yaneuraou-elmo-exe/
$ mkdir ~/yaneuraou-elmo-exe/{book,eval}

elmo導入

YaneuraOuは棋譜エンジン?というような感じのもので、評価用のエンジンは別になっているようです。
その一つがelmoで、これを導入することで実際に対局したり、棋譜を評価したりできるようです。

elmoは以下からダウンロードしました

elmo.shogi.zipをダウンロードして、解凍します。
そしてその中の book/yaneura_format/standard_book.db を実行用に準備した elmo/book/ ディレクトリにコピーします。

$ cd elmo.shogi
$ tree
.
├── book
│   ├── Apery_format
│   │   └── book.bin
│   ├── ShogiGUI_format
│   │   └── elmo_wcsc27_16.sbk
│   └── yaneura_format
│       └── standard_book.db
└── eval
    ├── KKP_synthesized.bin
    ├── KK_synthesized.bin
    └── KPP_synthesized.bin

5 directories, 6 files
$ cp book/yaneura_format/standard_book.db /path/to/elmo/book/

evalファイル

evel の方は nn.bin というのが必要なようなので、こちらは以下のファイルを使いました。

https://mk-takizawa.github.io/elmo/howtouse_elmo.html
→3.elmoをダウンロードします(新しい方が強いです)。
 →任意のファイルをダウンロード
(2021.12.06現在はelmo 2019/5 世界コンピュータ将棋選手権(WCSC29)版しかダウンロードできませんでしたので、それを使用しました。)

$ elmo_wcsc29_eval
$ tree
.
├── engine_name.txt
└── eval
    ├── memo.txt
    └── nn.bin

1 directory, 3 files
$ cp eval/nn.bin /path/to/elmo/eval/

先に準備していたelmo実行用ディレクトリは以下のようになります。

$ tree
.
├── YaneuraOu-by-gcc
├── book
│   └── standard_book.db
└── eval
    └── nn.bin

2 directories, 3 files

ちゃんと動くか試します。

$ ./YaneuraOu-by-gcc
usi  # 入力
id name YaneuraOu NNUE 7.00beta3 32OTHER
id author by yaneurao
option name Threads type spin default 4 min 1 max 512
  :
option name OutputFailLHPV type check default true
option name FV_SCALE type spin default 16 min 1 max 128
usiok
isready  # 入力
info string EvalDirectory = /Users/hattorihideo/tmp/YaneuraOu/source/elmo/eval
info string loading eval file : eval/nn.bin
info string read book file : book/standard_book.db
info string read book done. number of positions = 18781
info string USI_Hash : Start clearing with 4 threads , Hash size =  16[MB]
info string USI_Hash : Finish clearing.
readyok

usi isready の入力でbookファイルが読み込まれていれば準備完了です。

GUI準備

将棋所を使います。

将棋所Macのサイトから最新版をダウンロードします。

そしてエンジンを指定する設定項目があるので、先に準備していた ~/yaneuraou-elmo-exe/YaneuraOu-by-gccを割り当てます。
(対局→エンジン管理→追加 とかから指定できるはず。)

shogidokoro-engine.png

結果

最終的に以下のような感じで棋譜を読み込ませて解析させることができました。
1手10秒くらいでワラワラ駒が動いたり評価値動いたりするの見るだけで、テンション上がりますね!!
shogidokoro-yaneuraou-elmo.png

先人に感謝 :pray:
そして将棋強くなりたい!!

6
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
3