将棋

Macでelmoを使ってみた

More than 1 year has passed since last update.

Macへelmoの導入が成功したので備忘録として残しておく。
基本的にはネット上の情報を頼りに作業は進めました。

また手探りで進めて細かい検証をしていないため、もしかしたらやらなくてもいい手順が入っているかもしれません。
その辺はコメントなどで指摘いただければと思います。

コンピューター将棋を動かすためには以下の三つが必要らしいです。

  • 評価関数
  • 定跡
  • 思考エンジン

このうち、前の二つがelmoとして公開されており、最後のがやねうら王2017 Earlyとして公開され、elmoの思考エンジンとして利用されているようです。

環境

  • OS: macOS Sierra
  • Homebrew インストール済み
  • Xcodeコマンドラインツール インストール済み

事前準備

やねうら王をMacでビルドするために、デフォルトのclangではなくgccを利用します。
なぜclangのままではダメだったかというと、fatal error: 'cstdint' file not foundが解決できなかったため。
clangのまま通す方法もありそうだけど……)
というわけで、以下の手順を進めgccを利用できるようにします。

OS X El Capitanにgccを入れてシンボリックリンクを作成のサイトを参考に、Homebrewを利用してgccをインストールし、さらにgccコマンドとg++コマンドを利用できるようにしておきます。

$ g++ -v
Using built-in specs.
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=/usr/local/Cellar/gcc/7.1.0/libexec/gcc/x86_64-apple-darwin16.7.0/7.1.0/lto-wrapper
Target: x86_64-apple-darwin16.7.0
Configured with: ../configure --build=x86_64-apple-darwin16.7.0 --prefix=/usr/local/Cellar/gcc/7.1.0 --libdir=/usr/local/Cellar/gcc/7.1.0/lib/gcc/7 --enable-languages=c,c++,objc,obj-c++,fortran --program-suffix=-7 --with-gmp=/usr/local/opt/gmp --with-mpfr=/usr/local/opt/mpfr --with-mpc=/usr/local/opt/libmpc --with-isl=/usr/local/opt/isl --with-system-zlib --enable-checking=release --with-pkgversion='Homebrew GCC 7.1.0' --with-bugurl=https://github.com/Homebrew/homebrew-core/issues --disable-nls --with-native-system-header-dir=/usr/include --with-sysroot=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk
Thread model: posix
gcc version 7.1.0 (Homebrew GCC 7.1.0) 

導入手順

やねうら王ダウンロード

落とし方は任意ですが、今回はgitで。
場所も任意で問題ないはず。

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

コンパイラの変更

エディタを使ってMakefile内のコンパイラを指定している箇所をclang++からg++に変更。

$ git diff
diff --git a/source/Makefile b/source/Makefile
index 28b596b..421a13e 100644
--- a/source/Makefile
+++ b/source/Makefile
@@ -6,8 +6,8 @@ YANEURAOU_EDITION = YANEURAOU_2017_EARLY_ENGINE


 # clangでコンパイルしたほうがgccより数%速いっぽい。
-# COMPILER = g++
-COMPILER = clang++
+COMPILER = g++
+# COMPILER = clang++

 # 標準的なコンパイルオプション
 CFLAGS   = -std=c++14 -fno-exceptions -fno-rtti -Wextra -Ofast -MMD -MP -fpermissive

ビルド

ここからはelmoをやねうら王で使用する方法のサイトを参考に進めていけば問題ないはずです。

makeの指定は使用しているPC(実際にはCPU)に合わせて指定するようですね。

$ cd source/
$ make avx2

ビルドが成功したら動作確認。

$ ./YaneuraOu-by-gcc
usi

動作確認できたらexeディレクトリに実行に必要なファイルを集約します。
以前はexeディレクトリがリポジトリに存在したようなんですが、今は見当たらないので自分で用意します。

$ cd ..
$ mkdir -p exe/2017Early/{book,eval}
$ mv source/YaneuraOu-by-gcc exe/2017Early/

elmo取得

公開されているelmoのバイナリファイルをダウンロードして解凍。

book/yaneura_format/standard_book.dbbookディレクトリに、
eval/*evalディレクトリにコピーします。

結果、exe/2017Earlyディレクトリは以下のような構成になります。

$ tree
.
└── 2017Early
    ├── YaneuraOu-by-gcc
    ├── book
    │   └── standard_book.db
    └── eval
        ├── KKP_synthesized.bin
        ├── KK_synthesized.bin
        └── KPP_synthesized.bin

3 directories, 5 files

配置できたら動作確認。

$ cd exe/2017Early/
$ ./YaneuraOu-by-gcc
usi
isready

以下のような結果が出力されていればうまくいっています。

info string Eval Check Sum = 65cd7c55a9d4cd9 , Eval File = elmo(WCSC27)

将棋ぶらうざQの導入

将棋ぶらうざQの公式サイトからMac版のソフトをダウンロード、解凍します。

手元の環境だとSbrowserQはうまく動かなかったので、SbrowserQ_Bundle_Java8をアプリケーションディレクトリにコピーして、起動します。
(アプリケーションディレクトリにコピーしないと起動に失敗しました)

[設定]>[将棋エンジン設定...]を選択、
[追加]ボタンを押し、エンジンファイルパスに、先ほどビルドしたYaneuraOu-by-gccを選択します。

これでelmoを使用した対局や検討が可能になりました。
なお実際に利用する際には、オプションからBookDepthLimit0に、ConsiderationModeのチェックをONにするそうです。

参考サイト