Today I found that scale was not the cause
It seems that the cause was incorrectly working heuristics (possibly hash), because if I leave only null move pruning and lmr, I have about +70-100 Elo in 3+0.02 without eval scaling. Scaling helps, but this is already a consequence. I think with correct working, no need to scale. Yeah it's weird that problem only when I use NNUE evaluation.
So, will enable heuristics one by one and test it.
Attempting to implement NNUE into my engine
Moderator: Ras
-
- Posts: 289
- Joined: Sun Nov 13, 2016 10:37 am
Re: Attempting to implement NNUE into my engine
Zevra 2 is my chess engine. Binary, source and description here: https://github.com/sovaz1997/Zevra2
Zevra v2.6 is last version of Zevra: https://github.com/sovaz1997/Zevra2/releases
Zevra v2.6 is last version of Zevra: https://github.com/sovaz1997/Zevra2/releases
-
- Posts: 289
- Joined: Sun Nov 13, 2016 10:37 am
Re: Attempting to implement NNUE into my engine
Done!
I did it. Just make clear hash after every move, because I found some problems with hash (and this problem was happen only with NNUE)
Next step - try to find a bug and not do reser hash after every move.
Now some improvement over hce with fully zero-trained 768x64 net.
I did it. Just make clear hash after every move, because I found some problems with hash (and this problem was happen only with NNUE)
Code: Select all
tc=3+0.02
Score of Zevra Self (Gen 8) vs Zevra Classic: 320 - 214 - 84 [0.586] 618
... Zevra Self (Gen 8) playing White: 142 - 135 - 32 [0.511] 309
... Zevra Self (Gen 8) playing Black: 178 - 79 - 52 [0.660] 309
... White vs Black: 221 - 313 - 84 [0.426] 618
Elo difference: 60.2 +/- 25.8, LOS: 100.0 %, DrawRatio: 13.6 %
SPRT: llr 2.95 (100.4%), lbound -2.94, ubound 2.94 - H1 was accepted
Now some improvement over hce with fully zero-trained 768x64 net.
Zevra 2 is my chess engine. Binary, source and description here: https://github.com/sovaz1997/Zevra2
Zevra v2.6 is last version of Zevra: https://github.com/sovaz1997/Zevra2/releases
Zevra v2.6 is last version of Zevra: https://github.com/sovaz1997/Zevra2/releases
-
- Posts: 289
- Joined: Sun Nov 13, 2016 10:37 am
Re: Attempting to implement NNUE into my engine
Hello!
I completed trained the net 768x256 on 1 billion self-play positions and have next results:
Next plan is continue to improve the search, add AVX-support (because now I did only for NEON).
I completed trained the net 768x256 on 1 billion self-play positions and have next results:
Code: Select all
[In progress...]
tc=60+0.6; Hash=64
Score of Zevra NNUE vs Zevra v2.5: 1256 - 531 - 293 [0.674] 2080
... Zevra NNUE playing White: 598 - 325 - 117 [0.631] 1040
... Zevra NNUE playing Black: 658 - 206 - 176 [0.717] 1040
... White vs Black: 804 - 983 - 293 [0.457] 2080
Elo difference: 126.4 +/- 14.6, LOS: 100.0 %, DrawRatio: 14.1 %
Zevra 2 is my chess engine. Binary, source and description here: https://github.com/sovaz1997/Zevra2
Zevra v2.6 is last version of Zevra: https://github.com/sovaz1997/Zevra2/releases
Zevra v2.6 is last version of Zevra: https://github.com/sovaz1997/Zevra2/releases
-
- Posts: 898
- Joined: Sun Dec 27, 2020 2:40 am
- Location: Bremen, Germany
- Full name: Thomas Jahn
Re: Attempting to implement NNUE into my engine
+126 is a solid improvement! Congratz on the release of 2.6! How did you decide that this is enough for now? Have you hit a plateau or are you just sick of generating more data and want to move on to more interesting things?
I vaguely remember that when many devs switched to NNUE they often reported higher Elo gains then I got with Leorik 3.0. But at the same time my net just didn't gain anymore with more data or a larger neuron count. I think long term it can hurt an engine a lot when new features underperform but at the same time it's hard to know what the peak possible performance even is.
I vaguely remember that when many devs switched to NNUE they often reported higher Elo gains then I got with Leorik 3.0. But at the same time my net just didn't gain anymore with more data or a larger neuron count. I think long term it can hurt an engine a lot when new features underperform but at the same time it's hard to know what the peak possible performance even is.