FF2 verses SF, what are the important differences?

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

Moderators: hgm, Rebel, chrisw

schack
Posts: 172
Joined: Thu May 27, 2010 3:32 am

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

Post 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?
User avatar
pohl4711
Posts: 2441
Joined: Sat Sep 03, 2011 7:25 am
Location: Berlin, Germany
Full name: Stefan Pohl

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

Post 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
Dann Corbit
Posts: 12542
Joined: Wed Mar 08, 2006 8:57 pm
Location: Redmond, WA USA

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

Post 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.
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 6:16 am

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

Post 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.
Raphexon
Posts: 476
Joined: Sun Mar 17, 2019 12:00 pm
Full name: Henk Drost

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

Post 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
Dann Corbit
Posts: 12542
Joined: Wed Mar 08, 2006 8:57 pm
Location: Redmond, WA USA

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

Post 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.
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: 12542
Joined: Wed Mar 08, 2006 8:57 pm
Location: Redmond, WA USA

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

Post 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.
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.