Skip to content

Berserk 9

Compare
Choose a tag to compare
@jhonnold jhonnold released this 15 Jun 00:16
· 246 commits to main since this release

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.