Embedding Stockfish NNUE to ANY CHESS ENGINE: YouTube series

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

Moderators: hgm, Rebel, chrisw

User avatar
maksimKorzh
Posts: 771
Joined: Sat Sep 08, 2018 5:37 pm
Location: Ukraine
Full name: Maksim Korzh

Embedding Stockfish NNUE to ANY CHESS ENGINE: YouTube series

Post by maksimKorzh »

Hey what's up guys, Code Monkey King's here.

First of all I'd like to thank Daniel Shawul for creating NNUE probe library based on CFish's code.
https://github.com/dshawul/nnue-probe
because without this library my work would never exist.

I've just made a quick and dirty embedding of SF NNUE to my engine BBC and results are fantastic,
here's the example game:

[pgn][Event "Computer chess game"]
[Site "maksim-Inspiron-3582"]
[Date "2020.10.17"]
[Round "?"]
[White "BBC 1.2"]
[Black "BBC NNUE"]
[Result "0-1"]
[BlackElo "2200"]
[ECO "B45"]
[Opening "Sicilian"]
[Time "12:49:05"]
[Variation "Taimanov, Four Knights, 6.Nxc6 bxc6 7.e5 Nd5"]
[WhiteElo "2000"]
[Termination "normal"]
[PlyCount "136"]
[WhiteType "program"]
[BlackType "program"]

1. e4 {(e2-e4 d7-d5 e4xd5 Ng8-f6 d2-d4 Nf6xd5 Bf1-b5+ Bc8-d7 Bb5-d3)
+0.11/8 0} c5 {(c7-c5 c2-c3 Ng8-f6 e4-e5 Nf6-d5 Ng1-f3 e7-e6 Bf1-d3)
-0.60/8 2} 2. Nc3 {(Nb1-c3 e7-e6 Ng1-f3 Nb8-c6 Bf1-c4 Bf8-d6 O-O Ng8-f6)
+0.50/8 0} Nc6 {(Nb8-c6 Ng1-f3 Ng8-f6 d2-d4 c5xd4 Nf3xd4 e7-e6 Nd4-b5)
-0.63/8 2} 3. Nf3 {(Ng1-f3 Ng8-f6 Bf1-c4 e7-e6 O-O d7-d5 e4xd5 e6xd5)
+0.51/8 0} Nf6 {(Ng8-f6 d2-d4 c5xd4 Nf3xd4 e7-e6 Bf1-e2 Bf8-b4 Nd4xc6)
-0.26/8 7} 4. d4 {(d2-d4 c5xd4 Nf3xd4 d7-d5 Nd4xc6 b7xc6 Bc1-f4 Bc8-g4)
+0.34/8 1} cxd4 {(c5xd4 Nf3xd4 e7-e6 Bf1-e2 Bf8-b4 Nd4xc6 b7xc6) -0.26/7 3}
5. Nxd4 {(Nf3xd4 e7-e5 Nd4xc6 b7xc6 Bf1-c4 d7-d5 e4xd5 Bc8-g4) +0.57/8 0}
e6 {(e7-e6 Bc1-f4 Bf8-b4 Nd4-b5 O-O a2-a3 Bb4-a5 Qd1-f3) -0.67/8 19} 6.
Nxc6 {(Nd4xc6 b7xc6 Bf1-d3 d7-d5 e4-e5 d5-d4 e5xf6 d4xc3) +0.62/8 0} bxc6
{(b7xc6 e4-e5 Nf6-d5 Nc3xd5 c6xd5 Bf1-d3 Qd8-c7 Bc1-f4) -0.05/8 3} 7. e5
{(e4-e5 Nf6-d5 Nc3xd5 c6xd5 Bc1-e3 Bc8-b7 Bf1-d3 d5-d4) +0.51/8 1} Nd5
{(Nf6-d5 Nc3xd5 c6xd5 Bf1-d3 Qd8-a5+ Bc1-d2 Qa5-b6 O-O Qb6xb2) +0.12/8 2}
8. Nxd5 {(Nc3xd5 c6xd5 Bf1-d3 Bf8-e7 Bc1-e3 Ra8-b8 b2-b3 O-O) +0.64/8 0}
cxd5 {(c6xd5 Bf1-d3 Qd8-a5+ Bc1-d2 Qa5-b6 Ra1-b1 Bc8-a6 O-O Ba6xd3) -0.26/8
4} 9. Bd3 {(Bf1-d3 Bc8-b7 O-O Bf8-c5 Qd1-h5 Ra8-c8 Bc1-g5 Qd8-c7) +0.69/8
0} Qa5+ {(Qd8-a5+ Bc1-d2 Qa5-b6 Ra1-b1 Bc8-a6 O-O Ba6xd3 c2xd3 Bf8-e7)
-0.16/8 6} 10. Bd2 {(Bc1-d2 Qa5-c7 Qd1-h5 Bf8-c5 O-O g7-g6 Qh5-g5 Bc5-d4
Ra1-e1) +0.77/8 1} Qb6 {(Qa5-b6 Ra1-b1 Bc8-a6 O-O Ba6xd3 c2xd3 Qb6-a6
Qd1-b3) +0.13/8 2} 11. Rb1 {(Ra1-b1 Bf8-c5 O-O O-O a2-a4 Bc5-d4 a4-a5
Qb6-c7) +0.70/8 1} Ba6 {(Bc8-a6 O-O Ba6xd3 c2xd3 Bf8-c5 b2-b4 Bc5-d4
Qd1-h5) +0.27/8 3} 12. O-O {(O-O Ba6xd3 c2xd3 Ra8-c8 Qd1-g4 Qb6-a6 d3-d4
Qa6xa2) +0.58/8 0} Bxd3 {(Ba6xd3 c2xd3 Qb6-a6 Qd1-b3 Bf8-e7 d3-d4 O-O
Rf1-c1) +0.48/8 2} 13. cxd3 {(c2xd3 Ra8-c8 Rb1-c1 Rc8xc1 Qd1xc1 Bf8-c5
Bd2-e3 Bc5xe3) +0.47/8 0} Qa6 {(Qb6-a6 Bd2-c3 Bf8-e7 Rb1-a1 O-O d3-d4
Rf8-b8 Qd1-g4) +0.96/8 3} 14. Qb3 {(Qd1-b3 Bf8-e7 Rf1-c1 O-O Rc1-c7 Ra8-b8
Qb3-c2 Rb8-c8) +0.71/8 0} Be7 {(Bf8-e7 Rf1-c1 O-O Rc1-c7 Rf8-b8 Qb3-c2
Rb8-c8 Rb1-d1) +1.35/8 3} 15. Rbc1 {(Rb1-c1 O-O a2-a3 Ra8-b8 Qb3-c3 Rb8-c8
Qc3-d4 Qa6-b6) +0.41/8 0} O-O {(O-O a2-a3 Ra8-b8 Qb3-c3 Rf8-c8 Qc3-d4
Rc8-c6 g2-g3) +1.83/8 2} 16. a3 {(a2-a3 Ra8-b8 Qb3-c3 d7-d6 Bd2-f4 d6xe5
Bf4xe5 Rb8-c8) +0.33/8 0} Rab8 {(Ra8-b8 Qb3-c3 Rf8-c8 Qc3-d4 d7-d6 e5xd6
Be7xd6 g2-g3) +1.85/8 3} 17. Qc3 {(Qb3-c3 Rf8-c8 Qc3-d4 Qa6-b6 Qd4xb6 a7xb6
Bd2-e3 b6-b5) +0.39/8 0} Rfc8 {(Rf8-c8 Qc3-d4 Rc8-c6 b2-b4 Qa6xa3 Rc1-a1
Qa3-b3 Qd4xa7) +1.86/8 5} 18. Qd4 {(Qc3-d4 d7-d6 Bd2-f4 Rc8xc1 Rf1xc1
Rb8-b3 Rc1-d1 d6xe5) +0.33/8 0} Bd8 {(Be7-d8 Rc1xc8 Rb8xc8 Rf1-c1 Rc8xc1+
Bd2xc1 Bd8-b6 Qd4-c3 Qa6-a4) +3.42/8 7} 19. Rxc8 {(Rc1xc8 Rb8xc8 Rf1-c1
Rc8xc1+ Bd2xc1 Bd8-b6 Qd4-c3 d5-d4 Qc3-c2) +0.11/8 0} Rxc8 {(Rb8xc8 Rf1-c1
Rc8xc1+ Bd2xc1 f7-f6 e5xf6 Bd8xf6 Qd4-e3 h7-h6) +1.82/8 1} 20. Rc1 {(Rf1-c1
Rc8xc1+ Bd2xc1 Bd8-b6 Qd4-c3 d5-d4 Qc3-b3 Bb6-c5 Bc1-f4) +0.26/8 0} Rxc1+
{(Rc8xc1+ Bd2xc1 f7-f6 e5xf6 Bd8xf6 Qd4-e3 Qa6-a4 b2-b4) +1.51/7 0} 21.
Bxc1 {(Bd2xc1 Qa6-c8 Qd4-c3 Qc8xc3 b2xc3 Bd8-e7 a3-a4 Be7-c5 Bc1-f4)
-0.00/8 0} f6 {(f7-f6 Bc1-f4 h7-h6 Qd4-c3 Qa6-a4 g2-g3 Qa4-d1+ Kg1-g2
Kg8-h7) +1.63/8 3} 22. Bf4 {(Bc1-f4 Bd8-b6 Qd4-c3 Qa6-a4 Qc3-c1 Kg8-f7
e5xf6 Kf7xf6) +0.62/8 0} Qa5 {(Qa6-a5 Qd4-e3 g7-g5 Bf4-g3 f6-f5 Qe3-c1
f5-f4) +3.23/7 2} 23. Qe3 {(Qd4-e3 Qa5-b5 b2-b4 Bd8-b6 Qe3-g3 Bb6-d4 e5xf6
Bd4xf6) +0.37/8 0} g5 {(g7-g5 Bf4-g3 f6-f5 Qe3-c1 Qa5-c7 Qc1-d2 Qc7-b6)
+1.86/7 0} 24. Bg3 {(Bf4-g3 Qa5-b6 Qe3-c1 Qb6-c6 Qc1-d1 Bd8-e7 Qd1-g4
Qc6-c1+) +0.51/8 0} f5 {(f6-f5 f2-f4 Bd8-b6 d3-d4 Qa5-a4 Bg3-f2 Qa4-d1+
Qe3-e1 Qd1xe1+) +8.01/8 0} 25. f4 {(f2-f4 Qa5-b6 Qe3-f2 g5-g4 a3-a4 Bd8-e7
h2-h3 Qb6xf2+) +0.19/8 0} Bb6 {(Bd8-b6 d3-d4 Qa5-a4 Bg3-f2 Qa4-d1+ Qe3-e1
Qd1xe1+ Bf2xe1 Bb6xd4+) +8.01/7 0} 26. d4 {(d3-d4 Qa5-a4 Kg1-h1 Qa4-d1+
Qe3-e1 Qd1xe1+ Bg3xe1 Bb6xd4 Be1-c3 Bd4xc3) -1.76/8 0} Qa4 {(Qa5-a4 Bg3-f2
Qa4-d1+ Qe3-e1 Qd1xe1+ Bf2xe1 Bb6xd4+ Be1-f2 Bd4xb2 Bf2xa7) +11.75/7 1} 27.
Kf1 {(Kg1-f1 Bb6xd4 Qe3-e2 g5xf4 Bg3-f2 Bd4xf2 Kf1xf2 Qa4-e4) -2.27/8 0}
Bxd4 {(Bb6xd4 Qe3-e2 g5xf4 Bg3-e1 Bd4-e3 Be1-c3 d5-d4 Qe2-h5) +15.42/8 0}
28. Qe2 {(Qe3-e2 g5xf4 Bg3-f2 Bd4xe5 Qe2xe5 Qa4-d1+ Qe5-e1 Qd1xe1+ Kf1xe1
a7-a5) -2.36/8 0} gxf4 {(g5xf4 Bg3-e1 Qa4-c6 b2-b4 Qc6-c7 Qe2-h5 Bd4xe5)
+15.22/7 0} 29. Bf2 {(Bg3-f2 Bd4xf2 Kf1xf2 Qa4-d4+ Kf2-f3 Kg8-f7 h2-h3
a7-a5 h3-h4) -2.31/8 0} Bxf2 {(Bd4xf2 Qe2xf2 Qa4-d1+ Qf2-e1 Qd1xe1+ Kf1xe1
Kg8-f7 Ke1-f2 Kf7-g7 Kf2-f3) +15.28/8 0} 30. Kxf2 {(Kf1xf2 Qa4-d4+ Kf2-f3
Kg8-f7 b2-b4 h7-h5 h2-h3 h5-h4 b4-b5) -2.31/8 0} Kg7 {(Kg8-g7 Qe2-d2 Qa4-e4
Qd2-c3 Qe4-c4 Qc3xc4 d5xc4) +14.36/7 0} 31. Kf3 {(Kf2-f3 Qa4-d4 b2-b4
Kg7-f7 h2-h4 h7-h5 b4-b5 Kf7-e7) -2.20/8 0} Qd4 {(Qa4-d4 h2-h3 Kg7-g6 b2-b4
h7-h5 h3-h4 Qd4-c3+ Kf3xf4 Qc3xa3) +16.80/8 0} 32. b4 {(b2-b4 Kg7-f7 b4-b5
h7-h5 h2-h3 h5-h4 Qe2-e1 Kf7-g6) -2.25/8 0} Kg6 {(Kg7-g6 h2-h4 Kg6-h5
Qe2-e1 a7-a6 a3-a4 Kh5-g6 b4-b5) +17.05/8 1} 33. h4 {(h2-h4 Kg6-h5 Qe2-e1
Qd4-e4+ Qe1xe4 f5xe4+ Kf3xf4 Kh5xh4 g2-g3+ Kh4-h3 b4-b5) -2.60/8 0} a6
{(a7-a6 Qe2-e1 h7-h6 a3-a4 Qd4-c4 a4-a5 Qc4-c2 b4-b5) +16.71/8 0} 34. Qe1
{(Qe2-e1 Kg6-h5 a3-a4 Kh5-h6 b4-b5 Qd4-d3+ Kf3xf4 a6xb5 a4xb5) -2.23/8 0}
Qd3+ {(Qd4-d3+ Kf3xf4 Qd3xa3 Qe1-d2 Qa3-a1 g2-g3 Qa1-f1+ Kf4-e3 h7-h6
Qd2-d4) +18.43/8 0} 35. Kxf4 {(Kf3xf4 Qd3-d4+ Kf4-f3 Qd4-g4+ Kf3-f2 Qg4xh4+
g2-g3 Qh4-e4 Qe1xe4 f5xe4 Kf2-e3 h7-h5) -2.46/8 0} Qxa3 {(Qd3xa3 Qe1-d2
h7-h6 Qd2-d4 Qa3-c1+ Kf4-g3 Qc1-c4 Qd4xc4) +16.79/7 0} 36. Qd2 {(Qe1-d2
Qa3-b3 Qd2-d4 Qb3-c4 Kf4-e3 Qc4xd4+ Ke3xd4 f5-f4 Kd4-d3) -2.30/8 0} Qb3
{(Qa3-b3 Qd2-e1 Qb3-c4+ Kf4-g3 Qc4-e4 Qe1xe4 f5xe4 Kg3-f4 Kg6-h5) +21.53/8
1} 37. Qd4 {(Qd2-d4 Qb3-c2 g2-g3 Qc2-e4+ Qd4xe4 f5xe4 g3-g4 h7-h6 h4-h5+)
-2.37/8 0} Qc4 {(Qb3-c4 Kf4-e3 Qc4xd4+ Ke3xd4 f5-f4 Kd4-c5 Kg6-f5 Kc5-d6
d5-d4) +24.76/8 0} 38. Qxc4 {(Qd4xc4 d5xc4 Kf4-e3 f5-f4+ Ke3xf4 c4-c3 g2-g4
c3-c2 Kf4-e4) -2.30/8 0} dxc4 {(d5xc4 g2-g3 Kg6-h5 Kf4-f3 h7-h6 Kf3-f4
c4-c3 Kf4-e3) +24.97/8 0} 39. g4 {(g2-g4 f5xg4 Kf4xg4 c4-c3 h4-h5+ Kg6-h6
Kg4-h4 c3-c2 Kh4-g4) -3.56/8 0} fxg4 {(f5xg4 Kf4xg4 Kg6-h6 h4-h5 c4-c3
Kg4-h4 c3-c2 Kh4-g4) +32.64/8 0} 40. Kxg4 {(Kf4xg4 c4-c3 h4-h5+ Kg6-h6
b4-b5 a6xb5 Kg4-h4 c3-c2 Kh4-g4) -5.39/8 0} c3 {(c4-c3 b4-b5 a6xb5 h4-h5+
Kg6-h6 Kg4-f4 c3-c2 Kf4-e4 c2-c1Q) +52.97/8 0} 41. b5 {(b4-b5 a6xb5 Kg4-f4
c3-c2 Kf4-e4 c2-c1Q Ke4-d4 Kg6-h6) -12.44/8 0} c2 {(c3-c2 b5xa6 c2-c1Q
h4-h5+ Kg6-h6 a6-a7 Qc1-g5+ Kg4-h3 Qg5-d8 Kh3-g4) +46.51/8 0} 42. h5+
{(h4-h5+ Kg6-h6 b5xa6 c2-c1Q a6-a7 Qc1-a3 a7-a8Q Qa3xa8 Kg4-h4) -10.34/8 0}
Kh6 {(Kg6-h6 b5xa6 c2-c1Q a6-a7 Qc1-h1 Kg4-g3 Qh1-a8 Kg3-h4) +50.24/7 0}
43. bxa6 {(b5xa6 c2-c1Q a6-a7 Qc1-a3 a7-a8R Qa3xa8 Kg4-h4) -10.34/7 0} c1=Q
{(c2-c1Q a6-a7 Qc1-a1 a7-a8Q Qa1xa8 Kg4-f4 Qa8-a2) +51.75/7 0} 44. Kf3
{(Kg4-f3 Qc1-a3+ Kf3-f4 Qa3xa6 Kf4-e3 Kh6xh5 Ke3-e4 d7-d5+ Ke4-e3 Qa6-f1)
-13.60/8 0} Kxh5 {(Qc1-f1+ Kf3-g3 Qf1xa6 Kg3-g4 Qa6-a2 Kg4-h4 Qa2-a3
Kh4-g4) +59.50/7 0} 45. Ke4 {(Kf3-e4 Qc1-c6+ Ke4-f4 Qc6xa6 Kf4-e4 d7-d5+
e5xd6/ep Qa6xd6 Ke4-e3 Qd6-d5) -14.04/8 0} Qa3 {(Kh5-g6 a6-a7 Qc1-a3 Ke4-f4
Qa3xa7 Kf4-f3 Qa7-a2) +59.77/7 0} 46. a7 {(a6-a7 Qa3xa7 Ke4-d3 Qa7-c5
Kd3-e4 Kh5-g4 Ke4-d3 Qc5xe5) -16.62/8 0} Qxa7 {(Qa3xa7 Ke4-f3 Qa7-a2 Kf3-g3
Kh5-h6 Kg3-h4 Kh6-g6) +59.61/7 0} 47. Kd3 {(Ke4-d3 Qa7-a3+ Kd3-e4 Qa3-b2
Ke4-d3 Qb2xe5 Kd3-c4 Qe5-d5+ Kc4-c3 Kh5-h4) -16.94/8 0} Qa6+ {(Qa7-a6+
Kd3-c3 Qa6-b5 Kc3-d4 h7-h6 Kd4-e4 Qb5-d5+ Ke4-f4 Qd5-b3 Kf4-e4) +61.16/8 0}
48. Ke3 {(Kd3-e3 Qa6-b6+ Ke3-e4 Qb6-c5 Ke4-d3 Qc5xe5 Kd3-c4 Qe5-d5+ Kc4-b4
Kh5-h4 Kb4-c3) -16.94/8 0} Qa1 {(Qa6-a1 Ke3-f4 h7-h6 Kf4-g3 Qa1-b2 Kg3-f4
Qb2-b3 Kf4-e4) +61.16/8 0} 49. Ke4 {(Ke3-e4 Kh5-h4 Ke4-e3 Qa1xe5+ Ke3-f3
Qe5-d5+ Kf3-f4 Qd5-d4+ Kf4-f3 Qd4-d3+ Kf3-f4 Kh4-h3) -17.03/8 0} Qb2
{(Qa1-b2 Ke4-f4 Qb2-b3 Kf4-e4 h7-h6 Ke4-f4 Qb3-h3 Kf4-e4) +61.21/8 0} 50.
Ke3 {(Ke4-e3 Qb2xe5+ Ke3-d3 Qe5-d5+ Kd3-e3 Kh5-h4 Ke3-f4 Qd5-d4+ Kf4-f3
Qd4-d3+ Kf3-f4 Kh4-h3) -17.03/8 0} Qxe5+ {(Qb2xe5+ Ke3-f2 Qe5-c5+ Kf2-g2
Qc5-f5 Kg2-h2 Qf5-f4+ Kh2-g2 Qf4-g4+ Kg2-h1 h7-h6 Kh1-h2) +62.33/8 0} 51.
Kd3 {(Ke3-d3 Kh5-h4 Kd3-d2 Qe5-e4 Kd2-c3 Kh4-g3 Kc3-d2 Kg3-f3 Kd2-c3)
-17.24/8 0} Kg6 {(Kh5-g6 Kd3-d2 d7-d6 Kd2-d3 Kg6-g7 Kd3-c4 Qe5-f5 Kc4-b4)
+62.29/8 0} 52. Kc4 {(Kd3-c4 Kg6-f5 Kc4-d3 Qe5-e4+ Kd3-c3 Kf5-f6 Kc3-d2
Kf6-e5 Kd2-c3) -17.32/8 0} Kg7 {(Kg6-g7 Kc4-b3 Qe5-d5+ Kb3-a4 Kg7-f6 Ka4-a3
Qd5-a5+ Ka3-b3 Qa5-a1 Kb3-b4) +62.19/8 0} 53. Kd3 {(Kc4-d3 Qe5-f4 Kd3-c3
Qf4-e3+ Kc3-c4 Kg7-f6 Kc4-b5 Kf6-e5 Kb5-c4) -17.12/8 0} Kf8 {(Kg7-f8 Kd3-c2
h7-h6 Kc2-b3 Kf8-f7 Kb3-b4 d7-d6 Kb4-c4) +62.13/8 0} 54. Kc4 {(Kd3-c4
Qe5-d5+ Kc4-c3 Kf8-e7 Kc3-b4 Qd5-d4+ Kb4-b5 Ke7-d6 Kb5-a6 Qd4-e4) -17.27/8
0} Ke7 {(Kf8-e7 Kc4-b4 Qe5-d5 Kb4-a3 h7-h6 Ka3-b4 Qd5-a2 Kb4-c5) +62.46/8
0} 55. Kd3 {(Kc4-d3 Ke7-d6 Kd3-d2 Qe5-e4 Kd2-c3 Qe4-d5 Kc3-c2 Qd5-e4+)
-17.30/8 0} Kd6 {(Ke7-d6 Kd3-c2 Qe5-c5+ Kc2-b3 Qc5-d5+ Kb3-a4 Qd5-f5 Ka4-b4
Qf5-c2 Kb4-a3) +62.55/8 0} 56. Kd2 {(Kd3-d2 Qe5-e4 Kd2-c3 Kd6-e5 Kc3-b3
Qe4-d3+ Kb3-b4 Ke5-d6 Kb4-a5) -17.35/8 0} Qd4+ {(Qe5-d4+ Kd2-c2 Kd6-e7
Kc2-b3 Qd4-g4 Kb3-b2 Qg4-b4+ Kb2-a1 Qb4-b5 Ka1-a2) +62.71/8 0} 57. Ke2
{(Kd2-e2 Qd4-e4+ Ke2-d2 Kd6-c5 Kd2-d1 Qe4-d4+ Kd1-e2 Kc5-d5 Ke2-f3 Qd4-e4+
Kf3-g3 Kd5-e5) -17.34/8 0} Qf4 {(Qd4-f4 Ke2-d3 Kd6-e7 Kd3-e2 Qf4-h4 Ke2-f3
h7-h6 Kf3-g2) +62.74/8 0} 58. Kd3 {(Ke2-d3 Kd6-d5 Kd3-e2 Qf4-e4+ Ke2-f2
Kd5-d6 Kf2-g3 Kd6-e5 Kg3-h3) -17.34/8 0} Kc7 {(Kd6-c7 Kd3-c3 Qf4-a4 Kc3-d3
Kc7-b7 Kd3-c3 Qa4-b5 Kc3-d2) +62.73/8 0} 59. Kc3 {(Kd3-c3 Qf4-e4 Kc3-d2
Kc7-d6 Kd2-c3 Qe4-d5 Kc3-c2 Qd5-f3) -17.23/8 0} h6 {(h7-h6 Kc3-d3 Kc7-d6
Kd3-c3 Kd6-e7 Kc3-b2 Qf4-e3 Kb2-a1) +62.74/8 0} 60. Kd3 {(Kc3-d3 Kc7-d6
Kd3-c3 Qf4-e4 Kc3-d2 Kd6-e5 Kd2-c3 Ke5-d5) -16.78/8 0} Qb4 {(Qf4-b4 Kd3-e2
Kc7-b7 Ke2-f3 h6-h5 Kf3-g3 Kb7-a8 Kg3-h3) +62.48/8 0} 61. Ke3 {(Kd3-e3
Qb4-g4 Ke3-d3 Kc7-d6 Kd3-e3 Qg4-c4 Ke3-f3 Qc4-d5+) -16.65/8 0} Qc4 {(Qb4-c4
Ke3-f2 Qc4-e4 Kf2-g3 h6-h5 Kg3-h2 Qe4-f3 Kh2-g1) +62.63/8 0} 62. Kf3
{(Ke3-f3 Qc4-d4 Kf3-e2 Qd4-e4+ Ke2-d2 Kc7-d6 Kd2-c3 Qe4-d5 Kc3-c2) -16.75/8
0} h5 {(h6-h5 Kf3-g3 Kc7-d6 Kg3-g2 Kd6-e7 Kg2-g3 Qc4-d4 Kg3-g2) +62.63/8 0}
63. Ke3 {(Kf3-e3 Kc7-d6 Ke3-d2 Kd6-e5 Kd2-e1 Qc4-e4+ Ke1-d1 Qe4-d3+ Kd1-e1
Ke5-d6) -16.62/8 0} Kd6 {(Kc7-d6 Ke3-f3 Qc4-b4 Kf3-e3 Kd6-e7 Ke3-d3 Ke7-f8
Kd3-c2) +62.44/8 0} 64. Kf3 {(Ke3-f3 Kd6-e5 Kf3-f2 Qc4-h4+ Kf2-g2 Qh4-d4
Kg2-g3 Qd4-e4 Kg3-h3) -16.64/8 0} Qc3+ {(Qc4-c3+ Kf3-f4 Qc3-c1+ Kf4-g3
Qc1-d1 Kg3-g2 Kd6-e7 Kg2-g3 Qd1-d2 Kg3-h4) +62.45/8 0} 65. Ke4 {(Kf3-e4
Qc3-e5+ Ke4-d3 Kd6-e7 Kd3-c4 Qe5-d5+ Kc4-c3 Qd5-e4 Kc3-d2 Ke7-d6 Kd2-c3)
-16.58/8 0} Ke7 {(Kd6-e7 Ke4-f4 Qc3-c5 Kf4-e4 Qc5-c1 Ke4-d4 Ke7-f8 Kd4-e5)
+62.19/8 1} 66. Kf4 {(Ke4-f4 Qc3-d4+ Kf4-g3 h5-h4+ Kg3-h3 Ke7-d6 Kh3-g2
Qd4-g4+ Kg2-f2 Qg4-e4 Kf2-g1) -16.70/8 0} Kf6 {(Ke7-f6 Kf4-e4 d7-d5+ Ke4-f4
e6-e5+) +M3/7 0} 67. Ke4 {(Kf4-e4 d7-d5+ Ke4-f4 e6-e5+) -M3/8 0} d5+
{(d7-d5+ Ke4-f4 e6-e5+) +M2/8 0} 68. Kf4 {(Ke4-f4 e6-e5+) -M2/8 0} e5#
{(e6-e5+) +M1/8 0} 0-1
[/pgn]

There are still lots of improvements, but it now already works as a proof of concept.
Yeah, almost forgot - here's a link to YouTube series:
https://www.youtube.com/watch?v=zieTAE2 ... gMaG24HTc4
User avatar
maksimKorzh
Posts: 771
Joined: Sat Sep 08, 2018 5:37 pm
Location: Ukraine
Full name: Maksim Korzh

Re: Embedding Stockfish NNUE to ANY CHESS ENGINE: YouTube series

Post by maksimKorzh »

Finally series is finished!

Here's the BBC with NNUE!
(I used handcrafted eval in the endgame though to speed up engine on ultra fast time controls)
https://github.com/maksimKorzh/bbc/tree ... c/bbc_nnue

[pgn]Here're a couple of games versus VICE:
[Event "Arena Tournament"]
[Site "maksim-Inspiron-3582"]
[Date "2020.10.18"]
[Round "1"]
[White "BBC NNUE [youtube]"]
[Black "Vice"]
[Result "1-0"]
[BlackElo "2000"]
[ECO "A28"]
[Opening "English"]
[Time "00:36:41"]
[Variation "Four Knights, 4.e3"]
[WhiteElo "2000"]
[TimeControl "120+1"]
[Termination "normal"]
[PlyCount "135"]
[WhiteType "program"]
[BlackType "program"]

1. c4 e5 2. Nc3 Nf6 3. Nf3 {(Ng1-f3 Nb8-c6 e2-e3 Bf8-b4 Nc3-d5 e5-e4 a2-a3
e4xf3) +0.06/8 5} Nc6 4. e3 {(e2-e3 Bf8-b4 d2-d4 e5xd4 e3xd4 d7-d5 Bf1-e2
d5xc4) +0.11/8 4} d5 {(d7-d5 c4xd5 Nf6xd5 Bf1-b5 Nd5xc3 Bb5xc6+) +0.10/9 5}
5. d4 {(d2-d4 e5xd4 Nf3xd4 Nc6xd4 Qd1xd4 Bc8-e6 c4xd5 Nf6xd5) -0.00/8 4}
exd4 {(e5xd4 Nf3xd4 Nc6xd4 e3xd4 Bf8-e7 Bc1-g5 d5xc4 Bf1xc4 O-O) -0.07/9 4}
6. Nxd4 {(Nf3xd4 Nc6xd4 e3xd4 c7-c6 c4-c5 Bf8-e7 Bf1-d3 Bc8-g4) -0.00/8 4}
Nxd4 {(Nc6xd4 Qd1xd4 Bc8-e6 c4xd5 Nf6xd5 Bf1-c4 Nd5xc3) -0.05/9 4} 7. exd4
{(e3xd4 c7-c6 c4xd5 Nf6xd5 Bf1-c4 Bc8-e6 O-O Bf8-e7) -0.00/8 4} Be6
{(Bc8-e6 Qd1-b3 Qd8-e7 Bc1-e3 Qe7-b4 c4-c5 Qb4xb3 a2xb3) -0.00/8 4} 8. c5
{(c4-c5 c7-c6 Bc1-f4 Be6-f5 Bf1-d3 Bf5xd3 Qd1xd3) +0.54/7 4} Be7 {(Bf8-e7
Bf1-d3 O-O Bc1-e3 Nf6-g4 O-O Ng4xe3 f2xe3) +0.15/8 4} 9. Bd3 {(Bf1-d3 b7-b6
Nc3-a4 Nf6-d7 Bc1-e3 b6xc5 Na4xc5) +0.55/7 4} O-O {(O-O O-O) +0.05/7 4} 10.
O-O {(O-O b7-b6 Nc3-a4 Be6-g4 f2-f3 Bg4-d7 b2-b4) +0.34/7 4} b6 {(b7-b6
c5xb6 a7xb6 Bc1-e3 Nf6-g4 Be3-f4 c7-c5 Nc3-b5) -0.00/8 4} 11. Na4 {(Nc3-a4
c7-c6 Bc1-f4 Rf8-e8 f2-f3 Be6-d7 Qd1-d2) -0.00/7 4} Bd7 {(Be6-d7 Bc1-e3
Qd8-e8 Bd3-c2 Nf6-e4 f2-f3 Be7-g5 Be3xg5) +0.05/8 4} 12. Be3 {(Bc1-e3
Rf8-e8 h2-h3 c7-c6 Be3-f4 Nf6-e4) +0.23/6 3} Qe8 {(Qd8-e8 Na4-c3 b6xc5
d4xc5 Ra8-d8 Qd1-e1 Bd7-c6 Ra1-d1 d5-d4) +0.05/9 4} 13. Nc3 {(Na4-c3 c7-c6
b2-b4 a7-a5 b4-b5 c6xb5 c5xb6) +0.94/7 3} bxc5 {(b6xc5) -0.02/9 3} 14. dxc5
{(d4xc5 c7-c6 Be3-d4 Qe8-b8 Rf1-e1 Rf8-e8 Qd1-c2) +1.08/7 3} Be6 {(Bd7-e6
Rf1-e1 Qe8-b8 Qd1-d2 Rf8-d8) -0.05/8 3} 15. b4 {(b2-b4 Qe8-d7 Nc3-e2 c7-c6
Ne2-d4 Be6-g4) +2.16/6 3} Qb8 {(Qe8-b8 b4-b5 Rf8-e8 Rf1-e1 Be6-g4 f2-f3
Bg4-e6) +0.15/7 3} 16. a3 {(a2-a3 c7-c6 Be3-d4 Rf8-d8 Rf1-e1 a7-a5) -0.00/6
3} Qb7 {(Qb8-b7 Be3-d4 Rf8-e8 Rf1-e1 Ra8-d8 f2-f4 Qb7-b8) +0.20/7 3} 17.
Re1 {(Rf1-e1 c7-c6 Be3-d4 Qb7-d7 b4-b5 Rf8-e8) +3.17/6 3} Rae8 {(Ra8-e8
Be3-d4 Be6-g4 Qd1-b1 Kg8-h8) +0.13/7 3} 18. Ne2 {(Nc3-e2 c7-c6 Ne2-d4
Qb7-c8 Be3-f4 Be6-g4) +4.46/6 3} Ng4 {(Nf6-g4 Qd1-c2 g7-g6 Be3-d4 f7-f5
Ra1-d1 Ng4-f6) +0.18/7 3} 19. Bd4 {(Be3-d4 Be7-f6 Bd4xf6 Ng4xf6 Ne2-d4
c7-c6 Qd1-d2) +5.06/7 3} Bd7 {(Be6-d7 f2-f3 Ng4-h6 Ra1-c1 f7-f5 Ne2-c3
c7-c6) +0.15/7 3} 20. h3 {(h2-h3 Ng4-f6 Ne2-g3 Be7-d8 Ng3-f5 Bd7xf5)
+5.74/6 3} Nh6 {(Ng4-h6 b4-b5 Bd7-f5 c5-c6 Qb7-b8 f2-f4 Be7-h4 Re1-f1)
+0.10/8 3} 21. Qc2 {(Qd1-c2 Be7-h4 Bd3xh7+ Kg8-h8 Bh7-d3 c7-c6 Qc2-d2)
+6.98/6 3} f5 {(f7-f5 Ra1-d1 Be7-g5 Qc2-b2 Bg5-f6 f2-f4 Bd7-e6 b4-b5)
+0.08/8 3} 22. Qc3 {(Qc2-c3 Rf8-f7 Ne2-f4 c7-c6 b4-b5 c6xb5) +8.15/6 3} Bf6
{(Be7-f6 Ra1-d1 Bd7-b5 Bd4xf6 Rf8xf6 Ne2-d4 Re8xe1+) +0.10/8 3} 23. Bxf6
{(Bd4xf6 Rf8xf6 Ne2-f4 Re8xe1+ Ra1xe1 Qb7xb4 a3xb4 Bd7-c6) +9.02/7 3} Rxf6
{(Rf8xf6 Ne2-d4 Qb7-a8 Re1xe8+ Qa8xe8 Ra1-e1 Bd7-e6) -0.00/9 3} 24. Nd4
{(Ne2-d4 Re8xe1+ Ra1xe1 Qb7-a6 Bd3xa6 Rf6xa6 Re1-e7 Bd7-c6) +8.52/7 2} a6
{(a7-a6 Re1xe8+ Bd7xe8 Qc3-c2 Be8-d7 Ra1-e1 Kg8-f8 f2-f4) -0.07/8 3} 25.
Rxe8+ {(Re1xe8+ Bd7xe8 Ra1-e1 Rf6-f8 c5-c6 Qb7xc6 Nd4xc6) +9.22/6 2} Bxe8
{(Bd7xe8 Ra1-e1 Be8-f7 Qc3-c2 g7-g6 Qc2-d2 f5-f4 Re1-e7) -0.40/8 2} 26. Re1
{(Ra1-e1 Qb7-b5 Bd3-c2 Rf6-f8 Nd4-e6 Qb5xb4 a3xb4) +8.87/7 2} Bg6 {(Be8-g6
Re1-e7 Bg6-f7 b4-b5 a6xb5 Qc3-a5 b5-b4 Re7xc7) -0.40/8 2} 27. Re7 {(Re1-e7
Qb7-b5 Nd4xb5 a6xb5 Re7xc7 Bg6-e8) +9.03/6 2} Qc8 {(Qb7-c8 Nd4-e6 Bg6-f7
Ne6xc7) -0.87/8 2} 28. a4 {(a3-a4 Qc8-e8 Re7xe8+ Bg6xe8 c5-c6 Be8xc6
Nd4xc6) -0.00/6 2} Kf8 {(Kg8-f8 Re7-e2 f5-f4 Bd3xg6 h7xg6) -0.15/9 2} 29.
Re1 {(Re7-e1 Qc8-e8 Re1-a1 Qe8-e4 c5-c6 Qe4xd3 Qc3xd3) +7.56/7 2} f4
{(f5-f4 Bd3xg6 h7xg6 c5-c6 Rf6-d6 Qc3-d2 g6-g5 Re1-e5 Nh6-f7) -0.18/9 2}
30. b5 {(b4-b5 Bg6xd3 Qc3xd3 Nh6-f5 Nd4-f3 Qc8-e6 Re1xe6) +7.10/7 2} axb5
{(a6xb5 a4xb5 Nh6-f5 Bd3xf5 Bg6xf5 Re1-e5 Qc8-d7 b5-b6 Bf5-e4) -0.12/9 2}
31. axb5 {(a4xb5 Qc8-f5 Nd4xf5 Bg6xf5 c5-c6 Kf8-f7 Kg1-f1) +7.50/7 2} Nf7
{(Nh6-f7 Bd3xg6 Rf6xg6 Qc3-b3 Qc8-d7 b5-b6 c7xb6 c5xb6 f4-f3 Qb3-a3+)
-0.70/10 2} 32. Kh2 {(Kg1-h2 f4-f3 Bd3xg6 h7xg6 g2-g3 Qc8xh3+) +8.49/6 2}
Nh8 {(Nf7-h8 Re1-e5 Qc8-d7 Kh2-g1 Bg6xd3 Qc3xd3 Kf8-g8 c5-c6) -0.03/8 2}
33. Ra1 {(Re1-a1 Bg6xd3 Qc3xd3 f4-f3 g2-g3 Nh8-g6 Ra1-a7) -0.00/7 2} Kg8
{(Kf8-g8 Bd3xg6 Nh8xg6 Ra1-a7) -0.00/9 2} 34. f3 {(f2-f3 Bg6xd3 Qc3xd3
Nh8-g6 Ra1-a7 Ng6-h4) +8.91/6 2} Bxd3 {(Bg6xd3 Qc3xd3) +0.10/9 2} 35. Qxd3
{(Qc3xd3 Rf6-g6 Nd4-f5 Rg6xg2+ Kh2xg2 Qc8-d8 Qd3xd5+ Qd8xd5 Nf5-e7+ Kg8-f7
Ne7xd5) +6.07/8 2} Ng6 {(Nh8-g6 Ra1-a7) +0.05/8 2} 36. Qc3 {(Qd3-c3 Rf6-c6
Nd4xc6 Qc8-b7 Qc3-d4 Qb7xb5 Qd4xd5+) +5.87/7 2} Rf7 {(Rf6-f7 Kh2-h1 Qc8-d8
Ra1-a7 Ng6-e5 Nd4-e6 Qd8-b8 b5-b6) +0.13/8 2} 37. Qb3 {(Qc3-b3 Ng6-e7 b5-b6
c7xb6 c5xb6 Ne7-f5 Nd4-e2 Qc8-c5) +5.95/8 2} Qd8 {(Qc8-d8 b5-b6 c7xb6 c5xb6
Rf7-b7 Ra1-a6 Qd8-d6) -0.25/10 2} 38. Ne6 {(Nd4-e6 Qd8-d7 Ra1-a8+ Rf7-f8
Ne6xf8 Ng6xf8 b5-b6 Qd7-c6 Qb3-a3) -0.00/8 2} Qd7 {(Qd8-d7 b5-b6 c7xb6
Ra1-a8+ Ng6-f8 c5xb6 Qd7xe6 b6-b7 Rf7xb7) -0.50/10 2} 39. Ra6 {(Ra1-a6
Rf7-f8 Ne6-g5 Rf8-b8 c5-c6 Rb8xb5) +5.18/6 2} Nf8 {(Ng6-f8 Ne6-d4 Rf7-e7
c5-c6 Qd7-d8 b5-b6 c7xb6 Qb3xb6 Qd8-e8) +0.10/9 2} 40. Nd4 {(Ne6-d4 Nf8-e6
Nd4xe6 Rf7-f5 Ra6-c6 Rf5-f6 Ne6xc7 Rf6xc6 b5xc6) -0.00/9 2} Qd8 {(Qd7-d8
b5-b6 Qd8-g5 Kh2-h1 Rf7-e7 Qb3-d1 c7xb6 c5xb6 Nf8-e6) -0.18/9 2} 41. Nc6
{(Nd4-c6 Qd8-g5 Ra6-a1 Nf8-e6 Qb3-a2 Ne6xc5 Ra1-d1 Nc5-d3) -0.00/8 2} Qg5
{(Qd8-g5 Kh2-g1 Qg5-f5 b5-b6 Qf5-e6 b6-b7 Qe6-e1+ Kg1-h2 Qe1-g3+ Kh2-g1)
-0.00/10 2} 42. Qb4 {(Qb3-b4 Nf8-e6 b5-b6 Ne6xc5 Ra6-a8+ Rf7-f8 b6-b7
Nc5xb7) +2.41/7 2} Rd7 {(Rf7-d7 Kh2-g1 Qg5-f5 b5-b6 Qf5-d3 Ra6-a7 Qd3-e3+
Kg1-h1) +0.10/8 2} 43. b6 {(b5-b6 c7xb6 c5xb6 Rd7-b7 Qb4-d4 Qg5-g3+ Kh2-h1
Rb7xb6) -0.00/7 2} cxb6 {(c7xb6 c5xb6) -0.75/8 2} 44. cxb6 {(c5xb6 Rd7-b7
Ra6-a8 h7-h5 Ra8xf8+ Kg8-h7 Rf8-a8 Qg5-g3+ Kh2-g1 Kh7-g6) +4.30/8 2} Ne6
{(Nf8-e6 b6-b7 Rd7xb7 Ra6-a8+ Ne6-d8) -1.90/8 2} 45. Ra8+ {(Ra6-a8+ Kg8-f7
Ra8-b8 Rd7-c7 Nc6-d8+ Ne6xd8 b6xc7 Qg5-g3+ Kh2-g1 Nd8-e6) +4.80/7 1} Kf7
{(Kg8-f7 b6-b7 Rd7xb7 Qb4xb7+ Kf7-g6 Nc6-e7+) -5.17/9 2} 46. Rb8 {(Ra8-b8
Rd7-c7 Nc6-d8+ Ne6xd8 b6xc7 Qg5-g3+ Kh2-g1 Nd8-e6) +4.80/6 1} Rd6 {(Rd7-d6
Rb8-c8 Rd6-d7 Nc6-e5+) -1.50/8 1} 47. Rc8 {(Rb8-c8 Rd6xc6 Rc8xc6 Ne6-d8
Rc6-c7+ Kf7-e6 Qb4-d4 Nd8-f7) +4.14/7 1} Rxc6 {(Rd6xc6 Rc8xc6 Qg5-e5 Rc6-c8
Qe5-d4 Rc8-f8+ Kf7-g6 Qb4xd4) -3.15/8 1} 48. Rxc6 {(Rc8xc6 Ne6-d8 Rc6-c7+
Kf7-g8 Qb4-e7 Qg5xe7 Rc7xe7 Nd8-c6 Re7-c7) +3.99/8 1} Nd8 {(Ne6-d8 Rc6-c7+
Kf7-g8 b6-b7 Nd8xb7 Rc7xb7 h7-h6 Rb7-b8+ Kg8-h7) -4.60/9 1} 49. Rd6
{(Rc6-c8 h7-h5 Rc8-c7+ Kf7-e6 Qb4-d4 Qg5-f6 Qd4-b4) +4.00/6 1} Kg8 {(Kf7-g8
Qb4-a5 h7-h6 b6-b7 Nd8xb7 Qa5-a8+ Kg8-h7 Qa8xb7 Qg5-g3+) -4.50/9 1} 50. Qa5
{(Qb4-a5 g7-g6 Rd6xd5 Qg5-h4 Kh2-g1 Kg8-f8 Rd5-d7 Nd8-c6 Qa5-d5) +5.67/9 1}
h6 {(h7-h6 Rd6xd5 Qg5-g3+ Kh2-g1 Qg3-h4 b6-b7) -5.50/9 1} 51. Rxd5
{(Qa5xd5+ Qg5xd5 Rd6xd5 Nd8-b7 Rd5-d4 g7-g5 g2-g3 f4xg3+) +5.67/7 1} Qg3+
{(Qg5-g3+ Kh2-g1 Nd8-c6 Qa5-a8+ Kg8-h7 Qa8-e8 Qg3-h4 b6-b7 Qh4-f6 b7-b8Q)
-5.90/10 1} 52. Kg1 {(Kh2-g1 Qg3-h4 Qa5-d2 Nd8-b7 Rd5-f5 Kg8-h7 Qd2xf4
Qh4xf4) +6.06/7 1} Nc6 {(Nd8-c6 Qa5-a8+ Kg8-h7 Qa8-e8 Qg3-h4) -7.25/11 1}
53. Qa8+ {(Qa5-a8+ Kg8-h7 Qa8-e8 Qg3-h4 b6-b7 Qh4-f6 Qe8-e4+ Kh7-g8 Rd5-d7
Kg8-f8 Kg1-f2) +7.07/9 1} Kh7 {(Kg8-h7 Qa8-e8 Qg3-h4) -7.25/9 1} 54. Qe8
{(Qa8-e8 Qg3-h4 Qe8-e4+ Kh7-g8 b6-b7 Qh4-f6 Rd5-f5 Qf6-a1+ Kg1-h2 Qa1-a6
Qe4-e6+) +7.18/9 1} Qh4 {(Qg3-h4 Qe8-e4+) -7.60/9 1} 55. Qe4+ {(b6-b7
Qh4-f6 Qe8-e4+ Kh7-g8 Rd5-f5 Qf6-a1+ Kg1-h2 Qa1-a6 Qe4-e6+) +7.18/7 1} Kg8
{(Kh7-g8 b6-b7 Qh4-f6 Rd5-c5 Qf6-a1+ Kg1-h2 Qa1-b2 Qe4xc6 Kg8-h7) -7.90/9
1} 56. b7 {(Qe4-e6+ Kg8-h7 b6-b7 Qh4-f6 Qe6xf6 g7xf6 Rd5-d7+ Kh7-g6 Kg1-f2)
+7.30/7 1} Qf6 {(Qh4-f6 Rd5-c5 Qf6-a1+ Kg1-h2 Nc6-b8 Qe4-e6+ Kg8-h7
Qe6-f5+) -9.95/9 1} 57. Rc5 {(Rd5-c5 Qf6-b2 Qe4xc6 Kg8-h7 Kg1-h2 Qb2-b4
Qc6-e4+ Qb4xe4 f3xe4) +9.86/8 1} Qa1+ {(Qf6-a1+) -11.95/8 1} 58. Kh2
{(Kg1-h2 Nc6-b8 Rc5-c8+ Kg8-f7 Rc8xb8 Qa1-c1 Rb8-c8 Qc1-e3 b7-b8R) +10.69/7
1} Nb8 {(Nc6-b8 Qe4-g6 Kg8-f8 Rc5-c8+ Kf8-e7 Rc8-c7+ Nb8-d7) -16.30/9 1}
59. Rc8+ {(Rc5-c8+ Kg8-f7 Rc8xb8 Qa1-c1 Rb8-c8 Qc1-e3 b7-b8Q g7-g5 Rc8-f8+)
+15.06/8 1} Kf7 {(Kg8-f7 Rc8-c7+ Kf7-f6 Qe4-d5 Qa1-e5 Rc7-f7+ Kf6-g6)
-11.85/7 1} 60. Qxf4+ {(Qe4xf4+ Kf7-e7 Rc8xb8 Qa1-e1 Qf4-c7+ Ke7-f6 Rb8-f8+
Kf6-g6 b7-b8R) +11.43/6 1} Kg6 {(Kf7-g6 Qf4xb8 Qa1-b1) -16.95/7 1} 61. Qxb8
{(Qf4xb8 Qa1-d4 Qb8-g3+ Kg6-h5 b7-b8Q Qd4-a1 Qg3-f2) +15.07/6 1} Qb1
{(Qa1-b1 Qb8-g3+ Kg6-h7 b7-b8Q Qb1xb8) -17.80/9 1} 62. Qd6+ {(Qb8-d6+
Kg6-h7 b7-b8Q Qb1xb8 Rc8xb8 h6-h5 Qd6-e5 Kh7-g6 Rb8-b7 h5-h4 Rb7xg7+)
-0.00/10 1} Kh7 {(Kg6-h7 b7-b8Q Qb1xb8 Qd6xb8 h6-h5 Rc8-c7 h5-h4 Qb8-f8)
-18.55/8 1} 63. b8=R {(b7-b8R Qb1xb8 Rc8xb8 h6-h5 Kh2-g3 h5-h4+ Kg3xh4
g7-g6 Qd6-e7+ Kh7-h6 Rb8-h8+) +M6/10 1} Qxb8 {(Qb1xb8 Rc8xb8) -299.92/9 1}
64. Rxb8 {(Rc8xb8 h6-h5 Qd6-e5 Kh7-g6 Rb8-b7 h5-h4 Rb7xg7+ Kg6-h6 Qe5-g5+)
-0.00/10 1} h5 {(h6-h5 h3-h4 g7-g6 Qd6-d7+ Kh7-h6 Rb8-h8+) -299.94/8 1} 65.
Qe5 {(Qd6-e5 Kh7-h6 Rb8-b7 g7-g6 Qe5-f4+ g6-g5 Qf4-d6+) +M4/9 1} Kh6
{(Kh7-h6 Rb8-b7 g7-g6 Qe5-e3+ g6-g5 Qe3-e6+) -299.94/7 1} 66. Rg8 {(Rb8-g8
Kh6-g6 Rg8xg7+ Kg6-h6 Qe5-f6+) +M3/8 1} h4 {(h5-h4 Qe5xg7+ Kh6-h5 Rg8-h8+)
-299.96/8 1} 67. Qxg7+ {(Qe5xg7+ Kh6-h5 Rg8-h8+) +M2/10 1} Kh5 {(Kh6-h5
Rg8-h8+) -299.98/8 1} 68. Rh8# {(Rg8-h8+) +M1/10 1} 1-0
[/pgn]

[pgn]
[Event "Arena Tournament"]
[Site "maksim-Inspiron-3582"]
[Date "2020.10.18"]
[Round "2"]
[White "Vice"]
[Black "BBC NNUE [youtube]"]
[Result "0-1"]
[BlackElo "2000"]
[ECO "A28"]
[Opening "English"]
[Time "00:43:11"]
[Variation "Four Knights, 4.d4"]
[WhiteElo "2000"]
[TimeControl "120+1"]
[Termination "normal"]
[PlyCount "158"]
[WhiteType "program"]
[BlackType "program"]

1. c4 e5 2. Nc3 Nf6 3. Nf3 {(Ng1-f3 Nb8-c6 e2-e4 Bf8-c5 Bf1-e2 O-O O-O
d7-d6 d2-d3) +0.05/9 5} Nc6 4. d4 {(d2-d4 e5xd4) +0.03/9 4} exd4 {(e5xd4
Nf3xd4 Bf8-b4 Bc1-g5 h7-h6 Bg5-h4 Bb4xc3+ b2xc3 d7-d6 c4-c5) -0.00/9 5} 5.
Nxd4 {(Nf3xd4 Nc6xd4 Qd1xd4 c7-c5) -0.02/10 4} Bb4 {(Bf8-b4 Bc1-g5 h7-h6
Bg5-h4 Bb4xc3+ b2xc3 Qd8-e7 e2-e3 d7-d6) +0.17/8 4} 6. Nxc6 {(Nd4xc6
Bb4xc3+ b2xc3) +0.08/10 4} dxc6 {(d7xc6 Qd1xd8+ Ke8xd8 Bc1-d2 Kd8-e7 O-O-O
Bc8-e6 e2-e3 Nf6-g4 Nc3-e4) -0.00/9 4} 7. Qxd8+ {(Qd1xd8+ Ke8xd8 Bc1-g5)
+0.05/11 4} Kxd8 {(Ke8xd8 Bc1-d2 Bc8-e6 e2-e3 Kd8-e7 O-O-O Rh8-d8 Bf1-e2
Nf6-g4 Nc3-e4) +0.29/9 4} 8. Bg5 {(Bc1-g5 Bc8-e6 Bg5xf6+ g7xf6 e2-e4)
+0.05/10 4} Ke7 {(Kd8-e7 Bg5-d2 Bc8-e6 e2-e3 Ra8-d8 Bf1-e2 Rh8-e8 a2-a3
Bb4xc3) +0.66/9 4} 9. e4 {(e2-e4 Ke7-f8 Bf1-d3 Bb4xc3+ b2xc3 Nf6xe4 Bd3xe4
h7-h6 Bg5-h4 Bc8-e6) +0.35/10 4} Bxc3+ {(Bb4xc3+ b2xc3 h7-h6 Bg5xf6+ Ke7xf6
Ra1-b1 Rh8-d8 Bf1-e2 Kf6-e5 Be2-f3) +0.92/8 4} 10. bxc3 {(b2xc3 Rh8-e8
Bf1-d3 Ke7-f8) +0.40/10 4} h6 {(h7-h6 Bg5xf6+ Ke7xf6 Bf1-d3 Rh8-d8 Ke1-e2
Ra8-b8 Rh1-d1 Bc8-g4+ f2-f3 Bg4-e6) +0.91/9 4} 11. Bxf6+ {(Bg5xf6+)
+0.25/10 4} Kxf6 {(Ke7xf6 Ke1-e2 Rh8-d8 Ke2-e3 Ra8-b8 Bf1-d3 h6-h5 Rh1-g1
Bc8-e6 Ra1-d1) +0.66/9 4} 12. O-O-O {(O-O-O Kf6-e7 Bf1-d3 Rh8-d8 f2-f4
Ke7-f8) +0.25/9 3} Be6 {(Bc8-e6 Bf1-d3 Rh8-d8 Kc1-c2 Rd8-d7 Rd1-d2 Ra8-d8
Rh1-d1 h6-h5) +0.82/9 4} 13. f4 {(f2-f4 Kf6-e7 Bf1-e2 Ra8-d8 f4-f5 Be6-d7
Rd1-d2 Ke7-e8) +0.25/10 3} Rhd8 {(Rh8-d8 Bf1-d3 Be6-g4 Rd1-d2 g7-g5 f4xg5+
h6xg5 Rh1-f1+ Kf6-g6 Kc1-c2) +0.76/8 4} 14. Be2 {(Bf1-e2 Kf6-e7 f4-f5
Be6-d7 Rd1-d3 c6-c5 Rh1-d1 Bd7-c6 Rd3xd8) +0.30/11 3} g6 {(g7-g6 Kc1-c2
Ra8-b8 Be2-d3 h6-h5 Rd1-d2 h5-h4 Rh1-d1) +0.85/8 3} 15. g4 {(g2-g4 Kf6-g7
f4-f5 Be6-d7 Rd1-d2 Kg7-f8 Rh1-d1 Kf8-e8 f5xg6) +0.40/9 3} a5 {(a7-a5
Rd1xd8 Ra8xd8 f4-f5 g6xf5 e4xf5 Be6-d7 Rh1-d1 a5-a4) +0.67/9 3} 16. f5
{(f4-f5 Be6-d7 Rh1-f1 g6xf5 g4xf5 Kf6-g7 Rd1-d3 Kg7-f8 Rf1-d1 Kf8-e8)
+0.55/10 3} gxf5 {(g6xf5 g4xf5 Rd8xd1+ Rh1xd1 Be6-c8 Kc1-c2 a5-a4 Rd1-d8
a4-a3 c4-c5 Ra8-b8) +0.28/10 3} 17. gxf5 {(g4xf5 Be6-d7 Rd1-d3 Kf6-e7
Rh1-d1 c6-c5 Rd3-d5 b7-b6 Be2-h5 Bd7-c6 f5-f6+) +0.70/11 3} Bd7 {(Be6-d7
Rd1-d2 Bd7-e8 Rh1-d1 Rd8xd2 Rd1xd2 a5-a4 Kc1-c2 a4-a3 c4-c5) +0.34/10 3}
18. Rd3 {(Rd1-d3 Kf6-e7 Rh1-d1 c6-c5 Rd3-d5 b7-b6 Be2-h5 f7-f6 Rd1-d3)
+0.70/9 3} Be8 {(Bd7-e8 Rd3-h3 Kf6-e5 Rh3xh6 a5-a4 f5-f6 a4-a3 Kc1-c2
Ke5xe4 Rh1-b1) +0.44/10 3} 19. Rh3 {(Rd3-h3 Kf6-e5 Be2-d3 c6-c5 Rh1-g1
Be8-c6 Rg1-g7 Bc6xe4 Bd3xe4 Ke5xe4) +0.85/10 3} Ke5 {(Kf6-e5 Rh1-g1 Ke5xe4
f5-f6 a5-a4 Rh3xh6 Ke4-e3 Be2-h5 Ke3-f2 Rg1-g7) +0.40/10 3} 20. Bd3
{(Be2-d3 c6-c5 Rh1-g1 Rd8-d6 Rg1-g7) +0.70/10 3} c5 {(c6-c5 Rh1-d1 Rd8-d6
Bd3-c2 Rd6xd1+ Bc2xd1 Ra8-a6 Rh3-e3 Be8-c6 Bd1-f3) +0.90/9 3} 21. Rg1
{(Rh1-g1 Be8-c6 Bd3-c2 Rd8-d6 Rg1-g7 Ra8-f8 Rh3-e3 Ke5-f6 Re3-g3) +0.75/9
3} Rd6 {(Rd8-d6 Kc1-c2 Ra8-d8 Rg1-g7 a5-a4 a2-a3 Ke5-f6 Rg7-h7 Kf6-g5)
+0.89/9 3} 22. Rg7 {(Rg1-g7 Ra8-d8 Bd3-c2 Rd8-d7 Rg7-h7 f7-f6) +0.80/11 3}
Rad8 {(Ra8-d8 Kc1-c2 Be8-a4+ Kc2-d2 Rd8-d7 Kd2-e2 Ba4-c6 Rh3-e3 a5-a4
h2-h4) +0.83/9 3} 23. Bc2 {(Bd3-c2 Rd8-d7 Rg7-h7 f7-f6 Rh7xd7 Rd6xd7 Kc1-b1
Be8-f7 Bc2-d3 Bf7xc4 Bd3xc4) +0.65/11 3} a4 {(a5-a4 a2-a3 b7-b6 Rg7-h7
Ke5-f4 Rh3xh6 Rd6xh6 Rh7xh6 Be8-d7) +0.72/9 3} 24. Rh7 {(Rg7-h7 c7-c6
Rh3-g3 Rd8-d7 Rg3-g8 Rd7-e7 Rg8-g7 a4-a3) +0.95/10 2} a3 {(a4-a3 Rh3-h5
Rd6-d2 f5-f6+ Ke5-e6 Rh5-d5 Rd2xd5 c4xd5+ Ke6xf6 Kc1-d2 Kf6-g6 e4-e5+)
+1.28/10 3} 25. Rh5 {(Rh3-h5 Rd6-b6 f5-f6+ Ke5xf6 Rh5xc5 Rb6-c6 Rc5-b5
b7-b6 Rh7xh6+) +0.90/9 2} Rd2 {(Rd6-d2 f5-f6+ Ke5-e6 Bc2-b3 Be8-c6 Rh7xh6
Bc6xe4 Rh5xc5 Ke6-d6 Kc1xd2) +1.23/9 2} 26. f6+ {(f5-f6+ Ke5-e6 Rh5-d5)
-0.00/10 2} Kf4 {(Ke5-f4 Bc2-b3 Kf4xe4 Rh7xh6 b7-b6 Rh5-d5 Rd2xd5 c4xd5
Ke4-f3) +1.05/8 2} 27. Bb3 {(Bc2-b3 Rd2-e2 Rh7-h8) -0.20/10 2} R2d3
{(Rd2-d3 Rh5xc5 Rd3xc3+ Kc1-b1 Be8-c6 Rc5xc6 b7xc6 Rh7xf7 Kf4xe4) +1.26/8
2} 28. Kc2 {(Kc1-c2 Rd3-d1 Rh5-d5 Rd1xd5 e4xd5 Kf4-g5 Kc2-d3 Kg5xf6
Rh7xh6+) -0.15/9 2} Bc6 {(Kf4xe4 Rh7xh6 Rd3-d2+ Kc2-c1 b7-b6 Bb3-c2+ Ke4-f3
Rh5-f5+ Kf3-g4 Rf5-e5) +1.17/7 2} 29. R7xh6 {(Rh7xh6 Bc6xe4 Bb3-a4 Rd3-d2+
Kc2-b3 Be4-c2+ Kb3xa3 Rd8-a8 Rh5xc5) -1.45/9 2} Bxe4 {(Bc6xe4 Bb3-a4 Be4-f3
Rh5-h4+ Kf4-e5 Kc2-b3 Rd3-d6 Rh4-h3 Bf3-e4) +2.14/8 2} 30. Ba4 {(Bb3-a4
Rd3-d2+ Kc2-b3 Be4-c2+ Kb3xa3 Rd8-a8 Rh5xc5 Ra8xa4+ Ka3-b2) -1.65/9 2} Bf3
{(Be4-f3 Kc2-b3 Bf3xh5 Rh6xh5 Rd8-d6 Rh5xc5 Rd6xf6 Rc5xc7 Rf6-b6+) +3.13/9
2} 31. Rxc5 {(Rh5xc5 Bf3-d1+) -2.70/10 2} Bd1+ {(Bf3-d1+ Kc2-b1 Bd1xa4
Rh6-h4+ Kf4-f3 Rh4-h3+ Kf3-g2 Rh3xd3 Rd8xd3 Rc5-d5 Rd3xc3 Rd5-c5 Ba4-c6)
+4.35/10 2} 32. Kb1 {(Kc2-b1 Bd1xa4 Rh6-h4+ Kf4-f3 Rh4-h3+ Kf3-e2 Rh3xd3
Ke2xd3 Rc5-d5+ Rd8xd5) -3.70/10 2} Bxa4 {(Bd1xa4 Rh6-h4+ Kf4-f3 Rh4-h3+
Kf3-g4 Rh3xd3 Rd8xd3 Rc5-d5 Rd3xc3 c4-c5 Ba4-c2+ Kb1-c1 Kg4-f3) +4.34/10 2}
33. Rh4+ {(Rh6-h4+ Kf4-f3) -3.95/10 2} Ke3 {(Kf4-f3 Rh4-h3+ Kf3-f2 Rh3xd3
Rd8xd3 Rc5-f5+ Kf2-g2 Rf5-d5 Rd3xc3 Rd5-c5 Ba4-c6) +4.35/8 2} 34. Rh3+
{(Rh4-h3+ Ke3-d2 Rh3-g3 Ba4-c2+ Kb1-a1 Kd2xc3 Rc5-a5 Kc3xc4 Ra5xa3 Rd3xa3)
-4.40/10 2} Kd2 {(Ke3-d2 Rh3xd3+ Rd8xd3 Rc5-d5 Rd3xd5 c4xd5 Kd2xc3 Kb1-c1
Kc3-d4 d5-d6 c7xd6 Kc1-d2) +5.71/10 2} 35. Rxd3+ {(Rh3xd3+ Rd8xd3 Rc5-d5
Ba4-c2+ Kb1-a1 Kd2xc3 Rd5xd3+ Bc2xd3 h2-h4 c7-c5 h4-h5) -5.10/11 2} Rxd3
{(Rd8xd3 Rc5-d5 Ba4-c2+ Kb1-a1 Kd2xc3 Rd5xd3+ Kc3xd3 h2-h4 Kd3-d4 h4-h5
Kd4-e5 h5-h6) +5.78/9 2} 36. Rf5 {(Rc5-f5 Ba4-c2+ Kb1-a1) -5.35/11 2} Bc2+
{(Ba4-c2+ Kb1-a1 Rd3xc3 Rf5-f2+ Kd2-e1 Rf2-g2 Bc2-f5 Rg2-g1+ Ke1-f2 Rg1-d1
Rc3xc4 Rd1-d2+ Kf2-f3 Rd2-d8 Rc4-g4) +7.24/11 2} 37. Ka1 {(Kb1-a1 Kd2-e2
Rf5-e5+ Ke2-f2 Re5-f5+) -9.95/12 2} Rxc3 {(Rd3xc3 Rf5-f2+ Kd2-e1 Rf2-g2
Bc2-f5 Rg2-g1+ Ke1-f2 Rg1-d1 Rc3xc4 Rd1-d2+ Kf2-f3 Rd2-d8 Rc4-g4) +7.24/10
2} 38. Rg5 {(Rf5-g5 Bc2-e4 Rg5-g1 Rc3xc4 Rg1-f1 Kd2-e2 Rf1-g1 Rc4-c2 Ka1-b1
Rc2-c6+ Kb1-a1) -6.15/11 2} Bd3 {(Bc2-d3 Rg5-g2+ Bd3-e2 Rg2-g1 Rc3xc4
Rg1-b1 Rc4-f4 Rb1xb7 Rf4-f1+ Rb7-b1 Rf1xf6 h2-h4) +7.44/10 2} 39. Rg1
{(Rg5-g1 Rc3xc4 Rg1-g2+ Kd2-c3 Rg2-g1 Rc4-f4 Rg1-h1 c7-c5 h2-h4 Kc3-d4
h4-h5 c5-c4) -6.30/12 2} Rxc4 {(Rc3xc4 h2-h4 Rc4-c6 Rg1-g2+ Kd2-c3 Rg2-g1
Rc6xf6 h4-h5 Rf6-d6 Rg1-g7 Bd3-c4 Ka1-b1) +9.00/11 2} 40. h3 {(h2-h3 Rc4-f4
Rg1-h1 Rf4xf6 h3-h4 c7-c5 Rh1-h2+ Kd2-e3 Rh2-h1 Ke3-d4 h4-h5 Rf6-h6)
-6.50/12 2} Rf4 {(Rc4-f4 h3-h4 Rf4xf6 Rg1-g2+ Kd2-c3 Rg2-g1 Rf6-g6 Rg1-h1
Rg6-g2 Rh1-c1+ Bd3-c2 h4-h5 b7-b5) +9.29/11 2} 41. h4 {(h3-h4 Rf4xh4
Rg1-d1+ Kd2-e3 Rd1-e1+ Ke3-f2 Re1-g1 Rh4-h6 Rg1-c1) -6.95/13 2} Be4
{(Bd3-e4 h4-h5 Rf4-f2 h5-h6 Rf2xf6 h6-h7 Rf6-h6 Rg1-c1 Be4-c2 h7-h8Q Rh6xh8
Rc1-g1) +10.29/12 2} 42. h5 {(h4-h5 Rf4xf6 h5-h6 Rf6xh6 Rg1-d1+ Kd2-e3
Rd1-c1 f7-f5 Rc1-c3+ Ke3-d4 Rc3-h3 Rh6-a6 Rh3-h7 c7-c5) -7.70/14 2} Rxf6
{(Rf4xf6 h5-h6 Rf6xh6 Rg1-c1 Rh6-h1 Rc1xh1 Be4xh1 Ka1-b1 Bh1-d5 Kb1-a1
Kd2-c3 Ka1-b1 b7-b5) +10.98/13 2} 43. h6 {(h5-h6 Rf6xh6) -7.70/12 2} Rxh6
{(Rf6xh6 Rg1-c1 Rh6-h1 Rc1xh1 Be4xh1 Ka1-b1 Bh1-c6 Kb1-a1 Kd2-e3 Ka1-b1
Bc6-d5 Kb1-a1 Ke3-f2) +11.16/13 2} 44. Rd1+ {(Rg1-d1+ Kd2-e3 Rd1-c1 c7-c5
Rc1-c3+ Be4-d3 Rc3-c1 Rh6-h2) -7.80/11 1} Ke3 {(Kd2-e3 Rd1-e1+ Ke3-f4
Re1-c1 b7-b6 Rc1-g1 Rh6-h2 Rg1-g4+ Kf4-e5 Rg4-g5+ Ke5-d4 Rg5-g1 Kd4-c5
Rg1-g8) +11.03/10 2} 45. Rc1 {(Rd1-c1 Rh6-h1 Rc1xh1 Be4xh1 Ka1-b1 f7-f5
Kb1-a1 f5-f4 Ka1-b1 Bh1-d5 Kb1-a1 f4-f3) -8.00/12 1} Rh1 {(Rh6-h1 Rc1xh1
Be4xh1 Ka1-b1 Bh1-d5 Kb1-a1 Ke3-f3 Ka1-b1 b7-b5 Kb1-a1 b5-b4 Ka1-b1)
+11.25/12 2} 46. Rxh1 {(Rc1xh1 Be4xh1 Ka1-b1 f7-f5 Kb1-a1 Bh1-f3 Ka1-b1
Bf3-d5 Kb1-a1 Bd5-g2 Ka1-b1 Bg2-e4+ Kb1-a1 Be4-d5 Ka1-b1 Bd5-e4+) -9.25/16
1} Bxh1 {(Be4xh1 Ka1-b1 Bh1-d5 Kb1-a1 b7-b6 Ka1-b1 Ke3-f2 Kb1-a1 Bd5-f3
Ka1-b1 b6-b5 Kb1-a1 Bf3-d5 Ka1-b1 b5-b4 Kb1-a1 Bd5-e4) +11.37/17 2} 47. Kb1
{(Ka1-b1 f7-f5 Kb1-c2 f5-f4 Kc2-b3 f4-f3 Kb3xa3 c7-c5 Ka3-b3 f3-f2 Kb3-c4
f2-f1Q+ Kc4xc5 Qf1-c1+) -15.65/18 1} Bd5 {(Bh1-d5 Kb1-a1 Ke3-f2 Ka1-b1
b7-b5 Kb1-a1 Bd5-c4 Ka1-b1 b5-b4 Kb1-a1 Bc4-d5 Ka1-b1 b4-b3 a2xb3 Bd5xb3
Kb1-a1 Bb3-d5) +11.41/17 1} 48. Ka1 {(Kb1-a1 f7-f5 Ka1-b1 c7-c5 Kb1-a1
f5-f4) -18.15/16 1} Kf2 {(Ke3-f2 Ka1-b1 b7-b5 Kb1-a1 b5-b4 Ka1-b1 Kf2-e2
Kb1-a1 b4-b3 a2xb3 Bd5xb3 Ka1-b1 a3-a2+ Kb1-a1 Bb3-d5 Ka1-b2 Ke2-e3 Kb2-a1
Ke3-f2) +12.05/18 1} 49. Kb1 {(Ka1-b1 c7-c5 Kb1-c1 Kf2-e3 Kc1-b1 f7-f5
Kb1-a1 f5-f4 Ka1-b1 Ke3-d3 Kb1-a1 f4-f3 Ka1-b1 f3-f2 Kb1-c1 f2-f1Q+)
-18.15/17 1} b5 {(b7-b5 Kb1-a1 b5-b4 Ka1-b1 Bd5-e6 Kb1-a1 Kf2-f3 Ka1-b1
Be6-d5 Kb1-a1 b4-b3 a2xb3 Bd5xb3 Ka1-b1 a3-a2+ Kb1-a1 Bb3-d5 Ka1-b2 Kf3-f2)
+11.78/18 1} 50. Ka1 {(Kb1-a1 c7-c5 Ka1-b1 b5-b4 Kb1-a1 c5-c4 Ka1-b1 b4-b3
a2xb3 c4xb3) -16.25/18 1} b4 {(b5-b4 Ka1-b1 b4-b3 a2xb3 Bd5xb3 Kb1-a1
Bb3-e6 Ka1-b1 Kf2-f3 Kb1-a1 Be6-d5 Ka1-b1 a3-a2+ Kb1-a1 Bd5-e6 Ka1-b2
Kf3-f2 Kb2-a1 Be6-d5) +12.05/18 1} 51. Kb1 {(Ka1-b1 c7-c5 Kb1-a1 c5-c4
Ka1-b1 b4-b3) -16.25/16 1} b3 {(b4-b3 a2xb3 Bd5xb3 Kb1-a1 Bb3-e6 Ka1-b1
Kf2-f3 Kb1-c2 a3-a2 Kc2-b2 Kf3-e3 Kb2-a1 Ke3-e2 Ka1-b2 Ke2-f3 Kb2-a1
Be6-d5) +12.02/17 1} 52. axb3 {(a2xb3 Bd5xb3 Kb1-a1 a3-a2 Ka1-b2 c7-c5
Kb2-a1) -11.35/16 1} Bxb3 {(Bd5xb3 Kb1-a1 Bb3-d5 Ka1-b1 a3-a2+ Kb1-a1
Bd5-e6 Ka1-b2 Kf2-g3 Kb2-a1 Be6-d5 Ka1-b2 Kg3-f3 Kb2-a1 Kf3-g4 Ka1-b2
Kg4-g3 Kb2-a1) +11.86/17 1} 53. Ka1 {(Kb1-a1 c7-c5 Ka1-b1 a3-a2+ Kb1-b2
f7-f5 Kb2-a1 c5-c4 Ka1-b2 c4-c3+ Kb2xc3 a2-a1Q+ Kc3xb3 Kf2-e3 Kb3-c4 f5-f4
Kc4-c5) -11.95/17 1} Be6 {(Bb3-e6 Ka1-b1 Kf2-f3 Kb1-a1 a3-a2 Ka1-b2 Be6-d5
Kb2-a1 Bd5-b3 Ka1-b2 Kf3-e4 Kb2-a1 Bb3-d5 Ka1-b2 Ke4-d4 Kb2-a1) +11.74/16
1} 54. Kb1 {(Ka1-b1 a3-a2+ Kb1-a1 c7-c5 Ka1-b2 Be6-d5) -11.95/15 1} Bd5
{(Be6-d5 Kb1-a1 Kf2-e3 Ka1-b1 Bd5-e6 Kb1-a1 Ke3-d4 Ka1-b1 a3-a2+ Kb1-b2
Be6-d5 Kb2-a1 Kd4-c5 Ka1-b2 Bd5-e6 Kb2-a1 Be6-c4) +11.76/16 1} 55. Kc2
{(Kb1-c2 a3-a2 Kc2-b2 Bd5-e6 Kb2-a1 c7-c5 Ka1-b2 Be6-d5 Kb2-a1 f7-f5 Ka1-b2
Kf2-e3 Kb2-a1 f5-f4 Ka1-b2 c5-c4) -11.95/16 1} Bc4 {(Bd5-c4 Kc2-c3 a3-a2
Kc3-b2 Kf2-f3 Kb2-a1 Bc4-e6 Ka1-b2 Kf3-g3 Kb2-a1 Be6-c4 Ka1-b2 Kg3-f2
Kb2-a1 Kf2-f3) +11.95/15 1} 56. Kc3 {(Kc2-c3 a3-a2 Kc3-b2 Bc4-e6 Kb2-a1
c7-c5 Ka1-b2 Be6-d5 Kb2-a1 f7-f5 Ka1-b2 Kf2-e3) -11.95/17 1} a2 {(a3-a2
Kc3-b2 Kf2-f3 Kb2-a1 Bc4-e6 Ka1-b2 Kf3-g2 Kb2-a1 Be6-c4 Ka1-b2 Bc4-d5
Kb2-a1 Kg2-f3) +12.02/13 1} 57. Kb2 {(Kc3-b2) -11.95/15 1} Bd5 {(Bc4-d5
Kb2-a1 Kf2-e3 Ka1-b2 Bd5-e6 Kb2-a1 Be6-b3 Ka1-b2 Ke3-f3 Kb2-a1 Bb3-e6
Ka1-b2 Kf3-e4 Kb2-a1 Be6-d5 Ka1-b2 Ke4-f3) +11.75/17 1} 58. Ka1 {(Kb2-a1
c7-c5 Ka1-b2 f7-f5 Kb2-a1 Bd5-c4 Ka1-b2 Kf2-e2) -13.35/18 1} Ke3 {(Kf2-e3
Ka1-b2 Ke3-e4 Kb2-a1 Bd5-e6 Ka1-b2 Ke4-f3 Kb2-a1 Be6-c4 Ka1-b2 Bc4-d5
Kb2-a1 Bd5-b3 Ka1-b2 Bb3-c4 Kb2-a1 Bc4-d5) +12.02/17 1} 59. Kb2 {(Ka1-b2
a2-a1Q+ Kb2xa1 c7-c5 Ka1-b2 Ke3-d2 Kb2-a3 c5-c4 Ka3-b4 c4-c3 Kb4-c5 Bd5-e6
Kc5-d4 c3-c2 Kd4-e4 c2-c1Q) -15.20/16 1} Kf3 {(Ke3-f3 Kb2-a1 Bd5-e6 Ka1-b2
Be6-c4 Kb2-a1 Kf3-e3 Ka1-b2 Bc4-e6 Kb2-a1 Ke3-e2 Ka1-b2 Ke2-f2 Kb2-a1
Be6-d5 Ka1-b2) +11.78/16 1} 60. Ka1 {(Kb2-a1 c7-c5 Ka1-b2 a2-a1Q+)
-15.20/17 1} Ke4 {(Kf3-e4 Ka1-b2 Bd5-c4 Kb2-a1 Bc4-e6 Ka1-b2 Ke4-f4 Kb2-a1
Be6-c4 Ka1-b2 Kf4-f5 Kb2-a1 Kf5-e5 Ka1-b2 Ke5-d4 Kb2-a1 Kd4-c3) +11.78/17
1} 61. Kb2 {(Ka1-b2 Ke4-e3 Kb2-c2 c7-c5 Kc2-b2 a2-a1Q+) -15.40/18 1} Kf4
{(Ke4-f4 Kb2-a1 Bd5-e6 Ka1-b2 Kf4-e5 Kb2-a1 Ke5-f5 Ka1-b2 Be6-c4 Kb2-a1
Kf5-e5 Ka1-b2 Ke5-f4 Kb2-a1 Bc4-d5 Ka1-b2) +11.73/16 1} 62. Ka1 {(Kb2-a1
c7-c5 Ka1-b2 Kf4-e3 Kb2-a1 Ke3-d2 Ka1-b2 a2-a1Q+ Kb2xa1 c5-c4 Ka1-a2 c4-c3+
Ka2-a1 c3-c2 Ka1-b2 c2-c1Q+) -15.60/17 1} Kf5 {(Kf4-f5 Ka1-b2 Kf5-e5 Kb2-a1
Bd5-e6 Ka1-b2 Ke5-f4 Kb2-a1 Be6-c4 Ka1-b2 Kf4-f3 Kb2-a1 Bc4-e6 Ka1-b2
Kf3-f2 Kb2-a1 Be6-d5 Ka1-b2) +11.78/18 1} 63. Kb2 {(Ka1-b2 c7-c5) -15.60/19
1} Be6 {(Bd5-e6 Kb2-a1 Kf5-f4 Ka1-b2 Be6-c4 Kb2-a1 Kf4-g3 Ka1-b2 Bc4-e6
Kb2-a1 Be6-d5 Ka1-b2 Kg3-g4 Kb2-a1 Kg4-f4 Ka1-b2) +11.73/16 1} 64. Ka1
{(Kb2-a1 Be6-c4 Ka1-b2 c7-c5 Kb2-a1 Bc4-d5 Ka1-b2 Kf5-e5 Kb2-a1 Ke5-f4
Ka1-b2 Kf4-e3 Kb2-a1) -15.60/17 1} Kf4 {(Kf5-f4 Ka1-b2 Kf4-f3 Kb2-a1 Be6-c4
Ka1-b2 Kf3-f4 Kb2-a1 Kf4-g5 Ka1-b2 Bc4-b3 Kb2-a1 Kg5-g4 Ka1-b2 Bb3-d5
Kb2-a1) +11.68/16 1} 65. Kb2 {(Ka1-b2 c7-c5 Kb2-a1 Be6-d5 Ka1-b2 Kf4-e3
Kb2-a1 f7-f6 Ka1-b2 a2-a1Q+ Kb2xa1 f6-f5 Ka1-b2 Ke3-f4 Kb2-a1 c5-c4 Ka1-b1
Bd5-e4+ Kb1-b2) -15.60/19 1} Kf3 {(Kf4-f3 Kb2-a1 Be6-c4 Ka1-b2 Kf3-e2
Kb2-a1 Bc4-d5 Ka1-b2 Bd5-b3 Kb2-a1 Bb3-e6 Ka1-b2 Ke2-f2 Kb2-a1 Be6-d5
Ka1-b2) +11.78/16 1} 66. Ka1 {(Kb2-a1 c7-c5 Ka1-b2 Be6-d5 Kb2-a1 Kf3-e4
Ka1-b2 Ke4-e3 Kb2-a1 f7-f6 Ka1-b2 a2-a1Q+) -15.60/17 1} Bb3 {(Be6-b3 Ka1-b2
Kf3-f4 Kb2-a1 Bb3-c4 Ka1-b2 Kf4-f3 Kb2-a1 Kf3-g3 Ka1-b2 Kg3-h2 Kb2-a1
Bc4-d5 Ka1-b2 Kh2-g1 Kb2-a1 Kg1-f2) +12.05/17 1} 67. Kb2 {(Ka1-b2 Bb3-c4
Kb2-a1 c7-c5 Ka1-b2 Kf3-e3 Kb2-a1 Bc4-d5 Ka1-b2 Bd5-e6 Kb2-a1 c5-c4 Ka1xa2
c4-c3+ Ka2-a3 c3-c2) -15.85/16 1} Bc4 {(Bb3-c4 Kb2-a1 Kf3-g3 Ka1-b2 Bc4-e6
Kb2-a1 Be6-d5 Ka1-b2 Kg3-g2 Kb2-a1 Kg2-g1 Ka1-b2 Kg1-f1 Kb2-a1 Kf1-f2
Ka1-b2) +11.78/16 1} 68. Ka1 {(Kb2-a1 c7-c5 Ka1-b2 Kf3-e3 Kb2-a1 Bc4-d5
Ka1-b2 Bd5-e6 Kb2-a1 c5-c4 Ka1xa2) -15.85/16 1} Kg3 {(Kf3-g3 Ka1-b2 Kg3-f4
Kb2-a1 Kf4-f5 Ka1-b2 Bc4-b3 Kb2-a1 Kf5-f4 Ka1-b2 Kf4-e5 Kb2-a1 Bb3-d5
Ka1-b2 Ke5-f5) +11.63/15 1} 69. Kb2 {(Ka1-b2 c7-c5 Kb2-c3 Bc4-e6 Kc3-b2
Kg3-f3 Kb2-a1) -15.85/16 1} Be6 {(Bc4-e6 Kb2-a1 Kg3-f2 Ka1-b2 Kf2-g2 Kb2-a1
Be6-d5 Ka1-b2 Bd5-b3 Kb2-a1 Kg2-g3 Ka1-b2 Bb3-d5 Kb2-a1 Kg3-f2 Ka1-b2)
+11.78/16 1} 70. Ka1 {(Kb2-a1 c7-c5 Ka1-b2 Kg3-f3 Kb2-a1 Be6-d5 Ka1-b2
Kf3-e4 Kb2-a1 Ke4-e3 Ka1-b2 Bd5-e6 Kb2-a1 c5-c4 Ka1xa2) -15.85/16 1} Bb3
{(Be6-b3 Ka1-b2 Kg3-f4 Kb2-a1 Kf4-g4 Ka1-b2 Bb3-d5 Kb2-a1 Bd5-e6 Ka1-b2
Be6-c4 Kb2-a1 Kg4-f4 Ka1-b2 Bc4-e6 Kb2-a1 Be6-d5) +12.00/17 1} 71. Kb2
{(Ka1-b2 Bb3-d5 Kb2-a1 c7-c5 Ka1-b2 Bd5-c4 Kb2-a1 Kg3-f3 Ka1-b2 Kf3-e3)
-15.85/18 1} Kf4 {(Kg3-f4 Kb2-a1 Kf4-e4 Ka1-b2 Bb3-c4 Kb2-a1 Ke4-f4 Ka1-b2
Kf4-g4 Kb2-a1 Bc4-d5 Ka1-b2 Kg4-g3 Kb2-a1 Kg3-f3) +12.02/15 1} 72. Kxb3
{(Kb2xb3 a2-a1Q Kb3-c4 Kf4-e4 Kc4-b4 Qa1-d4+ Kb4-b5 Qd4-d5+ Kb5-b4 c7-c5+
Kb4-a4 Qd5-c4+) -12.95/12 1} a1=Q {(a2-a1Q Kb3-b4 Qa1-d4+ Kb4-b5 Qd4-e4
Kb5-c5 Kf4-f3 Kc5-b5 Qe4-d5+ Kb5-b4 Qd5-e5 Kb4-c4 Kf3-f4 Kc4-b4 Qe5-e4+)
+15.66/13 1} 73. Kc4 {(Kb3-c4 Kf4-e4 Kc4-b4 Qa1-d4+ Kb4-b5) -12.95/10 1}
Qe5 {(Qa1-e5 Kc4-b4 Qe5-d5 Kb4-c3 Kf4-e3 Kc3-b4 Qd5-c6 Kb4-b3 Qc6-e4 Kb3-c3
Ke3-f3 Kc3-b3) +15.79/12 1} 74. Kb3 {(Kc4-b3 Qe5-c5 Kb3-b2 Qc5-c4 Kb2-a3
Qc4-c3+ Ka3-a2 Qc3-c2+ Ka2-a1 Qc2-d2 Ka1-b1) -13.10/11 1} Qb5+ {(Qe5-b5+
Kb3-a3 Kf4-g3 Ka3-a2 Qb5-c4+ Ka2-b2 Kg3-f3 Kb2-b1 Qc4-e2 Kb1-c1 Kf3-f2
Kc1-b1 Qe2-e4+) +16.02/11 1} 75. Ka2 {(Kb3-a2 c7-c5 Ka2-a1 Qb5-b4 Ka1-a2
Kf4-f3 Ka2-a1 Qb4-c3+ Ka1-a2) -13.35/9 1} Qb4 {(Qb5-b4 Ka2-a1 Kf4-e3 Ka1-a2
Ke3-d3 Ka2-a1 Kd3-c3 Ka1-a2 Qb4-b2+) +M5/14 1} 76. Ka1 {(Ka2-a1 c7-c5
Ka1-a2 c5-c4 Ka2-a1 c4-c3 Ka1-a2 Qb4-b2+) -299.92/10 1} Ke4 {(Kf4-e4 Ka1-a2
Ke4-d3 Ka2-a1 Kd3-c3 Ka1-a2 Qb4-b2+) -0.00/14 1} 77. Ka2 {(Ka1-a2 Ke4-d4
Ka2-a1 Kd4-c3 Ka1-a2 Qb4-b2+) -299.94/11 1} Kd4 {(Ke4-d4 Ka2-a1 Kd4-c3
Ka1-a2 Qb4-b2+) +M3/15 1} 78. Ka1 {(Ka2-a1 Kd4-c3 Ka1-a2 Qb4-b2+)
-299.96/11 1} Kc3 {(Kd4-c3 Ka1-a2 Qb4-b2+) +M2/15 1} 79. Ka2 {(Ka1-a2
Qb4-b2+) -299.98/11 1} Qb2# {(Qb4-b2+) +M1/16 1} 0-1[/pgn]

Linux version only for now, I'm working on windows compatibility. If you manage to compile it on windows faster than I please share your solution.
Btw, if I'm now using SF NNUE does it mean that I need to change the licence to GNU GPL 3 like in SF?
dkappe
Posts: 1631
Joined: Tue Aug 21, 2018 7:52 pm
Full name: Dietrich Kappe

Re: Embedding Stockfish NNUE to ANY CHESS ENGINE: YouTube series

Post by dkappe »

Btw, if I'm now using SF NNUE does it mean that I need to change the licence to GNU GPL 3 like in SF?
If all of the code has licenses that you can change, that would be easiest, but if you distribute MIT and GPL code together, it’s really more of an issue for someone wanting to do something that the MIT License permits but the GPL does not.
Fat Titz by Stockfish, the engine with the bodaciously big net. Remember: size matters. If you want to learn more about this engine just google for "Fat Titz".
Daniel Shawul
Posts: 4185
Joined: Tue Mar 14, 2006 11:34 am
Location: Ethiopia

Re: Embedding Stockfish NNUE to ANY CHESS ENGINE: YouTube series

Post by Daniel Shawul »

maksimKorzh wrote: Sat Oct 17, 2020 11:59 pm Linux version only for now, I'm working on windows compatibility. If you manage to compile it on windows faster than I please share your solution.
Btw, if I'm now using SF NNUE does it mean that I need to change the licence to GNU GPL 3 like in SF?
A couple of notes.

You need to define compiler flags that may give you upto 5x speedup with gcc. With clang it is only about 2x but,
I suspect you are missing on this speed up.

Just add this flags when compiling the nnue.cpp file.

Code: Select all

DEFINES =
DEFINES += -DIS_64BIT 
ifeq ($(COMP),$(filter $(COMP),gcc clang win icpc))
  DEFINES += -DUSE_AVX2 -mavx2
  DEFINES += -DUSE_SSE41 -msse4.1
  DEFINES += -DUSE_SSSE3 -mssse3
  DEFINES += -DUSE_SSE2 -msse2
  DEFINES += -DUSE_SSE -msse
endif
Also I have now made it work with the MSVC windows compiler. The above flags are defined by default in the source code when using MSVC
so you can just drop them in your project and use them. There were some intrinsics for BitScanFirst that were missing.
User avatar
maksimKorzh
Posts: 771
Joined: Sat Sep 08, 2018 5:37 pm
Location: Ukraine
Full name: Maksim Korzh

Re: Embedding Stockfish NNUE to ANY CHESS ENGINE: YouTube series

Post by maksimKorzh »

Finally BBC + SF NNUE version is released!
https://github.com/maksimKorzh/bbc/releases/tag/1.3

And here're some games from recent match BBC 1.2 + SF NNUE vs VICE
https://github.com/maksimKorzh/bbc/tree ... ue_vs_vice
dkappe
Posts: 1631
Joined: Tue Aug 21, 2018 7:52 pm
Full name: Dietrich Kappe

Re: Embedding Stockfish NNUE to ANY CHESS ENGINE: YouTube series

Post by dkappe »

A few questions:
1) the nnue should be ~80% of the speed of hce of something like Scorpio (so 20% slower). After the compiler optimizations Daniel suggested, are you seeing something similar?
2) nnue is updated a little bit with each move/null move (and undo of a move). That’s what makes it efficient. Looking at your first video it didn’t seem you were doing that but performing a nnue initialization and eval from scratch, an expensive operation. Did I misunderstand your video?
Fat Titz by Stockfish, the engine with the bodaciously big net. Remember: size matters. If you want to learn more about this engine just google for "Fat Titz".
User avatar
maksimKorzh
Posts: 771
Joined: Sat Sep 08, 2018 5:37 pm
Location: Ukraine
Full name: Maksim Korzh

Re: Embedding Stockfish NNUE to ANY CHESS ENGINE: YouTube series

Post by maksimKorzh »

dkappe wrote: Sun Oct 18, 2020 9:54 pm A few questions:
1) the nnue should be ~80% of the speed of hce of something like Scorpio (so 20% slower). After the compiler optimizations Daniel suggested, are you seeing something similar?
2) nnue is updated a little bit with each move/null move (and undo of a move). That’s what makes it efficient. Looking at your first video it didn’t seem you were doing that but performing a nnue initialization and eval from scratch, an expensive operation. Did I misunderstand your video?
re: 1
- I didn't use optimization flags - my engine just crashes, I didn't dig deeper. I was interested in proofing the concept

re: 2
- Daniel's lib allows calculate NNUE scores without incremental updates and that's why I love it.

Just to give an overall direction of my work - I'm trying to deliver some complicated concepts to noobs like me so they could pick those concepts up as a proof of concept. I'm not trying to make my engine as strong and as fast as possible, I'm not interested in that because competetive aspect is something I hate the most. For me the FACT that SF NNUE works with engine I've handcrafted on my own is already a victory. Ones person achieves the goal of proving the concept he can then go for optimizations on his own.

If you're going wide spread you just don't have enough power to go deeper, on the other hand when you're endeepening significantly you can't explain complicated things in an easy way. I'm having the following problem all the time: everyone around is MUCH SMARTER than I, but they often can't explain me some very simple things. Well, maybe they can, but I'm too noob to get those explanations. So most of my efforts are spent on trying to dig the very gist of whatever concept. The entire BBC engine is a set of "proof of concepts" in all the parts of the engine (movegen, search techniques and now nnue). There are enough smart people whocreate really strong engines, bit there's noone out there who would explain chess programming to five year old kid (who is monkey at the same time). What I'm trying to do is explaining to 5 year old monkey kids)

Hope that makes sense.