Smoon

10/03/2023

instalace q5go s podporou AI na Linux Mint

Každý, kdo hraní Go myslí vážně se dříve nebo později neobejde bez editoru SGF souborů. Dalším krokem je pak využívání AI k analýze hry. Obě možnosti a mnoho dalšího poskytuje program q5go.

Návod odpovídá instalaci na Linux Mint 21.1

instalace q5go

img: Screenshot

Pro q5go bohužel není k dispozici ani deb balíček tak ani flatpak. Program je nutné zkompilovat. Není to však nic složitého. Začneme tím, že do systému nainstalujeme qmake (pokud ho již nemáme):

$ sudo apt install qmake-qt5

Následně z gihubu stáhneme aktuální zdrojový kód. Stažený archiv rozbalíme například do adresáře q5go a následně v něm vytvoříme podadresář build. Dále se přesuneme do vytvořeného adresáře build a spustíme qmake:

$ cd ./q5go/build
$ qmake ../src/q5go.pro

qmake bude pravděpodobně končit chybovou hláškou, že vám chybí některé qt5 knihovny. Mě chybělo qtbase5-dev, qtmultimedia5-dev a libqt5svg5-dev. Je však možné, že budou chybět i jiné. Všechny chybějící knihovny nainstalujte pomocí sudo apt install <knihovna>. Pro jednoduché určení jaký balíček odpovídá danému chybějícímu modulu slouží následující tabulka:

Qt module               dev package
---------------------------------------------------------------
bluetooth               qtconnectivity5-dev
concurrent              qtbase5-dev
connectivity            qtmobility-dev
contacts                qtmobility-dev
core                    qtbase5-dev
dbus                    qtbase5-dev
designer                qttools5-dev
designercomponents      qttools5-dev
feedback                qtmobility-dev
gallery                 qtmobility-dev
gui                     qtbase5-dev
help                    qttools5-dev
location                qtmobility-dev
multimedia              qtmultimedia5-dev
multimediakit           qtmobility-dev
network                 qtbase5-dev
networkauth             libqt5networkauth5-dev
nfc                     qtconnectivity5-dev
opengl                  libqt5opengl5-dev
organizer               qtmobility-dev
positioning             qtpositioning5-dev
printsupport            qtbase5-dev
publishsubscribe        qtmobility-dev
qml                     qtdeclarative5-dev
quick                   qtdeclarative5-dev
quickparticles          qtdeclarative5-dev
quicktest               qtdeclarative5-dev
quickwidgets            qtdeclarative5-dev
script                  qtscript5-dev
scripttools             qtscript5-dev
sensors                 qtmobility-dev, libqt5sensors5-dev 
serialport              libqt5serialport5-dev
serviceframework        qtmobility-dev
sql                     qtbase5-dev
svg                     libqt5svg5-dev
systeminfo              qtmobility-dev
test                    qtbase5-dev
uitools                 qttools5-dev
versit                  qtmobility-dev
webchannel              ?
webkit                  libqt5webkit5-dev
websockets              libqt5websockets5-dev
widgets                 qtbase5-dev
x11extras               libqt5x11extras5-dev
xml                     qtbase5-dev
xmlpatterns             libqt5xmlpatterns5-dev

Pokud již máte všechny potřebné knihovny je potřeba provést samotnou kompilaci a následnou instalaci do systému:

$ make
$ sudo make install

Pokud vše proběhlo bez problému, máte nyní zkompilovaný a nainstalovaný q5go. Nyní ho stačí v příkazové řádce jednoduše spustit $ q5go. K tomu abychom mohli používat AI analýzu musíme ještě nainstalovat AI motor. q5go umí spolupracovat s Katago.

instalace katago

img: Screenshot Katago

Nejdříve musíme stáhnout aktuální motor a neuronovou síť. Motorů je k dispozici hned několik. Který vybrat záleží na tom, jestli a jakou máte grafickou kartu (GPU). Přehled motorů je vyznačen v následující tabulce:

Motor		Určení
-------------------------------------------------------------------
OpenCl		Obecné GPU, jak AMD, NVIDIA tak Intel. 
		    Nejdřív musí být v systému však OpenCL zprovozněno.
CUDA		Pouze pro moderní NVIDIE po instalaci cuda a cudnn.
TensorRT	Také jen pro moderní NVIDIE, rychlejší než CUDA.
Eiden		Bez GPU pro procesor. Výrazně pomalejší jak přes
		    GPU. U novějších CPU možno použít EidenAVX2.

Já mám v počítači AMD GPU a poměrně silný CPU. Pro mě je tedy vhodný motor OpenCl nebo EidenAVX2. Vzhledem k tomu, že v základě není v Mintu OpenCl zprovozněn a je poměrně složité ho rozchodit a současně mé 12 jádrové CPU je dost silné, rozhodl jsem se pro EidenAVX2.

Následně je nutno stáhnout natrénovanou neuronovou síť. Na výběr jich je hromada. Já zvolil tu, která je označena jako nejsilnější důvěryhodná (Strongest confidently-rated network). Stáhne se archiv bin.gz.

Teď přichází na řadu trocha alchymie. Nejdřív rozbalte motor do vámi zvoleného adresáře, například ./Programy/Katago. Potom ho zkuste spustit:

$ cd ./Programy/Katago/
$ chmod +x katago
$ ./katago version

Mě se spuštění nepovedlo. Motor hlásil chybějící knihovny. Bohužel knihovny, které Mint 21.1 nemá. Možností řešení tohoto problému je několik. Já jsem si zvolil použití fake adresáře s chybějícími knihovnami a spouštění motoru přes LD_LIBRARY_PATH. Jednoduše jsem si vytvořil adresář ./fakeLib/usr/lib/x86_64-linux-gnu/. Z repositáře Ubuntu si stáhl potřebné deb balíčky chybějících knihoven. V mém případě se jednalo o:

libzip5_1.5.1-0ubuntu1_amd64.deb
libssl1.1_1.1.1f-1ubuntu2.16_amd64.deb

Z deb balíčků jsem pomocí správce archivů vybalil dané knihovny do .fakeLib/.. adresáře a znovu zkusil spustit motor:

$ LD_LIBRARY_PATH=/home//.fakeLib/usr/lib/x86_64-linux-gnu/ \
./katago version

Nedoporučuju balíčky přímo instalovat do systému. Mohlo by to vyvolat kolize.

Nyní je potřeba spustit benchmark pro optimalizaci nastaveni motoru. Před spuštěním je nutno do složky ./Programy/Katago přesunout staženou neuronovou síť (bez rozbalení).

$LD_LIBRARY_PATH=/home//.fakeLib/usr/lib/x86_64-linux-gnu/ \
./katago benchmark -model kata1.bin.gz

Po dokončení testu vám bude doporučeno množství vláken. V konfiguračním souboru default_gtp.cfg (který je v adresáři u motoru) najděte a upravte nastavení dle doporučené hodnoty:

numSearchThreads = 6

Nyní je AI motor zprovozněn a schází už jen propojení s q5go. Já jsem si pro zjednodušení vytvořil následující script:

./.local/bin/katago.sh

#!/bin/bash
cd /home//Programy/Katago
LD_LIBRARY_PATH=/home//.fakeLib/usr/lib/x86_64-linux-gnu/ \
./katago $1 $2 $3

Udělal jsem ho spustitelný:

$ chmod +x ./.local/bin/katago.sh

Nyní už jen stačí spustit q5go a otevřít Settings->Computer GO->New Zde následně vyplníme:

img: Nastaveni

A je hotovo. Teď už stačí spustit “Analysis” v pravým panelu dole, nebo v menu Analysis->Connect analysis engine.

eof