Wydajnie aktualizowalna sieć neuronowa (NNUE)

Poniżej przygotowałem garść informacji na temat NNUE, nowej technologii zastosowanej w algorytmie oceny pozycji, bazujących na materiałach znajdujących się w internecie (wikipedia, Chess Programming Wiki, witryna Stockfish i inne).

Wydajnie aktualizowalna sieć neuronowa (efficiently updatable neural network NNUE, czasami stylizowana jako „ƎUИИ”) to funkcja oceny oparta na sieci neuronowej, która działa wydajnie na procesorach (CPU) bez konieczności stosowania procesora graficznego (GPU).

NNUE jest używana głównie do określenia liści (węzeł drzewa, który nie posiada potomków) algorytmu alfa-beta. Chociaż jest wolniejsza niż tradycyjne funkcje oceny, NNUE nie cierpi z powodu problemu „ślepoty poza bieżącym ruchem”.

W porównaniu do oceny sieci neuronowej opartej na dedykowanych procesorach graficznych, NNUE pozwala uniknąć przestojów podczas operacji przesyłania znaczących ilości danych między procesorem graficznym a procesorem wymaganych przed i po każdej ocenie.

NNUE zostało wynalezione przez Yu Nasu z Japonii i wprowadzone do komputerowego shogi w 2018 roku.

W 2019 NNUE włączono do Stockfish 10 w ramach testu jako potwierdzenie koncepcji. Po wsparciu i kolejnych ulepszeniach w maju 2020 narodziła się NNUE dla Stockfisha. Latem 2020 roku więcej osób było zaangażowanych w testowanie i treningi, a w dniu 2020-09-02 opublikowano Stockfish 12 z zaimplementowaną NNUE, dzięki czemu silnik gra znacznie mocniej niż którykolwiek z jego poprzedników.

W niedawny rozwój silnika Stockfish i dokumentację dotyczącą NNUE zaangażowany był polski informatyk Tomasz Sobczyk. Wprowadził on nowe architektury sieciowe wykorzystujące zestawy funkcji HalfKA i HalfKAv2, zoptymalizował kod NNUE dla różnych zestawów instrukcji SIMD i przyczynił się do projektu Pytorch NNUE Gary’ego Linscotta w celu trenowania Stockfisha.

Od 2021 roku wszystkie najwyżej oceniane klasyczne silniki szachowe mają implementację NNUE, aby pozostać konkurencyjnymi.

Comments are closed.