Hobbes, strong chess engine written in Rust, with NNUE evaluation trained from zero knowledge, using self-generated training data.
Hobbes started off as a rewrite of my Java chess engine, Calvin, although it has now surpassed Calvin by quite some distance. It is also my first project in the Rust programming language.
Author: Dan Kelsey
Hobbes 2.0 what's new?
Hobbes 2.0 is here!
The main change since 1.0 is the introduction of a multilayer neural network, along with several net-related features and optimisations. In search, it's a grab-bag of small improvements, the highlights being 'mini-probcut' TT pruning, low-depth singular extensions, and reducing the RFP margin if the opponent is worsening.
Progress tests against 1.0 indicate a strength improvement of around 50 elo:
Elo | 50.23 +- 6.20 (95%)
Conf | 40.0+0.40s Threads=1 Hash=64MB
Games | N: 3002 W: 925 L: 494 D: 1583
Penta | [3, 180, 714, 591, 13]
https://openbench.nocturn9x.space/test/6978/
What's Changed
A curated selection of pull requests; for a comprehensive list, consult the changelog: 1.0...2.0
⚖️ Evaluation
Multilayer neural network (#316)
Increase L1 size to 1536 (#346)
Sparse matrix multiplication (#344)
Re-permute net for sparsity (#370)
Merged king planes (#364)
🔍 Search
SF-style probcut TT pruning ('mini-probcut') (#319)
Low-depth singular extensions (#330)
Low-depth singular double extensions (#359)
Adjust RFP margin if opponent is worsening (#366)
Only TT cutoff if (tt_score < alpha || cutnode) (#358)
Don't instantly prune in LMP (#310)
Fractional NMP (#311)
Fix insufficient material detection (#313)
Use improvement in LMP (#315)
Allow LMR extensions (#324)
Tweak s_beta formula (#333)
Move singular extensions outside move loop (#337)
Use singular move score in LMR (#338)
Reduce LMR depth in cut nodes (#342)
Add a bunch of LMR fail-yellows + SPSA tune (#354)
Add more terms to mini probcut + 80k SPSA tune (#363)
SPSA 80k LTC (#329)
Acknowledgements
As always, I am extremely grateful to the community of engine developers for sharing their knowledge and expertise, without which Hobbes would still be languishing in the dark ages. For Hobbes 2.0 I especially am thankful to @JonathanHallstrom for guiding me through the multilayer NNUE journey. And finally, a big thanks to engine testers for testing the stuff we write, and keeping the leaderboards up to date.
The main change since 1.0 is the introduction of a multilayer neural network, along with several net-related features and optimisations. In search, it's a grab-bag of small improvements, the highlights being 'mini-probcut' TT pruning, low-depth singular extensions, and reducing the RFP margin if the opponent is worsening.
Progress tests against 1.0 indicate a strength improvement of around 50 elo:
Elo | 50.23 +- 6.20 (95%)
Conf | 40.0+0.40s Threads=1 Hash=64MB
Games | N: 3002 W: 925 L: 494 D: 1583
Penta | [3, 180, 714, 591, 13]
https://openbench.nocturn9x.space/test/6978/
What's Changed
A curated selection of pull requests; for a comprehensive list, consult the changelog: 1.0...2.0
⚖️ Evaluation
Multilayer neural network (#316)
Increase L1 size to 1536 (#346)
Sparse matrix multiplication (#344)
Re-permute net for sparsity (#370)
Merged king planes (#364)
🔍 Search
SF-style probcut TT pruning ('mini-probcut') (#319)
Low-depth singular extensions (#330)
Low-depth singular double extensions (#359)
Adjust RFP margin if opponent is worsening (#366)
Only TT cutoff if (tt_score < alpha || cutnode) (#358)
Don't instantly prune in LMP (#310)
Fractional NMP (#311)
Fix insufficient material detection (#313)
Use improvement in LMP (#315)
Allow LMR extensions (#324)
Tweak s_beta formula (#333)
Move singular extensions outside move loop (#337)
Use singular move score in LMR (#338)
Reduce LMR depth in cut nodes (#342)
Add a bunch of LMR fail-yellows + SPSA tune (#354)
Add more terms to mini probcut + 80k SPSA tune (#363)
SPSA 80k LTC (#329)
Acknowledgements
As always, I am extremely grateful to the community of engine developers for sharing their knowledge and expertise, without which Hobbes would still be languishing in the dark ages. For Hobbes 2.0 I especially am thankful to @JonathanHallstrom for guiding me through the multilayer NNUE journey. And finally, a big thanks to engine testers for testing the stuff we write, and keeping the leaderboards up to date.

Comments
Post a Comment