Introducing Igel chess engine

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

Moderators: hgm, Rebel, chrisw

voffka
Posts: 288
Joined: Sat Jun 30, 2018 10:58 pm
Location: Ukraine
Full name: Volodymyr Shcherbyna

Re: Introducing Igel chess engine

Post by voffka »

Hey xr_a_y,
xr_a_y wrote: Sat Mar 28, 2020 6:15 pm Here's today results at LTC (8min+4sec) Igel 2.4.0 versus Minic 1.55
Good. I usually run my own regression suite of 500 games per opponent against a set of opponents (usually top 50 engines, tc=all/60+0.6 with tbs), this allows me to get an average elo increase estimate because the suite is mandatory for an Igel release.

For example,

Igel 2.4.0

Code: Select all

Rank Name                          Elo     +/-   Games   Score   Draws
   0 Igel 2.4.0 64 POPCNT          -80       6   10000   38.7%   32.1%
   1 Stockfish 10 64 POPCNT        501      48     500   94.7%   10.6%
   2 Ethereal 11.75 (PEXT)         324      31     500   86.6%   24.4%
   3 Fire 7.1 x64 popcnt           311      31     500   85.7%   23.8%
   4 Xiphos 0.6 BMI2               299      30     500   84.8%   26.4%
   5 rofChade 2.202 BMI            217      25     500   77.7%   35.8%
   6 Laser 1.7                     215      27     500   77.5%   33.0%
   7 Defenchess 2.2 x64            192      27     500   75.1%   32.6%
   8 Andscacs 0.95                 161      26     500   71.7%   33.0%
   9 Pedone 2.0                    109      24     500   65.2%   38.8%
  10 RubiChess 1.6                  81      23     500   61.5%   44.2%
  11 Arasan 22.0                    66      24     500   59.4%   39.6%
  12 Strelka 5.5 x64                62      24     500   58.8%   36.8%
  13 Deep iCE 4.0.853 x64/popcnt    48      24     500   56.8%   36.8%
  14 Texel 1.07                     41      22     500   55.9%   47.0%
  15 Vajolet2 2.8.0                 39      24     500   55.6%   37.6%
  16 Nemorino                       27      24     500   53.9%   37.4%
  17 Protector 1.9.0               -13      24     500   48.1%   36.2%
  18 Winter 0.7 BMI2              -136      27     500   31.4%   30.0%
  19 zurichess neuchatel          -234      27     500   20.6%   31.2%
  20 GreKo 2018.08                -487      54     500    5.7%    7.8%
Igel 2.3.1

Code: Select all

Rank Name                          Elo     +/-   Games   Score   Draws
   0 Igel 2.3.1 64 POPCNT         -106       6   10000   35.2%   31.0%
   1 Stockfish 10 64 POPCNT        527      55     500   95.4%    8.0%
   2 Fire 7.1 x64 popcnt           346      35     500   88.0%   19.6%
   3 Ethereal 11.75 (PEXT)         340      31     500   87.6%   23.6%
   4 Xiphos 0.6 BMI2               318      31     500   86.2%   24.4%
   5 Laser 1.7                     259      28     500   81.6%   29.6%
   6 rofChade 2.202 BMI            220      27     500   78.0%   32.8%
   7 Defenchess 2.2 x64            206      26     500   76.6%   34.0%
   8 Andscacs 0.95                 172      27     500   72.9%   30.2%
   9 RubiChess 1.6                 161      24     500   71.7%   41.0%
  10 Pedone 2.0                    143      25     500   69.5%   34.6%
  11 Strelka 5.5 x64               119      25     500   66.5%   34.6%
  12 Deep iCE 4.0.853 x64/popcnt    98      24     500   63.7%   39.0%
  13 Arasan 22.0                    95      25     500   63.4%   35.6%
  14 Texel 1.07                     89      24     500   62.6%   38.8%
  15 Vajolet2 2.8.0                 65      23     500   59.2%   44.4%
  16 Nemorino                       44      25     500   56.3%   34.2%
  17 Protector 1.9.0                 2      23     500   50.3%   40.6%
  18 Winter 0.7 BMI2              -111      26     500   34.5%   29.8%
  19 zurichess neuchatel          -215      26     500   22.5%   33.8%
  20 GreKo 2018.08                -411      44     500    8.6%   11.2%
Igel 2.3.0

Code: Select all

Rank Name                          Elo     +/-   Games   Score   Draws
   0 Igel 2.3.0 64 POPCNT         -178      14    2000   26.5%   24.9%
   1 Stockfish 10 64 POPCNT        531     132     100   95.5%    9.0%
   2 Xiphos 0.6 BMI2               494     115     100   94.5%   11.0%
   3 Ethereal 11.75 (PEXT)         478     121     100   94.0%   10.0%
   4 Fire 7.1 x64 popcnt           436     103     100   92.5%   13.0%
   5 Laser 1.7                     330      68     100   87.0%   26.0%
   6 rofChade 2.202 BMI            323      74     100   86.5%   23.0%
   7 Defenchess 2.2 x64            295      73     100   84.5%   23.0%
   8 Andscacs 0.95                 263      72     100   82.0%   22.0%
   9 Pedone 2.0                    230      65     100   79.0%   28.0%
  10 RubiChess 1.6                 230      61     100   79.0%   32.0%
  11 Strelka 5.5 x64               220      71     100   78.0%   20.0%
  12 Arasan 22.0                   186      61     100   74.5%   31.0%
  13 Texel 1.07                    168      63     100   72.5%   27.0%
  14 Deep iCE 4.0.853 x64/popcnt   143      54     100   69.5%   41.0%
  15 Nemorino                      143      61     100   69.5%   29.0%
  16 Vajolet2 2.8.0                119      58     100   66.5%   33.0%
  17 Protector 1.9.0               100      56     100   64.0%   36.0%
  18 Winter 0.7 BMI2               -31      58     100   45.5%   29.0%
  19 zurichess neuchatel           -63      53     100   41.0%   40.0%
  20 GreKo 2018.08                -295      83     100   15.5%   15.0%
Since the regression suite engine set is the same you can clearly measure the elo increase, I encourage you to do the same for Minic :)
Wolfgang
Posts: 893
Joined: Sat May 13, 2006 1:08 am

Re: Introducing Igel engine

Post by Wolfgang »

voffka wrote: Sat Mar 28, 2020 2:32 pm Hello Wolfgang,
Wolfgang wrote: Sat Mar 28, 2020 1:46 pm
Adjudication rules:
- adjudicate game as lost when both (!) engines show -999 centipawns for 5 moves
I think the adjudication of 999 cp is the trick that causes the games to end smoothly on your side. When I fixed the bug yesterday, I realized it was in a very specific condition:

1. Igel finds a winning mate
2. Igel reaches maximum depth (127)
3. Once the maximum depth is reached, it exits the aspiration loop
4. When in ponder if an aspiration loop is exited Igel waits on an explicit ponderhit/stop
5. Due to the bug the exit from the wait (after aspiration loop) did not happen

So, once you use adjudication, you basically invalidate the condition #2 and #3 and this is why you did not see the issue with ponder in your list.

You can test this theory by running a single game between Igel 2.3.1 and some weaker opponent without adjudication, the moment Igel finds mate and reaches max ply you should see a freeze.

In 2.4.0 this is fixed :)
Yes, really very specific bug... ;)
Best
Wolfgang
CEGT-Team
www.cegt.net
www.cegt.forumieren.com
Wolfgang
Posts: 893
Joined: Sat May 13, 2006 1:08 am

Re: Introducing Igel chess engine

Post by Wolfgang »

https://cegt.forumieren.com/t1188-for-t ... -list#2553

Actual opponents are a bit too weak for Igel, but Deep iCE 4.0 as next participant will probably be on same level.
Best
Wolfgang
CEGT-Team
www.cegt.net
www.cegt.forumieren.com
voffka
Posts: 288
Joined: Sat Jun 30, 2018 10:58 pm
Location: Ukraine
Full name: Volodymyr Shcherbyna

Re: Introducing Igel chess engine

Post by voffka »

Thanks Wolfgang,
Wolfgang wrote: Fri Apr 10, 2020 12:45 pm https://cegt.forumieren.com/t1188-for-t ... -list#2553

Actual opponents are a bit too weak for Igel, but Deep iCE 4.0 as next participant will probably be on same level.
Actually Rodent is quite strong, I think on the same level as Igel 2.4.0, so I am curios if the difference in performance is due to some glitches with ponder.

Overall, quite happy about ponder performance, will add it in upcoming version of Igel (2.5.0) together with some time management improvements in time controls without increment (reported by @jpqy)
User avatar
xr_a_y
Posts: 1871
Joined: Sat Nov 25, 2017 2:28 pm
Location: France

Re: Introducing Igel chess engine

Post by xr_a_y »

voffka wrote: Fri Apr 10, 2020 5:02 pm Thanks Wolfgang,
Wolfgang wrote: Fri Apr 10, 2020 12:45 pm https://cegt.forumieren.com/t1188-for-t ... -list#2553

Actual opponents are a bit too weak for Igel, but Deep iCE 4.0 as next participant will probably be on same level.
Actually Rodent is quite strong, I think on the same level as Igel 2.4.0, so I am curios if the difference in performance is due to some glitches with ponder.

Overall, quite happy about ponder performance, will add it in upcoming version of Igel (2.5.0) together with some time management improvements in time controls without increment (reported by @jpqy)
RodentIV is not that strong, versus Minic at least

(http://www.cegt.net/40_4_Ratinglist/40_ ... e/726.html)
787 Minic 1.48 x64 1CPU - 2835 100 + 24 = 36 - 40 42.0 % 2780

which is in line with my home test.

12 rodentIV -63 40 155 41.0% 45.8%
voffka
Posts: 288
Joined: Sat Jun 30, 2018 10:58 pm
Location: Ukraine
Full name: Volodymyr Shcherbyna

Re: Introducing Igel chess engine

Post by voffka »

Image

Igel 2.5.0 at https://github.com/vshcherbyna/igel/releases/tag/2.5.0 (binaries for Linux, macOS and Windows).

This release brings various improvements in code quality as well as strength improvements in search, evaluation and tt management. As of this release Igel uses OpenBench as a primary testing system and I would like to specially thank Andrew Grant for supporting Igel development on OpenBench.

What's new:

- Implement OpenBench support
- Implement BMI2 instruction support for faster search
- Implement prefetch instruction support for faster search
- Implement ponder support
- Implement improved sudden death time control management
- Implement use of hugepages in Linux OS
- Implement more efficient tt management and re-write tt replacement scheme to 'always replace'
- Implement proper handling of chopper moves
- Implement improved king safety evaluation
- Implement improved weights management
- Implement symmetric evaluation function
- Set tt score in qsearch
- Set bestmove as a hashmove by default
- Bugfix for knight outpost
- Bugfix for depth skipping in smp mode
- Implement pst based evaluation for connected passers
- Bugfix for probcut in check
- Factor in 'improving' even when in checks
- Adjust bestscore from tt score
- Bugfix shuffling of moves at root in smp mode
voffka
Posts: 288
Joined: Sat Jun 30, 2018 10:58 pm
Location: Ukraine
Full name: Volodymyr Shcherbyna

Re: Introducing Igel chess engine

Post by voffka »

Image

Igel 2.6.0 at https://github.com/vshcherbyna/igel/releases/tag/2.6.0 (binaries for Linux, macOS and Windows).

This release brings various improvements in strength, especially in evaluation function and adds around 55 elo of strength at LTC.

What's new:

- Implement piece threats evaluation
- Simplify connected pass pawn evaluation
- Implement backward pawn evaluation
- Apply tempo after interpolation and speed up null move evaluation
- Implement verification qsearch for probcut
- Remove L1 normalisation from tuner and retune all params
- Implement trapped rook evaluation
- Implement razoring in search
- Implement king danger evaluation
- Implement hanging piece evaluation
- Implement weak pawn evaluation
- Implement restricted piece evaluation
- Implement lazy evaluation with a threshould of 300cp
- Implement multicut search
- Implement threat by a protected pawn evaluation
- Improve safe check evaluations
- Bench 7538060

Regression run against Igel 2.5.0 at 60s+0.6 time control:

Code: Select all

ELO   | 55.64 +- 4.19 (95%)
SPRT  | 60.0+0.6s Threads=1 Hash=64MB
LLR   | 0.00 (-2.94, 2.94) [0.00, 0.00]
Games | N: 12028 W: 3703 L: 1793 D: 6532
voffka
Posts: 288
Joined: Sat Jun 30, 2018 10:58 pm
Location: Ukraine
Full name: Volodymyr Shcherbyna

Re: Introducing Igel chess engine

Post by voffka »

Igel and NNUE

As many of you are aware, there is a big thing happening these days in chess – NNUE based evaluation that is appearing now in many chess engines (Stockfish, Minic) replacing classic (or legacy) evaluation and adding enormous strength to existing engines bringing them to another level.

In my opinion, neural networks as efficient as NNUE will replace legacy handcrafted evaluation routines for most top engines competing in chess tournaments and this is just a matter of time.

NNUE is just a starting point in the evolution of chess engines and so many things can be tried/researched further to enhance strength of engines: hybrid evals, scaling of evals, modifications to learner and most importantly, working and researching input features of the network. I would be eager to try all of this in a near future in Igel.

Because of that I have decided to integrate NNUE into Igel and use it as a main evaluation function as of upcoming Igel 2.7.0 release. As a starting point the NNUE implementation in Igel is compatible with networks used by Stockfish, however I would discourage use of Stockfish network in Igel due to the following reasons:

1. Training of network is a complicated work, some may call it an art, so work of those people spending time training networks for Stockfish cannot be just used in Igel without their permissions

2. Other networks may be not working so well with Igel because of Igel’s search algorithm pruning conditions and scaling of network may be different

3. In near future the NNUE architecture in Igel may change if I chose to experiment with different features

4. I am currently working on a NNUE learner that is based solely on Igel search and most of the search parameters are going to be adapted to Igel based networks

Igel 2.7.0 will use NNUE network called "Night-Nurse" trained by Dietrich Kappe and based on his network BadGyal:

- https://github.com/dkappe/leela-chess-w ... i/Bad-Gyal
- https://github.com/dkappe/leela-chess-w ... -Gyal-Data

I would like to thank Dietrich for training this network and offering it to use for Igel’s TCEC S19 L2 release and for Igel 2.7.0. This network is adapted to Igel's search due to scaling adjustments and it adds significant strength to Igel compared with previous release.

I would like to keep a good user experience and integrate the network file directly into Igel's executable for Windows binaries: there is no need to configure network file, etc, simply use the executable and it will load the default network out of the box. It is still possible to configure custom eval file using command line for advanced users.
peter
Posts: 3185
Joined: Sat Feb 16, 2008 7:38 am
Full name: Peter Martan

Re: Introducing Igel chess engine

Post by peter »

voffka wrote: Wed Aug 19, 2020 11:56 pm Igel 2.7.0 will use NNUE network called "Night-Nurse" trained by Dietrich Kappe and based on his network BadGyal:

- https://github.com/dkappe/leela-chess-w ... i/Bad-Gyal
- https://github.com/dkappe/leela-chess-w ... -Gyal-Data

I would like to thank Dietrich for training this network and offering it to use for Igel’s TCEC S19 L2 release and for Igel 2.7.0. This network is adapted to Igel's search due to scaling adjustments and it adds significant strength to Igel compared with previous release.

I would like to keep a good user experience and integrate the network file directly into Igel's executable for Windows binaries: there is no need to configure network file, etc, simply use the executable and it will load the default network out of the box. It is still possible to configure custom eval file using command line for advanced users.
Thanks a lot, Volodymyr!

At your github- site there's a Igel_2_7_0.nnue to be downloaded too. Works with SF NNUE also, is it for Igel only?
Peter.
voffka
Posts: 288
Joined: Sat Jun 30, 2018 10:58 pm
Location: Ukraine
Full name: Volodymyr Shcherbyna

Re: Introducing Igel chess engine

Post by voffka »

Hello peter,
peter wrote: Thu Aug 20, 2020 9:53 am At your github- site there's a Igel_2_7_0.nnue to be downloaded too. Works with SF NNUE also, is it for Igel only?
Technically Igel's NNUE implementation is compatible with SF networks in Igel 2.7.0 release, but due to the reasons above I recommend to use the network supplied with Igel release. This compatibility may change in the future versions.