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.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: 3186
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: 3186
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: 3186
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.
dkappe
Posts: 1631
Joined: Tue Aug 21, 2018 7:52 pm
Full name: Dietrich Kappe

Re: Introducing Igel chess engine

Post by dkappe »

Sam Watson wrote: Thu Aug 20, 2020 4:44 pm
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.
These nets can have very different playing styles. Check out the toga, ice, Komodo and Bad Gyal derived nnue. Each a style of its own.
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".