The distinction between engines and neural nets

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

Moderators: hgm, Rebel, chrisw

Madeleine Birchfield
Posts: 512
Joined: Tue Sep 29, 2020 4:29 pm
Location: Dublin, Ireland
Full name: Madeleine Birchfield

The distinction between engines and neural nets

Post by Madeleine Birchfield »

There seems to be some confusion recently between an engine and a neural network.

A neural network is just a collection of numbers; there is no code whatsoever inside of a neural network file. Examples of these include Stein, T60, or J92 nets for the Ankan/Leela architecture, the Stockfish default, White Rose, Night Nurse, Dark Horse, and Stockfinn nets for the nodchip NNUE architecture, and the Seer default, NaNo, NiNa, NeNe nets for the Seer/Minic NNUE architecture. Because there is no code in the neural network, they cannot play chess by themselves.

An engine on the other hand has code for searching, move ordering, board representation, time management, evaluation, network architecture, and so forth. Thus, an engine is able to play chess by themselves. Many times, an engine would have the neural network weights compiled into the engine directly, like in Komodo, Ethereal, Pedone, and so forth, while in other engines, like Leela, Allie, and Stockfish, different neural network files can be switched in and out through UCI options.

In the second case, the engine becomes a neural network player, and sometimes the name of the neural network is provided as well in the engine name, I.e Stockfish nn-defaulthash, Leela T60###, Leela Stein, Allie T60###, Allie Stein, Stockfish Night Nurse, Stockfish Stockfinn, Minic Napping Nexus, and so forth. But convention typically still refers to each engine as Stockfish, Leela, Allie, Minic, et cetera, even if the engine might be using a different network than the default one.

Fat Fritz 2 was marketed as an engine; hence why many people called it a Stockfish clone. If Fat Fritz 2 was marketed as a NNUE network for the Stockfish engine, while there might still be controversey over the pricing, nobody would be calling it a Stockfish clone, as they would just treat it like any other neural network.
User avatar
xr_a_y
Posts: 1871
Joined: Sat Nov 25, 2017 2:28 pm
Location: France

Re: The distinction between engines and neural nets

Post by xr_a_y »

Maybe i need to add that i often refer to "Seer like net" because of the skip connection between layers but since NaNi the net I made are not compatible with Seer engine because of the use of clipped relu. This will be even more true for next release where Minic will switch to smaller net size.

I indeed find important to add the net name in the engine version when refering to a pair of engine + net because one engine can often play using many different net. And sometimes one net can be used by many engines.

For Minic I recommand
- for version 2 (using sf implementation): for instance MinicNNUE 2.53 + NaNe while only Minic 2.53 is HCE
- for version 3 : for instance Minic3.04 + NoNo while Minic3.04 is just HCE.
jkrabbenbos
Posts: 20
Joined: Wed Mar 03, 2010 9:06 am

Re: The distinction between engines and neural nets

Post by jkrabbenbos »

A neural net is an algorithm implemented in code. The structure or architecture of the NN is done in the code. At this moment I'm not aware of any program that can create a NN from configuration, although I think this should be possible.

The files everybody talks about are mainly the stored weights of the neural net structure and those weights define the identity or the 'learned' values for that specific net. These values are heavily depending on how the NN is trained. Depending on the way of training and the types of NN used the resulting behaviour will differ. You want these values stored outside your program, otherwise you have to retrain the whole NN again, which can take a long time.

A neural net that plays a game of chess is still a long way to go. At this moment it would be a challenge to create a NN that gets the current board position and returns the best move to play.
Regards,
Jan
smatovic
Posts: 2657
Joined: Wed Mar 10, 2010 10:18 pm
Location: Hamburg, Germany
Full name: Srdja Matovic

Re: The distinction between engines and neural nets

Post by smatovic »

I agree that most of the current ChessBase issues are related to the marketing,
if Albert Silver would have distributed just a NNUE network via a paywalled
Patreon like others do there would have been no issues...

--
Srdja
gonzochess75
Posts: 208
Joined: Mon Dec 10, 2018 3:29 pm
Full name: Adam Treat

Re: The distinction between engines and neural nets

Post by gonzochess75 »

Madeleine Birchfield wrote: Fri Feb 26, 2021 7:07 am Fat Fritz 2 was marketed as an engine; hence why many people called it a Stockfish clone. If Fat Fritz 2 was marketed as a NNUE network for the Stockfish engine, while there might still be controversey over the pricing, nobody would be calling it a Stockfish clone, as they would just treat it like any other neural network.
One quibble. Fat Fritz 2 included modifications to the engine itself in order to work well with the FF2 net. Additionally, Albert Silver saw fit to modify the misc.cpp file of the stockfish engine to include himself as an author and to rename the engine "Fat Fritz 2." In other words, it wasn't just the marketing.
smatovic
Posts: 2657
Joined: Wed Mar 10, 2010 10:18 pm
Location: Hamburg, Germany
Full name: Srdja Matovic

Re: The distinction between engines and neural nets

Post by smatovic »

gonzochess75 wrote: Sat Feb 27, 2021 12:12 pm ...
One quibble. Fat Fritz 2 included modifications to the engine itself in order to work well with the FF2 net. Additionally, Albert Silver saw fit to modify the misc.cpp file of the stockfish engine to include himself as an author and to rename the engine "Fat Fritz 2." In other words, it wasn't just the marketing.
The changes for the network layout in the code are trivial, a friendly patch
request to main SF would have been sufficient to support the doubled NN
size imho.

http://talkchess.com/forum3/viewtopic.p ... 87#p881884

https://github.com/DanielUranga/Stockfi ... d2ad48a8cc

--
Srdja
gonzochess75
Posts: 208
Joined: Mon Dec 10, 2018 3:29 pm
Full name: Adam Treat

Re: The distinction between engines and neural nets

Post by gonzochess75 »

smatovic wrote: Sat Feb 27, 2021 1:37 pm
gonzochess75 wrote: Sat Feb 27, 2021 12:12 pm ...
One quibble. Fat Fritz 2 included modifications to the engine itself in order to work well with the FF2 net. Additionally, Albert Silver saw fit to modify the misc.cpp file of the stockfish engine to include himself as an author and to rename the engine "Fat Fritz 2." In other words, it wasn't just the marketing.
The changes for the network layout in the code are trivial, a friendly patch
request to main SF would have been sufficient to support the doubled NN
size imho.

http://talkchess.com/forum3/viewtopic.p ... 87#p881884

https://github.com/DanielUranga/Stockfi ... d2ad48a8cc

--
Srdja
Trivial or not they occurred. And the person doing the changes specifically renamed SF the engine to match the neural net's name and added himself as an author with specific addendum that he was the author of the neural net and linked the idea that the engine and the net are one work. Who was the author of this combined work?

Code: Select all

misc.cpp:     << "Stockfish Devs and Albert Silver (neural network)";
All the evidence you need that Albert Silver himself considered FatFritz2 (both the engine+neural net) to be one whole work.