Repository navigation
Releases: reckless-technology/zenith
Release list
Zenith v3.0.0
Zenith 3.0.0: a UCI chess engine (C17, king-bucketed NNUE), built and tested at commit 5de886b9c456bd6004dbd7bf043e22f8150b0f4a
by run #41139760808.
- Windows (x86-64):
zenith-v3.0.0-windows-x86-64-v2.zipand-x86-64-v3-pext.zip;zenith.exein each
is Authenticode-signed (Jonathan Reckless). - macOS (Apple silicon):
zenith-v3.0.0-macos-arm64.zip; the engine is signed with a Developer ID and
notarised by Apple. - Linux (x86-64):
zenith-v3.0.0-linux-x86-64-v2.tar.gzand-x86-64-v3-pext.tar.gz.
x86-64-v2 runs on essentially any modern x86-64 (magic bitboards); x86-64-v3-pext needs AVX2 and BMI2
(Intel Haswell+, AMD Zen 3+) and uses faster PEXT sliding attacks. Each archive holds the engine, README.md,
LICENSE and THIRD-PARTY-NOTICES.md; verify downloads against zenith-v3.0.0-SHA256SUMS.txt. The search is bit-identical on
every platform (the bench node signature, checked on each).
New evaluation network
This release ships reckless-lc0-runf-sb870.nnue, trained entirely on Leela Chess Zero self-play data.
It replaces zenith-cap2, which was trained on 2.15 billion positions from data generated by PlentyChess
(Yoshie2000) — as was every network Zenith had previously
released. That data is no longer used: zenith-cap1.nnue and zenith-cap2.nnue are removed from the tree,
every earlier release has been withdrawn, and the credit for those networks is kept permanently in
NNUE_TRAINING.md, because they
were measurably stronger for that data and the record should show where they came from.
Measured against zenith-cap2 in single-threaded self-play at 8+0.08 over 4,000 games: about +10 Elo,
95% interval roughly +1 to +18. The interval allows for the opening set being only 306 positions, so each
opening is replayed about 6.5 times; that correlation was measured rather than assumed. So removing the
PlentyChess data cost Zenith nothing — it gained a little.
The network is the shared Reckless NNUE network, produced by the shared training pipeline. Zenith's own
datagen and trainer/ exist but did not produce these weights. The major version marks the network
provenance change and the new network format, not a search rewrite.
Training-data attribution
The network was trained on positions from the Leela Chess Zero self-play training data
(https://storage.lczero.org/files/training_data/), runs test91 and test60, published under the
Open Database License 1.0 (http://opendatacommons.org/licenses/odbl/1.0/) with its contents under the
Database Contents License 1.0 (http://opendatacommons.org/licenses/dbcl/1.0/):
Position data from the Leela Chess Zero self-play training data
(https://storage.lczero.org/files/training_data/), run test91, used under the Open Database License 1.0
(http://opendatacommons.org/licenses/odbl/1.0/).Position data from the Leela Chess Zero self-play training data
(https://storage.lczero.org/files/training_data/), run test60, used under the Open Database License 1.0
(http://opendatacommons.org/licenses/odbl/1.0/).
A trained network is an ODbL Produced Work, so distributing it obliges that notice. ODbL does not require
the network itself to be ODbL-licensed, and does not make it GPL merely because this project's code trained
it. Every archive here carries
THIRD-PARTY-NOTICES.md,
and the engine prints the notice itself: zenith license, or license inside the UCI loop.
What's Changed
- Open 1.d4 about a fifth of the time: ship zenith-book-r5 by @jonny-reckless in #56
- Run CI and the release on GitHub-hosted runners by @jonny-reckless in #57
- Remove the external dataset's name, author and URL from the tree by @jonny-reckless in #58
- Move Zenith's NNUE onto the shared RNNUE1 net container by @jonny-reckless in #59
- Say on both streams which net is playing when EvalFile is refused by @jonny-reckless in #61
- The documented training command would build a net the engine refuses by @jonny-reckless in #62
- Ship a net trained on Leela Chess Zero data, and credit PlentyChess for the earlier ones by @jonny-reckless in #63
- Describe the net honestly in the README, and pin Threads in the SPRT harness by @jonny-reckless in #64
- Attribute the ODbL training data the shipped network was trained on by @jonny-reckless in #65
Full Changelog: v2.1.0...v3.0.0