Releases: kblomdahl/dream-go
Dream Go 0.6.3
Release 0.6.3 - Unravel
Use 16-bit floating point instead of 8-bit integers during inference. This is because the former is actually faster with tensor cores based on the current cuDNN implementations. Beyond this change this release contains mostly bug fixes and runtime performance improvements:
- Change the input features to include more liberties (replacing redundant color features).
- Use gradient boosting to only focus on the interesting moves during training.
- Add some command line arguments:
--tt
plays using tromp-taylor rules.--safe-time
makes the engine always try to safe at least this much time on the game clock.--no-resign
forbids the engine from resigning games that it think it has lost (< 10%).
All binaries are built against CUDA 10 and cuDNN 7.4.1
Dream Go 0.6.0
Release 0.6.0 - Emergent
Includes many minor improvements to the search, and training procedure. Some major highlights from v0.5.0 to v0.6.0:
- Only consider the top 90% of the candidate moves during play to avoid large blunders in the name of exploration.
- Add proper support for Go Text Protocol (GTP) time commands, and KGS extensions. For example:
time_settings 300 0 0
plays a 5 minutes gamekgs-time_settings byoyomi 0 5 1
plays 5 seconds per move.
- Use a smaller network (9x128) with quantization, this yields a much deeper but less accurate search (the depth should compensate for the less accurate predictions). This is only semi-successful as it makes almost no difference in strength at from v0.5.0 to v0.6.0.
- Tweak the input features to include more global properties, and
- Include support for dynamic komi.
Attached binaries for Linux are built against CUDA 10, and cuDNN 7.3.
Dream Go 0.5.0
Release 0.5.0 - Assessment
This version includes mostly minor tweaks and bug fixes to the monte carlo tree search algorithm and performance improvement to the host code and neural network architecture. Some highlights are:
- Re-using the monte carlo search tree over consecutive turns. This allows the engine to remember knowledge discovered during the last turn, makes it probe a lot deeper with no performance penalty.
- Host code optimizations, the program now consumed about 25% of the CPU resources compared to before with no performance loss. This is possible since the bottleneck was always the neural network evaluations, but now we need less resources to keep it fully saturated.
- The neural network code is about 300% faster because of the architectural change from 256 channels to 128 channels with minimal impact on playing strength.
- Due to bugfixes in the monte carlo tree search the new engine is a lot stronger, featuring an 80% win rate over the previous version.
Dream Go 0.4.0
Release 0.4.0 - Awakening
Add an Go Text Protocol (GTP) interface to the engine. The inclusion of GTP support to the engine is exciting because it allows to talk to most other go software, such as Sabaki and SmartGo, so that you can easily play games against the engine, or match it against other engines to see how it performs.
This release also includes support for half precision, which gives about a 2x speed-up on modern hardware (i.e. Volta).
Dream Go 0.3.0
Release 0.3.0 - Slow-wave sleep
Improve the monte carlo tree search, and add support for saving the softmax of the visit count from the root node of each move in the output SGF file (using a private property P
). This outputted policy is also supported by our dataset extractor, which will output the correct policy to the supervised learning script.
It is now theoretically possible to replicate the AlphaGo Zero research with this program, but you are unlikely to get anywhere since the program is too slow. Unfortunately it bottlenecks on the self-play (as expected), so changes in both the neural network architecture and the cuDNN code will have to be done.
Dream Go 0.2.0
Release 0.2.0 - Light Sleep
Add a cuDNN implementation of the neural network in the Rust engine that allows for generation of self-play games that can be used to train new networks.