FF2 verses SF, what are the important differences?

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

Moderators: hgm, Dann Corbit, Harvey Williamson

Forum rules
This textbox is used to restore diagrams posted with the [d] tag before the upgrade.
schack
Posts: 156
Joined: Thu May 27, 2010 1:32 am
Contact:

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

Post by schack » Sun Feb 14, 2021 2: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?

pohl4711
Posts: 1544
Joined: Sat Sep 03, 2011 5:25 am
Location: Berlin, Germany
Contact:

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

Post by pohl4711 » Mon Feb 15, 2021 7:34 am

acepoint_de wrote:
Sun Feb 14, 2021 9:48 am
pohl4711 wrote:
Sat Feb 13, 2021 3: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

Dann Corbit
Posts: 12141
Joined: Wed Mar 08, 2006 7:57 pm
Location: Redmond, WA USA
Contact:

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

Post by Dann Corbit » Mon Feb 15, 2021 9:29 pm

schack wrote:
Sun Feb 14, 2021 2: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.
Taking ideas is not a vice, it is a virtue. We have another word for this. It is called learning.
But sharing ideas is an even greater virtue. We have another word for this. It is called teaching.

jjoshua2
Posts: 99
Joined: Sat Mar 10, 2018 5:16 am

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

Post by jjoshua2 » Tue Feb 16, 2021 3:20 am

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.

Raphexon
Posts: 385
Joined: Sun Mar 17, 2019 11:00 am
Full name: Henk Drost

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

Post by Raphexon » Tue Feb 16, 2021 10:38 am

Dann Corbit wrote:
Mon Feb 15, 2021 9:29 pm
schack wrote:
Sun Feb 14, 2021 2: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

Dann Corbit
Posts: 12141
Joined: Wed Mar 08, 2006 7:57 pm
Location: Redmond, WA USA
Contact:

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

Post by Dann Corbit » Tue Feb 16, 2021 12:33 pm

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.
Taking ideas is not a vice, it is a virtue. We have another word for this. It is called learning.
But sharing ideas is an even greater virtue. We have another word for this. It is called teaching.

Dann Corbit
Posts: 12141
Joined: Wed Mar 08, 2006 7:57 pm
Location: Redmond, WA USA
Contact:

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

Post by Dann Corbit » Tue Feb 16, 2021 12:41 pm

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.
Taking ideas is not a vice, it is a virtue. We have another word for this. It is called learning.
But sharing ideas is an even greater virtue. We have another word for this. It is called teaching.

Post Reply