Berserk 9
Details
Another release for Berserk! This patch sees major changes in NNUE and many minor adjustments in search.
This patch introduces a new architecture in Berserk, a horizontally mirrored 8 bucket system. This results in a 6144 -> (512x2) -> 1
final architecture. This network was trained using Koivisto's Trainer using ~8B FENs from Berserk 8.5.1 self play games.
Along the way of working on NNUE, many minor search patches have been added. They were all minor, but lots of small changes add up.
STC on an imbalanced book
ELO | 82.98 +- 5.14 (95%)
CONF | 8.0+0.08s Threads=1 Hash=8MB
GAMES | N: 10000 W: 3985 L: 1641 D: 4374
LTC on a balanced book
ELO | 54.37 +- 2.65 (95%)
CONF | 40.0+0.40s Threads=1 Hash=64MB
GAMES | N: 17000 W: 3605 L: 966 D: 12429
Self play results vs Berserk 8.5.1, self play results do not reflect exactly when playing vs other engines.
Thanks
I'd like to personally thank two community members during this release. First, Finn Eggers (Koivisto Author), for helping getting Berserk setup on the Koivisto Trainer. His CUDA based trainer improved Berserk network training time from a week to four hours per network. This speedup is a large motivator for me to continue developing Berserk and its networks. Moving forward, I will spend my efforts working on the CudAD trainer alongside Finn to improve it for both Berserk and Koivisto.
I would also like to thank Dariusz Domagała. He has used his personal time to create a wonderful page for the Berserk chess engine, and I recommend you visit this page.
Changes
Search
- Razoring
- Static Evaluation values tuned
- Hash move reduction on potential multicut
- History indexing improved
- Threats in main history now utilize entire opponent attack map
- Continuation history in a single table utilizing color indexing
NNUE
- New architecture utilizing a horizontally mirrored 8 bucket system
6144 -> (512x2) -> 1
- Fast refresh logic for ~3.5% speedup
Misc
go nodes
support added- Prevent search from ending early while pondering
- Low piece endgame specific evals
- No increment timeouts fixed
- Removed dynamic contempt
- Prefetch executed prior to updates for ~6% speedup
- Search explosions due to double extensions limited
Choosing a binary
Binaries currently require popcnt
and sse2
.
Binaries with the label avx2
require your processor to support avx2
.
Binaries with the label pext
require your processor to support bmi2
.
If you're unsure which to use or what your processor supports
- Download them all
- Open them and run
go depth 24
- If it crashes, you can't use it.
- Pick the fastest one
I highly recommend you follow the build guide in the readme to compile your own version. This will generate a native build for your machine and should be optimal as a result.