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.
The distinction between engines and neural nets
Moderators: hgm, Rebel, chrisw
-
- Posts: 512
- Joined: Tue Sep 29, 2020 4:29 pm
- Location: Dublin, Ireland
- Full name: Madeleine Birchfield
-
- Posts: 1871
- Joined: Sat Nov 25, 2017 2:28 pm
- Location: France
Re: The distinction between engines and neural nets
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.
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.
-
- Posts: 20
- Joined: Wed Mar 03, 2010 9:06 am
Re: The distinction between engines and neural nets
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.
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
Jan
-
- 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
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
if Albert Silver would have distributed just a NNUE network via a paywalled
Patreon like others do there would have been no issues...
--
Srdja
-
- Posts: 208
- Joined: Mon Dec 10, 2018 3:29 pm
- Full name: Adam Treat
Re: The distinction between engines and neural nets
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.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.
-
- 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
The changes for the network layout in the code are trivial, a friendly patchgonzochess75 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.
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
-
- Posts: 208
- Joined: Mon Dec 10, 2018 3:29 pm
- Full name: Adam Treat
Re: The distinction between engines and neural nets
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?smatovic wrote: ↑Sat Feb 27, 2021 1:37 pmThe changes for the network layout in the code are trivial, a friendly patchgonzochess75 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.
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
Code: Select all
misc.cpp: << "Stockfish Devs and Albert Silver (neural network)";