[PATCH 0/3] Add Lc0

  • Open
  • quality assurance status badge
Details
4 participants
  • ???
  • Liliana Marie Prikler
  • zamfofex
  • Simon Tournier
Owner
unassigned
Submitted by
zamfofex
Severity
normal
Z
Z
zamfofex wrote on 26 Apr 2023 15:13
(address . guix-patches@gnu.org)(name . zamfofex)(address . zamfofex@twdb.moe)
cover.1682514072.git.zamfofex@twdb.moe
This patch series adds Lc0 “Leela Chess Zero” (a chess engine), alongside a few other optional dependencies that help improve its runtime performance.

zamfofex (3):
gnu: Add ISPC. * gnu/packages/c.scm (ispc): New variable.
gnu: Add oneDNN. * gnu/packages/machine-learning.scm (oneapi-dnnl):
New variable.
gnu: Add Lc0. * gnu/packages/games.scm (lc0): New variable.

gnu/packages/c.scm | 63 +++++++++++++++++++++++++++++++
gnu/packages/games.scm | 60 ++++++++++++++++++++++++++++-
gnu/packages/machine-learning.scm | 21 +++++++++++
3 files changed, 143 insertions(+), 1 deletion(-)


base-commit: 380faf265b0c3b231ab8b69597d161be5e704e18
--
2.39.2
Z
Z
zamfofex wrote on 26 Apr 2023 15:17
[PATCH 1/3] gnu: Add ISPC. * gnu/packages/c.scm (ispc): New variable.
(address . 63088@debbugs.gnu.org)(name . zamfofex)(address . zamfofex@twdb.moe)
7ad5f28721fe957a4863500b29e31a1191166041.1682514072.git.zamfofex@twdb.moe
---
gnu/packages/c.scm | 63 ++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 63 insertions(+)

Toggle diff (88 lines)
diff --git a/gnu/packages/c.scm b/gnu/packages/c.scm
index b2f16613dd..28438f56c8 100644
--- a/gnu/packages/c.scm
+++ b/gnu/packages/c.scm
@@ -17,6 +17,7 @@
;;; Copyright © 2022 Artyom V. Poptsov <poptsov.artyom@gmail.com>
;;; Copyright © 2022 Ekaitz Zarraga <ekaitz@elenq.tech>
;;; Copyright © 2022 ( <paren@disroot.org>
+;;; Copyright © 2023 zamfofex <zamfofex@twdb.moe>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -57,7 +58,9 @@ (define-module (gnu packages c)
#:use-module (gnu packages guile)
#:use-module (gnu packages llvm)
#:use-module (gnu packages lua)
+ #:use-module (gnu packages m4)
#:use-module (gnu packages multiprecision)
+ #:use-module (gnu packages ncurses)
#:use-module (gnu packages pcre)
#:use-module (gnu packages python)
#:use-module (gnu packages python-xyz)
@@ -1375,3 +1378,63 @@ (define-public utest-h
(description
"This package provides a header-only unit testing library for C/C++.")
(license license:unlicense))))
+
+(define-public ispc
+ (package
+ (name "ispc")
+ (version "1.19.0")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/ispc/ispc")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "0yhcgyzjlrgs920lm0l6kygj2skanfb6qkxbdgm69r8c2xkzkaa3"))))
+ (inputs (list ncurses))
+ (native-inputs (list bison clang flex m4 python))
+ (build-system cmake-build-system)
+ (supported-systems '("x86_64-linux" "i686-linux" "aarch64-linux" "armhf-linux"))
+ (arguments `(#:tests? #f
+ #:configure-flags
+ `(,,(string-append "-DCMAKE_C_COMPILER=" (cc-for-target))
+ ,,(string-append "-DCMAKE_CXX_COMPILER=" (cxx-for-target))
+ ,(string-append "-DCLANG_EXECUTABLE="
+ (assoc-ref %build-inputs "clang")
+ "/bin/clang")
+ ,(string-append "-DCLANGPP_EXECUTABLE="
+ (assoc-ref %build-inputs "clang")
+ "/bin/clang++"))
+ #:phases
+ (modify-phases %standard-phases
+ (add-before 'configure 'patch-curses-requirement
+ (lambda _
+ (substitute* "CMakeLists.txt"
+ (("\\bCURSES_CURSES_LIBRARY\\b")
+ "CURSES_LIBRARY"))))
+ ; Note: This works around the following issue:
+ ; <https://github.com/ispc/ispc/issues/1865>
+ ; Because GCC in Guix does not have multilib support.
+ (add-before 'configure 'patch-target-archs
+ (lambda _
+ (substitute* "cmake/GenerateBuiltins.cmake"
+ (("\\bforeach \\(bit 32 64\\)")
+ ,(if (target-64bit?)
+ "foreach (bit 64)"
+ "foreach (bit 32)"))
+ (("\\bforeach \\(arch .*?\\)")
+ ,(if (target-x86?)
+ "foreach (arch \"x86\")"
+ "foreach (arch \"arm\")"))
+ (("\\bforeach \\(os_name \"windows\" .*?\\)")
+ "foreach (os_name \"linux\")")))))))
+ (synopsis "Implicit SPMD Program Compiler")
+ (description
+ "ISPC is a compiler for a variant of the C programming language, with
+extensions for single program, multiple data programming. Under the SPMD
+model, the programmer writes a program that generally appears to be a regular
+serial program, though the execution model is actually that a number of program
+instances execute in parallel on the hardware.")
+ (home-page "https://github.com/ispc/ispc")
+ (license license:bsd-3)))
--
2.39.2
Z
Z
zamfofex wrote on 26 Apr 2023 15:17
[PATCH 2/3] gnu: Add oneDNN. * gnu/packages/machine-learning.scm (oneapi-dnnl): New variable.
(address . 63088@debbugs.gnu.org)(name . zamfofex)(address . zamfofex@twdb.moe)
88074b1c6dedf70ae9fba79d10be89b94e684c79.1682514072.git.zamfofex@twdb.moe
---
gnu/packages/machine-learning.scm | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)

Toggle diff (38 lines)
diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index 37d4ef78ad..a29bb312e6 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -17,6 +17,7 @@
;;; Copyright © 2020 Edouard Klein <edk@beaver-labs.com>
;;; Copyright © 2020, 2021, 2022, 2023 Vinicius Monego <monego@posteo.net>
;;; Copyright © 2020, 2021, 2022, 2023 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2023 zamfofex <zamfofex@twdb.moe>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -3868,3 +3869,23 @@ (define-public python-brian2tools
Brian 2 simulator.")
(license license:cecill)))
+(define-public oneapi-dnnl
+ (package
+ (name "oneapi-dnnl")
+ (version "3.1")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/oneapi-src/oneDNN")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1jgmb5kl0bf4a2zfn94zlb117672r9lvvkkmwl86ihlyr1mpr3d0"))))
+ (build-system cmake-build-system)
+ (home-page "https://github.com/oneapi-src/oneDNN")
+ (synopsis "Deep Neural Network Library")
+ (description
+ "OneAPI Deep Neural Network Library (oneDNN) is a cross-platform
+performance library of basic building blocks for deep learning applications.")
+ (license license:asl2.0)))
--
2.39.2
Z
Z
zamfofex wrote on 26 Apr 2023 15:17
[PATCH 3/3] gnu: Add Lc0. * gnu/packages/games.scm (lc0): New variable.
(address . 63088@debbugs.gnu.org)(name . zamfofex)(address . zamfofex@twdb.moe)
be3972ed787ef023a56892fa826f54a8c4a25eff.1682514072.git.zamfofex@twdb.moe
---
gnu/packages/games.scm | 60 +++++++++++++++++++++++++++++++++++++++++-
1 file changed, 59 insertions(+), 1 deletion(-)

Toggle diff (94 lines)
diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm
index 23b6c39c46..9350c9224c 100644
--- a/gnu/packages/games.scm
+++ b/gnu/packages/games.scm
@@ -70,7 +70,7 @@
;;; Copyright © 2021 Foo Chuan Wei <chuanwei.foo@hotmail.com>
;;; Copyright © 2022, 2023 Yovan Naumovski <yovan@gorski.stream>
;;; Copyright © 2022 Roman Riabenko <roman@riabenko.com>
-;;; Copyright © 2022 zamfofex <zamfofex@twdb.moe>
+;;; Copyright © 2022, 2023 zamfofex <zamfofex@twdb.moe>
;;; Copyright © 2022 Gabriel Arazas <foo.dogsquared@gmail.com>
;;; Copyright © 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2022 Hendursaga <hendursaga@aol.com>
@@ -114,6 +114,7 @@ (define-module (gnu packages games)
#:use-module (gnu packages bash)
#:use-module (gnu packages bison)
#:use-module (gnu packages boost)
+ #:use-module (gnu packages c)
#:use-module (gnu packages check)
#:use-module (gnu packages cmake)
#:use-module (gnu packages compression)
@@ -166,6 +167,7 @@ (define-module (gnu packages games)
#:use-module (gnu packages linux)
#:use-module (gnu packages llvm)
#:use-module (gnu packages lua)
+ #:use-module (gnu packages machine-learning)
#:use-module (gnu packages man)
#:use-module (gnu packages maths)
#:use-module (gnu packages messaging)
@@ -10395,6 +10397,62 @@ (define-public stockfish
(home-page "https://stockfishchess.org/")
(license license:gpl3+))))
+(define lc0-neural-network
+ (let ((hash
+ "f404e156ceb2882470fd8c032b8754af0fa0b71168328912eaef14671a256e34"))
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://storage.lczero.org/files/networks/"
+ hash))
+ (sha256
+ (base32
+ "03b9xl9vkiihdilz5dzcpg6g4inb6n4k5gs911i3gbd8h9sh9ixi"))
+ (file-name "lc0-neural-network"))))
+
+(define-public lc0
+ (package
+ (name "lc0")
+ (version "0.29.0")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/LeelaChessZero/lc0")
+ (commit (string-append "v" version))
+ (recursive? #t)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1yn91738wd8zlbvrcw0dszy7hqjpkml0wi5xhh36j4zgid6x8i2m"))))
+ (build-system meson-build-system)
+ (native-search-paths
+ (list (search-path-specification
+ (variable "XDG_DATA_DIRS")
+ (files (list "share")))))
+ (inputs
+ `(("neural-network" ,lc0-neural-network)
+ ("eigen" ,eigen)
+ ("oneapi-dnnl" ,oneapi-dnnl)
+ ("zlib" ,zlib)))
+ (native-inputs
+ (list googletest ispc pkg-config python))
+ (arguments
+ '(#:phases (modify-phases %standard-phases
+ (add-after 'install 'copy-net
+ (lambda* (#:key outputs inputs #:allow-other-keys)
+ (mkdir-p (string-append (assoc-ref outputs "out")
+ "/share/lc0"))
+ (copy-file (assoc-ref inputs "neural-network")
+ (string-append (assoc-ref outputs "out")
+ "/share/lc0/neural-network")))))
+ #:configure-flags (list "-Ddnnl=true"
+ (string-append
+ "-Ddnnl_dir="
+ (assoc-ref %build-inputs "oneapi-dnnl")))))
+ (synopsis "Neural network based chess engine")
+ (description "Lc0 is a chess engine based on neural networks")
+ (home-page "https://lczero.org")
+ (license license:gpl3+)))
+
(define-public barrage
(package
(name "barrage")
--
2.39.2
?
Re: bug#63088: [PATCH 0/3] Add Lc0
(name . zamfofex)(address . zamfofex@twdb.moe)(address . 63088@debbugs.gnu.org)
87fs83yma5.fsf_-_@envs.net
Hello, I have pushed ispc and oneapi-dnnl, thank you!


zamfofex <zamfofex@twdb.moe> writes:
Toggle quote (12 lines)
> +(define lc0-neural-network
> + (let ((hash
> + "f404e156ceb2882470fd8c032b8754af0fa0b71168328912eaef14671a256e34"))
> + (origin
> + (method url-fetch)
> + (uri (string-append "https://storage.lczero.org/files/networks/"
> + hash))
> + (sha256
> + (base32
> + "03b9xl9vkiihdilz5dzcpg6g4inb6n4k5gs911i3gbd8h9sh9ixi"))
> + (file-name "lc0-neural-network"))))

Will we able to train a model from source? And how much will it cost?

As far as I know, guix haven't decided to accept pre-trained models:

Z
Z
zamfofex wrote on 11 May 2023 23:25
(name . ???)(address . iyzsong@envs.net)(address . 63088@debbugs.gnu.org)
1309432614.1423878.1683840333514@privateemail.com
Toggle quote (6 lines)
> Will we able to train a model from source? And how much will it cost?
>
> As far as I know, guix haven't decided to accept pre-trained models:
>
> https://yhetil.org/guix/xanfHBZT3lYlyrr_OqHHMWkunLeZZlcxzY37_T3TeZo7mfJClD5-OTbkXDH2f3lMTkn94YIFVUj-Z31BP2Wj0W2rISNP6glC2PzXcPdb560=@protonmail.com/

I don’t think it is feasible. Lc0’s approach is based on self?play reinforcement?learning, which in effect means that training starts with no knowledge about chess except for its rules (playing seemingly random moves), and going from there to learn increasingly more about it. So, in practice, this means it would take multiple months or at least several weeks to attain a neural network model that is anywhere close to as effective as the ones provided and pre?trained. Besides, I believe training requires a (reasonably decent) GPU.

But the network isn’t prohibitively large and its license is not proprietary. I’ll also note that Stockfish (packaged immediately above my Lc0 package) *does* itself include a provided pre?trained network and no?one has really complained about it, so I think it should be fine here too.
S
S
Simon Tournier wrote on 16 May 2023 14:16
Re: [bug#63088] [PATCH 0/3] Add Lc0
(address . 63088@debbugs.gnu.org)
86leho79pi.fsf@gmail.com
Hi,

On Thu, 11 May 2023 at 18:25, zamfofex <zamfofex@twdb.moe> wrote:
Toggle quote (15 lines)
>> Will we able to train a model from source? And how much will it cost?
>>
>> As far as I know, guix haven't decided to accept pre-trained models:
>>
>> https://yhetil.org/guix/xanfHBZT3lYlyrr_OqHHMWkunLeZZlcxzY37_T3TeZo7mfJClD5-OTbkXDH2f3lMTkn94YIFVUj-Z31BP2Wj0W2rISNP6glC2PzXcPdb560=@protonmail.com/
>
> I don’t think it is feasible. Lc0’s approach is based on self?play
> reinforcement?learning, which in effect means that training starts
> with no knowledge about chess except for its rules (playing seemingly
> random moves), and going from there to learn increasingly more about
> it. So, in practice, this means it would take multiple months or at
> least several weeks to attain a neural network model that is anywhere
> close to as effective as the ones provided and pre?trained. Besides, I
> believe training requires a (reasonably decent) GPU.

I concur.


Toggle quote (6 lines)
> But the network isn’t prohibitively large and its license is not
> proprietary. I’ll also note that Stockfish (packaged immediately above
> my Lc0 package) *does* itself include a provided pre?trained network
> and no?one has really complained about it, so I think it should be
> fine here too.

I will try to dedicate some time for reviewing this patch set.


Cheers,
simon
Z
Z
zamfofex wrote on 28 Jul 2023 01:34
[PATCH] Add Lc0.
(address . 63088@debbugs.gnu.org)
c666b6b3bcf8652d875477fd6b5c8f2858b31077.1690500537.git.zamfofex@twdb.moe
Lc0 recently released version 0.30.0, so here is a patch with the updates version (in case the issue regarding the network’s inclusion is ever resolved).

Also, I wanted to say: Is it reasonable to include Lc0 without the networks in? People can still download and use them, they just wouldn’t be included in Guix itself.

Note that, unlike Stockfish, Lc0 does run without the neural networks, so it would be necessary for the user to download or otherwise acquire one by themself in order to use Lc0. The user can choose an appropriate network in their chess GUI program when configuring Lc0 in it.

If this is more desireable, I can submit a patch without the trained neural network, which would allow the user to choose whichever one they might want.

Thanks in advance!

* gnu/packages/games.scm (lc0): New variable.
---
gnu/packages/games.scm | 58 ++++++++++++++++++++++++++++++++++++++++++
1 file changed, 58 insertions(+)

Toggle diff (87 lines)
diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm
index cc6bef1114..21aa370701 100644
--- a/gnu/packages/games.scm
+++ b/gnu/packages/games.scm
@@ -118,6 +118,7 @@ (define-module (gnu packages games)
#:use-module (gnu packages bash)
#:use-module (gnu packages bison)
#:use-module (gnu packages boost)
+ #:use-module (gnu packages c)
#:use-module (gnu packages check)
#:use-module (gnu packages cmake)
#:use-module (gnu packages compression)
@@ -171,6 +172,7 @@ (define-module (gnu packages games)
#:use-module (gnu packages linux)
#:use-module (gnu packages llvm)
#:use-module (gnu packages lua)
+ #:use-module (gnu packages machine-learning)
#:use-module (gnu packages man)
#:use-module (gnu packages maths)
#:use-module (gnu packages messaging)
@@ -10285,6 +10287,62 @@ (define-public stockfish
(home-page "https://stockfishchess.org/")
(license license:gpl3+))))
+(define lc0-neural-network
+ (let ((hash
+ "f404e156ceb2882470fd8c032b8754af0fa0b71168328912eaef14671a256e34"))
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://storage.lczero.org/files/networks/"
+ hash))
+ (sha256
+ (base32
+ "03b9xl9vkiihdilz5dzcpg6g4inb6n4k5gs911i3gbd8h9sh9ixi"))
+ (file-name "lc0-neural-network"))))
+
+(define-public lc0
+ (package
+ (name "lc0")
+ (version "0.30.0")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/LeelaChessZero/lc0")
+ (commit (string-append "v" version))
+ (recursive? #t)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1m7k8m8iz4pxv3h9g2j1dkgryi4k9c1bcg3fx5j7ii4ysif63kj3"))))
+ (build-system meson-build-system)
+ (native-search-paths
+ (list (search-path-specification
+ (variable "XDG_DATA_DIRS")
+ (files (list "share")))))
+ (inputs
+ `(("neural-network" ,lc0-neural-network)
+ ("eigen" ,eigen)
+ ("oneapi-dnnl" ,oneapi-dnnl)
+ ("zlib" ,zlib)))
+ (native-inputs
+ (list googletest ispc pkg-config python))
+ (arguments
+ '(#:phases (modify-phases %standard-phases
+ (add-after 'install 'copy-net
+ (lambda* (#:key outputs inputs #:allow-other-keys)
+ (mkdir-p (string-append (assoc-ref outputs "out")
+ "/share/lc0"))
+ (copy-file (assoc-ref inputs "neural-network")
+ (string-append (assoc-ref outputs "out")
+ "/share/lc0/neural-network")))))
+ #:configure-flags (list "-Ddnnl=true"
+ (string-append
+ "-Ddnnl_dir="
+ (assoc-ref %build-inputs "oneapi-dnnl")))))
+ (synopsis "Neural network based chess engine")
+ (description "Lc0 is a chess engine based on neural networks")
+ (home-page "https://lczero.org")
+ (license license:gpl3+)))
+
(define-public barrage
(package
(name "barrage")

base-commit: c7e45139faa27b60f2c7d0a4bc140f9793d97d47
--
2.40.1
Z
Z
zamfofex wrote on 28 Jul 2023 02:24
(address . 63088@debbugs.gnu.org)(address . zimon.toutoune@gmail.com)
84991824.425843.1690503844855@privateemail.com
Toggle quote (2 lines)
> Note that, unlike Stockfish, Lc0 does run without the neural networks

Sorry, I meant to say “Lc0 does *not* run without the neural networks”. (“Not” is a fairly important word to have forgotten!)
L
L
Liliana Marie Prikler wrote on 28 Jul 2023 06:23
Re: [bug#63088] [PATCH] Add Lc0.
e72eb5eb74d232254ef6348b8120b90dabb79e3b.camel@gmail.com
Am Donnerstag, dem 27.07.2023 um 20:34 -0300 schrieb zamfofex:
Toggle quote (3 lines)
> Note that, unlike Stockfish, Lc0 does run without the neural
> networks, so it would be necessary for the user to download or
> otherwise acquire one by themself in order to use Lc0.
This sentence looks semantically incorrect.

Toggle quote (6 lines)
> The user can choose an appropriate network in their chess GUI program
> when configuring Lc0 in it.
>
> If this is more desireable, I can submit a patch without the trained
> neural network, which would allow the user to choose whichever one
> they might want.
Providing a default, if it can be bootstrapped, but allowing the user
to choose would be the best option.

Toggle quote (92 lines)
> Thanks in advance!
>
> * gnu/packages/games.scm (lc0): New variable.
> ---
>  gnu/packages/games.scm | 58
> ++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 58 insertions(+)
>
> diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm
> index cc6bef1114..21aa370701 100644
> --- a/gnu/packages/games.scm
> +++ b/gnu/packages/games.scm
> @@ -118,6 +118,7 @@ (define-module (gnu packages games)
>    #:use-module (gnu packages bash)
>    #:use-module (gnu packages bison)
>    #:use-module (gnu packages boost)
> +  #:use-module (gnu packages c)
>    #:use-module (gnu packages check)
>    #:use-module (gnu packages cmake)
>    #:use-module (gnu packages compression)
> @@ -171,6 +172,7 @@ (define-module (gnu packages games)
>    #:use-module (gnu packages linux)
>    #:use-module (gnu packages llvm)
>    #:use-module (gnu packages lua)
> +  #:use-module (gnu packages machine-learning)
>    #:use-module (gnu packages man)
>    #:use-module (gnu packages maths)
>    #:use-module (gnu packages messaging)
> @@ -10285,6 +10287,62 @@ (define-public stockfish
>        (home-page "https://stockfishchess.org/")
>        (license license:gpl3+))))
>  
> +(define lc0-neural-network
> +  (let ((hash
> +        
> "f404e156ceb2882470fd8c032b8754af0fa0b71168328912eaef14671a256e34"))
> +      (origin
> +        (method url-fetch)
> +        (uri (string-append
> "https://storage.lczero.org/files/networks/"
> +                            hash))
> +        (sha256
> +         (base32
> +          "03b9xl9vkiihdilz5dzcpg6g4inb6n4k5gs911i3gbd8h9sh9ixi"))
> +        (file-name "lc0-neural-network"))))
> +
> +(define-public lc0
> +  (package
> +    (name "lc0")
> +    (version "0.30.0")
> +    (source
> +     (origin
> +       (method git-fetch)
> +       (uri (git-reference
> +             (url "https://github.com/LeelaChessZero/lc0")
> +             (commit (string-append "v" version))
> +             (recursive? #t)))
> +       (file-name (git-file-name name version))
> +       (sha256
> +        (base32
> "1m7k8m8iz4pxv3h9g2j1dkgryi4k9c1bcg3fx5j7ii4ysif63kj3"))))
> +    (build-system meson-build-system)
> +    (native-search-paths
> +       (list (search-path-specification
> +              (variable "XDG_DATA_DIRS")
> +              (files (list "share")))))
> +    (inputs
> +     `(("neural-network" ,lc0-neural-network)
> +       ("eigen" ,eigen)
> +       ("oneapi-dnnl" ,oneapi-dnnl)
> +       ("zlib" ,zlib)))
> +    (native-inputs
> +     (list googletest ispc pkg-config python))
> +    (arguments
> +     '(#:phases (modify-phases %standard-phases
> +                  (add-after 'install 'copy-net
> +                    (lambda* (#:key outputs inputs #:allow-other-
> keys)
> +                      (mkdir-p (string-append (assoc-ref outputs
> "out")
> +                                              "/share/lc0"))
> +                      (copy-file (assoc-ref inputs "neural-network")
> +                                 (string-append (assoc-ref outputs
> "out")
> +                                                "/share/lc0/neural-
> network")))))
> +       #:configure-flags (list "-Ddnnl=true"
> +                               (string-append
> +                                 "-Ddnnl_dir="
> +                                 (assoc-ref %build-inputs "oneapi-
> dnnl")))))
> +    (synopsis "Neural network based chess engine")
I think the postfix "based", which typically requires a dash is not
easily applied here. Simply write "Chess engine using neural networks"
or something like that.
Toggle quote (1 lines)
> +    (description "Lc0 is a chess engine based on neural networks")
Not a full sentence without period
Toggle quote (9 lines)
> +    (home-page "https://lczero.org")
> +    (license license:gpl3+)))
> +
>  (define-public barrage
>    (package
>      (name "barrage")
>
> base-commit: c7e45139faa27b60f2c7d0a4bc140f9793d97d47

Cheers
Z
Z
zamfofex wrote on 28 Jul 2023 20:14
937633202.490696.1690568064431@privateemail.com
Toggle quote (2 lines)
> This sentence looks semantically incorrect.

Yes, sorry! I guess you didn’t receive my correction email. (I’m still bad at sending emails properly, it seems.) See: https://issues.guix.gnu.org/63088#8 I had meant “Lc0 does *not* run without the neural networks”.

Toggle quote (2 lines)
> Providing a default, if it can be bootstrapped, but allowing the user to choose would be the best option.

I don’t think a default can be easily bootstrapped. When I first submitted the patch, I talked with some of the Lc0 developers, and they said it might be possible to bootstrap one by using Stockfish in several minutes, but there is no code that does that currrently (it would have to be written and is nontrivial). And it wouldn’t be as effective as the existing networks, because Stockfish’s evaluation provides less information than Lc0’s is able to use.

In any case, that feels entirely redundant, because Stockfish’s NNUE networks were trained on Lc0’s anyway, so it seems to be only adding a layer of complexity for no seemingly good reason.

If this concern can be addressed somehow, I can submit a followup patch. (Either just fixing the wording, or also removing the networks.)
I
I
iyzsong wrote on 7 Sep 2023 12:23
[PATCH v2] gnu: Add Lc0.
(address . 63088@debbugs.gnu.org)
3cc41c81a301fb53c564508d3cbcf92270695d1b.1694082083.git.iyzsong@member.fsf.org
From: zamfofex <zamfofex@twdb.moe>

* gnu/packages/games.scm (lc0): New variable.

Signed-off-by: ??? <iyzsong@member.fsf.org>
---
gnu/packages/games.scm | 59 ++++++++++++++++++++++++++++++++++++++++++
1 file changed, 59 insertions(+)

Toggle diff (89 lines)
diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm
index 760234b031..f82f1dcc52 100644
--- a/gnu/packages/games.scm
+++ b/gnu/packages/games.scm
@@ -118,6 +118,7 @@ (define-module (gnu packages games)
#:use-module (gnu packages bash)
#:use-module (gnu packages bison)
#:use-module (gnu packages boost)
+ #:use-module (gnu packages c)
#:use-module (gnu packages check)
#:use-module (gnu packages cmake)
#:use-module (gnu packages compression)
@@ -171,6 +172,7 @@ (define-module (gnu packages games)
#:use-module (gnu packages linux)
#:use-module (gnu packages llvm)
#:use-module (gnu packages lua)
+ #:use-module (gnu packages machine-learning)
#:use-module (gnu packages man)
#:use-module (gnu packages maths)
#:use-module (gnu packages messaging)
@@ -10409,6 +10411,63 @@ (define-public stockfish
(home-page "https://stockfishchess.org/")
(license license:gpl3+))))
+(define lc0-neural-network
+ (let ((hash
+ "f404e156ceb2882470fd8c032b8754af0fa0b71168328912eaef14671a256e34"))
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://storage.lczero.org/files/networks/"
+ hash))
+ (sha256
+ (base32
+ "03b9xl9vkiihdilz5dzcpg6g4inb6n4k5gs911i3gbd8h9sh9ixi"))
+ (file-name "lc0-neural-network"))))
+
+(define-public lc0
+ (package
+ (name "lc0")
+ (version "0.30.0")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/LeelaChessZero/lc0")
+ (commit (string-append "v" version))
+ (recursive? #t)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1m7k8m8iz4pxv3h9g2j1dkgryi4k9c1bcg3fx5j7ii4ysif63kj3"))))
+ (build-system meson-build-system)
+ (native-search-paths
+ (list (search-path-specification
+ (variable "XDG_DATA_DIRS")
+ (files '("share")))))
+ (inputs
+ `(("neural-network" ,lc0-neural-network)
+ ("eigen" ,eigen)
+ ("oneapi-dnnl" ,oneapi-dnnl)
+ ("zlib" ,zlib)))
+ (native-inputs
+ (list googletest ispc pkg-config python))
+ (arguments
+ '(#:phases (modify-phases %standard-phases
+ (add-after 'install 'copy-net
+ (lambda* (#:key outputs inputs #:allow-other-keys)
+ (mkdir-p (string-append (assoc-ref outputs "out")
+ "/share/lc0"))
+ (copy-file (assoc-ref inputs "neural-network")
+ (string-append (assoc-ref outputs "out")
+ "/share/lc0/neural-network")))))
+ #:configure-flags (list "-Ddnnl=true"
+ (string-append
+ "-Ddnnl_dir="
+ (assoc-ref %build-inputs "oneapi-dnnl")))))
+ (synopsis "Chess engine using neural networks")
+ (description "Lc0 is a UCI-compliant chess engine designed to play chess
+via neural network, specifically those of the LeelaChessZero project.")
+ (home-page "https://lczero.org")
+ (license license:gpl3+)))
+
(define-public barrage
(package
(name "barrage")

base-commit: 5ef28595e9dff8b88ec3fcb4d887fbc380c9a8b8
prerequisite-patch-id: 8cee4be3d25dba0dde5c2d0e317f31741c010f50
--
2.41.0
L
L
Liliana Marie Prikler wrote on 7 Sep 2023 19:03
bf4c2694c844c657470f24a822b8ff5e7ac07266.camel@gmail.com
Am Donnerstag, dem 07.09.2023 um 18:23 +0800 schrieb iyzsong@envs.net:
Toggle quote (3 lines)
> From: zamfofex <zamfofex@twdb.moe>
>
> * gnu/packages/games.scm (lc0): New variable.
Missing the entry for lc0-neural-network.
Toggle quote (56 lines)
>
> Signed-off-by: ??? <iyzsong@member.fsf.org>
> ---
>  gnu/packages/games.scm | 59
> ++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 59 insertions(+)
>
> diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm
> index 760234b031..f82f1dcc52 100644
> --- a/gnu/packages/games.scm
> +++ b/gnu/packages/games.scm
> @@ -118,6 +118,7 @@ (define-module (gnu packages games)
>    #:use-module (gnu packages bash)
>    #:use-module (gnu packages bison)
>    #:use-module (gnu packages boost)
> +  #:use-module (gnu packages c)
>    #:use-module (gnu packages check)
>    #:use-module (gnu packages cmake)
>    #:use-module (gnu packages compression)
> @@ -171,6 +172,7 @@ (define-module (gnu packages games)
>    #:use-module (gnu packages linux)
>    #:use-module (gnu packages llvm)
>    #:use-module (gnu packages lua)
> +  #:use-module (gnu packages machine-learning)
>    #:use-module (gnu packages man)
>    #:use-module (gnu packages maths)
>    #:use-module (gnu packages messaging)
> @@ -10409,6 +10411,63 @@ (define-public stockfish
>        (home-page "https://stockfishchess.org/")
>        (license license:gpl3+))))
>  
> +(define lc0-neural-network
> +  (let ((hash
> +        
> "f404e156ceb2882470fd8c032b8754af0fa0b71168328912eaef14671a256e34"))
> +    (origin
> +      (method url-fetch)
> +      (uri (string-append
> "https://storage.lczero.org/files/networks/"
> +                          hash))
> +      (sha256
> +       (base32
> +        "03b9xl9vkiihdilz5dzcpg6g4inb6n4k5gs911i3gbd8h9sh9ixi"))
> +      (file-name "lc0-neural-network"))))
> +
> +(define-public lc0
> +  (package
> +    (name "lc0")
> +    (version "0.30.0")
> +    (source
> +     (origin
> +       (method git-fetch)
> +       (uri (git-reference
> +             (url "https://github.com/LeelaChessZero/lc0")
> +             (commit (string-append "v" version))
> +             (recursive? #t)))
recursive? #t is meh ._.
Can we work around that?
Toggle quote (14 lines)
> +       (file-name (git-file-name name version))
> +       (sha256
> +        (base32
> "1m7k8m8iz4pxv3h9g2j1dkgryi4k9c1bcg3fx5j7ii4ysif63kj3"))))
> +    (build-system meson-build-system)
> +    (native-search-paths
> +     (list (search-path-specification
> +            (variable "XDG_DATA_DIRS")
> +            (files '("share")))))
> +    (inputs
> +     `(("neural-network" ,lc0-neural-network)
> +       ("eigen" ,eigen)
> +       ("oneapi-dnnl" ,oneapi-dnnl)
> +       ("zlib" ,zlib)))
Use new-style inputs.
Toggle quote (15 lines)
> +    (native-inputs
> +     (list googletest ispc pkg-config python))
> +    (arguments
> +     '(#:phases (modify-phases %standard-phases
> +                  (add-after 'install 'copy-net
> +                    (lambda* (#:key outputs inputs #:allow-other-
> keys)
> +                      (mkdir-p (string-append (assoc-ref outputs
> "out")
> +                                              "/share/lc0"))
> +                      (copy-file (assoc-ref inputs "neural-network")
> +                                 (string-append (assoc-ref outputs
> "out")
> +                                                "/share/lc0/neural-
> network")))))
Can we use search-input-file or the like here?
Toggle quote (10 lines)
> +       #:configure-flags (list "-Ddnnl=true"
> +                               (string-append
> +                                "-Ddnnl_dir="
> +                                (assoc-ref %build-inputs "oneapi-
> dnnl")))))
> +    (synopsis "Chess engine using neural networks")
> +    (description "Lc0 is a UCI-compliant chess engine designed to
> play chess
> +via neural network, specifically those of the LeelaChessZero
> project.")
Is Lc0 = Leela Chess Zero? What's the connection?
Toggle quote (2 lines)
> +    (home-page "https://lczero.org")
> +    (license license:gpl3+)))
Cheers
Z
Z
zamfofex wrote on 11 Sep 2023 12:22
(name . ???)(address . iyzsong@member.fsf.org)
973443928.2024365.1694427755815@privateemail.com
Toggle quote (3 lines)
> recursive? #t is meh ._.
> Can we work around that?

Yes, presumably easily, but I don’t think it would be a good idea in this case, because it isn’t used to build bundled software, but rather just for a small project?specific pair of source files (that are in a separate repo just because they are used by other repos of the project too).

Toggle quote (2 lines)
> Can we use search-input-file or the like here?

Probably. Though would it be reasonable to package the network separately instead? Note that Lc0 is able to load various networks, and there is no canonical network, so maybe it would be useful to have it in a different package so that more can be potentially added in the future.

Then people could use them with something like ‘guix shell lc0 lc0-NETWORK_NAME’.

Toggle quote (2 lines)
> Is Lc0 = Leela Chess Zero? What's the connection?

“Lc0”, “Leela Chess Zero”, “LCZero”, and sometimes just “Leela Chess” can be used roughly interchangeably to refer to the project as a whole. Though, occasionally, people will use the term “Lc0” (sometimes capitalised as “lc0”) to refer specifically to the ‘lc0’ executable, which can use the networks from the Leela Chess Zero project, but networks created by other people too, including those of e.g. the Maia project, see https://github.com/CSSLab/maia-chess and https://maiachess.com

At some point (very early on), the code for the executable was rewritten or otherwise largely refactored, and at the same time renamed from ‘lczero’ to the current ‘lc0’, so sometimes (very rarely nowadays), people will use the term “lc0” (or “Lc0”) to refer specifically to this new executable and code base, contrasting with the former ‘lczero’ executable and its code base.

Honestly, this all feels convoluted to me, so I usually like to use the terms interchangeably, and I don’t think using them differently in the package description is a good choice.

- - - - -

Hopefully this helps clarify things well enough! If there is interest, I can submit another patch with the requested changes and the appropriate path taken regarding the packaging for the networks.
L
L
Liliana Marie Prikler wrote on 11 Sep 2023 20:00
(name . ???)(address . iyzsong@member.fsf.org)
90ea3981901d0b274e673ebf72c6755a07a1ce1b.camel@gmail.com
Am Montag, dem 11.09.2023 um 07:22 -0300 schrieb zamfofex:
Toggle quote (8 lines)
> > recursive? #t is meh ._.
> > Can we work around that?
>
> Yes, presumably easily, but I don’t think it would be a good idea in
> this case, because it isn’t used to build bundled software, but
> rather just for a small project?specific pair of source files (that
> are in a separate repo just because they are used by other repos of
> the project too).
In that case, a comment explaining this in 1-2 lines would probably be
fine.

Toggle quote (10 lines)
> > Can we use search-input-file or the like here?
>
> Probably. Though would it be reasonable to package the network
> separately instead? Note that Lc0 is able to load various networks,
> and there is no canonical network, so maybe it would be useful to
> have it in a different package so that more can be potentially added
> in the future.
>
> Then people could use them with something like ‘guix shell lc0 lc0-
> NETWORK_NAME’.
Sounds reasonable to me. Do add a phrase or two about this to the lc0
description though if it doesn't even ship a basic network.

Toggle quote (22 lines)
>
> > Is Lc0 = Leela Chess Zero?  What's the connection?
>
> “Lc0”, “Leela Chess Zero”, “LCZero”, and sometimes just “Leela Chess”
> can be used roughly interchangeably to refer to the project as a
> whole. Though, occasionally, people will use the term “Lc0”
> (sometimes capitalised as “lc0”) to refer specifically to the ‘lc0’
> executable, which can use the networks from the Leela Chess Zero
> project, but networks created by other people too, including those of
> e.g. the Maia project, see <https://github.com/CSSLab/maia-chess> and
> <https://maiachess.com>
>
> At some point (very early on), the code for the executable was
> rewritten or otherwise largely refactored, and at the same time
> renamed from ‘lczero’ to the current ‘lc0’, so sometimes (very rarely
> nowadays), people will use the term “lc0” (or “Lc0”) to refer
> specifically to this new executable and code base, contrasting with
> the former ‘lczero’ executable and its code base.
>
> Honestly, this all feels convoluted to me, so I usually like to use
> the terms interchangeably, and I don’t think using them differently
> in the package description is a good choice.
In that case, for the description we should probably go with "Leela
Chess Zero" or "@acronym{lc0, Leela Chess Zero}"

Cheers
Z
Z
zamfofex wrote on 12 Sep 2023 13:58
[PATCH 1/3] gnu: Add lc0.
(address . 63088@debbugs.gnu.org)
e1d63918a715887aaf29000cc47d5640e8ed4176.1694519893.git.zamfofex@twdb.moe
* gnu/packages/lc0.scm: New file.
* gnu/packages/local.mk: Register file.
---
gnu/local.mk | 2 ++
gnu/packages/lc0.scm | 71 ++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 73 insertions(+)
create mode 100644 gnu/packages/lc0.scm

Toggle diff (101 lines)
diff --git a/gnu/local.mk b/gnu/local.mk
index 4f8637418a..f46a2973ae 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -59,6 +59,7 @@
# Copyright © 2023 Zheng Junjie <873216071@qq.com>
# Copyright © 2023 Ivana Drazovic <iv.dra@hotmail.com>
# Copyright © 2023 Andy Tai <atai@atai.org>
+# Copyright © 2023 zamfofex <zamfofex@twdb.moe>
#
# This file is part of GNU Guix.
#
@@ -375,6 +376,7 @@ GNU_SYSTEM_MODULES = \
%D%/packages/kerberos.scm \
%D%/packages/kodi.scm \
%D%/packages/language.scm \
+ %D%/packages/lc0.scm \
%D%/packages/lean.scm \
%D%/packages/lego.scm \
%D%/packages/less.scm \
diff --git a/gnu/packages/lc0.scm b/gnu/packages/lc0.scm
new file mode 100644
index 0000000000..e19436c381
--- /dev/null
+++ b/gnu/packages/lc0.scm
@@ -0,0 +1,71 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2023 zamfofex <zamfofex@twdb.moe>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages lc0)
+ #:use-module (guix build-system meson)
+ #:use-module (guix gexp)
+ #:use-module (guix git-download)
+ #:use-module (guix packages)
+ #:use-module ((guix licenses)
+ #:prefix license:)
+ #:use-module (gnu packages)
+ #:use-module (gnu packages algebra)
+ #:use-module (gnu packages c)
+ #:use-module (gnu packages check)
+ #:use-module (gnu packages compression)
+ #:use-module (gnu packages machine-learning)
+ #:use-module (gnu packages pkg-config)
+ #:use-module (gnu packages python))
+
+(define-public lc0
+ (package
+ (name "lc0")
+ (version "0.30.0")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/LeelaChessZero/lc0")
+ (commit (string-append "v" version))
+ ;; Only a few source files are in one Git submodules (rather than
+ ;; there being bundled projects). These files are in a different
+ ;; repository just because they are used across multiple
+ ;; repositories of the Leela Chess Zero project.
+ (recursive? #t)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1m7k8m8iz4pxv3h9g2j1dkgryi4k9c1bcg3fx5j7ii4ysif63kj3"))))
+ (build-system meson-build-system)
+ (native-search-paths
+ (list (search-path-specification
+ (variable "XDG_DATA_DIRS")
+ (files '("share")))))
+ (inputs (list eigen oneapi-dnnl zlib))
+ (native-inputs (list googletest ispc pkg-config python))
+ (arguments
+ '(#:configure-flags (list "-Ddnnl=true"
+ (string-append "-Ddnnl_dir="
+ (assoc-ref %build-inputs
+ "oneapi-dnnl")))))
+ (synopsis "Chess engine based on neural networks")
+ (description
+ "Leela Chess Zero is a UCI-compliant chess engine designed to play chess
+using neural networks. This package does not provide a neural network, which
+is necessary to use Leela Chess Zero and should be installed separately.")
+ (home-page "https://lczero.org")
+ (license license:gpl3+)))

base-commit: daeeaa221605726d8853b00261619ba039bd6db7
--
2.41.0
Z
Z
zamfofex wrote on 12 Sep 2023 13:58
[PATCH 2/3] gnu: Add neural networks for Leela Chess Zero.
(address . 63088@debbugs.gnu.org)
845cc1e6b38e26aba3c99c4934c4d2f9c6e2b6e2.1694519893.git.zamfofex@twdb.moe
* gnu/packages/lc0.scm (make-lc0-nn): New procedure.
* gnu/packages/lc0.scm (lc0-t2, lc0-t1, lc0-t1-512, lc0-t1-256)
(lc0-611246, lc0-791556, lc0-815383): New variables.
---
gnu/packages/lc0.scm | 76 ++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 76 insertions(+)

Toggle diff (94 lines)
diff --git a/gnu/packages/lc0.scm b/gnu/packages/lc0.scm
index e19436c381..1cda2efd1c 100644
--- a/gnu/packages/lc0.scm
+++ b/gnu/packages/lc0.scm
@@ -17,7 +17,10 @@
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu packages lc0)
+ #:use-module (guix build utils)
#:use-module (guix build-system meson)
+ #:use-module (guix build-system trivial)
+ #:use-module (guix download)
#:use-module (guix gexp)
#:use-module (guix git-download)
#:use-module (guix packages)
@@ -69,3 +72,76 @@ (define-public lc0
is necessary to use Leela Chess Zero and should be installed separately.")
(home-page "https://lczero.org")
(license license:gpl3+)))
+
+(define (make-lc0-nn name file-name url hash description)
+ (package
+ (name (string-append "lc0-" name))
+ (version "0")
+ (source (origin
+ (method url-fetch)
+ (uri url)
+ (file-name (string-append "lc0-" file-name))
+ (sha256
+ (base32
+ hash))))
+ (build-system trivial-build-system)
+ (arguments
+ (list #:builder (with-imported-modules '((guix build utils))
+ #~(let ((share (string-append (assoc-ref
+ %outputs
+ "out")
+ "/share/lc0/")))
+ (use-modules (guix build utils))
+ (mkdir-p share)
+ (copy-file (assoc-ref
+ %build-inputs
+ "source")
+ (string-append
+ share
+ #$file-name))))))
+ (synopsis "Pretrained neural network for Leela Chess Zero")
+ (description description)
+ (home-page "https://lczero.org")
+ (license license:gpl3+)))
+
+(define-public lc0-t2
+ (make-lc0-nn "t2" "t2-768.pb.gz"
+ "https://storage.lczero.org/files/networks-contrib/t2-768x15x24h-swa-5230000.pb.gz"
+ "126305hby24k5agxiixadp1lcgmv8drm1dkpb4jf5jzq7k4m855w"
+ "T2 is currently one of the best neural network for Leela Chess Zero, superceeding the neural network T1."))
+
+(define-public lc0-t1
+ (make-lc0-nn "t1" "t1-768.pb.gz"
+ "https://storage.lczero.org/files/networks-contrib/t1-768x15x24h-swa-4000000.pb.gz"
+ "0zm9v91gfnm69n4x2fckair24fypjrwiip3j86ylsqncsi1sh5nq"
+ "T1 is currently one of the best neural network for Leela Chess Zero, however it was superceeded by the neural network T2."))
+
+(define-public lc0-t1-512
+ (make-lc0-nn "t1-512" "t1-512.pb.gz"
+ "https://storage.lczero.org/files/networks-contrib/t1-512x15x8h-distilled-swa-3395000.pb.gz"
+ "1s4pq06qkdpaq0a4z6j5qqnf6h7njpmwh7i0v7qh6bmhwlcibnqz"
+ "This is a smaller version of the T1 neural network, which is currently one of the best neural network for Leela Chess Zero."))
+
+(define-public lc0-t1-256
+ (make-lc0-nn "t1-256" "t1-256.pb.gz"
+ "https://storage.lczero.org/files/networks-contrib/t1-256x10-distilled-swa-2432500.pb.gz"
+ "01ilar7y2nf3kfkq3x77n4jxlvqdpgddjsham2wz4dmdx35ac9xw"
+ "This is a smaller version of the T1 neural network, which is currently one of the best neural network for Leela Chess Zero."))
+
+(define-public lc0-611246
+ (make-lc0-nn "611246" "611246.pb.gz"
+ "https://storage.lczero.org/files/networks/7ca2381cfeac5c280f304e7027ffbea1b7d87474672e5d6fb16d5cd881640e04"
+ "0rapfvjqqrhydhp8a6r3skmjci2dc2yxz912bglv9yd9k00l9rww"
+ "This is an official neural network of a “main run” of the Leela Chess Zero project that was finished being trained in January of 2022."))
+
+(define-public lc0-791556
+ (make-lc0-nn "791556" "791556.pb.gz"
+ "https://storage.lczero.org/files/networks/f404e156ceb2882470fd8c032b8754af0fa0b71168328912eaef14671a256e34"
+ "03b9xl9vkiihdilz5dzcpg6g4inb6n4k5gs911i3gbd8h9sh9ixi"
+ "This is an official neural network of the Leela Chess Zero project that was finished being trained in April of 2022."))
+
+(define-public lc0-815383
+ (make-lc0-nn "815383" "815383.pb.gz"
+ "https://storage.lczero.org/files/networks/8af6098d6fb76e2bef6ef9ee87e61fadcb99f0b789013a72953a95ad10a9e933"
+ "09gm8lgaick60rn4x9h9w5sxdqivr4ign73viviadw1gj7wsbnsg"
+ "This is an official neural network of a “main run” of the Leela Chess Zero project. The network was finished being trained in September of 2023."))
--
2.41.0
Z
Z
zamfofex wrote on 12 Sep 2023 13:58
[PATCH 3/3] gnu: Add neural networks from the Maia Chess project.
(address . 63088@debbugs.gnu.org)
b93e960c939063736be886813ef9fe6257eb81fe.1694519893.git.zamfofex@twdb.moe
* gnu/packages/lc0.scm (make-lc0-maia): New procedure.
* gnu/packages/lc0.scm (lc0-maia-1100, lc0-maia-1200, lc0-maia-1300)
(lc0-maia-1400, lc0-maia-1500, lc0-maia-1600, lc0-maia-1700)
(lc0-maia-1800, lc0-maia-1900): New variables.
---
gnu/packages/lc0.scm | 55 ++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 55 insertions(+)

Toggle diff (72 lines)
diff --git a/gnu/packages/lc0.scm b/gnu/packages/lc0.scm
index 1cda2efd1c..495d93b110 100644
--- a/gnu/packages/lc0.scm
+++ b/gnu/packages/lc0.scm
@@ -18,6 +18,7 @@
(define-module (gnu packages lc0)
#:use-module (guix build utils)
+ #:use-module (guix build-system copy)
#:use-module (guix build-system meson)
#:use-module (guix build-system trivial)
#:use-module (guix download)
@@ -145,3 +146,57 @@ (define-public lc0-815383
"https://storage.lczero.org/files/networks/8af6098d6fb76e2bef6ef9ee87e61fadcb99f0b789013a72953a95ad10a9e933"
"09gm8lgaick60rn4x9h9w5sxdqivr4ign73viviadw1gj7wsbnsg"
"This is an official neural network of a “main run” of the Leela Chess Zero project. The network was finished being trained in September of 2023."))
+
+(define (make-lc0-maia rating)
+ (package
+ (name (string-append "lc0-maia-" rating))
+ (version "1.0")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/CSSLab/maia-chess")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name "maia" version))
+ (sha256
+ (base32
+ "0qjkp56pb5vvkr3j1vdsdzligvy7faza917z7vdfmf168pkvrxsr"))))
+ (build-system copy-build-system)
+ (arguments
+ `(#:install-plan '((,(string-append "model_files/" rating "/final_"
+ rating "-40.pb.gz") ,(string-append
+ "share/lc0/maia-"
+ rating ".pb.gz")))))
+ (synopsis "Human-like neural network for Leela Chess Zero")
+ (description
+ "Maia’s goal is to play the human move — not necessarily the best move.
+As a result, Maia has a more human-like style than previous engines, matching
+moves played by human players in online games over 50% of the time.")
+ (home-page "https://maiachess.com")
+ (license license:gpl3)))
+
+(define-public lc0-maia-1100
+ (make-lc0-maia "1100"))
+
+(define-public lc0-maia-1200
+ (make-lc0-maia "1200"))
+
+(define-public lc0-maia-1300
+ (make-lc0-maia "1300"))
+
+(define-public lc0-maia-1400
+ (make-lc0-maia "1400"))
+
+(define-public lc0-maia-1500
+ (make-lc0-maia "1500"))
+
+(define-public lc0-maia-1600
+ (make-lc0-maia "1600"))
+
+(define-public lc0-maia-1700
+ (make-lc0-maia "1700"))
+
+(define-public lc0-maia-1800
+ (make-lc0-maia "1800"))
+
+(define-public lc0-maia-1900
+ (make-lc0-maia "1900"))
--
2.41.0
L
L
Liliana Marie Prikler wrote on 12 Sep 2023 19:07
Re: [PATCH 2/3] gnu: Add neural networks for Leela Chess Zero.
736af65e3d07df9ab9a09795bf4b98806ec0fd7e.camel@gmail.com
Am Dienstag, dem 12.09.2023 um 08:58 -0300 schrieb zamfofex:
Toggle quote (76 lines)
> * gnu/packages/lc0.scm (make-lc0-nn): New procedure.
> * gnu/packages/lc0.scm (lc0-t2, lc0-t1, lc0-t1-512, lc0-t1-256)
> (lc0-611246, lc0-791556, lc0-815383): New variables.
> ---
>  gnu/packages/lc0.scm | 76
> ++++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 76 insertions(+)
>
> diff --git a/gnu/packages/lc0.scm b/gnu/packages/lc0.scm
> index e19436c381..1cda2efd1c 100644
> --- a/gnu/packages/lc0.scm
> +++ b/gnu/packages/lc0.scm
> @@ -17,7 +17,10 @@
>  ;;; along with GNU Guix.  If not, see
> <http://www.gnu.org/licenses/>.
>  
>  (define-module (gnu packages lc0)
> +  #:use-module (guix build utils)
>    #:use-module (guix build-system meson)
> +  #:use-module (guix build-system trivial)
> +  #:use-module (guix download)
>    #:use-module (guix gexp)
>    #:use-module (guix git-download)
>    #:use-module (guix packages)
> @@ -69,3 +72,76 @@ (define-public lc0
>  is necessary to use Leela Chess Zero and should be installed
> separately.")
>      (home-page "https://lczero.org")
>      (license license:gpl3+)))
> +
> +(define (make-lc0-nn name file-name url hash description)
> +  (package
> +    (name (string-append "lc0-" name))
> +    (version "0")
> +    (source (origin
> +              (method url-fetch)
> +              (uri url)
> +              (file-name (string-append "lc0-" file-name))
> +              (sha256
> +               (base32
> +                hash))))
> +    (build-system trivial-build-system)
> +    (arguments
> +     (list #:builder (with-imported-modules '((guix build utils))
> +                                            #~(let ((share (string-
> append (assoc-ref
> +                                                                    
>        %outputs
> +                                                                    
>        "out")
> +                                                           
> "/share/lc0/")))
> +                                                (use-modules (guix
> build utils))
> +                                                (mkdir-p share)
> +                                                (copy-file (assoc-
> ref
> +                                                            %build-
> inputs
> +                                                           
> "source")
> +                                                           (string-
> append
> +                                                            share
> +                                                            #$file-
> name))))))
> +    (synopsis "Pretrained neural network for Leela Chess Zero")
> +    (description description)
> +    (home-page "https://lczero.org")
> +    (license license:gpl3+)))
> +
> +(define-public lc0-t2
> +  (make-lc0-nn "t2" "t2-768.pb.gz"
> +  
> "https://storage.lczero.org/files/networks-contrib/t2-768x15x24h-swa-
> 5230000.pb.gz"
You might want to search for ways to shorten these urls. E.g. Define a
procedure (lc0-network "short-name")
Toggle quote (60 lines)
> +   "126305hby24k5agxiixadp1lcgmv8drm1dkpb4jf5jzq7k4m855w"
> +   "T2 is currently one of the best neural network for Leela Chess
> Zero, superceeding the neural network T1."))
> +
> +(define-public lc0-t1
> +  (make-lc0-nn "t1" "t1-768.pb.gz"
> +  
> "https://storage.lczero.org/files/networks-contrib/t1-768x15x24h-swa-
> 4000000.pb.gz"
> +   "0zm9v91gfnm69n4x2fckair24fypjrwiip3j86ylsqncsi1sh5nq"
> +   "T1 is currently one of the best neural network for Leela Chess
> Zero, however it was superceeded by the neural network T2."))
> +
> +(define-public lc0-t1-512
> +  (make-lc0-nn "t1-512" "t1-512.pb.gz"
> +  
> "https://storage.lczero.org/files/networks-contrib/t1-512x15x8h-disti
> lled-swa-3395000.pb.gz"
> +   "1s4pq06qkdpaq0a4z6j5qqnf6h7njpmwh7i0v7qh6bmhwlcibnqz"
> +   "This is a smaller version of the T1 neural network, which is
> currently one of the best neural network for Leela Chess Zero."))
> +
> +(define-public lc0-t1-256
> +  (make-lc0-nn "t1-256" "t1-256.pb.gz"
> +  
> "https://storage.lczero.org/files/networks-contrib/t1-256x10-distille
> d-swa-2432500.pb.gz"
> +   "01ilar7y2nf3kfkq3x77n4jxlvqdpgddjsham2wz4dmdx35ac9xw"
> +   "This is a smaller version of the T1 neural network, which is
> currently one of the best neural network for Leela Chess Zero."))
> +
> +(define-public lc0-611246
> +  (make-lc0-nn "611246" "611246.pb.gz"
> +  
> "https://storage.lczero.org/files/networks/7ca2381cfeac5c280f304e7027
> ffbea1b7d87474672e5d6fb16d5cd881640e04"
> +   "0rapfvjqqrhydhp8a6r3skmjci2dc2yxz912bglv9yd9k00l9rww"
> +   "This is an official neural network of a “main run” of the Leela
> Chess Zero project that was finished being trained in January of
> 2022."))
> +
> +(define-public lc0-791556
> +  (make-lc0-nn "791556" "791556.pb.gz"
> +  
> "https://storage.lczero.org/files/networks/f404e156ceb2882470fd8c032b
> 8754af0fa0b71168328912eaef14671a256e34"
> +   "03b9xl9vkiihdilz5dzcpg6g4inb6n4k5gs911i3gbd8h9sh9ixi"
> +   "This is an official neural network of the Leela Chess Zero
> project that was finished being trained in April of 2022."))
> +
> +(define-public lc0-815383
> +  (make-lc0-nn "815383" "815383.pb.gz"
> +  
> "https://storage.lczero.org/files/networks/8af6098d6fb76e2bef6ef9ee87
> e61fadcb99f0b789013a72953a95ad10a9e933"
> +   "09gm8lgaick60rn4x9h9w5sxdqivr4ign73viviadw1gj7wsbnsg"
> +   "This is an official neural network of a “main run” of the Leela
> Chess Zero project.  The network was finished being trained in
> September of 2023."))

Cheers
Z
Z
zamfofex wrote on 13 Sep 2023 03:49
[PATCH 1/3] gnu: Add lc0.
(address . 63088@debbugs.gnu.org)
e1d63918a715887aaf29000cc47d5640e8ed4176.1694569781.git.zamfofex@twdb.moe
* gnu/packages/lc0.scm: New file.
* gnu/packages/local.mk: Register file.
---
gnu/local.mk | 2 ++
gnu/packages/lc0.scm | 71 ++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 73 insertions(+)
create mode 100644 gnu/packages/lc0.scm

Toggle diff (101 lines)
diff --git a/gnu/local.mk b/gnu/local.mk
index 4f8637418a..f46a2973ae 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -59,6 +59,7 @@
# Copyright © 2023 Zheng Junjie <873216071@qq.com>
# Copyright © 2023 Ivana Drazovic <iv.dra@hotmail.com>
# Copyright © 2023 Andy Tai <atai@atai.org>
+# Copyright © 2023 zamfofex <zamfofex@twdb.moe>
#
# This file is part of GNU Guix.
#
@@ -375,6 +376,7 @@ GNU_SYSTEM_MODULES = \
%D%/packages/kerberos.scm \
%D%/packages/kodi.scm \
%D%/packages/language.scm \
+ %D%/packages/lc0.scm \
%D%/packages/lean.scm \
%D%/packages/lego.scm \
%D%/packages/less.scm \
diff --git a/gnu/packages/lc0.scm b/gnu/packages/lc0.scm
new file mode 100644
index 0000000000..e19436c381
--- /dev/null
+++ b/gnu/packages/lc0.scm
@@ -0,0 +1,71 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2023 zamfofex <zamfofex@twdb.moe>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages lc0)
+ #:use-module (guix build-system meson)
+ #:use-module (guix gexp)
+ #:use-module (guix git-download)
+ #:use-module (guix packages)
+ #:use-module ((guix licenses)
+ #:prefix license:)
+ #:use-module (gnu packages)
+ #:use-module (gnu packages algebra)
+ #:use-module (gnu packages c)
+ #:use-module (gnu packages check)
+ #:use-module (gnu packages compression)
+ #:use-module (gnu packages machine-learning)
+ #:use-module (gnu packages pkg-config)
+ #:use-module (gnu packages python))
+
+(define-public lc0
+ (package
+ (name "lc0")
+ (version "0.30.0")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/LeelaChessZero/lc0")
+ (commit (string-append "v" version))
+ ;; Only a few source files are in one Git submodules (rather than
+ ;; there being bundled projects). These files are in a different
+ ;; repository just because they are used across multiple
+ ;; repositories of the Leela Chess Zero project.
+ (recursive? #t)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1m7k8m8iz4pxv3h9g2j1dkgryi4k9c1bcg3fx5j7ii4ysif63kj3"))))
+ (build-system meson-build-system)
+ (native-search-paths
+ (list (search-path-specification
+ (variable "XDG_DATA_DIRS")
+ (files '("share")))))
+ (inputs (list eigen oneapi-dnnl zlib))
+ (native-inputs (list googletest ispc pkg-config python))
+ (arguments
+ '(#:configure-flags (list "-Ddnnl=true"
+ (string-append "-Ddnnl_dir="
+ (assoc-ref %build-inputs
+ "oneapi-dnnl")))))
+ (synopsis "Chess engine based on neural networks")
+ (description
+ "Leela Chess Zero is a UCI-compliant chess engine designed to play chess
+using neural networks. This package does not provide a neural network, which
+is necessary to use Leela Chess Zero and should be installed separately.")
+ (home-page "https://lczero.org")
+ (license license:gpl3+)))

base-commit: daeeaa221605726d8853b00261619ba039bd6db7
--
2.41.0
Z
Z
zamfofex wrote on 13 Sep 2023 03:49
[PATCH 2/3] gnu: Add neural networks for Leela Chess Zero.
(address . 63088@debbugs.gnu.org)
2e0cabfab0e7ffb98bc220264c678345a336644f.1694569781.git.zamfofex@twdb.moe
* gnu/packages/lc0.scm (make-lc0-net, make-lc0-official-net)
(make-lc0-contrib-net): New procedures.
* gnu/packages/lc0.scm (lc0-t2, lc0-t1, lc0-t1-512, lc0-t1-256)
(lc0-611246, lc0-791556, lc0-815383): New variables.
---
gnu/packages/lc0.scm | 84 ++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 84 insertions(+)

Toggle diff (102 lines)
diff --git a/gnu/packages/lc0.scm b/gnu/packages/lc0.scm
index e19436c381..f49d71538e 100644
--- a/gnu/packages/lc0.scm
+++ b/gnu/packages/lc0.scm
@@ -17,7 +17,10 @@
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu packages lc0)
+ #:use-module (guix build utils)
#:use-module (guix build-system meson)
+ #:use-module (guix build-system trivial)
+ #:use-module (guix download)
#:use-module (guix gexp)
#:use-module (guix git-download)
#:use-module (guix packages)
@@ -69,3 +72,84 @@ (define-public lc0
is necessary to use Leela Chess Zero and should be installed separately.")
(home-page "https://lczero.org")
(license license:gpl3+)))
+
+(define (make-lc0-net name file-name url hash description)
+ (package
+ (name (string-append "lc0-" name))
+ (version "0")
+ (source (origin
+ (method url-fetch)
+ (uri url)
+ (file-name (string-append "lc0-" file-name))
+ (sha256
+ (base32
+ hash))))
+ (build-system trivial-build-system)
+ (arguments
+ (list #:builder (with-imported-modules '((guix build utils))
+ #~(let ((share (string-append (assoc-ref
+ %outputs
+ "out")
+ "/share/lc0/")))
+ (use-modules (guix build utils))
+ (mkdir-p share)
+ (copy-file (assoc-ref
+ %build-inputs
+ "source")
+ (string-append
+ share
+ #$file-name))))))
+ (synopsis "Pretrained neural network for Leela Chess Zero")
+ (description description)
+ (home-page "https://lczero.org")
+ (license license:gpl3+)))
+
+(define-public (make-lc0-official-net name url-hash hash description)
+ (make-lc0-net name
+ (string-append name ".pb.gz")
+ (string-append "https://storage.lczero.org/files/networks/"
+ url-hash) hash description))
+
+(define-public (make-lc0-contrib-net name file-name hash description)
+ (make-lc0-net name file-name
+ (string-append
+ "https://storage.lczero.org/files/networks-contrib/"
+ file-name) hash description))
+
+(define-public lc0-t2
+ (make-lc0-contrib-net "t2" "t2-768x15x24h-swa-5230000.pb.gz"
+ "126305hby24k5agxiixadp1lcgmv8drm1dkpb4jf5jzq7k4m855w"
+ "T2 is currently one of the best neural networks for Leela Chess Zero, superceeding the neural network T1."))
+
+(define-public lc0-t1
+ (make-lc0-contrib-net "t1" "t1-768x15x24h-swa-4000000.pb.gz"
+ "0zm9v91gfnm69n4x2fckair24fypjrwiip3j86ylsqncsi1sh5nq"
+ "T1 is currently one of the best neural networks for Leela Chess Zero, however, it was superceeded by the neural network T2."))
+
+(define-public lc0-t1-512
+ (make-lc0-contrib-net "t1-512" "t1-512x15x8h-distilled-swa-3395000.pb.gz"
+ "1s4pq06qkdpaq0a4z6j5qqnf6h7njpmwh7i0v7qh6bmhwlcibnqz"
+ "This is a smaller version of the T1 neural network, which is currently one of the best neural networks for Leela Chess Zero."))
+
+(define-public lc0-t1-256
+ (make-lc0-contrib-net "t1-256" "t1-256x10-distilled-swa-2432500.pb.gz"
+ "01ilar7y2nf3kfkq3x77n4jxlvqdpgddjsham2wz4dmdx35ac9xw"
+ "This is a smaller version of the T1 neural network, which is currently one of the best neural networks for Leela Chess Zero."))
+
+(define-public lc0-611246
+ (make-lc0-official-net "611246"
+ "7ca2381cfeac5c280f304e7027ffbea1b7d87474672e5d6fb16d5cd881640e04"
+ "0rapfvjqqrhydhp8a6r3skmjci2dc2yxz912bglv9yd9k00l9rww"
+ "This is an official neural network of a “main run” of the Leela Chess Zero project that was finished being trained in January of 2022."))
+
+(define-public lc0-791556
+ (make-lc0-official-net "791556"
+ "f404e156ceb2882470fd8c032b8754af0fa0b71168328912eaef14671a256e34"
+ "03b9xl9vkiihdilz5dzcpg6g4inb6n4k5gs911i3gbd8h9sh9ixi"
+ "This is an official neural network of the Leela Chess Zero project that was finished being trained in April of 2022."))
+
+(define-public lc0-815383
+ (make-lc0-official-net "815383"
+ "8af6098d6fb76e2bef6ef9ee87e61fadcb99f0b789013a72953a95ad10a9e933"
+ "09gm8lgaick60rn4x9h9w5sxdqivr4ign73viviadw1gj7wsbnsg"
+ "This is an official neural network of a “main run” of the Leela Chess Zero project. The network was finished being trained in September of 2023."))
--
2.41.0
Z
Z
zamfofex wrote on 13 Sep 2023 03:49
[PATCH 3/3] gnu: Add neural networks from the Maia Chess project.
(address . 63088@debbugs.gnu.org)
b2b92fcdb1388689572c02b1e38b3349cff761c5.1694569781.git.zamfofex@twdb.moe
* gnu/packages/lc0.scm (make-lc0-maia): New procedure.
* gnu/packages/lc0.scm (lc0-maia-1100, lc0-maia-1200, lc0-maia-1300)
(lc0-maia-1400, lc0-maia-1500, lc0-maia-1600, lc0-maia-1700)
(lc0-maia-1800, lc0-maia-1900): New variables.
---
gnu/packages/lc0.scm | 55 ++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 55 insertions(+)

Toggle diff (72 lines)
diff --git a/gnu/packages/lc0.scm b/gnu/packages/lc0.scm
index f49d71538e..abbac73ce7 100644
--- a/gnu/packages/lc0.scm
+++ b/gnu/packages/lc0.scm
@@ -18,6 +18,7 @@
(define-module (gnu packages lc0)
#:use-module (guix build utils)
+ #:use-module (guix build-system copy)
#:use-module (guix build-system meson)
#:use-module (guix build-system trivial)
#:use-module (guix download)
@@ -153,3 +154,57 @@ (define-public lc0-815383
"8af6098d6fb76e2bef6ef9ee87e61fadcb99f0b789013a72953a95ad10a9e933"
"09gm8lgaick60rn4x9h9w5sxdqivr4ign73viviadw1gj7wsbnsg"
"This is an official neural network of a “main run” of the Leela Chess Zero project. The network was finished being trained in September of 2023."))
+
+(define (make-lc0-maia rating)
+ (package
+ (name (string-append "lc0-maia-" rating))
+ (version "1.0")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/CSSLab/maia-chess")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name "maia" version))
+ (sha256
+ (base32
+ "0qjkp56pb5vvkr3j1vdsdzligvy7faza917z7vdfmf168pkvrxsr"))))
+ (build-system copy-build-system)
+ (arguments
+ `(#:install-plan '((,(string-append "model_files/" rating "/final_"
+ rating "-40.pb.gz") ,(string-append
+ "share/lc0/maia-"
+ rating ".pb.gz")))))
+ (synopsis "Human-like neural network for Leela Chess Zero")
+ (description
+ "Maia’s goal is to play the human move — not necessarily the best move.
+As a result, Maia has a more human-like style than previous engines, matching
+moves played by human players in online games over 50% of the time.")
+ (home-page "https://maiachess.com")
+ (license license:gpl3)))
+
+(define-public lc0-maia-1100
+ (make-lc0-maia "1100"))
+
+(define-public lc0-maia-1200
+ (make-lc0-maia "1200"))
+
+(define-public lc0-maia-1300
+ (make-lc0-maia "1300"))
+
+(define-public lc0-maia-1400
+ (make-lc0-maia "1400"))
+
+(define-public lc0-maia-1500
+ (make-lc0-maia "1500"))
+
+(define-public lc0-maia-1600
+ (make-lc0-maia "1600"))
+
+(define-public lc0-maia-1700
+ (make-lc0-maia "1700"))
+
+(define-public lc0-maia-1800
+ (make-lc0-maia "1800"))
+
+(define-public lc0-maia-1900
+ (make-lc0-maia "1900"))
--
2.41.0
?