Skip to content

4.3.0

Compare
Choose a tag to compare
@kelseyde kelseyde released this 05 Oct 19:09
· 194 commits to main since this release
4b43a99

Calvin 4.3.0 brings significant improvements to Calvin's evaluation function, as well as a grab bag of small gains in search and move ordering.

For evaluation Calvin uses a new neural net, with an increased hidden size of 512, trained on 950 million positions. Calvin also now uses a new activation function, switching from crelu to screlu - which brought a very significant strength jump.

In search, Calvin uses some new pruning techniques, including history pruning, history-based late move reductions, capture late move reductions, and razoring.

Test results from self-play suggest a new elo rating about 100 higher than the previous release:

STC (8+0.08):

Score of Calvin DEV vs Calvin: 655 - 234 - 611  [0.640] 1500
Elo difference: 100.2 +/- 13.7, LOS: 100.0 %, DrawRatio: 40.7 %

LTC (30+0.3):

Score of Calvin DEV vs Calvin: 214 - 57 - 229  [0.657] 500
Elo difference: 112.9 +/- 22.5, LOS: 100.0 %, DrawRatio: 45.8 %

These results, combined with tests against other engines of similar strength, suggest an estimated rating of around 3250 - 3300.

⚖️ Evaluation

  • Switch to screlu activation function (#122)
  • Increase hidden layer size -> 512 (#138)
  • Significant NNUE code refactor (#137)

🔍 Search

  • History pruning (#127)
  • History reductions (#139)
  • Capture late move reductions (#142)
  • TT eval correction (#146)
  • Razoring (#131)
  • SPSA tunes (#144, #145)

🔢 Move ordering

  • Only update quiet history on fail high (#113)
  • Only update capture history on fail high (#114)
  • 2-ply continuation history (#104)

⚡ Performance

  • Call garbage collector on UCI newgame (#112)
  • Optimise MovePicker (#129)

How to run

Please download one of the jar files from this release. There are two release jars: calvin-chess-engine and calvin-chess-engine-no-simd. The no-simd release is specifically for CCRL testers: since ChessGUI does not support passing Java opts to a jar file, the Vector API which Calvin uses for NNUE must be disabled.

For the standard calvin-chess-engine release, Calvin can be started by running the command:

java --add-modules jdk.incubator.vector -jar path/to/calvin-chess-engine-4.3.0.jar

For the CCRL calvin-chess-engine-no-simd release, the Java opt can be ommited:

java -jar path/to/calvin-chess-engine-no-simd-4.3.0.jar