Ethereal

Home * Engines * Ethereal



Ethereal, an UCI compliant open source chess engine written by Andrew Grant in C, licensed under the GNU GPL and first officially released in June 2016. Ethereal is greatly influenced from Crafty, Stockfish, TSCP, MadChess, and Fruit. On October 09, 2020, Andrew Grant initially announced his withdrawal from Ethereal's development with the releases of Ethereal V12.75 and Ethereal 12.75 SF-NNUE, the latter a NNUE implementation based on Stockfish NNUE, to deliberately demonstrate how everybody may considerably improve the playing strength of their engines without much effort . However, Andrew Grant voted for another direction, and announced a commercial release of Ethereal 13.00 (NNUE) , the free standard version still available on Github.

=Ethereal 13 (NNUE)= Ethereal 13 (NNUE), the commercial Ethereal version for AVX2 systems was released on June 04, 2021. The program comes with two NNUEs for evaluation, one for standard chess, and the secondary network trained exclusively for Chess960. The NNUEs are not derived from, trained on, nor duplicated from the works of the Stockfish team. Andrew Grant on his NNUE approach :

Ethereal is using the HalfKP paradigm, with a 40960x256 -> 512x32x32x1 Network. This is the textbook approach, but with some changes. Firstly, not all weights are quantized to int8 / int16 for the input layer. Instead, the network goes like this: int16_t => int16_t => (int32_t -> float_t) => float_t => float_t. This approach allows us to never have to pack the data downwards, saving many operations, and also lets us take a slightly more expensive approach to the later layers in exchange for massively increased precision. If I eventually add support for AVX (not avx2) machines, it will be a significant gain as AVX does not have 256-bit vector support for integer types in a meaningful way.

During training the Network actually has 43850 input parameters, using a few factorization of the board to aid in training without having tens of billions of positions. In practice, each Net was trained somewhere between 2 and 4 billion positions total, evaluated by Ethereal / Ethereal NNUE. The networks are trained using a modified form of the Adam optimizer, which allows better performance for datasets with extremely sparse input fields. For example, with a Batch Size of 16384, only about 50% of the 43,850 parameters are used on average.

Data generation for a given network takes about 3 weeks, completed on a 104 core machine. From there, processing that data down into a list of FENs and then into the format used by Ethereal's NNTrainer takes another 12 hours or so. Finally, training the actual Network can take a few days, with many stops and starts to drop the learning rate and find a global optima.

The trainer itself is a fully original work, written in C and making use of all 104 threads. It includes some AVX2 and even AVX512 code for use in updating the network parameters. This toolkit was used in training the Halogen networks as well. It is fairly flexible and trying things like HalfKA, changing layer sizes, adding layers, changing activation functions, or adding more factorizers is only a few minutes of effort in the code. It rivals speeds of GPU based trainers, by leveraging massive SMP and efficient implementations.

=Features=

Board Representation

 * Bitboards
 * Fancy Magic Bitboards
 * 8x8 Board

Search

 * Lazy SMP since 8.60 SMP
 * Iterative Deepening
 * Aspiration Windows
 * PVS Alpha-Beta
 * Transposition Table
 * Selectivity
 * Check Extensions
 * Delta Pruning
 * Futility Pruning
 * Late Move Reductions
 * Null Move Pruning
 * Razoring
 * Reverse Futility Pruning (Static Null Move Pruning)
 * Static Exchange Evaluation Pruning
 * Multi-Cut (12.00)
 * Move Ordering
 * Internal Iterative Deepening
 * MVV/LVA
 * Killer Heuristic
 * History Heuristic
 * Piece-Square Tables

Evaluation

 * NNUE (Ethereal 13.00 NNUE)
 * Tapered Eval
 * Material
 * Piece-Square Tables
 * Mobility
 * Outposts
 * Rook on (Half) Open File
 * Rook on 7th Rank
 * Castling Ability
 * Pawn Hash Table
 * Pawn Structure
 * Automated Tuning by Logistic Regression, AdaGrad (12.50)

Misc

 * Syzygy Bases using Fathom's probing code (9.65), superseded by 7-men Pyrrhic (12.50)

=Publications=
 * Andrew Grant (2020). Evaluation & Tuning in Chess Engines.

=Forum Posts=

2016 ...

 * Re: How to speed up my engine by Günther Simon, CCC, May 03, 2016
 * Re: How to speed up my engine by Andrew Grant, CCC, May 03, 2016

2017 2018 2019
 * Ethereal Bitboard 6.26 Chess Engine...a star is born! by AA Ross, CCC, May 14, 2016
 * Ethereal - Official Release by Andrew Grant, CCC, June 25, 2016
 * Ethereal - Official Release by Andrew Grant, CCRL Discussion Board, June 25, 2016
 * Release of Ethereal7.78 by Andrew Grant, CCC, September 04, 2016
 * Official release of Ethereal8.16 by Andrew Grant, CCC, June 03, 2017
 * Ethereal8.28 Release by Andrew Grant, CCC, September 13, 2017
 * Ethereal8.37 Release by Andrew Grant, CCC, November 10, 2017
 * Release of Ethereal 8.60 SMP by Andrew Grant, CCC, December 10, 2017
 * Ethereal 8.61 -- Small bugfix to 8.60 by Andrew Grant, CCC, December 12, 2017
 * Time Managment translating to SMP by Andrew Grant, CCC, December 23, 2017 » Parallel Search, Time Management
 * Official Release of Ethereal9.00 by Andrew Grant, CCC, February 15, 2018
 * Official Release of Ethereal9.30 by Andrew Grant, CCC, March 20, 2018
 * Official Release of Ethereal9.65 with Syzygy Support by Andrew Grant, CCC, April 29, 2018
 * Official Release of Ethereal 10.00 (Two-years Anniversary) by Andrew Grant, CCC, May 30, 2018
 * Official Release of Ethereal 10.55 by Andrew Grant, CCC, July 16, 2018
 * Ethereal 10.88 NUMA by Norman Schmidt, CCC, August 24, 2018 » NUMA
 * Official Release of Ethereal 11.25 by Andrew Grant, CCC, January 21, 2019
 * For those that like to toy with Ethereal... by Dann Corbit, CCC, October 30, 2019
 * Official Release of Ethereal 11.75, supporting MultiPV by Andrew Grant, CCC, November 11, 2019

2020 ...

 * Official Release of Ethereal 12.00 by Andrew Grant, CCC, February 29, 2020
 * Pawn structure tuning by Vivien Clauzon, CCC, April 11, 2020 » Pawn Structure, Automated Tuning
 * Pyrrhic, Fathom for Humanoids by Andrew Grant, CCC, August 16, 2020 » Pyrrhic
 * Evaluation & Tuning in Chess Engines by Andrew Grant, CCC, August 24, 2020 » Automated Tuning
 * Official Release of Ethereal 12.50 by Andrew Grant, CCC, September 08, 2020
 * Ethereal Pawn-King NN by Andrew Grant, CCC, September 19, 2020
 * Final Release of Ethereal, V12.75 by Andrew Grant, CCC, October 09, 2020
 * Re: Final Release of Ethereal, V12.75 by Andrew Grant, CCC, October 09, 2020
 * Re: Final Release of Ethereal, V12.75 by Andrew Grant, CCC, November 12, 2020

2021
 * Request for someone to train an NNUE for Ethereal by Andrew Grant, CCC, October 09, 2020 » NNUE
 * Ethereal Tuning - Data Dump by Andrew Grant, CCC, October 10, 2020
 * Ethereal questions by Gabor Szots, CCC, December 12, 2020
 * Commercial Release of Ethereal 13.00 (NNUE) for AVX2 Systems by Andrew Grant, CCC, June 04, 2021
 * Re: Commercial Release of Ethereal 13.00 (NNUE) for AVX2 Systems by Andrew Grant, CCC, June 04, 2021


 * Re: will Tcec allow Stockfish with a Leela net to play? by Connor McMonigle, CCC, June 17, 2021 » NNUE

=External Links=

Chess Engine

 * Ethereal 13.00 (NNUE)
 * GitHub - AndyGrant/Ethereal: Ethereal UCI Chess Engine
 * Ethereal in CCRL Blitz
 * Ethereal in CCRL 40/15
 * Ethereal wins TCEC Division 4, Interview with Andrew Grant, Chessdom, April 30, 2018 » TCEC Season 12
 * Ethereal chess engine leads TCEC Div 3 convincingly, Chessdom, August 12, 2018 » TCEC Season 13
 * Ethereal chess engine wins the gold at TCEC Div 3, Chessdom, August 17, 2018

Misc

 * ethereal - Wiktionary
 * Ethereal from Wikipedia
 * Ether from Wikipedia
 * Ethereal wave from Wikipedia
 * Ethereal cardinal from Wikipedia
 * The Ethereal from Truth is Beauty, July 07, 2015
 * Jean-Luc Ponty - Ethereal Mood (1978), YouTube Video

=References= Up one Level