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.