I think we're better off looking for "what's original in an engine", rather than "how much of the engine is unoriginal."Daniel Shawul wrote: ↑Wed Sep 30, 2020 2:11 amYes, NNUE or other NN probing code is something that fits the description of a library nicely.Madeleine Birchfield wrote: ↑Wed Sep 30, 2020 1:47 am Moving the conversation back into this thread:
So should the CUDA backend be considered as a library instead of Leela specific code, if it is more general than Leela? Should NNUE be considered a library instead of Stockfish specific code as well then? NNUE isn't chess specific either; it originated in shogi. Should the rules governing the CUDA backend library therefore be the same as the rules governing NNUE code in TCEC, and should the rules governing both be more restrictive regarding engine uniqueness or less restrictive?
Re-inventing the wheel is not a mark of originality despite what some say here.
For example, I use tensorflow library for probing any neural network on the CPU, and TensorRT for the GPU (I could probably
skip this one and use tensorflow for the GPU too). Tensorflow can do CuDNN or TensoRT or OpenCL etc, so in this regard the gazillion
leela backends are a waste of time. Infact, it is my opinion that this has proven detrimental to experimentation with different net architectures.
Even for NNUE you can probably use Tensorflow for the dense layers and use INT8 optimization to get a similar level of accelration.
While the first layer can be calculated by the engine from weights retreived from the tensorflow graph.
The current NNUE training code is adhoc, i mean who writes a NN training code from scratch in this day and age of AI ??
About originality of engines, could you state a rule that will statisfy you ?
So you can clone as much as you want (assuming you give credit), just so long that there's enough new/interesting in your engine to justify its inclusion.
Which is why we are playing Stockfish Classic AND StockfishNNUE... they share a huge amount of code, but the small amount that is different, is critical.
Cue the handwringing about "every engine will just be a Stockfish fork..."