I've decided to try out a few of the latest go-playing engines, as well a a few golden oldies. I plan to do something along vaguely similar lines to the engine tournament
viewtopic.php?f=18&t=13322 but using BayesElo for rankings. I'll post results in a separate thread, if I get that far.
Installing and configuring some of the engines has been a bit of an adventure in itself. I've learned a few things over the past few days, so I should write some of this down before I forget it all again.
I'm using Ubuntu 18.o4.
GnugoInstallation was a piece of cake: it's in the official Ubuntu repositories, so it's as easy as typing "sudo apt install gnugo" on a command line (or finding it in the Ubuntu software centre if you prefer to do things graphically).
Configuration: It pretty much works out of the box. To use it via GTP (e.g. if you want to plug it into gogui or sabaki), use "gnugo --mode gtp". Add "--chinese-rules" for Chinese rules (recommended for engine vs engine games). It has ten levels of play via the --level argument, but my early experiments suggest that level doesn't make much of a difference. Also you can adjust the cache size (default 10Mb, puny by modern standards), but it doesn't seem to get stronger if you give it more cache.
PachiInstallation: Compiling from source was mildly annoying because of all the dependencies, but not too bad. I got the source code from
https://github.com/pasky/pachi, spent a bit of time trying to build it and getting messages about "lib whatever not found", googling for "Ubuntu package whatever", install whatever came up, try again. It worked after I'd installed caffe-cuda, libcaffe-cuda-dev, libgflags-dev, libgoogle-glog-dev, libprotobuf-dev, protobuf-compiler, libatlas-base-dev, libboost-system-dev.
Configuration: It took a little while to realise that "pachi" and "pachi DCNN" are actually the same software, just with different configurations. The DCNN version is quite a bit stronger. For DCNN, you need the network from
http://physik.de/CNNlast.tar.gz Pachi also comes with some alternative engines: you can type things like "pachi -e montecarlo" or "pachi -e patternplay". The other engines seem to be very weak.
MichiInstallation: I think this is an older version of pachi. Source code at
https://github.com/db3108/michi-c2/releases It was just as easy to compile, except for one trick. Michi needs the pattern files from
http://pachi.or.cz/michi-pat/ Then it looks for the pattern files in the current working directory that it's launched from, and there's no configuration option to change that. If you want to install the pattern files somewhere else, then in the source code you need to open the file ui.c, find the string "patterns.prob", and add the pathname of where you're storing the files.
Configuration: Nothing to do here, just type "michi gtp" from the command line and you're good to go.
FuegoInstallation: This one was painful. I used subversion to get the source code, with the command line "svn checkout
svn://svn.code.sf.net/p/fuego/code/trunk". Compilation gave a ton of error messages. Here are some links that helped:
http://fuego.sourceforge.net/mac-install.htmlhttps://unixnme.blogspot.com/2016/01/ho ... -1404.htmlhttps://stackoverflow.com/questions/199 ... mmand-linehttps://www.reddit.com/r/cbaduk/comment ... uego_code/Configuration: Not much to do. Make sure it can find its opening book, but I think the installer put the book in the right place (once I'd sorted out the compilation issues).
OakfoamInstallation: Like pachi, this one can work with or without DCNN. Unlike pachi, it's pretty hopeless without, and you need to recompile it to work with. For the non-DCNN version, there's a prebuilt package at
http://oakfoam.com/, and you can install it with the command line "dpkg -i oakfoam_0.1.3-1_amd64.deb". For DCNN, I got the newer version from
https://bitbucket.org/dsmic/oakfoam There were a few issues with compiling it. In the Makefile, find the "aclocal" line and change the version number from 1.14 to 1.15. I needed to install the "nvidia-cuda-dev" package as a dependency. And you have to tell it to use the caffe libraries: run "./configure --with-caffe=/usr/include/caffe" before compiling.
Configuration: This one comes with a configuration file called "nicego-cnn-06.gtp" which contains some gtp commands. The file tells it where to load the pattern files and weights. You'll need to edit that file and put in the correct pathnames for your installation. Then run it with "oakfoam -c path/to/nicego-cnn-06.gtp"
LeelaThis was easy, except for one trick. There's a Debian package with prebuilt binaries at
https://sjeng.org/leela.html Use "leela_gtp" to run in gtp mode, or LeelaGUI to open a nice interface for analysis. The trick is: I couldn't figure out why it wasn't using my graphics gard. There didn't seem to be any options for turning GPU mode on or off. It turns out that the GPU version is a separate pair of executables: if you have a graphics card, then you should use leela_gtp_opencl and LeelaGUI_OpenCL.
Leela ZeroInstallation: Source code from
https://github.com/gcp/leela-zero/releases Dependencies (Ubuntu packages): libboost-dev libboost-program-options-dev libopenblas-dev opencl-headers ocl-icd-libopencl1 ocl-icd-opencl-dev zlib1g-dev. Compile just by running "make" (no ./configure step needed). Easy. If you want a cpu-only version though, you need to hack and recompile. Open the file config.h and add a new line that says "#define USE_CPU_ONLY" just before the line "#ifndef USE_CPU_ONLY", and then compile it again.
Configuration: You need a set of weights. There seems to be a gazillion weights files out there, and multiple teams making new ones every week. The Leela Zero weights are at
https://zero.sjeng.org/ The file are gzipped, but there's no need to unzip them, Leela Zero can already read them in this format. The Facebook ELF weights are
http://zero.sjeng.org/networks/62b5417b ... 97df4b9.gz The "Leela Master" weights (trained on some human games as well as self-play) are at
https://github.com/pangafu/LeelaMasterWeight I think there's also Phoenix weights out there somewhere. Run "leelaz --gtp -w /path/to/weightsfile".
AQInstallation: The .tar.gz file at
https://github.com/ymgaq/AQ/releases is a prebuilt binary, just unpack it, and then run the executable called AQ. The bad news is that AQ requires the CUDA version 8 libraries (it needs to be exactly v8, not "v8 or newer", and Ubuntu 18 only has CUDA version 9. The good news is that the download includes the library files. The annoying news is that you have to tell Ubuntu where to find the libraries. You do this by creating a file called /etc/ld.so.conf.d/cuda8.conf which contains exactly one line, that line being the path where you unpacked AQ (e.g. "/opt/AQ"), and then you run "sudo ldconfig".
Configuration: I haven't got this to work yet. It keeps crashing when it gets GTP commands to change the time settings. I think you can set the time limits using a config file, but I don't know how to stop gogui-twogtp from sending time commands anyway.
RaySource code at
https://github.com/zakki/Ray/ I gave up on this one. It depends on the CNTK libraries. CNTK is massive, and it looks like installing it in a clean way would be a week's work in itself. (Microsoft provide a binary installer, but it's packaged together with a whole lot of other stuff that I don't want.)
DarkgoWork in progress. Home page at
https://pjreddie.com/darknet/darkgo-go-in-darknet/ and source code at
https://github.com/pjreddie/darknet It looks like I need the NVidia CUDA toolkit as a dependency, and that's another big install, but I'll probably get around to it at some stage.
Other things I might try over the next couple of weeks: Dream Go
https://github.com/Chicoryn/dream-go , Facebook ELF
https://github.com/pytorch/ELF , PhoenixGo
https://github.com/Tencent/PhoenixGo, LZ dynamic komi version (for playing handicap games)
https://github.com/alreadydone/lz/tree/komi , and I'm open to other suggestions.