news 2026/5/1 20:37:41

Lc0神经网络训练与优化:打造顶尖象棋AI的完整教程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Lc0神经网络训练与优化:打造顶尖象棋AI的完整教程

Lc0神经网络训练与优化:打造顶尖象棋AI的完整教程

【免费下载链接】lc0Open source neural network chess engine with GPU acceleration and broad hardware support.项目地址: https://gitcode.com/gh_mirrors/lc/lc0

Lc0是一款基于神经网络的国际象棋引擎,专为通过神经网络下象棋而设计,特别是LeelaChessZero项目的神经网络。它支持GPU加速并具有广泛的硬件支持,是开源社区打造顶尖象棋AI的理想选择。

快速获取Lc0源代码 🚀

获取Lc0的源代码非常简单,你可以通过git克隆或从GitHub下载归档文件。对于几乎所有用途,包括自对弈游戏生成和比赛,我们强烈建议使用最新的release/version分支。

使用git下载:

git clone -b release/0.32 https://gitcode.com/gh_mirrors/lc/lc0

如果你已经克隆了旧版本,可以通过以下命令获取并切换到新分支:

git fetch --all git branch --all git checkout -t remotes/origin/release/0.32

编译和运行Lc0的详细步骤 🔧

编译前的准备工作

编译Lc0需要Meson构建系统和至少一个用于评估神经网络的后端库,以及一些其他库。此外,Lc0需要支持C++20的编译器,经过测试的最低版本包括g++ v10.0、clang v12.0和Visual Studio 2019 version 16.11。

后端支持理论上包括任何与CBLAS兼容的CPU库,但主要使用OpenBLAS或Intel的DNNL。对于GPU,支持以下后端:CUDA(可选cuDNN)、各种onnxruntime版本以及Apple的Metal Performance Shaders。还有针对AMD和Intel GPU的实验性SYCL支持。

Linux系统编译指南

通用步骤
  1. 安装后端(也请阅读后面部分的详细说明):
    • 如果你想使用NVIDIA显卡,请安装CUDA(可选cuDNN)。
    • 如果你想使用AMD或Intel显卡,可以尝试SYCL。
    • 如果你想使用BLAS,请安装OpenBLAS或DNNL。
  2. 安装ninja build(ninja-build)、meson和(可选)gtest(libgtest-dev)。
  3. 进入lc0/目录
  4. 运行./build.sh
  5. lc0将在lc0/build/release/目录中生成
  6. 在与二进制文件相同的目录中下载一个神经网络(无需解压)。

如果你想使用不同的编译器,可以传递CCCXX环境变量:

CC=clang CXX=clang++ ./build.sh
Ubuntu 20.04特别说明

对于Ubuntu 20.04,在执行上述步骤之前,你需要安装meson、ninja和gcc-10。以下命令应该可行:

apt-get update apt-get -y install git python3-pip gcc-10 g++-10 zlib1g zlib1g-dev pip3 install meson pip3 install ninja CC=gcc-10 CXX=g++-10 INSTALL_PREFIX=~/.local ./build.sh

确保~/.local/bin在你的PATH环境变量中。现在你可以输入lc0 --help开始使用了。

Windows系统编译指南

以下是CUDA/cuDNN的简要说明,有关详细信息和其他选项,请参见windows-build.md和以下部分中的说明。

  1. 安装Microsoft Visual Studio(2019 version 16.11或更高版本)

  2. 安装CUDA

  3. (可选安装cuDNN)。

  4. 如果没有随Visual Studio安装Python3,请安装它。

  5. 安装Meson:pip3 install --upgrade meson

  6. 如果未设置CUDA_PATH(运行set命令查看所有变量列表),编辑build.cmd并设置CUDA_PATH为你的CUDA目录

    • 如果你还想使用cuDNN,设置CUDNN_PATH为你的cuDNN目录(如果与CUDA_PATH相同则不需要)。
  7. 运行build.cmd。它会请求删除构建目录的权限,然后生成MSVS项目并暂停。

然后可以选择:

  1. Enter键进行构建。
  2. 生成的二进制文件将是build/lc0.exe

或者:

  1. 在Visual Studio中打开生成的解决方案build/lc0.sln并自行构建。

Mac系统编译指南

你需要安装xcode和python3。然后需要通过终端安装一些必需的软件包:

  1. 安装meson:pip3 install meson
  2. 安装ninja:pip3 install ninja

现在按照页面前面的说明下载lc0源代码(如果你还没有这样做)。

  1. 进入lc0目录。
  2. 运行./build.sh -Dgtest=false

编译好的Lc0将在build/release中。

从v0.32.0开始,我们还提供预编译版本,可以从发布页面下载。

不同后端的配置与优化 ⚡

CUDA后端设置

CUDA可以按照https://developer.nvidia.com/cuda-downloads上的说明下载和安装。在大多数情况下,构建会自动检测到它。但是,如果找不到cuda编译器(nvcc),你可以这样调用构建:PATH=/usr/local/cuda/bin:$PATH ./build.sh,将路径替换为nvcc的正确路径。

请注意,CUDA使用系统编译器,如果不识别版本,即使是更新的版本,也会停止。这在新的Linux版本上更为常见,但你可以使用nvcc_ccbin构建选项来为cuda指定不同的编译器。例如,在构建命令行中添加-Dnvcc_ccbin=g++-11将使用g++-11而不是系统编译器。

ONNX后端配置

Lc0提供了几个基于ONNX的后端,即onnx-cpu、onnx-cuda、onnx-trt、onnx-rocm,在Windows上还有onnx-dml,利用onnxruntime提供的执行提供程序。

一些Linux系统开始提供onnxruntime软件包,因此安装后,Lc0构建很可能无需进一步操作就能检测到它。否则,你可以设置onnx_libdironnx_include构建选项,分别指向onnxruntime库和包含目录。如果你从https://github.com/microsoft/onnxruntime/releases下载了软件包并解压,也使用相同的选项。

对于Windows,我们提供onnx-dml和onnx-trt的预编译软件包,请参阅包含的README以获取安装说明。

SYCL后端实验性支持

请注意,SYCL支持是v0.32.0中的新功能,因此仍被视为实验性的。

你将需要Intel"oneAPI DPC++/C++ Compiler"、"DPC++ Compatibility Tool"和(对于Intel GPU)"oneAPI Math Kernel Library (oneMKL)"或(对于AMD GPU)hipBLAS。

Intel工具可以在"oneAPI Base Toolkit"或"C++ Essentials"软件包中找到,可以从https://www.intel.com/content/www/us/en/developer/tools/oneapi/base-toolkit-download.html下载,而hipBLAS可以从https://rocm.docs.amd.com/projects/hipBLAS/en/latest/下载。

C代码的编译器是icx,C++代码的编译器在Windows上是icx,但在Linux上是icpx。

要使用SYCL构建Lc0,你需要使用-Dsycl=l0(即el zero)设置sycl构建选项以用于Intel GPU,或-Dsycl=amd用于(你猜对了)AMD GPU。

你可能还需要设置dpct_include选项以指向DPC++ Compatibility Tool包含,onemkl_include类似地指向oneMKL包含,或hip_libdirship_include分别指向AMD HIP库和包含。

在Linux上,典型的会话如下:

. /opt/intel/oneapi/setvars.sh --include-intel-llvm CC=icx CXX=icpx AR=llvm-ar ./build.sh release -Dgtest=false -Dsycl=l0

第一行用于初始化构建环境,每个会话只需一次,而构建行可能需要如上所述进行修改。

在Windows上,你将必须使用ninja进行构建,如果你安装了CMake组件,Visual Studio会提供它。我们提供了build-sycl.cmd脚本,对于Intel GPU应该可以很好地构建。此脚本尚未在AMD GPU上测试,可能需要一些编辑。

你还可以安装oneAPI DPC++/C++ Compiler Runtime,这样你就可以运行Lc0,而无需每次都初始化构建环境。

BLAS后端配置

Lc0也可以在CPU上运行(速度稍慢),使用BLAS库中的矩阵乘法函数。默认情况下,如果可用,将使用OpenBLAS,因为它似乎在各种处理器上都能提供良好的性能。如果你的系统没有提供OpenBLAS软件包(例如libopenblas-dev),或者你有较新的处理器,你可以从这里获取DNNL。要使用DNNL,你必须将-Ddnnl=true传递给构建,并使用-Ddnnl_dir=选项指定安装目录。对于macs,将使用Accelerate库。

如果安装了"Intel Implicit SPMD Program Compiler"(ispc),一些性能关键函数将使用向量化代码以加快执行速度。

请注意,Lc0不能控制所有BLAS库的线程数。有些库会尝试积极地利用内核,在这种情况下,最好将线程设置为默认(即自动)设置。

Python绑定使用方法 🐍

Python绑定可以按如下方式构建和安装:

pip install --user git+https://gitcode.com/gh_mirrors/lc/lc0.git

这将构建lczero-bindings包并将其安装到你的Python用户安装目录。所有与位置评估相关的lc0功能现在都在lczero.backends模块中可用。

获取帮助与支持 🤝

如果你遇到问题或上述说明不清楚,你总是可以寻求帮助。最快的方法是在我们的discord聊天的帮助频道中提问,但你也可以打开github issue(在检查问题尚未被报告之后)。

许可证信息 📜

Leela Chess是自由软件:你可以根据自由软件基金会发布的GNU通用公共许可证第3版或(根据你的选择)任何更高版本重新分发和/或修改它。

Leela Chess的分发希望它会有用,但没有任何保证;甚至没有适销性或特定用途适用性的暗示保证。有关更多详细信息,请参见GNU通用公共许可证。

你应该已经收到了GNU通用公共许可证的副本。如果没有,请参见http://www.gnu.org/licenses/。

GNU GPL第3版第7节的附加许可

除了BLAS、OpenCL和SYCL后端(blasopenclsycl子目录中的所有文件)之外,Lc0的源文件具有以下附加许可,根据GNU GPL第3版第7节允许:

如果你通过链接或组合本程序或任何涵盖的作品与NVIDIA Corporation的NVIDIA CUDA Toolkit和NVIDIA CUDA Deep Neural Network库(或这些库的修改版本),包含各自许可协议条款涵盖的部分,本程序的许可方授予你额外的许可来传达由此产生的作品。

【免费下载链接】lc0Open source neural network chess engine with GPU acceleration and broad hardware support.项目地址: https://gitcode.com/gh_mirrors/lc/lc0

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/1 20:37:38

FLAC跨平台开发:Windows、Linux、macOS的完整部署方案

FLAC跨平台开发:Windows、Linux、macOS的完整部署方案 【免费下载链接】flac Free Lossless Audio Codec 项目地址: https://gitcode.com/gh_mirrors/fl/flac FLAC(Free Lossless Audio Codec)是一款开源的无损音频编码格式&#xff0…

作者头像 李华
网站建设 2026/5/1 20:32:24

Meshtastic终极指南:如何搭建属于你的远距离LoRa自组网

Meshtastic终极指南:如何搭建属于你的远距离LoRa自组网 Meshtastic是一款基于LoRa技术的开源远距离自组网通信系统,它能让你在没有手机信号和互联网的环境下,通过低成本硬件构建自己的无线通信网络。无论是户外探险、应急通信还是物联网项目…

作者头像 李华
网站建设 2026/5/1 20:30:30

告别手动水印:semi-utils如何让每张照片自动拥有专业标识

告别手动水印:semi-utils如何让每张照片自动拥有专业标识 【免费下载链接】semi-utils 一个批量添加相机机型和拍摄参数的工具,后续「可能」添加其他功能。 项目地址: https://gitcode.com/gh_mirrors/se/semi-utils 在摄影创作中,你是…

作者头像 李华
网站建设 2026/5/1 20:30:25

Boss-Key老板键:Windows窗口隐私保护的终极解决方案

Boss-Key老板键:Windows窗口隐私保护的终极解决方案 【免费下载链接】Boss-Key 老板来了?快用Boss-Key老板键一键隐藏静音当前窗口!上班摸鱼必备神器 项目地址: https://gitcode.com/gh_mirrors/bo/Boss-Key 在当今快节奏的工作环境中…

作者头像 李华
网站建设 2026/5/1 20:20:25

智能制造——解读196页PLM产品协同研发平台建设规划方案【附全文阅读】

该文档主要介绍了PLM产品协同研发平台建设规划方案,包括理解产品开发现状及改善方向、针对产品协同研发平台分阶段规划和建设、PLM业务建设及保障措施等。针对主要产品线的产品特点及研发、工艺现状进行了总结,并指出了研发业务存在的问题和改善方向。最后,提出了PLM项目整体…

作者头像 李华