KataGo is a GTP engine and self-play learning system for the game of Go.
KataGo addresses the challenge of training strong Go-playing neural networks from scratch without relying on human game data. It implements an AlphaZero-like training process with game-specific enhancements that accelerate early learning substantially. The system uses self-play to generate training data, allowing the neural network to improve iteratively. The engine supports multiple neural network backends including CUDA, OpenCL, TensorRT, ROCm, ONNX, and Eigen, making it adaptable to different hardware configurations. KataGo can reach high amateur dan strength on the full 19x19 board using only a few strong GPUs over several days, and theoretically could train to superhuman strength on a single top-end consumer GPU within months.
Developers and researchers interested in Go AI should consider KataGo if they want to train competitive neural networks from scratch without external data dependencies. The tool suits projects requiring rapid prototyping of Go engines or experimentation with self-play training techniques. The project also incorporates external game data optionally, which provides mild improvements against certain opponents and enhances analysis capabilities for human game situations that rarely occur in pure self-play. KataGo includes human-style play and analysis features, GTP extensions, and an analysis engine designed for practical use beyond competitive play.
The project maintains an active distributed training run with publicly available neural networks and documentation of training history. Development includes comprehensive source code organization covering self-play training infrastructure, GTP protocol implementation, and neural network integration. The codebase provides features for developers including GTP extensions and analysis engine APIs. Setup and compilation are documented for Windows, Linux, and macOS, with detailed guidance on GPU driver compatibility and performance tuning across different hardware configurations.