Linux安装围棋AI(q5go和katago)


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

前言

目前大部分的围棋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

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

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的目录。

$ tree -d /opt/q5go
/opt/q5go
├── bin
├── katago_cuda
│   └── gtp_logs
└── share
    ├── doc
    │   └── q5go
    │       └── html
    │           └── screens
    └── q5go
        └── translations

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

$ 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

$ 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官网安装教程,又是一个贼长的英文文档。。。

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

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

更新环境变量

source ~/.bashrc

安装cudnn

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

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

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

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 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

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

sudo apt install cmake
sudo apt install libzip-dev

编译katago

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

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

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并编译

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文件夹替换掉旧的就可以了。

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

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

q5go调用katago

修改config文件

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

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

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

配置q5go

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

之后就可以使用katago了。

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

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


文章作者: Xu Yuan
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Xu Yuan !
评论
 上一篇
Manjaro配置教程 Manjaro配置教程
因为某些不可抗力,用了将近两年的Ubuntu系统崩溃了,于是决定试试久闻大名的Manjaro。 先上效果,关于KDE桌面的美化,请移步KDE桌面美化 Manjaro Manjaro Linux是基于 Arch Linux 的
2021-07-30
下一篇 
图神经网络之GAT 图神经网络之GAT
上一篇博客提到了在图神经网络中应用比较广泛的GCN(Graph Convolutional Networks),这篇博客就来谈谈GAT(Graph Attention Networks)。 什么是GAT什么是GAT呢?先看论文的名字
2021-03-27
  目录