Obsidian (DEV)

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

Moderators: hgm, chrisw, Rebel

peter
Posts: 3276
Joined: Sat Feb 16, 2008 7:38 am
Full name: Peter Martan

Re: Obsidian (DEV)

Post by peter »

Jouni wrote: Fri Dec 06, 2024 9:34 am Thanks! But solver seems to be buggy. In Arasan suite it solves 40 % of positions only :( . Default solves >90 %. 15 sec limit.
I have the same observation with a MEA- suite of mine, regards
Peter.
chessica
Posts: 865
Joined: Thu Aug 11, 2022 11:30 pm
Full name: Esmeralda Pinto

Re: Obsidian (DEV)

Post by chessica »

peter wrote: Fri Dec 06, 2024 10:09 am
Jouni wrote: Fri Dec 06, 2024 9:34 am Thanks! But solver seems to be buggy. In Arasan suite it solves 40 % of positions only :( . Default solves >90 %. 15 sec limit.
I have the same observation with a MEA- suite of mine, regards
And why is that so? The engine is the same, only the network is bigger.
peter
Posts: 3276
Joined: Sat Feb 16, 2008 7:38 am
Full name: Peter Martan

Re: Obsidian (DEV)

Post by peter »

Depth 29 with 30 threads (16x3.5GHz Ryzen) isn't reached until 10 minutes with solver- version:

Code: Select all

Obsidian Solver dev-14.10 SE by Gabriele Lombardo
setoption name Threads value 30
setoption name Hash value 8192
go depth 29
...
info depth 29 multipv 1 score cp 0 nodes 14999617534 nps 22775384 hashfull 1000 tbhits 0 time 658589 pv b1c3 g7g6 c3d5 f8h6 g2g4 g8f6 d2d4 h6d2 d1d2 h7h6 d5f6 e7f6 d2e3 d8e7 e3e7 e8e7 c1f4 b8c6 f1h3 h8h7 e1c1 c6b4 c1b1
bestmove b1c3
1.Nc3?!

Dev.- version needs 7" only:

Code: Select all

Obsidian dev-14.10 SE by Gabriele Lombardo
setoption name Threads value 30
setoption name Hash value 8192
go depth 29
...
info depth 29 multipv 1 score cp 24 nodes 200157623 nps 28630757 hashfull 157 tbhits 0 time 6991 pv e2e4 e7e5 g1f3 b8c6 f1b5 g8f6 e1g1 f6e4 f1e1 e4d6 f3e5 f8e7 b5f1 c6e5 e1e5 e8g8 b1c3 d6e8 c3d5 e7d6 e5e1 c7c6 d5e3 d6e7 c2c4 e8c7 d2d4 d7d5 c4d5 e7b4 c1d2 b4d2 d1d2 c7d5 e3d5 d8d5 e1e5 d5d6 f1c4 c8d7 h2h3 a8e8 d2c3 h7h6 e5e8 f8e8 c3b3 d6f4 b3b7 f4d4
bestmove e2e4
Single thread depth 27,
Solver:

Code: Select all

Obsidian Solver dev-14.10 SE by Gabriele Lombardo
setoption name Hash value 1024
go depth 27
...
info depth 27 multipv 1 score cp 0 nodes 846535962 nps 3709395 hashfull 1000 tbhits 0 time 228214 pv g1h3 g8f6 c2c3 e7e6 h3g5 f8d6 b2b4 a7a6 d1a4 b7b5 a4c2 h7h6 g5e4 f6e4 c2e4 d8h4 e4a8 c7c6
info depth 26 multipv 1 score cp 1 nodes 846537462 nps 3709385 hashfull 1000 tbhits 0 time 228215 pv g2g4 e7e6 g1f3 f8b4 c2c3 b4c5 d2d4 b8c6 d4c5 g8f6 h2h3 a7a6 c1g5 c6e5 f3e5 f6e4 g5d8 e8d8 e5f7 d8e7 g4g5
bestmove g2g4
1.g4?

There's a step back to depth 26 after reaching 27 for the first time.

Dev. version:

Code: Select all

Obsidian dev-14.10 SE by Gabriele Lombardo
setoption name Hash value 1024
go depth 27
...
info depth 27 multipv 1 score cp 26 nodes 22600688 nps 4227588 hashfull 159 tbhits 0 time 5346 pv e2e4 e7e5 g1f3 b8c6 f1b5 a7a6 b5a4 g8f6 e1g1 f6e4 d2d4 b7b5 a4b3 d7d5 d4e5 c8e6 b1d2 e4c5 c2c3 f8e7 b3c2 d5d4 f3d4 c6d4 c3d4 d8d4 d2f3 d4d1 f1d1 c5a4 c2e4 a8d8 d1d8 e8d8 f3d4 d8c8 d4e6 f7e6
bestmove e2e4
Peter.
gabe_obsidian
Posts: 7
Joined: Fri Jan 26, 2024 10:21 pm
Full name: Gabriele Lombardo

Re: Obsidian (DEV)

Post by gabe_obsidian »

It is not possible to plug in the new net like that.
The architecture of net60 is slightly different from net53 (main branch), this means that if you take main and put net60, the engine will read the content in a corrupted way.
Obsidian with net60 can instead be used properly from the "bucks16" branch.
Note however that this net turned out just slightly negative in testing. It is not better in any way.
Neither it is tuned, at all, for test positions.
- Obsidian author
Chris Formula
Posts: 85
Joined: Sun Aug 21, 2016 7:59 am
Full name: Chris Euler

Re: Obsidian (DEV)

Post by Chris Formula »

gabe_obsidian wrote: Fri Dec 06, 2024 8:30 pm It is not possible to plug in the new net like that.
The architecture of net60 is slightly different from net53 (main branch), this means that if you take main and put net60, the engine will read the content in a corrupted way.
Obsidian with net60 can instead be used properly from the "bucks16" branch.
Note however that this net turned out just slightly negative in testing. It is not better in any way.
Neither it is tuned, at all, for test positions.
- Obsidian author
Thanks Gabe for the clarification. Keep up the good work you’re doing!

Chris
Dann Corbit
Posts: 12702
Joined: Wed Mar 08, 2006 8:57 pm
Location: Redmond, WA USA

Re: Obsidian (DEV)

Post by Dann Corbit »

Using this tweaked version of Obsidian 14.10:

against this set of EPD tests:

gave this analysis:

with this summary:


Bottom line:
G:\hardest.epd
Obsidian14_10
60 Seconds per move
76 of 120 matching moves

G:\hardest.epd
Obsidian14_10-mod
60 Seconds per move
85 of 120 matching moves

With hyperthreading turned off, I used 30 threads and 16GB hash on my AMD 3970x Threadripper.
No time to examine game play yet.

The change I make to null move pruning is this:

Code: Select all

#define STANDARD_NULL_MOVE    // #undef to get modified version     
#ifdef STANDARD_NULL_MOVE
        int R = std::min((eval - beta) / NmpEvalDiv, (int)NmpEvalDivMin) + depth / NmpDepthDiv + NmpBase + ttMoveNoisy;
#else
        assert(MAX_PLY < sizeof logtab / sizeof logtab[0]); // do not overflow the table size
        int R = std::min((eval - beta) / NmpEvalDiv, (int)NmpEvalDivMin) + logtab[depth] + NmpBase + ttMoveNoisy;
        float factor = logistic_mobility_score(perft<false>(pos, 1));
        R = (int)(factor * R);
#endif
The difference for the two versions that I analyzed with above is the standard version had:

Code: Select all

#define STANDARD_NULL_MOVE  
and the modified version had:

Code: Select all

#undef STANDARD_NULL_MOVE  
I get a small improvement for both using the logarithmic depth reduction and for tweaking the reduction based on mobility.
The mobility is used to reduce pruning when there are very few move choices and increase it when there are many move choices.
The two lookup tables are found at the top of search.cpp
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.
Chris Formula
Posts: 85
Joined: Sun Aug 21, 2016 7:59 am
Full name: Chris Euler

Re: Obsidian (DEV)

Post by Chris Formula »

thanks Dann! I hope Gabe sees your post too.
Ciekce
Posts: 169
Joined: Sun Oct 30, 2022 5:26 pm
Full name: Conor Anstey

Re: Obsidian (DEV)

Post by Ciekce »

Dann Corbit wrote: Fri Dec 06, 2024 10:10 pm [...]
this set of EPD tests:
[...]
so completely meaningless nonsense?

test positions are utterly useless
Dann Corbit
Posts: 12702
Joined: Wed Mar 08, 2006 8:57 pm
Location: Redmond, WA USA

Re: Obsidian (DEV)

Post by Dann Corbit »

The positions may be useless to you, but they are very useful to me.
They show the sort of positions that many engines struggle with.
I am not the only one who finds them useful, but if they are useless to you, I certainly cannot refute such a claim.
I am sorry that you were unable to extract any value from them. Perhaps someday, I will provide a set of positions with more value to you.
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: 12702
Joined: Wed Mar 08, 2006 8:57 pm
Location: Redmond, WA USA

Re: Obsidian (DEV)

Post by Dann Corbit »

You will likely find (at least at fast time control) that the modified engine is stronger in game play.
I have not completed these tests, but in all my previous tests, the same changes produced about +30 Elo at game in one minute plus half a second bonus.
The benefits are harder and harder to measure at longer time control, due to increasing draw rate.
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.