Difference between revisions of "Stockfish NNUE"

From Chessprogramming wiki
Jump to: navigation, search
Line 16: Line 16:
 
=NNUE Structure=
 
=NNUE Structure=
 
The [[Neural Networks|neural network]] consists of four layers. The input layer is heavily overparametrized, feeding in the [[Board Representation|board representation]] for various king configurations.
 
The [[Neural Networks|neural network]] consists of four layers. The input layer is heavily overparametrized, feeding in the [[Board Representation|board representation]] for various king configurations.
The efficiency of [[NNUE]] is due to [[Incremental Updates|incremental update]] the input layer outputs in [[Make Move|make]] and [[Unmake Move|unmake move]],
+
The efficiency of [[NNUE]] is due to [[Incremental Updates|incremental update]] the outputs of the input layer in [[Make Move|make]] and [[Unmake Move|unmake move]],
where only a tiny fraction of its neurons need to be considered. The remaining three layers with 256x2x32-32x32-32x1 neurons are computational less expensive, best calculated using appropriate [[SIMD and SWAR Techniques|SIMD instructions]] like [[AVX2]] on [[x86-64]], or if available, [[AVX-512]].
+
where only a tiny fraction of its neurons need to be considered <ref>[http://www.talkchess.com/forum3/viewtopic.php?f=7&t=74531&start=1 Re: NNUE accessible explanation] by [[Jonathan Rosenthal]], [[CCC]], July 23, 2020</ref>. The remaining three layers with 256x2x32-32x32-32x1 neurons are computational less expensive, best calculated using appropriate [[SIMD and SWAR Techniques|SIMD instructions]] like [[AVX2]] on [[x86-64]], or if available, [[AVX-512]].
  
 
=Strong Points=
 
=Strong Points=
Line 42: Line 42:
 
* [http://www.talkchess.com/forum3/viewtopic.php?f=2&t=74520 Sergio Vieri second net is out] by Sylwy, [[CCC]], July 21, 2020
 
* [http://www.talkchess.com/forum3/viewtopic.php?f=2&t=74520 Sergio Vieri second net is out] by Sylwy, [[CCC]], July 21, 2020
 
* [http://www.talkchess.com/forum3/viewtopic.php?f=7&t=74531 NNUE accessible explanation] by [[Martin Fierz]], [[CCC]], July 21, 2020
 
* [http://www.talkchess.com/forum3/viewtopic.php?f=7&t=74531 NNUE accessible explanation] by [[Martin Fierz]], [[CCC]], July 21, 2020
 +
: [http://www.talkchess.com/forum3/viewtopic.php?f=7&t=74531&start=1 Re: NNUE accessible explanation] by [[Jonathan Rosenthal]], [[CCC]], July 23, 2020
 
* [http://www.talkchess.com/forum3/viewtopic.php?f=2&t=74565 Stockfish NNUE] by Lion, [[CCC]], July 25, 2020
 
* [http://www.talkchess.com/forum3/viewtopic.php?f=2&t=74565 Stockfish NNUE] by Lion, [[CCC]], July 25, 2020
 
* [http://www.talkchess.com/forum3/viewtopic.php?f=2&t=74585 SF-NNUE going forward...] by Zenmastur, [[CCC]], July 27, 2020
 
* [http://www.talkchess.com/forum3/viewtopic.php?f=2&t=74585 SF-NNUE going forward...] by Zenmastur, [[CCC]], July 27, 2020

Revision as of 19:10, 29 July 2020

Home * Engines * Stockfish * NNUE

Stockfish NNUE,
a Stockfish branch by Nodchip which uses Efficiently Updatable Neural Networks - stylized as ƎUИИ or reversed as NNUE - to replace its standard evaluation. NNUE, introduced in 2018 by Yu Nasu [2], were previously successfully applied in Shogi evaluation functions embedded in a Stockfish based search [3], such as YaneuraOu [4], and Kristallweizen-kai [5]. In 2019, Nodchip incorporated NNUE into Stockfish 10 - as a proof of concept, and with the intention to give something back to the Stockfish community [6]. After support and announcements by Henk Drost in May 2020 [7] and subsequent enhancements, Stockfish NNUE was established. In summer 2020 with more people involved in testing and training, and the computer chess community bursts out enthusiastically due to its rapidly raising playing strength with different networks trained using a mixture of supervised and reinforcement learning methods - despite the approximately halved search speed, seemingly becoming stronger than its original [8]. In July 2020, the playing code of NNUE is put into the official Stockfish repository as a branch for further development and examination. However, the training code still remains in Nodchip's repository [9] [10].

NNUE Structure

The neural network consists of four layers. The input layer is heavily overparametrized, feeding in the board representation for various king configurations. The efficiency of NNUE is due to incremental update the outputs of the input layer in make and unmake move, where only a tiny fraction of its neurons need to be considered [11]. The remaining three layers with 256x2x32-32x32-32x1 neurons are computational less expensive, best calculated using appropriate SIMD instructions like AVX2 on x86-64, or if available, AVX-512.

Strong Points

  • Reuses and gets benefits from the very optimized search function of Stockfish as well as almost all Stockfish's code
  • Runs with CPU only, doesn't require expensive video cards, and the need for installing video drivers and specific libraries, thus it becomes much easier to install (compare with other NN engines such as Leela Chess Zero) for users and can run with almost all modern computers
  • Requires much smaller training sets. Some high score networks can be built with the effort of one or a few people. It doesn't require the massive computing from a supercomputer and/or from community

See also

Forum Posts

2020 ...

January ...

July

Re: NNUE accessible explanation by Jonathan Rosenthal, CCC, July 23, 2020

External Links

Chess Engine

Misc

References

Up one Level