On-line engine blitz tourney August

Discussion of chess software programming and technical issues.

Moderator: Ras

Modern Times
Posts: 3787
Joined: Thu Jun 07, 2012 11:02 pm

Re: On-line engine blitz tourney August

Post by Modern Times »

IgelRB crashed twice and lost those two games, until I realised that Ponder was causing that problem. After ponder was disabled it played fine. I don't know what the outcome of those two games would have been, but in any case Igel did pretty well.
jstanback
Posts: 140
Joined: Fri Jun 17, 2016 4:14 pm
Location: Colorado, USA
Full name: John Stanback

Re: On-line engine blitz tourney August

Post by jstanback »

xr_a_y wrote: Sat Aug 22, 2020 8:32 pm
jstanback wrote: Sat Aug 22, 2020 7:43 pm I plan to run a home-brew Wasp neural network today. It's a tiny 4x2 node network with inputs that are similar to a standard eval, ie piece/sq, mobility, count of attacks near enemy king, backward pawns ... It's trained using random playouts starting from about 30M positions from Wasp games against other engines. So far it's about 150 Elo weaker than Wasp with it's normal eval.

John
Did you consider to try that as a correction phase instead of the total evaluation replacement ?
That is what I was working on (small MLP to modelized search-eval or result-sigmoid(eval) based on standard evaluation feature before the NNUE thing.
I'm not sure what you mean by a correction phase.

My eval is calculated as a value from 0..1 based on the output of a NN composed of a first hidden layer with only 2 nodes for white features and 2 nodes for black features. These 4 nodes feed a second hidden layer of only 2 nodes which feeds the output eval. To make this even more similar to a "normal" chess engine eval I multiply the inputs to the odd/even nodes by a a phase or 1-phase term based on total material. The network takes into account the phase term when back-propogating the eval error to tune the weights. My intent is to replicate the midgame/endgame interpolation that most engines use. I'm using a sigmoid activation function. Before calculating the values for the nodes in the 1st hidden layer I create a list of which of the 900 or so possible inputs are "active" and whose weights will be summed to calculate the node values. This list of inputs is created nearly the same as a normal eval is done, except that instead of adding say a PST value for a white pawn on e4 to the white eval, I just add the index for that term to the list of white inputs. If a knight has 3 squares of mobility, I add the index for a knight with mobility of 3 to the list. I flip the board for black pieces so that white and black use the same weights. There are typically only 40 or 50 elements in the input list for the opening and middle game and fewer in the endgame. I'm using float data type and at the moment have no idea how to speed this up using integers or SIMD instructions. Also, I'm not incrementally updating anything when making or unmaking moves. So it's a bit slow, but since the number of nodes is so limited it still gets over million nodes per second. For some reason it hasn't seemed to help to add more nodes, but I need to keep experimenting with this. At this point I'm mostly using the normal Wasp eval as the target for calculating the error for tuning weights and do this for maybe 500M to 1B positions generated from random playouts starting from positions in actual games. Then I further tune with about 100M positions from the same PGN file, using the average of centipawn eval and the W/D/L game result as the target. My gut feel is that this approach could equal or exceed the strength of my normal evaluation function. I have no idea what others are doing, but it's a lot of fun to fiddle with this stuff.

I was happy with how WaspNN played today. I think it got 3 wins, 3 losses, and 3 draws and the games seemed interesting and it didn't do anything too screwy :)

John
User avatar
MikeB
Posts: 4889
Joined: Thu Mar 09, 2006 6:34 am
Location: Pen Argyl, Pennsylvania

Re: On-line engine blitz tourney August

Post by MikeB »

Joost Buijs wrote: Sat Aug 22, 2020 11:01 pm It was a nice tournament as usual.

I didn't have the opportunity to fix mamer with more than 10 rounds, we were on holidays and we were struck by a heat wave too.

There were a few issues, Igel could not get his engine connected in time, so Ray Banks attended with IgelRB instead.
LczTinker lost his first game because he didn't know the tournament had started so he resigned.
Marvin vs Wasp had to be replayed because they started with an adjourned game.
I'm not sure what happened to Nemeton, my guess is that he lost connection and Lisebeth had to forfait him.

Honey took first place, probably with Stockfish NNUE, but I'm not sure about this.
rofChade on his 64 core AMD ended second, LczTinker ended third.

Code: Select all

:Tourney Players: Round 9 of 9 
:
:     Name              Rating Score Perfrm Upset  Results 
:     ----------------- ------ ----- ------ ------ ------- 
:  1 +Honey             [2988]  8.0  [3173] [  25] +17w +10b +04w =02b +07w +06b =03w +09w +11b 
:  2 +rofChade          [2958]  7.0  [3073] [  55] +18w +11w +12b =01w =04b =03b =06w +07w +10b 
:  3 +LczTinker         [3039]  6.5  [2926] [   0] -16w +29b +18w =06b +19b =02w =01b +04w +12w 
:  4 +EtherealRB        [2915]  6.0  [2925] [  23] +20w +05b -01b +14w =02w +13b +19w -03b =06w 
:  5 +IgelRB            [2661]  6.0  [2737] [ 295] +26b -04w +21w -07b =17w +15b =08w +24b +19w 
:  6 +Schooner          [2919]  5.5  [2912] [  79] +24w =13w +09b =03w +10b -01w =02b =11w =04b 
:  7 +ArasanX           [2930]  5.0  [2733] [   0] +27w -12w +24b +05w -01b =11b +14w -02b =13b 
:  8 +NightmareX        [2844]  5.0  [2664] [   0] +33w =15w =16b =17b =11w =14w =05b =18b =09w
:  9 +rpiRofChade       [2844]  5.0  [2688] [   0] +29w =16b -06w -11b +27w +12b +24w -01b =08b 
: 10 +Nemorino          [2837]  5.0  [2707] [  14] +30b -01w +27w +33b -06w +17b =11w =19b -02w 
: 11 +Goldbar           [2753]  5.0  [2800] [ 349] +22w -02b +20w +09w =08b =07w =10b =06b -01w 
: 12 +Amoeba            [2732]  5.0  [2743] [ 198] +25w +07b -02w =18b =13w -09w +17b +16w -03b 
: 13 +Marvin            [2728]  5.0  [2742] [ 266] +23w =06b =19w +16w =12b -04w =15b =14b =07w 
: 14 +TheBaron          [2640]  5.0  [2638] [ 258] +28w =19b =15w -04b +20w =08b -07b =13w +22w 
: 15 +WaDuuttie         [2637]  5.0  [2561] [ 149] +31w =08b =14b -19w +21b -05w =13w +27b =18w 
: 16 +Arminius          [2607]  5.0  [2718] [ 668] +03b =09w =08w -13b +33w -19b +20w -12b +24w
: 17 +atomNightmare     [2566]  5.0  [2615] [ 186] -01b +30w +22b =08w =05b -10w -12w +21b +27w 
: 18 +atomGoldbar       [2545]  5.0  [2628] [ 288] -02b +22w -03b =12w =24b +21w +29b =08w =15b 
: 19 +WaspX             [2865]  4.5  [2710] [   0] +21w =14w =13b +15b -03w +16w -04b =10w -05b 
: 20 +rpiArminius       [2335]  4.0  [2359] [   0] -04b +26w -11b +22w -14b +23w -16b +29w -21w 
: 21 +RookieMonster     [2333]  4.0  [2358] [   2] -19b +28w -05b +26b -15w -18b +25w -17w +20b 
: 22 +Joker             [2149]  4.0  [2290] [  53] -11b -18b -17w -20b +30w +26b +28w +23w -14b 
: 23 +Vice              [2034]  4.0  [2166] [ 464] -13b -24b -29w +28w +31b -20b +33w -22b +30w 
: 24 -Myrddin           [2351]  3.5  [2481] [ 136] -06b +23w -07w +30b =18w +27b -09b -05w -16b
: 25 +KingSlayer        [2078]  3.5  [2109] [ 128] -12b -27b -33w +31w =29b =30w -21b +26b =28w 
: 26 +Skiull            [1992]  3.5  [2084] [ 429] -05w -20b +31b -21w =28b -22w +30b -25w +29b 
: 27 +Jumbo             [2390]  3.0  [2322] [   0] -07b +25w -10b +29w -09b -24w +31b -15w -17b 
: 28 +microMax          [1943]  3.0  [1934] [  91] -14b -21b -30w -23b =26w +31w -22b +32w =25b 
: 29 +Spartacus         [2211]  2.5  [2220] [ 119] -09b -03w +23b -27b =25w +33b -18w -20b -26w 
: 30 +feligres          [2202]  2.5  [1999] [   0] -10w -17b +28b -24w -22b =25b -26w +31w -23b 
: 31 -Skipper           [1648]  1.0  [1800] [   0] -15b -33b -26w -25b -23w -28b -27w -30b +32w 
: 32 +_BYE_             [   0]  0.0  [1395] [   0] -28b -31b
: 33 -Nemeton           [forf]  2.0  [2151] [   0] -08b +31w +25b -10w -16b -29w -23b 
:
:     Average Rating    2531.4 
Honey is a Stockfish fork with NNUE

https://github.com/MichaelB7/Stockfish/tree/honey

The Honey tree contains 5 engines - Honey , BlueFish, Black-Diamond ( based on the Sf fork Crystal) and weakfish as well as a Stockfish XIr5 that is most like Stockfish. Bluefish piece values are 78 % of official Stockfish, hence placing an increase of importance to eval. They also all contain other features - most notably adaptive play in limit strength mode and the ability to use 4 polyglot books in the opening, providing ease in flexibility in changing the book guidance with a small interchangeable Book#1 , while using increasingly larger books as the game wears on.
Image
Joost Buijs
Posts: 1663
Joined: Thu Jul 16, 2009 10:47 am
Location: Almere, The Netherlands

Re: On-line engine blitz tourney August

Post by Joost Buijs »

MikeB wrote: Sun Aug 23, 2020 8:03 am Honey is a Stockfish fork with NNUE

https://github.com/MichaelB7/Stockfish/tree/honey

The Honey tree contains 5 engines - Honey , BlueFish, Black-Diamond ( based on the Sf fork Crystal) and weakfish as well as a Stockfish XIr5 that is most like Stockfish. Bluefish piece values are 78 % of official Stockfish, hence placing an increase of importance to eval. They also all contain other features - most notably adaptive play in limit strength mode and the ability to use 4 polyglot books in the opening, providing ease in flexibility in changing the book guidance with a small interchangeable Book#1 , while using increasingly larger books as the game wears on.
Sounds very complicated.

My engine is not based on anything, in fact it hardly changed the last 6 years. I removed some bugs, used Texel style tuning to optimize the evaluation function, last year I switched from YBWC to Lazy-SMP which gave the engine a big boost in endgame positions.

Several years ago I started with a completely new version of the engine, somehow I can't set myself up to finish it. NNUE is a very interesting development, I'm thinking about adding something like this too.