Efficiently updatable neural network
An efficiently updatable neural network (NNUE, sometimes stylised as ƎUИИ) is a neural network-based evaluation function that runs efficiently on central processing units without a requirement for a graphics processing unit (GPU). NNUE was invented by Yu Nasu and introduced to computer shogi in 2018.[1][2] On 6 August 2020, NNUE was integrated into the chess engine Stockfish.[3][4]
Alpha-beta Search
One advantage of this technique is Alpha–beta Search with Neural Network Evaluation. The search needs the position evaluation result to keep going. When running on a GPU, the time to transfer data between GPU and CPU leaves the latter idle.
Stockfish NNUE uses Candidate Moves/ Move Selection/ Move Generation.[5]
The NNUE technique is a practical solution for use with CPUs since a more complex architecture would be more suitable for use with a GPU.
Architectures like Xeon Phi, Larrabee, or Tegra may have better architectural advantage for these types of applications.
Structure
The neural network consists of four weight layers: W1 (16-bit integers) and W2, W3 and W4 (8-bit). Incremental computation and single instruction multiple data (SIMD) techniques are used with appropriate intrinsic instructions, specifically in the 2018 computer shogi implementation VPADDW, VPSUBW, VPMADDUBSW, VPACKSSDW, VPACKSSWB and VPMAXSB.[1]
References
- Yu Nasu (April 28, 2018). "Efficiently Updatable Neural-Network-based Evaluation Function for computer Shogi" (PDF) (in Japanese).
- Yu Nasu (April 28, 2018). "Efficiently Updatable Neural-Network-based Evaluation Function for computer Shogi (Unofficial English Translation)" (PDF).
- "Introducing NNUE Evaluation". 6 August 2020.
- Joost VandeVondele (July 25, 2020). "official-stockfish / Stockfish, NNUE merge".
- "Stockfish - Chessprogramming wiki". www.chessprogramming.org. Retrieved 2020-08-18.
External links
- NNUE on the Chess Programming Wiki.
- NNUE evaluation functions for computer shogi on github.com