Hitting a wall at ~1860 Elo

Discussion of chess software programming and technical issues.

Moderators: hgm, Rebel, chrisw

User avatar
emadsen
Posts: 434
Joined: Thu Apr 26, 2012 1:51 am
Location: Oak Park, IL, USA
Full name: Erik Madsen

Re: Hitting a wall at ~1860 Elo

Post by emadsen »

mvanthoor wrote: Wed Jun 02, 2021 6:02 pm PeSTO has a tapered and heavily tuned set of PST's, one for middlegame and one for the endgame. Therefore it has a _massive_ amount of positional knowledge encoded in its PST's... With good PST's, the cap on strength can be postponed a lot. That has been proven that different PST's can increase playing strength (there's a topic here in the forums somewhere)
I wouldn't characterize PESTO as containing "massive" positional knowledge. There's nothing magical about PESTO PSTs. I really don't understand the attention they get. Perhaps for a virgin engine, without sensible PSTs, adding PESTO significantly improves playing strength. But for a mature engine with PSTs calcuated from advancement, centrality, and corner-avoidance, calibrated via Texel tuning to ensure harmony with other eval params, PESTO adds nothing.

Selective search algo + performant code + bug elimination gets you 2500+ ELO. Sophisticated eval (either hand-crafted or neural-network) adds strength in the push towards 3000 ELO.
My C# chess engine: https://www.madchess.net
User avatar
mvanthoor
Posts: 1784
Joined: Wed Jul 03, 2019 4:42 pm
Location: Netherlands
Full name: Marcel Vanthoor

Re: Hitting a wall at ~1860 Elo

Post by mvanthoor »

emadsen wrote: Thu Jun 03, 2021 12:18 am I wouldn't characterize PESTO as containing "massive" positional knowledge. There's nothing magical about PESTO PSTs. I really don't understand the attention they get. Perhaps for a virgin engine, without sensible PSTs, adding PESTO significantly improves playing strength. But for a mature engine with PSTs calcuated from advancement, centrality, and corner-avoidance, calibrated via Texel tuning to ensure harmony with other eval params, PESTO adds nothing.
You're right of course, but compared to an engine that has only one set of hand-written PST's, the PeSTO-tables do contain a massive amount of positional knowledge. They get so much attention just _because_ of the fact that they are well tuned. You can just plug them into your engine (along with the mechanics of a tapered evaluation obviously), and you can expect a ~250-300 point Elo boost. That's why they're "magical".

I prefer to create my own "PeSTO" tables though :)
Selective search algo + performant code + bug elimination gets you 2500+ ELO. Sophisticated eval (either hand-crafted or neural-network) adds strength in the push towards 3000 ELO.
I at least intend to try :) I want to write that book/site (and made some good headway with it recently), and I'd like the information in it to be correct; that's the reason why I'm writing and testing each function separately, often in different versions, such as with history... and asking questions if I'm not 100% sure because of conflicting literature, postings, or results.
Author of Rustic, an engine written in Rust.
Releases | Code | Docs | Progress | CCRL
mar
Posts: 2559
Joined: Fri Nov 26, 2010 2:00 pm
Location: Czech Republic
Full name: Martin Sedlak

Re: Hitting a wall at ~1860 Elo

Post by mar »

mvanthoor wrote: Thu Jun 03, 2021 12:24 am
emadsen wrote: Thu Jun 03, 2021 12:18 am I wouldn't characterize PESTO as containing "massive" positional knowledge. There's nothing magical about PESTO PSTs. I really don't understand the attention they get. Perhaps for a virgin engine, without sensible PSTs, adding PESTO significantly improves playing strength. But for a mature engine with PSTs calcuated from advancement, centrality, and corner-avoidance, calibrated via Texel tuning to ensure harmony with other eval params, PESTO adds nothing.
You're right of course, but compared to an engine that has only one set of hand-written PST's, the PeSTO-tables do contain a massive amount of positional knowledge. They get so much attention just _because_ of the fact that they are well tuned. You can just plug them into your engine (along with the mechanics of a tapered evaluation obviously), and you can expect a ~250-300 point Elo boost. That's why they're "magical".

I prefer to create my own "PeSTO" tables though :)
well, there's nothing special about the psq tables in "PeSTO" except that they're tuned.
PeSTO (the engine) is strong solely due to its superior search.

when I replaced my whole HCE with PSQ tables from PeSTO, I lost 200 elo immediately.

reaching 3k is really hard (those who claim otherwise are either liars or frauds :) - I'm like 30-40 elo away on single core (CCRL 40/15) - all I can say that you need both a very good search and eval to even think about reaching it. I can't imagine any 3k engine whose eval isn't tuned.

a good evaluation function is worth hundreds of elo, with PSQ only you lack basically everything that forms a decent evaluation function.
it's also important to understand which types of endgames are drawish and either avoid those or enter those (because even in midgame, the engine considers lots of simplifications at the tip of its search)

as for hitting a wall - nullmove and LMR should give you a massive elo boost, tuning your eval will give you a massive elo boost as well
Martin Sedlak
User avatar
mvanthoor
Posts: 1784
Joined: Wed Jul 03, 2019 4:42 pm
Location: Netherlands
Full name: Marcel Vanthoor

Re: Hitting a wall at ~1860 Elo

Post by mvanthoor »

mar wrote: Thu Jun 03, 2021 1:20 am well, there's nothing special about the psq tables in "PeSTO" except that they're tuned.
PeSTO (the engine) is strong solely due to its superior search.

when I replaced my whole HCE with PSQ tables from PeSTO, I lost 200 elo immediately.
Obviously, as you removed all of your dynamic knowledge...
reaching 3k is really hard (those who claim otherwise are either liars or frauds :) - I'm like 30-40 elo away on single core (CCRL 40/15) - all I can say that you need both a very good search and eval to even think about reaching it. I can't imagine any 3k engine whose eval isn't tuned.
I know; my personal goal is 2895, to be able to defeat my long-time default chess engine Fritz 11 by proxy in a match :P (Currently I'm not using Fritz 11 as an engine anymore, but I still use the GUI...)
a good evaluation function is worth hundreds of elo, with PSQ only you lack basically everything that forms a decent evaluation function.
it's also important to understand which types of endgames are drawish and either avoid those or enter those (because even in midgame, the engine considers lots of simplifications at the tip of its search)
I hope to have a bit of an advantage here, because I'm a fairly decent chess player; i.e., it's probably easier for me to write a good evaluation, than to write a good search. (Without having to heavily research the topic.)
as for hitting a wall - nullmove and LMR should give you a massive elo boost, tuning your eval will give you a massive elo boost as well
Tuning, null move and LMR are on the agenda after killers, pvs, aw, and history :)

The "hitting the wall" was meant because of the fact that I added two functions to the engine which barely gained any Elo in a somewhat slower gauntlet, but as said: I think Niels nailed it. The slower gauntlet has MUCH longer searches, obviously, and having no bounds on the history (and also increasing it unnecessarily in the alpha region) probably messed up the move ordering. That would negate much of the speed increase given by other functions.

As I merged everything into master already (because the additions did work in the hyper-fast test), I just disabled everything but the killer moves, and I'm going to re-test again and re-add / rewrite per function.
Author of Rustic, an engine written in Rust.
Releases | Code | Docs | Progress | CCRL
mar
Posts: 2559
Joined: Fri Nov 26, 2010 2:00 pm
Location: Czech Republic
Full name: Martin Sedlak

Re: Hitting a wall at ~1860 Elo

Post by mar »

mvanthoor wrote: Thu Jun 03, 2021 1:41 am I know; my personal goal is 2895, to be able to defeat my long-time default chess engine Fritz 11 by proxy in a match :P (Currently I'm not using Fritz 11 as an engine anymore, but I still use the GUI...)
well, 2895 is a curious goal :) even if the engine is on par elo-wise against other opponents, it doesn't mean it will beat Fritz 11 head to head.
typically engines score better against some programs and worse against others close in rating
Martin Sedlak
Uri Blass
Posts: 10309
Joined: Thu Mar 09, 2006 12:37 am
Location: Tel-Aviv Israel

Re: Hitting a wall at ~1860 Elo

Post by Uri Blass »

mar wrote: Thu Jun 03, 2021 1:20 am
mvanthoor wrote: Thu Jun 03, 2021 12:24 am
emadsen wrote: Thu Jun 03, 2021 12:18 am I wouldn't characterize PESTO as containing "massive" positional knowledge. There's nothing magical about PESTO PSTs. I really don't understand the attention they get. Perhaps for a virgin engine, without sensible PSTs, adding PESTO significantly improves playing strength. But for a mature engine with PSTs calcuated from advancement, centrality, and corner-avoidance, calibrated via Texel tuning to ensure harmony with other eval params, PESTO adds nothing.
You're right of course, but compared to an engine that has only one set of hand-written PST's, the PeSTO-tables do contain a massive amount of positional knowledge. They get so much attention just _because_ of the fact that they are well tuned. You can just plug them into your engine (along with the mechanics of a tapered evaluation obviously), and you can expect a ~250-300 point Elo boost. That's why they're "magical".

I prefer to create my own "PeSTO" tables though :)
well, there's nothing special about the psq tables in "PeSTO" except that they're tuned.
PeSTO (the engine) is strong solely due to its superior search.

when I replaced my whole HCE with PSQ tables from PeSTO, I lost 200 elo immediately.

reaching 3k is really hard (those who claim otherwise are either liars or frauds :) - I'm like 30-40 elo away on single core (CCRL 40/15) - all I can say that you need both a very good search and eval to even think about reaching it. I can't imagine any 3k engine whose eval isn't tuned.

a good evaluation function is worth hundreds of elo, with PSQ only you lack basically everything that forms a decent evaluation function.
it's also important to understand which types of endgames are drawish and either avoid those or enter those (because even in midgame, the engine considers lots of simplifications at the tip of its search)

as for hitting a wall - nullmove and LMR should give you a massive elo boost, tuning your eval will give you a massive elo boost as well
I believe that it is possible to achieve 3000 elo with good search and evaluation that is not tuned.

I do not believe that a logical untuned evaluation that include mobility passed pawns and king safety can be worse than PeSTO tuned evaluation.
mar
Posts: 2559
Joined: Fri Nov 26, 2010 2:00 pm
Location: Czech Republic
Full name: Martin Sedlak

Re: Hitting a wall at ~1860 Elo

Post by mar »

Uri Blass wrote: Thu Jun 03, 2021 10:46 am I believe that it is possible to achieve 3000 elo with good search and evaluation that is not tuned.

I do not believe that a logical untuned evaluation that include mobility passed pawns and king safety can be worse than PeSTO tuned evaluation.
maybe - if you copy-paste a top 20 engine's search, but that misses the point I was trying to make
Martin Sedlak
Koivisto
Posts: 50
Joined: Fri Sep 04, 2020 10:30 pm
Full name: Kim Kahre

Re: Hitting a wall at ~1860 Elo

Post by Koivisto »

mvanthoor wrote: Thu Jun 03, 2021 1:41 am
mar wrote: Thu Jun 03, 2021 1:20 am well, there's nothing special about the psq tables in "PeSTO" except that they're tuned.
PeSTO (the engine) is strong solely due to its superior search.

when I replaced my whole HCE with PSQ tables from PeSTO, I lost 200 elo immediately.
a good evaluation function is worth hundreds of elo, with PSQ only you lack basically everything that forms a decent evaluation function.
it's also important to understand which types of endgames are drawish and either avoid those or enter those (because even in midgame, the engine considers lots of simplifications at the tip of its search)
I hope to have a bit of an advantage here, because I'm a fairly decent chess player; i.e., it's probably easier for me to write a good evaluation, than to write a good search. (Without having to heavily research the topic.)
From experience I'd say beeing a decent chess player is way way way less important than a solid bugfree and well tuned implementation. In general I'd say there is a very strong correlation between people looking at top 20 (well top 5 really) engine code and elo - don't take the elo race too seriously.

love & waffles :)
User avatar
lithander
Posts: 881
Joined: Sun Dec 27, 2020 2:40 am
Location: Bremen, Germany
Full name: Thomas Jahn

Re: Hitting a wall at ~1860 Elo

Post by lithander »

Koivisto wrote: Thu Jun 03, 2021 3:05 pm From experience I'd say beeing a decent chess player is way way way less important than a solid bugfree and well tuned implementation.
That matches my experience. It was liberating when I realized that I don't have to hand-craft my evaluation. Instead you can just prepare a few tables like PSTs and have an auto-tuning algorithm find the correct numbers for you. The tables will encode knowledge that you don't need to have. Maybe you even learn something! ;) (because a lot of the numbers make sense retrospectively)

This is not limitted to PSTs I just added another tuned "lookup table" that results in the engine getting an idea of terms like mobility and pawn structure, threatening and guarding valuable pieces etc...

And in the end NNUE is also the same thing: As long as you have the programming knowledge and good training data you can make something like that work without being a good chess player.
Koivisto wrote: Thu Jun 03, 2021 3:05 pm In general I'd say there is a very strong correlation between people looking at top 20 (well top 5 really) engine code and elo - don't take the elo race too seriously.
If you don't want look at other engine's source code or if you try to be original or even both you'll end up in different part of the ranking list for sure but still you'll care about ELO. At least I do. Otherwise how could you make sure that your new features work? That you are not just adding code but indeed developing your engine towards stronger play?

Btw my personal goal is the 2000 ELO barrier. And I wanted to reach that with as simple code as possible... I aim for around 700 LOC. Then I'll slap a version 1.0 on MinimalChess and call it done! ;)
Minimal Chess (simple, open source, C#) - Youtube & Github
Leorik (competitive, in active development, C#) - Github & Lichess
User avatar
mvanthoor
Posts: 1784
Joined: Wed Jul 03, 2019 4:42 pm
Location: Netherlands
Full name: Marcel Vanthoor

Re: Hitting a wall at ~1860 Elo

Post by mvanthoor »

lithander wrote: Thu Jun 03, 2021 3:48 pm That matches my experience. It was liberating when I realized that I don't have to hand-craft my evaluation. Instead you can just prepare a few tables like PSTs and have an auto-tuning algorithm find the correct numbers for you. The tables will encode knowledge that you don't need to have. Maybe you even learn something! ;) (because a lot of the numbers make sense retrospectively)

This is not limitted to PSTs I just added another tuned "lookup table" that results in the engine getting an idea of terms like mobility and pawn structure, threatening and guarding valuable pieces etc...

And in the end NNUE is also the same thing: As long as you have the programming knowledge and good training data you can make something like that work without being a good chess player.
Yes, but when your a somewhat decent chess player, you can see if your engine is playing to expectation, and you can identify weak points for which you can then create an evaluation term.
Koivisto wrote: Thu Jun 03, 2021 3:05 pm If you don't want look at other engine's source code or if you try to be original or even both you'll end up in different part of the ranking list for sure but still you'll care about ELO. At least I do. Otherwise how could you make sure that your new features work? That you are not just adding code but indeed developing your engine towards stronger play?
That's the reason why Rustic takes so long to write. I'm not just following a tutorial or snatching code. I'm not even reading code (except for what I may encounter in an explanation somewhere). I try to understand the concepts so well that I can write my own code, and can then explain to others how this works; without copy/pasting explanations from somewhere else.

I'm writing Rustic not only to be strong, but also to really _understand_ all the concepts... finally. (I've known the basics for 25 years, but my knowledge was clearly sketchy and not up to date anymore.)
Btw my personal goal is the 2000 ELO barrier. And I wanted to reach that with as simple code as possible... I aim for around 700 LOC. Then I'll slap a version 1.0 on MinimalChess and call it done! ;)
And then you'll have to write another engine, because if you quit, I might be... angry. (Read that in Worf's voice. :lol: )
Author of Rustic, an engine written in Rust.
Releases | Code | Docs | Progress | CCRL