RubiChess NNUE player implemented

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

Moderator: Ras

User avatar
Gabor Szots
Posts: 1445
Joined: Sat Jul 21, 2018 7:43 am
Location: Budapest, Hungary
Full name: Gabor Szots

Re: RubiChess NNUE player implemented

Post by Gabor Szots »

Guenther wrote: Sun Sep 13, 2020 10:41 am You should use '-static'. otherwise it will always depend on certain libs, which might not be there on other systems.
https://en.wikipedia.org/wiki/Static_build
Thanks, now I understand why some exes are more than 3 MB in size.

For those still interested I have put up a static build for download.
Gabor Szots
CCRL testing group
User avatar
RubiChess
Posts: 642
Joined: Fri Mar 30, 2018 7:20 am
Full name: Andreas Matthies

Re: RubiChess NNUE player implemented

Post by RubiChess »

If you compile in Windows using msys2/mingw64 setup, you should use
make profile-build COMP=mingw
for a static build with good performance.
perejaslav
Posts: 240
Joined: Sat Mar 18, 2006 4:01 am
Location: Cold

Re: RubiChess NNUE player implemented

Post by perejaslav »

RubiChess 1.9 NNUE is better than Komodo!
Used nn-308d71810dff.nnue for this match.
TC=1'+1", concurrency=20

Image
User avatar
mvanthoor
Posts: 1784
Joined: Wed Jul 03, 2019 4:42 pm
Location: Netherlands
Full name: Marcel Vanthoor

Re: RubiChess NNUE player implemented

Post by mvanthoor »

chrisw wrote: Tue Sep 08, 2020 10:35 am Anyway, I guess what this thread is about, is whether or not the NN paradigm in itself produces similar engine behaviour and thus means we are generating a lot of very similar products differing mostly in 'name'. Same question could probably be asked about Texel tuned engines.
I have been wondering about this. Because the author of RubiChess says that the chess engine becomes only a "player of the NNUE-file", that begs the question: wouldn't engines converge, if they would use ONLY the NNUE files, and thus each engine would indeed just be a "player", like a DVD-player reading a disc and outputting the result to a screen?

Same for Texel-tuning and CLOP-tuning. I've been asking myself the same question. The author of ICE says on his website somewhere that "ICE is still a CLOP-free zone" (http://www.fam-petzke.de/cp_ice_en.shtml). I can understand this sentiment, because in the past, the evaluation was a MASSIVE part of the personality of an engine. HIARCS was noted for this. It had a huge evaluation for its time (and thus was very slow compared to other engines), but people really liked its playing style.

You could take three engines: one written in C, another in C++, and the third in Rust. Assuming they implement the same techniques (magic bit-boards, same search and pruning techniques), then they'd turn out the same. (I am also assuming that implementation and compiler efficiency are about equal, giving the engines similar speed on the same computer.) In that case, the evaluation would be the main differentiating part of each engine.

If you then replace the evaluation with a NNUE-net, the engines would turn out to be almost the same.

Even if you would use Texel or CLOP tuning on each engine, the evaluations would converge; most engines implement a basic set of evaluations (material count, PSQT, mobility...) and tuning those values with the same algorithm would therefore make the engines more alike.

Now the NNUE can be disabled or enabled. Maybe it would even be worthwhile for an engine to have two evaluations: one without tuning, for maximum personality, and one with tuning for maximum playing strength. My old chess computer from the 80's uses this approach already: it has four playing styles. "default", for the strongest play; "positional" (defensive play), "aggressive" (attacking play) and "desperate" (where it actually often makes unsound moves and sacrifices in the "I hope my opponent doesn't see the refutation" sort of way).
Author of Rustic, an engine written in Rust.
Releases | Code | Docs | Progress | CCRL
User avatar
RubiChess
Posts: 642
Joined: Fri Mar 30, 2018 7:20 am
Full name: Andreas Matthies

Re: RubiChess NNUE player implemented

Post by RubiChess »

RubiChess wrote: Sun Sep 06, 2020 1:47 pm
First the gauntlet with plain Rubi-1.8 using handcrafted evaluation:

Code: Select all

    Program                          Elo    +   -   Games   Score   Av.Op.  Draws
  1 Komodo-10                      :  114   40  39   200    66.2 %     -3   35.5 %
  2 Fire-7.1                       :  105   38  37   200    65.0 %     -3   41.0 %
  3 Ethereal-11.53                 :   59   34  34   200    58.8 %     -3   50.5 %
  4 Rofchade-2.202                 :   32   32  32   200    55.0 %     -3   55.0 %
  5 Laser-1.7                      :    4   36  36   200    51.0 %     -3   46.0 %
  6 Defenchess-2.2                 :    2   36  36   200    50.7 %     -3   45.5 %
  7 Rubi-1.8                       :   -3   11  11  2000    49.2 %      3   43.1 %
  8 Andscacs-0.95                  :  -17   34  35   200    48.0 %     -3   49.0 %
  9 Booot-6.3.1                    :  -46   36  36   200    43.8 %     -3   44.5 %
 10 Fizbo-2                        :  -93   41  41   200    37.2 %     -3   31.5 %
 11 Pedone-2.0                     : -132   41  41   200    32.2 %     -3   32.5 %
Now the gauntlet with NNUE and Sergio net:

Code: Select all

    Program                          Elo    +   -   Games   Score   Av.Op.  Draws
  1 Rubi-1.8 NNUE Sergio           :  131   26  25   668    81.4 %   -125   26.8 %
  2 Komodo-10                      :   18   66  68    66    33.3 %    138   39.4 %
  3 Fire-7.1                       :  -32   69  71    66    27.3 %    138   36.4 %
  4 Laser-1.7                      :  -82   80  83    66    22.0 %    138   25.8 %
  5 Defenchess-2.2                 : -104   73  78    68    19.9 %    138   30.9 %
  6 Rofchade-2.202                 : -106   75  80    66    19.7 %    138   30.3 %
  7 Ethereal-11.53                 : -117   81  85    67    18.7 %    138   25.4 %
  8 Andscacs-0.95                  : -154   81  87    67    15.7 %    138   25.4 %
  9 Pedone-2.0                     : -212   88  98    68    11.8 %    138   20.6 %
 10 Booot-6.3.1                    : -221   92 101    67    11.2 %    138   19.4 %
 11 Fizbo-2                        : -299  101 121    67     7.5 %    138   14.9 %
 
And the gauntlet with NNUE and Night Nurse net:

Code: Select all

    Program                          Elo    +   -   Games   Score   Av.Op.  Draws
  1 Rubi-1.8 NNUE NiNu             :  109   17  17  1339    77.3 %   -104   30.7 %
  2 Fire-7.1                       :   30   42  43   133    38.0 %    115   48.9 %
  3 Ethereal-11.53                 :   -6   43  44   134    33.2 %    115   45.5 %
  4 Komodo-10                      :  -49   50  51   134    28.0 %    115   33.6 %
  5 Rofchade-2.202                 :  -65   50  52   134    26.1 %    115   32.8 %
  6 Laser-1.7                      : -101   51  53   132    22.3 %    115   32.6 %
  7 Booot-6.3.1                    : -128   52  55   134    19.8 %    115   30.6 %
  8 Defenchess-2.2                 : -130   57  59   135    19.6 %    115   24.4 %
  9 Andscacs-0.95                  : -158   60  62   134    17.2 %    115   22.4 %
 10 Fizbo-2                        : -240   64  69   135    11.5 %    115   20.0 %
 11 Pedone-2.0                     : -245   70  74   134    11.2 %    115   16.4 %
Rubi has some "own" network file now: https://github.com/Matthies/NN
It was created with
- 1 billion depth 10 training data and 1 million depth 14 valitation data using Rubi 1.8 evaluation (sfens created with Rubi)
- the SF/nodchip binary learning the net from it

The score is not as impressive as the results with SF/NightNurse nets above but clearly an improvement to handmade evaluation;

Code: Select all

    Program                          Elo    +   -   Games   Score   Av.Op.  Draws
  1 Komodo-10                      :   70   37  37   200    53.5 %     46   42.0 %
  2 Fire-7.1                       :   51   35  35   200    50.7 %     46   47.5 %
  3 Rubi+nn-f21733c196             :   44   12  12  2000    62.2 %    -42   41.5 %
  4 Ethereal-11.53                 :   21   35  35   200    46.5 %     46   48.0 %
  5 Laser-1.7                      :  -37   35  35   200    38.2 %     46   47.5 %
  6 Rofchade-2.202                 :  -39   33  33   200    38.0 %     46   53.0 %
  7 Booot-6.3.1                    :  -58   40  40   200    35.5 %     46   35.0 %
  8 Andscacs-0.95                  :  -64   37  38   200    34.8 %     46   41.5 %
  9 Defenchess-2.2                 :  -73   38  38   200    33.5 %     46   40.0 %
 10 Pedone-2.0                     : -150   41  42   200    24.5 %     46   34.0 %
 11 Fizbo-2                        : -162   45  46   200    23.2 %     46   26.5 %
I leave it to ranking list and tounament organizers to decide what to do with it. I'm doing chess programming for myself learning some things and having some fun seeing progress. I'm not interested in arguing what is right and what is wrong.

Have fun or just ignore.

Regards, Andreas
Frank Quisinsky
Posts: 6958
Joined: Wed Nov 18, 2009 7:16 pm
Location: Gutweiler, Germany
Full name: Frank Quisinsky

Re: RubiChess NNUE player implemented

Post by Frank Quisinsky »

Hello Andreas,

I think some own NNUE files are mutch better!!
But the thread is for me complicated.

1. RubiChess (GitHub) is available under:
https://github.com/Matthies/RubiChess/
Last version: 1.8
Quit clear!

2. Own NNUE files (GitHub) are available under:
https://github.com/Matthies/NN
Quit clear!

But in this thread are some information about RubiChess 1.9 available.
A download link (not working) is inside.

Information about *.dll files are inside the thread:
https://www.patreon.com/posts/stockfinn-0-1-38717611

And your last message about your own test results with RubiChess 1.8 with an without the Network file (and not version 1.9).
Your last test with: Rubi+nn-f21733c196 (no version number).

For the moment not sure which version I have to added in FCP Tourney-2021.

1.9 isn't available
NNUE file is unclear!
*.dll files unclear!

Best
Frank
Frank Quisinsky
Posts: 6958
Joined: Wed Nov 18, 2009 7:16 pm
Location: Gutweiler, Germany
Full name: Frank Quisinsky

Re: RubiChess NNUE player implemented

Post by Frank Quisinsky »

Since days I try to hold my engine link collection up-to-date.
http://www.amateurschach.de/main/_engines.htm

In German:
Mir raucht die Rübe!

Back to English:
I like GitHub a lot but after all ...
For some years the situation around engines and configurations are more easy.

Unclear is the Scorpio configuration (https://github.com/dshawul/Scorpio/ ... current version 3.0.10 not to see directly).
Important information on GitHub on the end of the page.

Unclear is the Minic configuration (NNUE file or not for engine tournaments).

And so one!

Better is if programmers give a clear announcement what they like to see in chess tournaments.
To test all the available NNUE files for so many available engines isn't possible.

Nothing against RubiChess and your person (nice to have) but all should be a bit more easy.

Best
Frank
User avatar
RubiChess
Posts: 642
Joined: Fri Mar 30, 2018 7:20 am
Full name: Andreas Matthies

Re: RubiChess NNUE player implemented

Post by RubiChess »

It doesn't feel appropriate to release anything now. Current master in Github is better than 1.8 (even without NNUE evaluation) but only maybe 10 Elo. And the NNUE learner stuff is incomplete and not merged to master.

@Frank: If your tournament starts in 2021 there is some time left and maybe I will upload some binary till then.

Regards, Andreas
Frank Quisinsky
Posts: 6958
Joined: Wed Nov 18, 2009 7:16 pm
Location: Gutweiler, Germany
Full name: Frank Quisinsky

Re: RubiChess NNUE player implemented

Post by Frank Quisinsky »

Hello Andreas,

the complicated messages in this thread comes not from yourself.

I will work in the next days on a configuration page for all the participate engines.
I do that for me at first because to hold all the information in the own brain isn't longer possible.

The reason (configuration page) that I try to collect all important information before.

But you have right, two months ...
in 30 days the configurations for the qualify tournament must be ready.

6 hours I need alone to understand how the JAVA engines works under Shredder GUI.
Never I try it out before.

2 hours I need for the Lc0 CPU version today.

In younger years I am in 30 minutes ready.
I think I am to old for all this.
Sorry for my message in your thread.

RubiChess is playing a great FCP Toruney-2020 and it must be start for the next one.

Best for you and good luck for your development!
Frank
OliverBr
Posts: 818
Joined: Tue Dec 18, 2007 9:38 pm
Location: Munich, Germany
Full name: Dr. Oliver Brausch

Re: RubiChess NNUE player implemented

Post by OliverBr »

Hi,

you may perhaps want to know that I cannot compile RubiChess for MacOSX and clang:

Code: Select all

make COMP=clang
rm -f RubiChess-BMI2 RubiChess-AVX2 RubiChess RubiChess-Legacy *.o
rm -f -rf OPT
rm -f *.clangprof-raw *.profdata
  Compiling RubiChess...
clang++ -std=c++11 -Wall -O3 -flto -pedantic -Wextra -Wshadow  -mssse3 -msse2 -mmmx -mpopcnt *.cpp -lpthread -fuse-ld=lld  -D GITVER=\"20200913143055\" -D GITID=\"dc4bcbc\" -DUSE_SSSE3 -DUSE_SSE2 -DUSE_MMX -DUSE_POPCNT -o RubiChess
clang: error: invalid linker name in argument '-fuse-ld=lld'
make[1]: *** [compile] Error 1
make: *** [default] Error 2
It would be nice if this worked. With just "make" (it's the GCC profile) yield to a couple of more errors, but gcc is linked to clang on my Mac.
Chess Engine OliThink: http://brausch.org/home/chess
OliThink GitHub:https://github.com/olithink