OliverBr wrote: ↑Wed Jun 04, 2025 8:53 pm
Does this engine need an evaluation function to create the NN?
You can train from a randomly initialised network or similar if you so wish, its simply a gimmick that will become unnoticeable after a few iterations of data generation. I think most people probably start with their HCE anyway.
OliverBr wrote: ↑Wed Jun 04, 2025 8:53 pm
Does it need code to create the NN?
For training, no. I am the author of bullet (
https://github.com/jw1912/bullet) which is the most popular training library among the top 50 chess engines by some large margin. You may write your own training code if you wish, but it is time consuming and there simply doesn't exist any trainer that can compete with bullet in terms of training speed for NNUE training (thanks to e.g.
https://github.com/jw1912/bullet/blob/m ... -fusion.md) and ease-of-use/features. Shameless plug over.
It is generally widely accepted that an engine developer should write their own code to use the neural network in their actual engine (efficient updates and inference), though there's few distinct ways to do that so you will find little variation.
The real point of contention is whether an engine should produce its own data. Many engines use data produced by leela chess zero. Regardless of where you fall on this there is still a lot of variety/experimentation that can be achieved simply in the training process itself.
At the end of the day modern chess engine dev is an extremely communal activity (reminder to join the discord servers that are 1000x more active than this site!) so there is bound to be a high degree of convergence between top engines - but that does not mean that new engine devs are simply copy-pasting and giving nothing back.