New rofChade released: version 3.0

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!

Working on the first NNUE release

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:

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…..

New rofChade released: version 2.3

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!

PeSTO: Piece Square Tables Only

Right now PeSTO is participating in the Qualification League of TCEC S17. PeSTO is an “experimental” chess engine in that it has only minimal chess knowledge in it’s evaluation and that it depends on the AB search as much as possible as opposed to the recent development of Neural Network engines which rely foremost on complex learned chess knowledge.

The most elementary chess knowledge is the relative value of the chess pieces. Playing with only that knowledge is (still?) not enough to let PeSTO play reasonably good chess, although it performs very good in tactical testsuites like WAC. It also needs some elementary positional knowledge to play reasonable chess. The simplest form of positional knowledge are Piece Square Tables (PST), in which a value is assigned to every square on the board for every piece. A higher value for the square means a general better position for that piece.

The values change during the course of the game. In the beginning of the game it’s better for the king to stay on his own border of the board, in the endgame the king should be away from it’s own border. That’s why there are 2 PST for each piece, one for the opening and one for the endgame. Depending on how many pieces are left on the board the values between opening and endgame are interpolated accordingly (so called tapered evaluation). In addition to the piece values and PST there is a tempo bonus for the side to move, and that’s it, no other chess knowledge is present in PeSTO.

PeSTO uses different tables than rofChade and also has some search tweaks (most important less aggressive LMR due to worse move ordering). The tables are tuned with the Texel tuning method.

If you want to use PeSTO, you can download it in the download section.

New rofChade released: version 2.202

This release is mainly a bugfix of release 2.2, it also contains a LMR tweak which will add around 10 elo.

The bug: When the search was pondering or in infinite analysis mode, sometimes the search would return a “bestmove” prematurely. This is not correct and some GUI’s can not cope with this bug and crash (for instance the Shredder GUI).

A big thanks to Gerhard of the cegt team for noticing the bug and helping to find the cause! and a big thanks to all who take interest in rofChade.

New rofChade released: version 2.2

After a longer period of little activity I got a boost to develop a new rofChade version after trying a retune with the “lichess-good” set as discussed in the topic about Texel tuning viewtopic.php?f=7&t=71469#p807692, I got an elo increase of around 30 elo! So thanks Fabian, Jon and Vivien for discussing the topic and making the position set available!

Version 2.2 also contains multiple changes which resulted in an estimated elo gain of 50/70 elo single threaded. Because of some changes to hash table and multi threading the elo gain with multiple threads is hopefully a bit higher.

rofChade 2.2 can be downloaded under the tab “Download”. Under the tab “Releases” the version changes are defined.

Thanks to everybody who takes interest in rofChade!

New rofChade released: version 2.1

There is a new “official” release available of rofChade, version 2.1. Between version 2.0 and 2.1 multiple intermediate versions have been participating in different tournaments (TCEC, CCC, International GSEI web tournament, Swiss tournament and Graham’s Amateur Series).

In addition to multiple search optimizations, version 2.1 also contains syzygy Tablebase support via the fathom library. All the changes of version 2.1 are shown under the release tab.

A special thanks go to Ronald de Man, Basil Falcinelli and Jon Dart for making the implementation of endgame Tablebases (syzygy) a breeze, and to all the testers, who devote a lot of time in testing rofChade (and many other engines).

Finally, thanks to everybody who takes interest in rofChade!

New version with regular eval released: rofChade 2.0

A preliminary version of rofChade with regular evaluation terms has been participating in TCEC season 14, so it’s time to release an “official” version which is entitled version 2.0.

Version is a slightly enhanced version compared to the one that was competing at TCEC. For more details see the release page.

The Windows and Mac versions can be downloaded from the download page.

TCEC Season 14, Div3 sixth place

During the Div4 tournament I had been experimenting with the search part of rofChade together with the added evaluation terms. Version 1.0 only had material and Piece Square Tables for evaluation, but with the added evaluation elements it seems that LMR reductions can be a more aggressive than without the eval terms. Probably the move sorting of the quiet moves becomes a bit more accurate with more eval.

The version with more aggressive LMR seemed a bit better and I had also been playing with the usage of the hash table in quiescence search. Because the TCEC tournament runs on a dual processor machine with 44 physical cores,  I thought that not using the hashtable in quiescence might be better. Testing on my Threadripper 1950X showed some elo gain.

So eventually I decided to play with the new version in Div3. In Div3 the new version performed fairly good. Not using the hashtable in quiescence made the NPS go up from 58M to around 73M in the opening phase, but with lazy SMP more NPS not necessarily means better. Eventually it lost too much games in the last round and ended sixth place. Lc0 and Komodo MCTC ended first and second and where too strong for the rest of the Division(also for Div2 in which they also finished first and second).

The difference between places 3 to 6 was just 0.5 point, and because rofChade crashed one time in a dead draw endgame against Arasan and the TCEC tiebreak rules it ended up sixth.

Fortunately I was able to find the bug that caused the crash, so that crash won’t happen again in the future.  

Sixth place ensured a stay in Div3 for the next season, so hopefully rofChade will do even better then!

TCEC Season 14, Div4 second place

Thanks to the great work of Graham Banks rofChade was able to participate in the TCEC Season 14 tournament. There was a small problem however, I was still in the middle of playing, testing and tuning of rofChade for the upcoming CSVN tournament, so there was not a rofChade version available and the expected start of  TCEC season 14 was the next days.

So overnight a tuning run was started, and after some testing of that version, it was send to the TCEC organisation. Turned out, it was just minutes before the start…. When I looked  at the TCEC site just minutes after sending the version to see when the tournament would start, it was already playing some games in the testrun!  

During the tournament rofChade played very good and ended second place, behind the Komodo MCTC version. It even managed to win one game from Komodo with an original checkmate on the board, which is a rare occasion at TCEC because of the adjudication rules.

Second place means promotion to Div3!