Releases: Disservin/Smallbrain
Smallbrain v7.0
Release
I am happy to release version 7 of Smallbrain!
As always the codebase is constantly evolving and many areas have been rewritten and cleaned up.
I've also added the support of FRC/DFRC and an earlier FRC version is already on place 20 CCRL FRC!
DFRC data has been included in the latest net as well.
Its becoming quite the bigbrain lately ; )
Events
Smallbrain is currently playing in the S24 Swiss 4 at TCEC and I'mexcited to see where it ends up.
It's also a newcomer at CCC and played in the CCC 19 Bullet Tournament.
Comparison against v6.0 at 8+0.08s.
ELO | 101.23 +- 6.73 (95%)
CONF | 8.0+0.08s Threads=1 Hash=16MB
GAMES | N: 5000 W: 1932 L: 515 D: 2553
Binaries
You will find a ton of pre-built binaries down below but I recommend compiling yourself since this will generate the fastest
executable. If you want to use one of the provided executables just choose the one which doesnt crash and is the fastest.
If any of the binaries dont work but should on your system feel free to message me.
If you need assistance with getting a good binary for engine testing feel free to message me as well.
If you want the fastest possible one you need a C++ Compiler and make after that you can just run make like this in the ./src
folder.
make -j
Smallbrain v6.0
Release
After months of development I now release 6.0.
A lot in the codebase has changed and has been rewritten, a lot of parts are now cleaner and smaller.
This version uses a neural network trained on smallbrain data. About 500 million depth 9 fens, 5% was special endgame generated data + 95% normal selfplay data.
EDIT
I just discovered a SMP bug, I have updated the binaries down below, so if you already used these builds for multi core testing please
update the builds, for single threaded use cases there should be no difference.
29/10, releases contain the correct compilation date.
Comparison against v5.0 at 8+0.08s.
ELO | 193.45 +- 7.82 (95%)
CONF | 8.0+0.08s Threads=1 Hash=16MB
GAMES | N: 5000 W: 2799 L: 271 D: 1930
Syzygy support has also been added and gains decent elo at 8+0.08s.
# PLAYER : RATING ERROR POINTS PLAYED (%)
1 smallbrain5.0_syzygy_6 : 8.2 4.6 5103.0 10000 51.0%
2 smallbrain5.0 : 0.0 ---- 4897.0 10000 49.0%
White advantage = 125.60 +/- 2.36
Draw rate (equal opponents) = 61.95 % +/- 0.59
Binaries
You will find a ton of pre-built binaries down below but I recommend compiling yourself since this will generate the fastest
executable. If you want to use one of the provided executables just choose the one which doesnt crash and is the fastest.
If any of the binaries dont work but should on your system feel free to message me.
If you need assistance with getting a good binary for engine testing feel free to message me as well.
If you want the fastest possible one you need a C++ Compiler and make after that you can just run make like this in the ./src
folder.
make
Smallbrain v5.0
Release
A lot has happened since version 4.0!
Smallbrain now supports multithreading. Yay!
Early Lazy SMP Tests show a gain of ~100 elo using 4 Threads vs 1 Thread
ELO | 127.64 +- 17.03 (95%)
CONF | 5.0+0.05s Threads=4 Hash=64MB
GAMES | N: 1035 W: 495 L: 131 D: 409
It also features a bunch for other new stuff and is in total 200 elo stronger (not counting smp strength) than 4.0!
The biggest elo gainer was fixing how I use TT moves during move ordering.
Another big elo gain was also a big search tune, tuning 11 parameteres.
Elo test against v4.0
ELO | 211.87 +- 19.73 (95%)
CONF | 40.0+0.40s Threads=1 Hash=64MB
GAMES | N: 1000 W: 616 L: 72 D: 312
What's Changed
- special qsearch functions by @Disservin in #92
- score qmove by @Disservin in #93
- seperate tt store code by @Disservin in #94
- small cleanup by @Disservin in #95
- cleanup uci commands by @Disservin in #96
- cleanup setoption by @Disservin in #97
- smaller TEntry and different replacement strategy by @Disservin in #98
- remove ply from absearch by @Disservin in #100
- random draw eval by @Disservin in #101
- time change and cleanup by @Disservin in #103
- newdepth variable by @Disservin in #104
- removing old code by @Disservin in #107
- goto moves loop by @Disservin in #108
- beautify move scores by @Disservin in #111
- some more movegen cleanups by @Disservin in #114
- lower razor margin by @Disservin in #115
- fix out of bounds access by @Disservin in #119
- tune search constants by @Disservin in #120
- initialise TT to zero by @Disservin in #121
Full Changelog: 4.0.0...5.0.0
Smallbrain v4.0
Release
Since version 3.0 I've primarily worked on my search and got some improvements there, like using the SEE algorithm.
I've also reduced the size of a move and thus the size of each TT Entry which gained some strength.
Changes to the NN arch have not been made. More changes can be found in the release log.
As of right now it looks like v4.0 is 3000+ elo.
Feel free to message me if you run a tournament with Smallbrain or plan to do so.
Elo test against v3.0
ELO | 129.15 +- 13.00 (95%)
CONF | 1.0+0.1s Threads=1 Hash=8MB
GAMES | N: 2000 W: 1025 L: 314 D: 661
ELO | 118.33 +- 17.83 (95%)
CONF | 40.0+0.40s Threads=1 Hash=64MB
GAMES | N: 1000 W: 482 L: 154 D: 364
What's Changed
- 16 bit move by @Disservin in #73
- razoring by @Disservin in #72
- fix bench by @Disservin in #74
- cleanup and stack by @Disservin in #76
- improving variable + lower reverse fut margin by @Disservin in #77
- use previous eval for nullmoves by @Disservin in #78
- staticEval >=beta nmp by @Disservin in #79
- history updates by @Disservin in #80
- dont use nullmove eval by @Disservin in #81
- see algorithm by @Disservin in #82
- movecount pruning by @Disservin in #84
- see move ordering by @Disservin in #85
- simplify ttentry by @Disservin in #86
- simplify move scoring by @Disservin in #87
- see pruning in search by @Disservin in #88
- fix stuck search by @Disservin in #89
- fix currentmove for nullmove by @Disservin in #90
Full Changelog: 3.0.0...4.0.0
(same 4.0 release fixed makefile generated name)
Smallbrain v3.0
Release
Im really happy to relase Version 3.0.
This new version features a NNUE as the main evaluation.
NNUE
The evaluation is now completely replaced by a NNUE.
The architecture is quite simple:
768 inputs -> 256 neurons -> 1 output
The net was trained on 300 million fens generated given by Luecx (from Koivisto), as well as using his CUDAD trainer.
He has played a major role in explaining to me how to train and use a NNUE for chess engines and I am thankful for all the support he has provided. Without him any of this would not have been possible.
The network architecture will hopefully be expanded in the future, together with me generating my own training data.
The additional playing strength is so large that selfplay results are almost meaningless, due to almost no loses.
Elo test
Test against dbd78f1 (commit before #71 )
ELO | 504.32 +- 46.09 (95%)
CONF | 8.0+0.08s Threads=1 Hash=8MB
GAMES | N: 1000 W: 920 L: 24 D: 56
ELO | 586.77 +- 59.68 (95%)
CONF | 40.0+0.40s Threads=1 Hash=64MB
GAMES | N: 1000 W: 949 L: 15 D: 36
Test against smallbrain V2.0
ELO | 532.75 +- 53.33 (95%)
CONF | 8.0+0.08s Threads=1 Hash=8MB
GAMES | N: 1000 W: 938 L: 27 D: 35
What's Changed
- faster draw in #61
- new pawn eval in #64
- larger default hash + better material eval in #65
- lmr reduction with depth and mademoves in #66
- NNUE in #71
Full Changelog: 2.0.0...3.0.0
I've included the default network in the assets too, although this is (should be) not required to use the engine, since the network is included during the compilation.
Smallbrain v2.0
Im happy to release Version 2.0.
Since version 1.0 a lot has happened and it is now ~190 elo stronger.
Changes
All changes are primarly search related, although there a few additions to time management.
A few speedups were made in the move generation as well as makemove function.
No changes in the evaluation of a position, it is still only psqt + material count and a small bonus for high rank pawns.
Elo test against v1.0
ELO | 190.49 +- 13.51 (95%)
CONF | 60.0+0.60s Threads=1 Hash=64MB
GAMES | N: 2584 W: 1681 L: 391 D: 512
ELO | 148.43 +- 21.04 (95%)
CONF | 10.0+0.10s Threads=1 Hash=8MB
GAMES | N: 1000 W: 602 L: 199 D: 199
Smallbrain v1.2
This version is a bit stronger than my previous release and fixes some bugs.
Changes
Elo gains are mostly from changes in the search and the move generation for sliders was switched to black magic, which is slightly faster.
(Thanks to gigantua chess movegen and dangi12012).
This release also fixes a bug that occured when movestogo was at the front of the uci command instead of being at the end, as well as a move generation bug fix.
Elo test against v1.1
ELO | 55.62 +- 26.38 (95%)
CONF | 60.0+0.60s Threads=1 Hash=64MB
GAMES | N: 504 W: 223 L: 143 D: 138
Elo test against v1.0
ELO | 118.86 +- 28.17 (95%)
CONF | 60.0+0.60s Threads=1 Hash=64MB
GAMES | N: 504 W: 274 L: 108 D: 122
Smallbrain v1.1
This version is a bit stronger than my previous release, thus a small release.
Changes
Most notable changes were adjustment to move scoring, selection sort only for the next move,
better null move pruning conditions as well as better lmr reduction and some other small speedups.
Elo test against v1.0
ELO | 76.35 +- 27.19 (95%)
CONF | 60.0+0.60s Threads=1 Hash=64MB
GAMES | N: 504 W: 244 L: 135 D: 125
Smallbrain v1.0
This is the first release of Smallbrain, initially written in python (very poorly).
Then implemented in C++ (cppSmallbrain), due to the code's bad structure I decided to restart
from scratch and build a more clean code basis (this).
A match between Drofa 1.0.0 shows promising results.
TC: 40/4 (4 minutes)
# PLAYER : RATING ERROR POINTS PLAYED (%)
1 Smallbrain : 2225.4 94.0 36.5 50 73.0%
2 Drofa 1.0.0 : 2051.0 ---- 13.5 50 27.0%
White advantage = 8.89 +/- 48.64
Draw rate (equal opponents) = 30.98 % +/- 8.03