Page 2 of 2

Re: FF2 verses SF, what are the important differences?

Posted: Sun Feb 14, 2021 3:31 pm
by schack
Perhaps off-topic; if so, please close or put in the right forum.

Let's say I wanted to rebase the FF2 code changes on the latest Stockfish dev version. How would I do that? Is there a set of tools that would let me do that automatically? Can I do it through github?

Re: FF2 verses SF, what are the important differences?

Posted: Mon Feb 15, 2021 8:34 am
by pohl4711
acepoint_de wrote: Sun Feb 14, 2021 10:48 am
pohl4711 wrote: Sat Feb 13, 2021 4:39 pm "Fat Fritz 2 is trained and developed using this NNUE technology, running inside the open source Stockfish binary, but with a completely new and different neural network that differs significantly from Stockfish's on a couple of key points:
The first is that the evaluations and positions did not come from a brute force engine such as Stockfish or Komodo, but rather came from our original neural network Fat Fritz.
The second key difference is that the neural network in Fat Fritz 2 is double the size of Stockfish 12, using 512 neurons instead of 256, offering the opportunity for double the knowledge and understanding."
What's the source of your quotation?
Albert Silver himself

Re: FF2 verses SF, what are the important differences?

Posted: Mon Feb 15, 2021 10:29 pm
by Dann Corbit
schack wrote: Sun Feb 14, 2021 3:31 pm Perhaps off-topic; if so, please close or put in the right forum.

Let's say I wanted to rebase the FF2 code changes on the latest Stockfish dev version. How would I do that? Is there a set of tools that would let me do that automatically? Can I do it through github?
The source changes are trivial (you can use diff to see)
However you will have a sf version that cannot read the 20MB node files, it must have 40.
Hence, to use it you must generate your own net.
This is the real effort of the FF2 project and it is not a trivial effort.

The one thing I will say about the net size change is that it was clever to try it.
That is also why I made a half sized net version (equally useless without a net) because it might actually be useful for underpowered systems.

I have a theory that with ultra powerful CPU systems FF2 will do better than SF, but nobody has made any measurements yet that I know of.

Re: FF2 verses SF, what are the important differences?

Posted: Tue Feb 16, 2021 4:20 am
by jjoshua2
FYI, Stockfinn used 384 before Stockfish even switched to NN, but I wasn't the first one to try a different size like this. Some other folks experimented with sizes 128 through 512, but it seemed that 256 and 384 seemed the sweet spot at the time, and pretty much everyone just focused on keeping 256 especially once Sergio's networks of that size started taking off in strength. As CPUs get faster and get AVX512 and other speedups it seems logical to assume that the sweet spot will grow.
EDIT: It appears Additional Pylon was first to try 512 on 6/15/2020 after seeing that my 384 sized ones were pretty decent, but wasn't able to get it compete with the smaller networks on single core testing since it was half speed.

Re: FF2 verses SF, what are the important differences?

Posted: Tue Feb 16, 2021 11:38 am
by Raphexon
Dann Corbit wrote: Mon Feb 15, 2021 10:29 pm
schack wrote: Sun Feb 14, 2021 3:31 pm Perhaps off-topic; if so, please close or put in the right forum.

Let's say I wanted to rebase the FF2 code changes on the latest Stockfish dev version. How would I do that? Is there a set of tools that would let me do that automatically? Can I do it through github?
The source changes are trivial (you can use diff to see)
However you will have a sf version that cannot read the 20MB node files, it must have 40.
Hence, to use it you must generate your own net.
This is the real effort of the FF2 project and it is not a trivial effort.


The one thing I will say about the net size change is that it was clever to try it.
That is also why I made a half sized net version (equally useless without a net) because it might actually be useful for underpowered systems.

I have a theory that with ultra powerful CPU systems FF2 will do better than SF, but nobody has made any measurements yet that I know of.
Changing a few lines in the Nodchip trainer is also trivial.
As trivial as the source changes. Just change numbers, already been done before by others before Albert. The flip net also already done before Albert.

Converting PGNs to training data is also fairly trivial, and there's a good chance Dkappe provided a script for Albert.
Sergio Vieri also had a lot of scripts on his Github which Albert definitely should have known about, but I don't think they were very useful if he used Daniel Uranga's Tensorflow NNUE trainer. If he used Nodchip's trainer on the other hand...

So everything was already there or done for him.

Did it cost him a lot of processing power and time?
Most likely.

But it was not some monumental effort, just a lot of patience while the computer crunches the numbers.


Albert likely just struck gold with the architecture.
Vondele's first try with a 512x16x16 net resulted in a FF2 level net.
https://tests.stockfishchess.org/tests/ ... 561bc49984

Re: FF2 verses SF, what are the important differences?

Posted: Tue Feb 16, 2021 1:33 pm
by Dann Corbit
You are assuming that little effort went into the net, but I doubt if that is the case.
In the case of the original FF, they used different methods to train the net than LC0.
I do not know what methods were used for FF2, but I guess that they tried something different there as well.

In any case, if they were to take Stockfish, change one constant in eval, and then sell it they can do that,

In a reverse sort of case, people took Redhat, made some simple changes, and now we have Ubuntu and Centos.

That is just how the GPL works. The freedom with GPL is freedom like "free speach" not like "free beer"

You are guaranteed to get the source code and that is the end of it.

There is nothing wrong with the GPL model, is it is a very successful way to make excellent software.

Re: FF2 verses SF, what are the important differences?

Posted: Tue Feb 16, 2021 1:41 pm
by Dann Corbit
There is a special sort of guarantee that GPL provides that other licenses do not.
Consider MySQL. It was bought by Oracle and people were afraid it would become proprietary and very expensive.
I will let you judge whether that happened or not.
But in the meantime, concerned people made the Mariadb and Percona forks (and some others).
They can do that even though Oracle bought the MySQL rights, because the code before it was purchased was free game.

Even Public Domain code does not have this guarantee because it is possible to hijack public domain code (though it rarely happens and there are some great Public Domain projects like Sqlite).

So every license has its uses, its strengths and its weaknesses.