最近一个多月开始学习围棋,因为平时常用的系统是Linux,所以想要在Linux上安装一个围棋AI,可以借助AI分析棋局。经过一番查找,决定使用q5go和katago,安装还是挺复杂的,特地记录(摸鱼)一下。

目录

  1. 前言
  2. q5go安装
  3. katago安装
    1. katago下载
    2. 环境配置
      1. 安装NVIDIA显卡驱动
      2. 安装cuda
      3. 添加环境变量
      4. 安装cudnn
    3. 测试katago
    4. 源码安装
  4. q5go调用katago
    1. 修改config文件
    2. 配置q5go

前言

目前大部分的围棋AI软件都是由两部分组成,一部分是围棋GUI,即围棋的图形程序;另一部分是AI引擎(Engine)。Windows系统有很多直接组合好的软件,开箱即用。不过Linux和Mac上很少,就只能自己找了。

q5go安装

q5go是一个开源的围棋GUI,使用qt5开发。大致功能如下:

  • SGF editor
  • Analysis frontend for KataGo, Leela Zero or compatible engines
  • Pattern search and game info search in a database
  • GTP interface
  • IGS client
  • Export to a variety of formats

安装很简单,就是常规的编译过程。先下载发布版的源码

1
2
3
4
5
6
7
8
unzip q5go-2.0.zip
cd q5Go-q5go-2.0
mkdir build
cd build
qmake ../src/q5go.pro PREFIX=/opt/q5go
make -j4
mkdir /opt/q5go
make install /opt/q5go

之后就可以在 /opt/q5go/bin 目录找到可执行文件q5go了

为了方便,也可以在/usr/share/applications 添加.desktop文件创建快捷方式。

katago安装

katago 是一个很强的开源围棋AI Engine。katago仅仅实现了一个engine,并没有GUI界面,因此需要联合像q5go这样的GUI程序才能使用。

katago的安装比较麻烦,主要是因为NVIDIA的cuda环境不容易配置。

**[声明]**:由于不同Linux发行版的安装差异,下面安装过程中的命令很可能不好用,如果出现问题,请参考官方教程!!!

katago下载

首先下载cuda版本的katago engine
然后下载神经网络的文件,katago针对不同电脑的性能提供了三套不同的文件,分别是20block、30block、40block的网络。如果GPU性能比较差,就选择20block的网络,GPU性能很好的,可以选择40block的。

  • g170-b30c320x2-s4824661760-d1229536699 (“g170 30 block d1229M”) - Final 30 block network!
  • g170-b40c256x2-s5095420928-d1229425124 (“g170 40 block d1229M”) - Final 40 block network!
  • g170e-b20c256x2-s5303129600-d1228401921 (“g170e 20 block d1228M”) - Final 20 block network!

将katago的文件夹放到q5go的目录下,即/opt/q5go目录下,主要是为了方便管理,放在其他目录也可以。
目录结构如下,其中 katago_cuda就是katago的目录。

1
2
3
4
5
6
7
8
9
10
11
12
$ tree -d /opt/q5go
/opt/q5go
├── bin
├── katago_cuda
│   └── gtp_logs
└── share
├── doc
│   └── q5go
│   └── html
│   └── screens
└── q5go
└── translations

然后将下载的神经网络参数文件,就是那个*.bin.gz的文件放到katago的目录下,目录结构如下,其中 20block.bin.gz就是神经网络参数文件。

1
2
3
4
5
6
7
8
9
10
11
12
$ tree /opt/q5go/katago_cuda
/opt/q5go/katago_cuda
├── 20block.bin.gz
├── analysis_example.cfg
├── cacert.pem
├── contribute_example.cfg
├── default_gtp.cfg
├── gtp_logs
│   └── 20210402-192452-A95FDD19.log
├── katago
├── match_example.cfg
└── README.txt

至此,katago就下载好了,只要配置好环境就可以run了。

环境配置

因为katago需要使用GPU,所以要配置GPU环境。详细的安装可以参考NVIDIA的官方教程,如果不想看如此长的英文安装教程,可以看下面的,哈哈哈(^-^)。下面的安装教程是基于Ubuntu18.04的,如果是其他的Linux发行版,还是看官方教程吧。

安装NVIDIA显卡驱动

NVIDIA显卡驱动很多电脑应该是有的,这里就不赘述了。

输入下面的命令,如果可以得到类似的输出(本人电脑的GPU比较垃圾,见笑了),则说明显卡驱动已经装好了。没有的话,请参考 Installing NVIDIA Graphics Drivers

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
$ nvidia-smi
Fri Apr 2 20:53:54 2021
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 460.39 Driver Version: 460.39 CUDA Version: 11.2 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|===============================+======================+======================|
| 0 GeForce 920MX Off | 00000000:01:00.0 Off | N/A |
| N/A 36C P0 N/A / N/A | 274MiB / 2004MiB | 9% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=============================================================================|
| 0 N/A N/A 1891 G /usr/lib/xorg/Xorg 162MiB |
| 0 N/A N/A 2091 G /usr/bin/gnome-shell 27MiB |
| 0 N/A N/A 2583 G ...gAAAAAAAAA --shared-files 52MiB |
| 0 N/A N/A 25504 G ...AAAAAAAA== --shared-files 26MiB |
+-----------------------------------------------------------------------------+

安装cuda

cuda是NVIDIA的并行计算平台。通过利用图形处理单元(GPU),可以提高计算机的计算性能。
cuda官网安装教程,又是一个贼长的英文文档。。。

1
2
3
4
5
6
7
8
9
wget https://developer.download.nvidia.com/compute/cuda/11.1.0/local_installers/cuda-repo-ubuntu1804-11-1-local_11.1.0-455.23.05-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu1804-11-1-local_11.1.0-455.23.05-1_amd64.deb
sudo apt-key add /var/cuda-repo-ubuntu1804-11-1-local/7fa2af80.pub
sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/7fa2af80.pub
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-ubuntu1804.pin
sudo mkdir /etc/preferences.d
sudo mv cuda-ubuntu1804.pin /etc/preferences.d/cuda-repository-pin-600
sudo apt-get update
sudo apt-get install cuda

一般cuda的安装目录在/usr/local/cuda/,安装完可以检测一下是否成功

添加环境变量

将下面的语句添加到.bashrc

1
export PATH=/usr/local/cuda/bin:${PATH}

更新环境变量

1
source ~/.bashrc

安装cudnn

cuDNN(NVIDIA CUDA Deep Neural Network library)是为了实现GPU加速的深度神经网络原语库。

cudnn的安装过程不同的Linux发行版都不同,下面仅给出了Ubuntu18.04的安装过程,其他发行版见Downloading cuDNN For Linux

这四条命令可以省略,因为之前在安装cuda的时候已经执行过了,可以直接跳过。

1
2
3
4
sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/7fa2af80.pub
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-ubuntu1804.pin
sudo mkdir /etc/preferences.d
sudo mv cuda-ubuntu1804.pin /etc/preferences.d/cuda-repository-pin-600

需要执行的是下面的命令:

1
2
3
4
sudo add-apt-repository "deb https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/ /"
sudo apt-get update
sudo apt-get install libcudnn8
sudo apt-get install libcudnn8-dev

大功告成,可以开心的打开katago了,哈哈哈!!!

测试katago

如何使用katago,可以参考Github

1
2
cd /opt/q5go/katago_cuda
./katago benchmark -model 20block.bin.gz

如何你运行成功了,恭喜,请快进到q5go调用katago

如果失败了,同样恭喜,请继续享受安装的快乐。

如果失败的信息是类似于./katago: error while loading shared libraries: libzip.so.5: cannot open shared object file: No such file or directory这样的,可以尝试安装libzip,如果libzip已将安装,你遇到的应该是这个issue

该问题就是发布版的katago在编译时使用的动态链接库和你本地的不同,无法使用。解决方法请跳转到源码安装

如果是其他失败信息,我也没遇到过,就请参考github issue的方法了

源码安装

Welcome to 源码安装~~~
老规矩,官方教程

编译环境准备,安装camke、libzip-dev

1
2
sudo apt install cmake
sudo apt install libzip-dev

编译katago

1
2
3
4
git clone https://github.com/lightvector/KataGo.git
cd KataGo/cpp
cmake . -DUSE_BACKEND=CUDA
make -j4

如果遇到下面的问题,则需要使用最新的CMake

1
2
3
4
CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake files:
CUDA_cublas_device_LIBRARY (ADVANCED)
linked by target "katago" in directory /content/drive/My Drive/KataGo/cpp

安装最新的Cmake并编译

1
2
3
4
5
wget https://github.com/Kitware/CMake/releases/download/v3.16.2/cmake-3.16.2-Linux-x86_64.tar.gz
tar zxvf cmake-3.16.2-Linux-x86_64.tar.gz
sudo mv cmake-3.16.2-Linux-x86_64 /opt/cmake-3.16.2
/opt/cmake-3.16.2/bin/cmake . -DUSE_BACKEND=CUDA
make -j4

make成功之后,把生成的katago可执行文件拷贝到之前下载的katago文件夹替换掉旧的就可以了。

1
2
mv /opt/q5go/katago_cuda/katago /opt/q5go/katago_cuda/katago_old
mv ./katago /opt/q5go/katago_cuda
1
2
cd /opt/q5go/katago_cuda
./katago benchmark -model 20block.bin.gz

现在应该可以完美运行了,接下来就是使用 q5go调用katago了。

q5go调用katago

修改config文件

在执行了./katago benchmark命令后,程序会测试你的电脑,为你推荐合适的线程参数。在得到该参数后需要修改default_gtp.cfg文件。

default_gtp.cfg文件中找到下面的一行配置并修改。

1
numSearchThreads = 6 # 修改为推荐的线程参数

配置q5go

启动q5go程序,进入Settings->Computer Go->New,进行如下配置

之后就可以使用katago了。

打开一个对局,调整贴目 Edit->Game Information。

打开Analysis,就可以看到AI的推荐选点和胜率等信息了。