https://github.com/jw1912/bullet
Specialised ML Library
https://github.com/jw1912/bullet
Last synced: 3 months ago
JSON representation
Specialised ML Library
- Host: GitHub
- URL: https://github.com/jw1912/bullet
- Owner: jw1912
- License: mit
- Created: 2023-08-12T22:29:46.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2025-08-24T19:20:44.000Z (3 months ago)
- Last Synced: 2025-08-24T23:23:57.164Z (3 months ago)
- Language: Rust
- Homepage:
- Size: 2.8 MB
- Stars: 132
- Watchers: 6
- Forks: 39
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-rust-neural-network - bullet - specific, NNUE-style networks, chess engines | cudarc | - | (Machine Learning)
README
# bullet
A domain-specific ML library, generally used for training NNUE-style networks for many of the strongest chess engines in the world
due to its best-in-class performance, chess-specific tooling and ease of use.
### Usage for NNUE/Value Network Training
Before attempting to use, check out the [docs](docs/0-contents.md).
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](/examples) to their taste.
If you want to create your own example file to ease pulling from upstream, you need to add the example to [`bullet_lib`'s `Cargo.toml`](crates/bullet_lib/Cargo.toml).
Alternatively, import the `bullet_lib` crate with
```toml
bullet = { git = "https://github.com/jw1912/bullet", package = "bullet_lib" }
```
Specific API documentation is covered by Rust's docstrings. You can create local documentations with `cargo doc`.
### Constituent Crates
- **bullet_core**
- Core ML framework
- Graphs are defined once (ahead of use), then optimsed and compiled for a given backend device
- A token single-threaded CPU backend is included for verifying correctness of the crate and other backend implementations
- See the [MNIST](examples/extra/mnist.rs) example for using `bullet_core` as a general-purpose ML framework
- **bullet_cuda_backend**
- **bullet_hip_backend**
- **bullet_lib**
- Provides a high-level wrapper around the above crates specifically for training networks to do with chess (and other games e.g. Ataxx) easily
- Value network training for games with `ValueTrainer`
- The [simple](examples/simple.rs) example shows ease-of-use in training the simplest NNUE architectures
- The [progression](examples/progression) examples show how to incrementally improve your NNUE architecture
- Read the [documentation](docs/2-getting-started.md#backends) for compilation instructions
- **bullet-utils**
- Various utilities mostly to do with handling chess data
### 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](https://discord.com/invite/F6W6mMsTGN) 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](https://discord.gg/GWDRS3kU6R) discord.