I’ve been doing a lot of NN training for TCEC season 22, which eventually resulted in an unbelievable 4th place in the premier division! The infra final for 3th place against Lc0 showed that there is still a mayor gap between the top 3 engines and the rest including rofChade, but still an amazing result.
After the tournament I didn’t have much time to work on rofChade anymore, so it took some time to release the first NN version of rofChade, but here it is!
The current NN network architecture is HALFKA (2×256)x32x32x1. For now, this still gives the best results for rofChade. The network is trained with 2.8B by rofChade generated positions. Around 600M of them are FRC positions. The positions have been rescored a few times with intermediate networks to simulate Reinforcement learning.
The NN code is implemented from scratch, the matrix calculations are heavily influenced by the Cfish implementation. For the training of the networks an older version of the nnue-pytorch trainer from Stockfish is used as base.
To be able to generate FRC positions for training, rofChade 3.0 also supports FRC and DFRC chess variants.
I also upgraded the version of the fathom library, so that 7-men syzygy tablebases are also supported (although I haven’t been able to test if it works).
A special thanks to this version goes to the following persons/groups:
- Ronald de Man for his matrix calculations in Cfish and the syzygy tablebase library
- The group that develops the nnue-pytorch trainer (and their interesting discussions on discord)
- Andrew Grant for sharing his experience with his FRC implementation and perft test data. It helped me to discover some unexpected FRC bugs
- Jon Dart for the fathom library and updates on it
- Frank Quisinsky for letting intermediate rofChade versions play in it’s tournament
- IpmanChess for testing some intermediate rofChade versions
- Graham banks and the rest of the CCRL team for doing a great testing job for so long
- The TCEC and CCC team to organize great tournaments
- Everybody else who enjoys (computer) chess!
Finally I have found the energy to work on the first NNUE release of rofChade. I already started this summer with rewriting the NNUE support in rofChade, and developed some tools for generating positions, recalculating positions and recalculating the gameresult of game positions.
With these tools I created 1 Billion positions, and recalculated the positions with the old evaluation of rofChade with depth 10, but could’t find the energy to start working on a trainer.
As happened before, the upcoming CSVN tournament (which in the end was canceled due to new covid regulations in the Netherlands) was the final push to really start with a trainer. Eventually I decided to use Stockfishes pytorch trainer for the training part and started training. Thank you for making the trainer available for everybody!
After some initial issues I was able to create a “standard” HALFKA network trained on the 1B positions and the result was already impressive. + 100 elo….. This test version runs in Frank Quisinsky FCP Tourney-2022, he was kind enough to let the initial version run in the tournament! You can find the tournament here: https://www.amateurschach.de/
In the meantime I was able to get around 40 more elo out of the current dataset with the old evaluation, by finetuning the trainer parameters.
I did a recalculation of the dataset with the first NNUE network, but after some 10 days of recalculation with 126 threads, the results of the training are disappointing. I hope there is a bug in the NNUE recalc software, otherwise I will have to start with different recalc strategies.
I’m not yet where I want to be with the first “official” release of a NNUE rofChade, but I’m getting closer…..
It’s getting harder and harder to make progress in rofChade but it looks like this version is stronger than 2.202 by 30 to 40 elo.
Main focus areas for the coming version are tuning and multi threading.
rofChade 2.3 can be downloaded under the tab “Download” and is available for Windows, Linux, Mac and Raspberry Pi. Under the tab “Releases” the version changes are defined.
A special thanks for this version goes to Ipmanchess who noticed a time management bug in sudden death games and tested the fix. Another special thanks goes to Alayant for sharing his solution on “endgame complexity.”
Thanks to all the testers and everybody who takes interest in rofChade!