Skip to content

linrock/bullet

This branch is 59 commits behind jw1912/bullet:main.

Repository files navigation

bullet

bullet is a domain-specific ML library, generally used for training NNUE-style networks for some of the strongest chess engines in the world.

Crates & Versioning

  • Follows SemVer with crates.io releases
  • Contains the Device and DeviceBuffer traits, which are used to define a backend
  • Network graph construction, execution and autodiff generic over backends
  • Follows SemVer with crates.io releases
  • New CUDA backend
  • Not currently in a useable state
  • Follows SemVer with crates.io releases
  • Contains both the HIP and CUDA backends
  • Does not follow any particular versioning
  • API is sometimes subject to breaking changes
  • NetworkTrainer traits wrap the core graph API, providing a training loop with data loading performed asynchronously from device calculations
  • Contains Trainer, which implements NetworkTrainer for value network training
  • Contains TrainerBuilder, which streamlines the process of constructing a Trainer for the most common network architectures
  • Lots of NNUE and chess engine specific tooling
    • Input feature types
    • Output buckets
    • Data formats
  • Does not follow any particular versioning
  • Is a CLI program with various chess related utilities
  • Data validation
  • Converting between data file types
  • Shuffling and interleaving data files

Usage for Value Network Training

Before attempting to use, check out the docs. They contain all the main information about building bullet, managing training data and the network output format.

Most people simply clone the repo and edit one of the examples to their taste.

Alternatively, import the bullet_lib crate with

bullet = { git = "https://github.com/jw1912/bullet", package = "bullet_lib" }

Specific API documentation is covered by Rust's docstrings.

Help/Feedback

  • Please open an issue to file any bug reports/feature requests.
  • Feel free to use the dedicated #bullet channel in the Engine Programming discord server if you run into any issues.
  • For general training discussion the Engine Programming non-#bullet channels are appropriate, or #engines-dev in the Stockfish discord.

About

Neural Network Trainer

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Rust 90.2%
  • Cuda 9.8%