Difference between revisions of "NNUE"

From Chessprogramming wiki
Jump to: navigation, search
(18 intermediate revisions by the same user not shown)
Line 1: Line 1:
 
'''[[Main Page|Home]] * [[Learning]] * [[Neural Networks]] * NNUE'''
 
'''[[Main Page|Home]] * [[Learning]] * [[Neural Networks]] * NNUE'''
  
[[FILE:SekienNue.jpg|border|right|thumb|250px| [[:Category:Toriyama Sekien|Toriyama Sekien]] - Nue (鵺) <ref>[https://en.wikipedia.org/wiki/Nue Nue] (鵺) from the [https://en.wikipedia.org/wiki/Konjaku_Gazu_Zoku_Hyakki Konjaku Gazu Zoku Hyakki] (今昔画図続百鬼) by [[:Category:Toriyama Sekien|Toriyama Sekien]], circa 1779, [https://en.wikipedia.org/wiki/Wikimedia_Commons Wikimedia Commons]</ref> <ref>[http://www.talkchess.com/forum3/viewtopic.php?f=2&t=74611&start=2 Re: What does NNUE actually mean] by [[ Henk Drost]], [[CCC]], July 29, 2020</ref> ]]  
+
[[FILE:SekienNue.jpg|border|right|thumb|250px| [[:Category:Toriyama Sekien|Toriyama Sekien]] - Nue (鵺) <ref>[https://en.wikipedia.org/wiki/Nue Nue] (鵺) from the [https://en.wikipedia.org/wiki/Konjaku_Gazu_Zoku_Hyakki Konjaku Gazu Zoku Hyakki] (今昔画図続百鬼) by [[:Category:Toriyama Sekien|Toriyama Sekien]], circa 1779, [https://en.wikipedia.org/wiki/Wikimedia_Commons Wikimedia Commons]</ref> <ref>[http://www.talkchess.com/forum3/viewtopic.php?f=2&t=74611&start=2 Re: What does NNUE actually mean] by [[ Henk Drost]], [[CCC]], July 29, 2020</ref> ]]  
  
 
'''NNUE''', (&#398;U&#1048;&#1048; Efficiently Updatable Neural Networks)<br/>  
 
'''NNUE''', (&#398;U&#1048;&#1048; Efficiently Updatable Neural Networks)<br/>  
Line 18: Line 18:
 
''see [[:Category:NNUE]]''
 
''see [[:Category:NNUE]]''
  
Being tempted by the success of [[Stockfish NNUE]] and attracted by how easy the method and small the code is, many engine developers have started testing and applying [[NNUE]]. For quick trials and evaluating before going into serious development, some of them borrowed and/or rewrote NNUE code and use networks from Stockfish NNUE. Most of them reported positive results, such as [[David Carteau]] with [[Orion]] <ref>[http://www.talkchess.com/forum3/viewtopic.php?f=2&t=74828 Orion 0.7 : NNUE experiment] by [[David Carteau]], [[CCC]], August 19, 2020</ref>, [[Ehsan Rashid]] with [[DON]] <ref>[http://www.talkchess.com/forum3/viewtopic.php?f=2&t=72613&start=320#p856640 Re: New engine releases 2020...Don NNUE 2020?] by supersharp77, [[CCC]], August 19, 2020</ref>, various [[Stockfish#Derivatives|Stockfish derivatives]] by [[Michael Byrne]] <ref>[http://talkchess.com/forum3/viewtopic.php?f=2&t=74825 ... the last shall be first ...] by [[Michael Byrne|MikeB]], [[CCC]], 19 Aug 2020</ref>, and [[Volodymyr Shcherbyna]] with [[Igel]] <ref>[http://talkchess.com/forum3/viewtopic.php?f=2&t=67890&start=10#p856742 Introducing Igel chess engine] by [[Volodymyr Shcherbyna]], [[CCC]], 20 Aug 2020</ref> using the ''Night Nurse'' NNUE net by [[Dietrich Kappe]] <ref>[http://talkchess.com/forum3/viewtopic.php?f=2&t=74837 Night Nurse 0.2] by [[Dietrich Kappe]], [[CCC]], August 19, 2020</ref>.
+
Being tempted by the success of [[Stockfish NNUE]] and attracted by how easy the method and small the code is, many engine developers have started testing and applying [[NNUE]]. For quick trials and evaluating before going into serious development, some of them borrowed and/or rewrote NNUE code and use networks from Stockfish NNUE. Most of them reported positive results, such as [[David Carteau]] with [[Orion]] <ref>[http://www.talkchess.com/forum3/viewtopic.php?f=2&t=74828 Orion 0.7 : NNUE experiment] by [[David Carteau]], [[CCC]], August 19, 2020</ref>, [[Ehsan Rashid]] with [[DON]] <ref>[http://www.talkchess.com/forum3/viewtopic.php?f=2&t=72613&start=320#p856640 Re: New engine releases 2020...Don NNUE 2020?] by supersharp77, [[CCC]], August 19, 2020</ref>, various [[Stockfish#Derivatives|Stockfish derivatives]] by [[Michael Byrne]] <ref>[http://talkchess.com/forum3/viewtopic.php?f=2&t=74825 ... the last shall be first ...] by [[Michael Byrne|MikeB]], [[CCC]], 19 Aug 2020</ref>, and [[Volodymyr Shcherbyna]] with [[Igel]] <ref>[http://talkchess.com/forum3/viewtopic.php?f=2&t=67890&start=10#p856742 Introducing Igel chess engine] by [[Volodymyr Shcherbyna]], [[CCC]], 20 Aug 2020</ref> using the ''Night Nurse'' NNUE net by [[Dietrich Kappe]] <ref>[http://talkchess.com/forum3/viewtopic.php?f=2&t=74837 Night Nurse 0.2] by [[Dietrich Kappe]], [[CCC]], August 19, 2020</ref>. In October 2020, [[Daniel Shawul]] added NNUE support à la [[CFish]] into his [[Scorpio#Bitbases|egbbdll]] probing library of [[Scorpio]] <ref>[http://www.talkchess.com/forum3/viewtopic.php?f=7&t=75400&start=22 Re: Hacking around CFish NNUE] by [[Daniel Shawul]], [[CCC]], October 15, 2020</ref> <ref>[http://www.talkchess.com/forum3/viewtopic.php?f=7&t=75415&start=3 Re: How to scale stockfish NNUE score?] by [[Daniel Shawul]], [[CCC]], October 17, 2020</ref>.
  
 
=NN Structure=
 
=NN Structure=
Line 27: Line 27:
 
[[FILE:NNUE.jpg|none|border|text-bottom]]  
 
[[FILE:NNUE.jpg|none|border|text-bottom]]  
 
NNUE structure with [[Incremental Updates|incremental update]] <ref>Image from [[Yu Nasu]] ('''2018'''). ''&#398;U&#1048;&#1048; Efficiently Updatable Neural-Network based Evaluation Functions for Computer Shogi''.  Ziosoft Computer Shogi Club, [https://github.com/ynasu87/nnue/blob/master/docs/nnue.pdf pdf] (Japanese with English abstract)</ref>
 
NNUE structure with [[Incremental Updates|incremental update]] <ref>Image from [[Yu Nasu]] ('''2018'''). ''&#398;U&#1048;&#1048; Efficiently Updatable Neural-Network based Evaluation Functions for Computer Shogi''.  Ziosoft Computer Shogi Club, [https://github.com/ynasu87/nnue/blob/master/docs/nnue.pdf pdf] (Japanese with English abstract)</ref>
 
=See also=
 
* [[:Category:NNUE|NNUE Engines]]
 
  
 
=Publications=
 
=Publications=
Line 52: Line 49:
 
===August===
 
===August===
 
* [http://www.talkchess.com/forum3/viewtopic.php?f=2&t=73521&start=59 Re: Minic version 2] by [[Vivien Clauzon]], [[CCC]], August 08, 2020 » [[Minic]]
 
* [http://www.talkchess.com/forum3/viewtopic.php?f=2&t=73521&start=59 Re: Minic version 2] by [[Vivien Clauzon]], [[CCC]], August 08, 2020 » [[Minic]]
 +
* [http://www.talkchess.com/forum3/viewtopic.php?f=7&t=74777 Neural Networks weights type] by [[Fabio Gobbato]], [[CCC]], August 13, 2020 » [[Stockfish NNUE]]
 
* [http://www.talkchess.com/forum3/viewtopic.php?f=2&t=67890&start=17 Re: Introducing Igel chess engine - Igel and NNUE] by [[Volodymyr Shcherbyna]], [[CCC]], August 19, 2020 » [[Igel]]
 
* [http://www.talkchess.com/forum3/viewtopic.php?f=2&t=67890&start=17 Re: Introducing Igel chess engine - Igel and NNUE] by [[Volodymyr Shcherbyna]], [[CCC]], August 19, 2020 » [[Igel]]
 
* [http://www.talkchess.com/forum3/viewtopic.php?f=2&t=74828 Orion 0.7 : NNUE experiment] by [[David Carteau]], [[CCC]], August 19, 2020 » [[Orion]]
 
* [http://www.talkchess.com/forum3/viewtopic.php?f=2&t=74828 Orion 0.7 : NNUE experiment] by [[David Carteau]], [[CCC]], August 19, 2020 » [[Orion]]
 
* [http://www.talkchess.com/forum3/viewtopic.php?f=2&t=74837 Night Nurse 0.2] by [[Dietrich Kappe]], [[CCC]], August 19, 2020 » [[A0lite]], [[Igel]]
 
* [http://www.talkchess.com/forum3/viewtopic.php?f=2&t=74837 Night Nurse 0.2] by [[Dietrich Kappe]], [[CCC]], August 19, 2020 » [[A0lite]], [[Igel]]
===September ...===
+
===September===
 
* [http://www.talkchess.com/forum3/viewtopic.php?f=7&t=74955 Train a neural network evaluation] by [[Fabio Gobbato]], [[CCC]], September 01, 2020 » [[Automated Tuning]]
 
* [http://www.talkchess.com/forum3/viewtopic.php?f=7&t=74955 Train a neural network evaluation] by [[Fabio Gobbato]], [[CCC]], September 01, 2020 » [[Automated Tuning]]
 
* [http://www.talkchess.com/forum3/viewtopic.php?f=2&t=75016 RubiChess NNUE player implemented] by [[Andreas Matthies]], [[CCC]], September 06, 2020 » [[RubiChess]]
 
* [http://www.talkchess.com/forum3/viewtopic.php?f=2&t=75016 RubiChess NNUE player implemented] by [[Andreas Matthies]], [[CCC]], September 06, 2020 » [[RubiChess]]
 +
* [http://www.talkchess.com/forum3/viewtopic.php?f=7&t=75042 Neural network quantization] by [[Fabio Gobbato]], [[CCC]], September 08, 2020 » [[Neural Networks]]
 
* [http://www.talkchess.com/forum3/viewtopic.php?f=2&t=75049 AVX-512 and NNUE] by [[Gian-Carlo Pascutto]], [[CCC]], September 08, 2020 » [[AVX-512]]
 
* [http://www.talkchess.com/forum3/viewtopic.php?f=2&t=75049 AVX-512 and NNUE] by [[Gian-Carlo Pascutto]], [[CCC]], September 08, 2020 » [[AVX-512]]
 +
* [http://www.talkchess.com/forum3/viewtopic.php?f=2&t=75241 Nemorino 6 (NNUE)] by [[Christian Günther|Florentino]], [[CCC]], September 28, 2020 » [[Nemorino]]
 +
* [http://www.talkchess.com/forum3/viewtopic.php?f=2&t=75247 A Crossroad in Computer Chess; Or Desperate Flailing for Relevance] by [[Andrew Grant]], [[CCC]], September 29, 2020
 +
* [http://www.talkchess.com/forum3/viewtopic.php?f=2&t=75248 NNUE variation] by [[Ed Schroder|Ed Schröder]], [[CCC]], September 29, 2020
 +
===October ...===
 +
* [http://www.talkchess.com/forum3/viewtopic.php?f=7&t=75296 BONA_PIECE_ZERO] by [[Marco Belli|elcabesa]], [[CCC]], October 04, 2020
 +
* [http://www.talkchess.com/forum3/viewtopic.php?f=2&t=75335&start=91 Re: Final Release of Ethereal, V12.75] by [[Andrew Grant]], [[CCC]], October 09, 2020 » [[Ethereal]]
 +
* [http://www.talkchess.com/forum3/viewtopic.php?f=7&t=75345 Request for someone to train an NNUE for Ethereal] by [[Andrew Grant]], [[CCC]], October 09, 2020
 +
* [http://www.talkchess.com/forum3/viewtopic.php?f=7&t=75350 Ethereal Tuning - Data Dump] by [[Andrew Grant]], [[CCC]], October 10, 2020
 +
* [http://www.talkchess.com/forum3/viewtopic.php?f=2&t=75358 Dangerous turn] by [[Dann Corbit]], [[CCC]], October 10, 2020
 +
* [http://www.talkchess.com/forum3/viewtopic.php?f=7&t=75393 Black crushing white, weird ?] by [[Vivien Clauzon]], [[CCC]], October 14, 2020 » [[Minic#MinicNNUE|MinicNNUE]]
 +
* [http://www.talkchess.com/forum3/viewtopic.php?f=7&t=75400 Hacking around CFish NNUE] by [[Maksim Korzh]], [[CCC]], October 15, 2020 » [[CFish]]
 +
: [http://www.talkchess.com/forum3/viewtopic.php?f=7&t=75400&start=22 Re: Hacking around CFish NNUE] by [[Daniel Shawul]], [[CCC]], October 15, 2020 » [[Scorpio]]
 +
* [http://www.talkchess.com/forum3/viewtopic.php?f=7&t=75415 How to scale stockfish NNUE score?] by [[Maksim Korzh]], [[CCC]], October 17, 2020
 +
: [http://www.talkchess.com/forum3/viewtopic.php?f=7&t=75415&start=3 Re: How to scale stockfish NNUE score?] by [[Daniel Shawul]], [[CCC]], October 17, 2020
 +
* [http://www.talkchess.com/forum3/viewtopic.php?f=2&t=75418 Embedding Stockfish NNUE to ANY CHESS ENGINE: YouTube series] by [[Maksim Korzh]], [[CCC]], October 17, 2020 » [[BBC]]
 +
* [http://www.talkchess.com/forum3/viewtopic.php?f=2&t=75433 Seer] by [[Gerd Isenberg]], [[CCC]], October 18, 2020 » [[Seer]]
 +
* [http://www.talkchess.com/forum3/viewtopic.php?f=2&t=75482 BBC 1.3 + Stockfish NNUE released!] by [[Maksim Korzh]], [[CCC]], October 21, 2020 » [[BBC]]
 +
* [http://www.talkchess.com/forum3/viewtopic.php?f=2&t=75500 Mayhem NNUE - New NN engine] by [[Toni Helminen|JohnWoe]], [[CCC]], October 22, 2020 » [[Mayhem NNUE]]
 +
* [http://www.talkchess.com/forum3/viewtopic.php?f=7&t=75501 Centipawns vs Millipawns with NNUE] by Madeleine Birchfield, [[CCC]], October 23, 2020 » [[Centipawns]], [[Millipawns]]
 +
* [http://www.talkchess.com/forum3/viewtopic.php?f=7&t=75506 NNUE Question - King Placements] by [[Andrew Grant]], [[CCC]], October 23, 2020 » [[Stockfish NNUE#NNUE Structure|Stockfish NNUE - NNUE Structure]]
  
 
=External Links=
 
=External Links=
Line 70: Line 89:
 
: Let's Learn Next Generation Shogi Thinking Engine, NNUE Function (Part 2. Remodeling/Learning) - Computer Shogi
 
: Let's Learn Next Generation Shogi Thinking Engine, NNUE Function (Part 2. Remodeling/Learning) - Computer Shogi
 
* [http://yaneuraou.yaneu.com/2020/06/19/stockfish-nnue-the-complete-guide/ Stockfish NNUE – The Complete Guide], June 19, 2020 (Japanese and English)
 
* [http://yaneuraou.yaneu.com/2020/06/19/stockfish-nnue-the-complete-guide/ Stockfish NNUE – The Complete Guide], June 19, 2020 (Japanese and English)
 +
* [http://yaneuraou.yaneu.com/2020/08/21/3-technologies-in-shogi-ai-that-could-be-used-for-chess-ai/ 3 technologies in shogi AI that could be used for chess AI] by [[Motohiro Isozaki]], August 21, 2020 » [[Stockfish NNUE]]
 
* [https://github.com/nodchip/Stockfish GitHub - nodchip/Stockfish: UCI chess engine] ([[Stockfish NNUE]] by [[Hisayori Noda|Nodchip]])
 
* [https://github.com/nodchip/Stockfish GitHub - nodchip/Stockfish: UCI chess engine] ([[Stockfish NNUE]] by [[Hisayori Noda|Nodchip]])
 
* [https://www.qhapaq.org/shogi/shogiwiki/stockfish-nnue/ Stockfish NNUE Wiki]
 
* [https://www.qhapaq.org/shogi/shogiwiki/stockfish-nnue/ Stockfish NNUE Wiki]

Revision as of 14:16, 23 October 2020

Home * Learning * Neural Networks * NNUE

Toriyama Sekien - Nue (鵺) [1] [2]

NNUE, (ƎUИИ Efficiently Updatable Neural Networks)
a Neural Network architecture intended to replace the evaluation of Shogi, chess and other board game playing alpha-beta searchers running on a CPU. NNUE was introduced in 2018 by Yu Nasu [3], and was used in Shogi adaptations of Stockfish such as YaneuraOu [4], and Kristallweizen [5], apparently with AlphaZero strength [6].

Stockfish NNUE

As reported by Henk Drost [7], Nodchip incorporated NNUE into the chess playing Stockfish 10 as a proof of concept. Stockfish NNUE was born, and in summer 2020 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, becoming stronger than its original [8].

NNUE Engines

see Category:NNUE

Being tempted by the success of Stockfish NNUE and attracted by how easy the method and small the code is, many engine developers have started testing and applying NNUE. For quick trials and evaluating before going into serious development, some of them borrowed and/or rewrote NNUE code and use networks from Stockfish NNUE. Most of them reported positive results, such as David Carteau with Orion [9], Ehsan Rashid with DON [10], various Stockfish derivatives by Michael Byrne [11], and Volodymyr Shcherbyna with Igel [12] using the Night Nurse NNUE net by Dietrich Kappe [13]. In October 2020, Daniel Shawul added NNUE support à la CFish into his egbbdll probing library of Scorpio [14] [15].

NN Structure

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

NNUE.jpg

NNUE structure with incremental update [16]

Publications

  • Yu Nasu (2018). ƎUИИ Efficiently Updatable Neural-Network based Evaluation Functions for Computer Shogi. Ziosoft Computer Shogi Club, pdf (Japanese with English abstract)

Forum Posts

2020 ...

Re: The Stockfish of shogi by Gian-Carlo Pascutto, CCC, January 18, 2020

July

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

August

September

October ...

Re: Hacking around CFish NNUE by Daniel Shawul, CCC, October 15, 2020 » Scorpio
Re: How to scale stockfish NNUE score? by Daniel Shawul, CCC, October 17, 2020

External Links

NNUE

Learn Next Generation Shogi Thinking Engine, NNUE Function (Part 1. Network Structure) - Computer Shogi
Let's Learn Next Generation Shogi Thinking Engine, NNUE Function (Part 2. Remodeling/Learning) - Computer Shogi

Misc

References

  1. Nue (鵺) from the Konjaku Gazu Zoku Hyakki (今昔画図続百鬼) by Toriyama Sekien, circa 1779, Wikimedia Commons
  2. Re: What does NNUE actually mean by Henk Drost, CCC, July 29, 2020
  3. Yu Nasu (2018). ƎUИИ Efficiently Updatable Neural-Network based Evaluation Functions for Computer Shogi. Ziosoft Computer Shogi Club, pdf (Japanese with English abstract)
  4. GitHub - yaneurao/YaneuraOu: YaneuraOu is the World's Strongest Shogi engine(AI player), WCSC29 1st winner, educational and USI compliant engine
  5. GitHub - Tama4649/Kristallweizen: 第29回世界コンピュータ将棋選手権 準優勝のKristallweizenです。
  6. The Stockfish of shogi by Larry Kaufman, CCC, January 07, 2020
  7. Stockfish NN release (NNUE) by Henk Drost, CCC, May 31, 2020
  8. Can the sardine! NNUE clobbers SF by Henk Drost, CCC, July 16, 2020
  9. Orion 0.7 : NNUE experiment by David Carteau, CCC, August 19, 2020
  10. Re: New engine releases 2020...Don NNUE 2020? by supersharp77, CCC, August 19, 2020
  11. ... the last shall be first ... by MikeB, CCC, 19 Aug 2020
  12. Introducing Igel chess engine by Volodymyr Shcherbyna, CCC, 20 Aug 2020
  13. Night Nurse 0.2 by Dietrich Kappe, CCC, August 19, 2020
  14. Re: Hacking around CFish NNUE by Daniel Shawul, CCC, October 15, 2020
  15. Re: How to scale stockfish NNUE score? by Daniel Shawul, CCC, October 17, 2020
  16. Image from Yu Nasu (2018). ƎUИИ Efficiently Updatable Neural-Network based Evaluation Functions for Computer Shogi. Ziosoft Computer Shogi Club, pdf (Japanese with English abstract)

Up one Level