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 »

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: 3187
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.
Dokterchen
Posts: 133
Joined: Wed Aug 15, 2007 12:18 pm
Location: Munich

Re: Introducing Igel chess engine

Post by Dokterchen »

Great news, Volodymyr!
peter
Posts: 3187
Joined: Sat Feb 16, 2008 7:38 am
Full name: Peter Martan

Re: Introducing Igel chess engine

Post by peter »

voffka wrote: Thu Aug 20, 2020 10:57 am 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.
3,5 points out of 4 games:

https://tcec-chess.com/

Go, Igel, go!
:)

Pity there's just avx2-compiles for download, I can use SSE4.2-popcnt at the utmost.
:oops:
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 »

Let me know which compiles you want to have, I put avx2 as it is most common, but I can do SSE and AVX512, etc.
Sam Watson
Posts: 8
Joined: Thu Aug 17, 2017 2:31 pm

Re: Introducing Igel chess engine

Post by Sam Watson »

voffka wrote: Wed Aug 19, 2020 11:56 pmAs 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
Interesting points. Individual engines each training a net also seems a little unhelpful, like a computing resource drain for one. May I suggest thought is given to combining resources with other developers by creating some sort of net development similar to OpenBench which I know you are a supporter of.
peter
Posts: 3187
Joined: Sat Feb 16, 2008 7:38 am
Full name: Peter Martan

Re: Introducing Igel chess engine

Post by peter »

voffka wrote: Thu Aug 20, 2020 2:09 pm Let me know which compiles you want to have, I put avx2 as it is most common, but I can do SSE and AVX512, etc.
SSE4.2-popcnt, if your compiler has flags for that, which I don't think there are any, so SSE4.1- popcnt for example or anything like this. The popcnt-avx2- compile even gets started in console but doesn't get loaded in GUI, at least not in Fritz.
My CPU is Intel Xeon X5670 x 12.
Thankful regards
Peter.