シンギュラリティ実験ノート

購入した1000ドルPCで何がどこまでできるのか実験した記録です。

将棋AI やねうら王&水匠5を1000ドルPCで動かす

やねうら王と水匠5を1000ドルPCで動かしたので、実験ノートにまとめておく。動作環境はUbuntu22.04である。

前置き

あらかじめお伝えすると、単にやねうら王・水匠を動かしたいのであれば、Windows環境で簡単に動かすことができるので、あえてUbuntu環境で動かす意味はないのかもしれない。私の場合、GPUで動くpython版dlshogiや、高速CPUで動くC++版dlshogiと水匠を対局させてみたかったので、あえてUbuntu環境にインストールしたわけだ。皆さんの参考にはならないのかもしれない。すでにこの記事を書く意味を見失いかけているが、私自身の活動メモということで書くことにした。

インストール手順

本将棋AIはNNUE系と呼ばれ、CPUのみで高速に動作し、高性能なGPUは必要ないのが特徴だ。NNUE評価関数が動くプログラムがやねうら王で、NNUE評価関数が水匠5である。インストール手順は以下の通りである。

1.やねうら王の実行ファイル一式をダウンロードする

下記GitHubにあるSource code(zip)をダウンロードし、~/Shogi配下に展開する。

github.com

2.Makefileを編集しコンパイルする

コンパイラにclang++が指定されているのでg++に変更しmakeを実行する。

# 使用するコンパイラ (compiler)
# ※ clangでコンパイルしたほうがgccより数%速いっぽい。
COMPILER = g++
#COMPILER = clang++
#COMPILER = em++

~/Shogi/YaneuraOu-7.50-wcsc32/sourceの下にYaneuraOu-by-gccができる。

3.評価関数テーブルをファイルに書き出す

下記GitHubで将棋AI「Apery」作者の平岡拓也氏がツールを公開されているのでこれを使わせてもらう。

github.com

$ sudo apt install unrar
$ git clone https://github.com/HiraokaTakuya/get_suisho5_nn.git
$ cd get_suisho5_nn/
$ (cd 水匠5; unrar e source.rar) && g++ -O2 get_suisho5_nn.cpp -o get_suisho5_nn && ./get_suisho5_n

suisho5_nnに評価関数書nn.binが書き出される。

4.プログラムと評価関数をフォルダにまとめる

水匠5用フォルダ~/Shogi/Suisho5を作成し、その直下に環境をまとめる。

~/Shogi/Suisho5
  ├ YaneuraOu-by-gcc
  ├ engine_name.txt
  └ eval/
    └ nn.bin

engine_name.txtは将棋GUIに将棋エンジンを登録した時につける名前を記述したテキストファイルである。YaneuraOu windows版にあるファイルをコピーするといい。

5.将棋GUIのエンジンに水匠5を追加する

将棋GUIにエンジンを追加する。上記Suisho5フォルダにある実行ファイルYaneuraOu-by-gccを指定するだけだ。

対局 水匠5vs dlshogi OnnxRuntime版

先手水匠5、後手dlshogi OnnxRuntime版で対局させてみた。結果は水匠5の勝利であった。先手の水匠5はやはり強い。

水匠 VS dlshogi(OnnxRuntime版)

まとめ

とりあえず動かしてみたという状況である。Mac mini Late2012に比べるとかなり早くなっていると思うが、性能測定や比較はまだできていない。パラメタ調整によるチューニングもできるようなので少し試してみるつもりだ。