Skip to content

Releases: Luecx/Koivisto

Koivisto 9.0

15 Jan 22:12
Compare
Choose a tag to compare

Today, we are excited to announce the release of Koivisto 9. After a six-month break, we are back and eager to continue development. The majority of the strength increase since Koivisto 8 comes from improvements in training data, but we also made some small search adjustments.

ELO   | 89.70 +- 3.53 (95%)
CONF  | 8.0+0.08s Threads=1 Hash=8MB
GAMES | N: 20000 W: 7876 L: 2824 D: 9300

We had the pleasure of working with Jay (author of Berserk) which resulted in both of our engines merging and sharing a neural network training framework as well as training data. This collaboration led to a significant increase in strength:

ELO   | 19.41 +- 6.65 (95%)
SPRT  | 40.0+0.40s Threads=1 Hash=64MB
LLR   | 2.95 (-2.94, 2.94) [0.00, 2.50]
GAMES | N: 5072 W: 1369 L: 1086 D: 2617

ELO   | 20.02 +- 6.80 (95%)
SPRT  | 8.0+0.08s Threads=1 Hash=8MB
LLR   | 2.96 (-2.94, 2.94) [0.00, 2.50]
GAMES | N: 4968 W: 1373 L: 1087 D: 2508

The addition of more training data also contributed to nice gains:

ELO   | 29.79 +- 2.91 (95%)
CONF  | 8.0+0.08s Threads=1 Hash=8MB
GAMES | N: 16848 W: 3334 L: 1893 D: 11621

Although we don't have regression tests to show for the search improvements and speed-ups, they are where the rest of the gains come from. Attached you can find executables for AVX2 and SSE systems. Executables for PEXT and/or AVX512 systems are available via Ipman.

With love and appreciation,
Finny and Kimmy.

Koivisto v8.0

15 Mar 14:35
Compare
Choose a tag to compare

Koivisto 8.0

Fellow chess enthusiasts,
It's been a while since we released v7.0, but now it's finally time for another release. Koivisto has improved in all areas since (search, time managment, and evaluation), and is now so much stronger that we just couldn't justify delaying the release further.

ELO   | 151.93 +- 3.24 (95%) 
CONF  | 8.0+0.08s Threads=1 Hash=8MB 
GAMES | N: 20000 W: 8925 L: 697 D: 10378

Feautering with this release, we created a website for Koivisto which even allows you to play Koivisto in your browser (this is experimental for now): koivisto-chess.com. It contains informations about the engine, the history and the people working on this project. Furthermore you can download the latest released version, which should be Koivisto 8.0 from the website as well as from out github release page. If you find any bugs within the website, feel free to let us know :)

Coming with Koivisto 8.0, we reworked the neural network architecture various times. We came up with an input mapping which will hopefully be able to distinguish between crucial king positions and also avoid overfitting on the restricted dataset from Koivisto self-play games we use for training. Our training pipeline has been reworked and has been ported to CUDA. The project for the Tuner is publicly available. A detailed explanation on our solution can be found on our wiki.

A special thanks goes to the open source chess engine community, especially the OpenBench community. Discussions with other members of the OpenBunch have been invaluable for the development of Koivisto. One case worth mention is threat history, a great idea by Connor first implemented in his engine Seer. This was based on the Koi definition of threats, but combining it with history. Connor's Idea then made it back to Koivisto, gaining ~5 elo. The general interaction with other wonderful engine developers has gained us much more.

We believe engines being open source is essential for sharing ideas & progress. The impact of Stockfish can hardly be overstated, but we believe weaker engines have a lot to contribute too. Progress in computer chess has been a collective effort, and we believe that's something we should cherish.

Finny & Kimmy.

Koivisto v7.0

31 Oct 16:29
Compare
Choose a tag to compare

Koivisto 7.0

Howdy fellow chess enthusiasts,

It's been a while since we released 6.0, but now it's finally time for another release. Just a few days ago we passed the usual 100 stc self-play Elo we aim for for every release. Most of the gains come from search patches, although the embedded network is also significantly stronger.

This milestone also marks the end of simplistic neural network architectures inside Koivisto. More complex architectures are planned and there may even be neural networks used apart from evaluation. We have a number of ideas, and we look forward to seeing their results inside Koivisto.

STC:
ELO   | 107.31 +- 3.91 (95%)
CONF  | 8.0+0.08s Threads=1 Hash=8MB
GAMES | N: 13120 W: 4896 L: 968 D: 7256

LTC:
ELO   | 89.39 +- 4.86 (95%)
CONF  | 60.0+0.60s Threads=1 Hash=8MB
GAMES | N: 6256 W: 1857 L: 282 D: 4117

Koivisto 7.0 will play in the upcoming TCEC swizz.
Compiles for Windows and Linux can be found below.

With love,
Finny & Kimmy

Koivisto v6.0

21 Jul 11:54
Compare
Choose a tag to compare

Howdy fellow chess enthusiasts,

Not long ago we have released Koivisto 5.0 with the goal of making a unique engine based on training data generated by its previous version, with its own tuning and inference code. Since 5.0, which marked the release of our first neural network, many things happened. Firstly, we tweaked the feature transformer in a way that we require more than just one accumulator. Making the input to the network effectively relative to the side to move, we gained about 30 Elo. Further patches followed tweaking the search, making it more aggressive since the prediction of the network outperforms our previous RME.

Furthermore we introduced a completely new time-management scheme which, as far as we know, has never been tested in any other engine. We use the internal node counts for subtrees to check how many good moves at the root there are and based on that, increaes or decrease the time we spend on the search.

Lastly, we took over one week to generate 2^24 = 16.777M games. Resulting in approximately 1 billions fens which are scored using a depth 10 search as well as the game outcome. The results surpassed our expectations by a big margin resulting in:

ELO   | 88.83 +- 3.46 (95%)
CONF  | 10.0+0.10s Threads=1 Hash=16MB
GAMES | N: 20000 W: 7664 L: 2659 D: 9677

Since 5.0, we also tracked the elo changes compared to 5.0. The entire list can be found inside our wiki.

Latest regression seems to result in about 200 Elo compared to 5.0. Since we are far from done with the network, yet want to releae as soon as we pass 100 Elo over the latest release, we decided to release Koivisto 6.0 today.

ELO   | 198.74 +- 5.64 (95%)
CONF  | 10.0+0.10s Threads=1 Hash=16MB
GAMES | N: 10032 W: 5762 L: 577 D: 3693

Kim & Finn

Koivisto v5.0

07 Jul 18:20
Compare
Choose a tag to compare

It has been a long time since we released Koivisto 4.0 and many things happened since. We are actively developing Koi while not wanting Koivisto to be tested by third parties who also list obvious clones which makes the ratings increditable.

We dislike the popularity of neural networks inside chess engines, not because we do not understand how they work but mostly those who use them seem to not understand what they are actually doing.
Using neural networks does not require any understanding of chess which you would need when writing a hand-crafted-evaluation or as we like to refer to: real-men-evaluation (RME). Using neural networks became more of an engineering challenge than anything else. 3 components are required for them which is: a good tuner, good data, good engine implementation. Since a good tuner requires some understanding of how they work, most engines out there seem to be using other peoples tuners. Effectively there are just a few tuners out there but a lot more NN engines. Secondly, generating data seems to be a privilege to the big projects which gather computing resources around them. The easiest part is probably the NN implementation inside the engines themself although even here many people seem to ctrl+c, ctrl+v popular implementations.

Since we personally work with neural networks beside chess engine development, we decided to write our own tuner... from scratch... We already did this a few months ago but just a few days ago we decided to give it a shot and actually tune a few networks. We generated around 1.5M selfplay-games with Koivisto, extracted a few positions and initially ended up with around 50M positions. Later we realised, the filtering mechanism we applied was bad and simply wrong. This lead to a neural network which beat our master branch by just 40 elo. Since there are other parties helping out with Koivisto like @justNo4b who generated some data with Drofa himself, he used the tuner and generated a network which was suddenly +80 elo above master.

The result seemed slightly surprising so we rechecked the data generation and filtering and found a bug. After redoing the training process which barely took one hour, we tested a new network which showed the following result:

ELO   | 103.93 +- 5.74 (95%)
CONF  | 10.0+0.10s Threads=1 Hash=16MB
GAMES | N: 10240 W: 5019 L: 2044 D: 3177

A network trained on 100M positions of Ethereal data provided by Andrew Grant was ~150 elo above master.

Koivisto, while standing on the shoulder of giants, has implemented many of it's own specialities to both search and classical eval on top of well known concepts. We are now taking the path of the sloth, and replacing our beloved RME with a silly neural network. We want to maintain our distance from other engines, so it was important that our NN development kept the same 'koivisto touch' that we already had before. All three aspects of our development have been done internally and are our own. We have written our own trainer, generated our own data, and have our own NN probing code. We strive to be as original as possible, and will not veer from this path moving forward.

Generation of higher quality data is going on and might lead to additional elo being gained here. Since the NN branch in our project started as a small test to verify the integrity of our NN tuner, we have choosen a very simple, non-relative, 2-layer, 12x64-input network. A new topology is high on our list since we do consider the topology to be very far from optimal.


Beside the addition of neural network code inside Koivisto, we have 83 further elo gaining patches since 4.0. Many RME patches have been going on which are eventually invalidated. More to that later. Our search has also made a lot of progress. Adding further unique ideas not found in any other engine so far, we gained a large amount of elo inside our search since then.

Together with the neural network code, our results look similar to this against Koivisto 4.0.

ELO   | 367.3 +- 30.5 (95%)
CONF  | 10.0+0.10s Threads=1 Hash=16MB
GAMES | N: 919 W: 767 L: 46 D: 106

Due to the size of the network, we will keep the networks seperate in a submodule of our repository. Further information can be found on our github page. Furthermore, the only compile we offer are AVX2 compiles. Any machine which does not support AVX2 will not be able to run Koivisto games from now on.


Beside Koivisto 5.0 being released, we will also ship binaries for 4.83. Since many people, especially Berserk author has helped with our classical evaluation, we want to make a final release which marks the end of development for RME inside Koivisto.


We want to thank all the contributors to the project, especially Berserk author for his massive contribution to our search and the classical evaluation, @justNo4b for helping and supporting us with various topics and helping with the training of neural networks, Andrew Grant for the many discussions we had to improve parts of the code, sharing scripts and many more. Beside that we thank the official OpenBench discord with all its members (especially noobpwnftw) for answering any question we have as soon as possible and supporting us whenever possible. We also want to thank the author of Seer for offering us to share training resources and giving us ideas for training our classical as well as our neural network evaluation.

Koivisto v4.0

09 Nov 19:01
Compare
Choose a tag to compare

Koivisto v4.0

A while ago, we released Koivisto v3.0 after a significant improvement in strength. It's time for another release again :)

We'd like to thank Andrew Grant for the OpenBench framework (and putting up with our questions about it!), without which we wouldn't be able to test so many new ideas; it has greatly improved our experimentation process since we started using it around Koivisto v2.0.
We'd also like to thank noobpwnftw for immense help with testing.

Our latest regression test shows significant Elo gain over Koivisto v3.0:

60+0.6:
ELO   | 141.20 +- 18.81 (95%)
SPRT  | 60.0+0.6s Threads=1 Hash=64MB
LLR   | 0.00 (-2.94, 2.94) [0.00, 0.00]
Games | N: 960 W: 501 L: 131 D: 328

15+0.1:
ELO   | 120.88 +- 13.38 (95%)
SPRT  | 15.0+0.15s Threads=1 Hash=16MB
LLR   | 0.00 (-2.94, 2.94) [0.00, 0.00]
Games | N: 1952 W: 1002 L: 349 D: 601

Furthermore, from cyclic time controls, one can expect significantly higher performance than before. Testing by CCRL members made issues apparent in how we handled cyclic time controls. This test shows the same version of the engine, but using the new cyclic time control manager.

40/15:
ELO   | 84.12 +- 20.83 (95%)
SPRT  | 40/15s Threads=1 Hash=16MB
LLR   | 3.11 (-2.94, 2.94) [0.00, 5.00]
Games | N: 640 W: 260 L: 108 D: 272

Changes

  • updated tt-usage.
  • does forced moves immediately.
  • added bishop pawn endgame relations evaluation term.
  • retuned entire evaluation with a larger dataset.
    • tuned mobility scores instead of computing them.
    • tuned king safety scores instead of computing them.
  • cleaned up the code and added comments.
  • asymmetric piece square tables based on king-king relation.
  • changed reduction/extension policy.
  • improved general time management.
  • fixed cyclic time management which leads to the engine using a lot more time in games with cyclic time controls.
  • fixed speed-related issues.
  • added a logo and banner.

Koivisto v3.0

17 Oct 18:38
ef18a3d
Compare
Choose a tag to compare

Koivisto 3.0

We released 2.0 over a month ago, and it is finally time for another release :). In addition to all the elo gainers, we have also fixed a couple bugs related to hash table usage and principal variation printing, so Koivisto should be a much better analysis tool now.

Our testing has shown considerable elo gain over Koivisto 2.0:

ELO   | 175.73 +- 33.35 (95%)
SPRT  | 60.0+0.6s Threads=1 Hash=64MB
LLR   | 3.03 (-2.94, 2.94) [0.00, 5.00]
Games | N: 300 W: 163 L: 23 D: 114

Changes:

  • changed singular extension conditions
  • adjusted null move pruning conditions (chief)
  • adjusted lmp counts
  • limit threads depending on hardware
  • full formatting
  • Added aspiration windows
  • Added simple tempo bonus
  • Adjust lmr depending on countermove history
  • Adjust lmr conditions
  • Added castling rights eval term
  • Added blocked pawn eval term
  • Added passer rank eval term
  • Changed check extension conditions
  • Added draw evaluation (no mating material)
  • Linearised evaluation features
  • changed futility pruning conditions
  • no more floats in eval (mostly)
  • Bugfixes

Koivisto v2.0

08 Sep 20:19
Compare
Choose a tag to compare

Patch news:

  • added SMP which scales very good even beyond 8 threads but its currently artificially limited to 32 threads
  • greatly improved speed all over the engine
  • greatly improved evaluation
  • fixed UCI bugs
  • fixed compiler warnings

Tests have shown the following results against Koivisto 1.0:

(120s+1s on ryzen 3950x)
Score of Koivisto Dev vs Koivisto 1.0: 143 - 59 - 167 [0.614]
...      Koivisto Dev playing White: 84 - 28 - 72  [0.652] 184
...      Koivisto Dev playing Black: 59 - 31 - 95  [0.576] 185
...      White vs Black: 115 - 87 - 167  [0.538] 369
Elo difference: 80.5 +/- 26.3, LOS: 100.0 %, DrawRatio: 45.3 %

Furthermore, 4 Threads also seem to gain about 70 Elo in self-play to the strength of the engine.

Koivisto v1.0

02 Sep 10:09
Compare
Choose a tag to compare

First release of Koivisto. Estimated to be between 2800 and 2850 CCRL.