Koivisto 6.0

Discussion of anything and everything relating to chess playing software and machines.

Moderators: hgm, Rebel, chrisw

Luecx
Posts: 138
Joined: Thu Jun 18, 2020 9:20 pm
Full name: Finn Eggers

Koivisto 6.0

Post by Luecx »

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:

Code: Select all

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: https://github.com/Luecx/Koivisto/wiki/Regression-tests.


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 release as soon as we pass 100 elo over the latest release, we decided to release Koivisto 6.0 today. Executables which have the network file embedded can be found in our github release: https://github.com/Luecx/Koivisto/releases/tag/v6.0

Code: Select all

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
The ability to speak does not make you intelligent. https://github.com/Luecx/Koivisto

Image
Koivisto
Posts: 50
Joined: Fri Sep 04, 2020 10:30 pm
Full name: Kim Kahre

Re: Koivisto 6.0

Post by Koivisto »

Also thanks to Aryan (bit-genie) for providing linux binaries :)
jorose
Posts: 358
Joined: Thu Jan 22, 2015 3:21 pm
Location: Zurich, Switzerland
Full name: Jonathan Rosenthal

Re: Koivisto 6.0

Post by jorose »

Congratulations on the new release and huge progress!
Luecx wrote: Wed Jul 21, 2021 2:00 pm 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.
Ooohh, I like that idea a lot. The problem has bothered me for quite a while and the only engine whose time management seems theoretically sound is LC0's approach looking at the KLDivergence. Looking at subtree nodecounts seems like a solid idea.
-Jonathan
User avatar
Rebel
Posts: 6991
Joined: Thu Aug 18, 2011 12:04 pm

Re: Koivisto 6.0

Post by Rebel »

Please release a SSE4 version also, like to test 6.0 for the GRL.
90% of coding is debugging, the other 10% is writing bugs.
Luecx
Posts: 138
Joined: Thu Jun 18, 2020 9:20 pm
Full name: Finn Eggers

Re: Koivisto 6.0

Post by Luecx »

jorose wrote: Wed Jul 21, 2021 3:25 pm Congratulations on the new release and huge progress!
Luecx wrote: Wed Jul 21, 2021 2:00 pm 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.
Ooohh, I like that idea a lot. The problem has bothered me for quite a while and the only engine whose time management seems theoretically sound is LC0's approach looking at the KLDivergence. Looking at subtree nodecounts seems like a solid idea.
The idea is somewhat old I guess. In the very first stages I checked how often the PV changes but we got rid of it. Kim had this idea and it seems to work out nicely. We were afraid that SMP could slightly mess with this but observed that the elo gain was somewhat stable across threadcount.

Effectively this gave us around 20-25 Elo which is somewhat impressive.
The ability to speak does not make you intelligent. https://github.com/Luecx/Koivisto

Image
Luecx
Posts: 138
Joined: Thu Jun 18, 2020 9:20 pm
Full name: Finn Eggers

Re: Koivisto 6.0

Post by Luecx »

Rebel wrote: Wed Jul 21, 2021 3:26 pm Please release a SSE4 version also, like to test 6.0 for the GRL.
I can work on that. Would you be fine with me creating and sending you this but not attaching it to the official release? The issue is that did not intend the network code, nor have the time to optimize it for 128 bit registers. So maybe SSE is such a slowdown, that it will be very bad compared to other engines.

My solution would be to create an SSE version, hand it to you and inside your rating list you mark it as SSE and not the standard 6.0 build.
The ability to speak does not make you intelligent. https://github.com/Luecx/Koivisto

Image
User avatar
CMCanavessi
Posts: 1142
Joined: Thu Dec 28, 2017 4:06 pm
Location: Argentina

Re: Koivisto 6.0

Post by CMCanavessi »

Wow, just wow...
Follow my tournament and some Leela gauntlets live at http://twitch.tv/ccls
User avatar
Rebel
Posts: 6991
Joined: Thu Aug 18, 2011 12:04 pm

Re: Koivisto 6.0

Post by Rebel »

Luecx wrote: Wed Jul 21, 2021 3:41 pm
Rebel wrote: Wed Jul 21, 2021 3:26 pm Please release a SSE4 version also, like to test 6.0 for the GRL.
I can work on that. Would you be fine with me creating and sending you this but not attaching it to the official release? The issue is that did not intend the network code, nor have the time to optimize it for 128 bit registers. So maybe SSE is such a slowdown, that it will be very bad compared to other engines.

My solution would be to create an SSE version, hand it to you and inside your rating list you mark it as SSE and not the standard 6.0 build.
I am fine with that.
90% of coding is debugging, the other 10% is writing bugs.
Luecx
Posts: 138
Joined: Thu Jun 18, 2020 9:20 pm
Full name: Finn Eggers

Re: Koivisto 6.0

Post by Luecx »

Rebel wrote: Wed Jul 21, 2021 6:18 pm
Luecx wrote: Wed Jul 21, 2021 3:41 pm
Rebel wrote: Wed Jul 21, 2021 3:26 pm Please release a SSE4 version also, like to test 6.0 for the GRL.
I can work on that. Would you be fine with me creating and sending you this but not attaching it to the official release? The issue is that did not intend the network code, nor have the time to optimize it for 128 bit registers. So maybe SSE is such a slowdown, that it will be very bad compared to other engines.

My solution would be to create an SSE version, hand it to you and inside your rating list you mark it as SSE and not the standard 6.0 build.
I am fine with that.
I will forward this issue we made. AVX512 are being requested too so I am doing both of them currently. Any updates will be there :)
https://github.com/Luecx/Koivisto/issues/120
The ability to speak does not make you intelligent. https://github.com/Luecx/Koivisto

Image
User avatar
CMCanavessi
Posts: 1142
Joined: Thu Dec 28, 2017 4:06 pm
Location: Argentina

Re: Koivisto 6.0

Post by CMCanavessi »

Do you have plans for pondering and/or FRC?
Follow my tournament and some Leela gauntlets live at http://twitch.tv/ccls