30 December 2019

LCZero -> Lc0

A couple of weeks ago, in The Question of Clones, I used a block diagram taken from a thread on Talkchess.com, and noted,

While I can't claim to understand all of the subtleties present in the diagram, its blocks represent the overall architecture behind Lc0 and are useful for delving into the clone question. In the same thread, three variations of the diagram used color codes to show which portions of other AI/NN engines are unique and which portions are copies of Lc0.

One of the three variations depicted the origin of Lc0 (aka Leela) itself.

My failed attempt to change TCEC NN clone rules (September 2019)

A comment to the thread by dkappe added,

LCZero and Lc0 are two distinct engines. The first, LCZero, was the initial chess engine used by the Leela Chess project and was derived from a combination of the Leela Go engine and Stockfish chess board logic. The second, Lc0, was a rewrite from scratch.

Dietrich Kappe was the founder of the original LCZero blog -- see that blog's second-ever post for a link to its first incarnation. His comment is expanded in the relevant page on Leela Chess Zero (chessprogramming.org):-

Lc0 • Leela Chess Zero consists of an executable to play or analyze games, initially dubbed LCZero, soon rewritten by a team around Alexander Lyashuk for better performance and then called Lc0. This executable, the actual chess engine, performs the MCTS and reads the self-taught CNN, which weights are persistent in a separate file.

Lc0 is written in C++14 and may be compiled for various platforms and backends. Since deep CNN approaches are best suited to run massively in parallel on GPUs to perform all the floating point dot-products for thousands of neurons, the preferred target platforms are Nvidia GPUs supporting CUDA and CuDNN libraries.

Ankan Banerjee wrote the CuDNN backend code, also shared by Deus X and Allie. None [Non?] CUDA compliant GPUs (AMD) are supported through OpenCL, while much slower pure CPU binaries are possible using BLAS, target systems with or without a graphics card (GPU) are Linux, Mac OS and Windows computers, or BLAS only the Raspberry Pi.

Even though that last sentence doesn't parse correctly, the description helps to understand of blocks 'I', 'K', and 'L' in the block diagram. The diagram labels their aggregate 'Engine' and color codes them as LCZero, the first Leela Chess engine.

No comments: