What is this?

I wanted to implement Stockfish's NNUEs (Efficiently Updatable Neural Network) in my own engine, however the latest library was dshawul's, which only supported the first architecture, SFNNv1. This performed worse than my hand crafted evaluation, so I started working on creating my own library to support the latest architecture, SFNNv8!

What did I learn?

  • A lot of C++ so that I could read through and understand the Stockfish code

  • How neural nets can be implemented without the use of libraries like Pytorch

  • How to write JNI (Java Native Interface) code which allowed me to use this C++ library for my Java engine

  • How to work with a terminal to compile code as well as create shared libraries (.dll and .so files)

Significance

  • Used to create the worlds strongest Java Chess engine, JFish

  • Featured in this video on the Chess Programming YouTube channel

  • When implemented into Bagatur, one of the strongest Java engines, it had a 460 elo increase, compared to using the old NNUE library