搜索无关的象棋:一种基于大规模变换器的解决方案
1. 项目介绍
开源项目“搜索无关的象棋”(searchless_chess)是由Google DeepMind团队开发的一种使用大规模变换器(transformers)进行棋类游戏预测的算法。该项目通过将变换器模型应用于棋类游戏,如国际象棋,来评估其在规划任务上的表现。项目的主要目的是为了验证变换器模型在没有搜索步骤的情况下,是否能够有效地解决棋类问题。
2. 项目快速启动
环境准备
首先,需要准备Python 3.10环境。推荐使用Anaconda来创建一个虚拟环境:
conda create --name searchless_chess python=3.10
conda activate searchless_chess
然后安装pip并使用pip安装项目依赖:
conda install pip
pip install -r requirements.txt
如果您的系统有GPU支持,可以安装支持CUDA的JAX版本以加速训练:
pip install --upgrade "jax[cuda12_pip]" -f https://storage.googleapis.com/jax-releases/jax_cuda_releases.html
安装Stockfish和Leela Chess Zero
项目还依赖于Stockfish和Leela Chess Zero棋类引擎。可以从各自的GitHub仓库下载源代码并编译:
# Stockfish
git clone https://github.com/official-stockfish/Stockfish.git
cd Stockfish/src
make -j profile-build ARCH=x86-64-avx2
cd ../..
# Leela Chess Zero
git clone -b release/0.30 --recurse-submodules https://github.com/LeelaChessZero/lc0.git
# 构建步骤参照lc0的官方文档
数据集和模型 checkpoints
项目需要下载数据集和预训练模型:
cd data
./download.sh
cd ..
cd checkpoints
./download.sh
cd ..
训练模型
启动模型训练的命令如下:
cd src
python train.py
cd ..
训练好的模型 checkpoints 将会保存在 /checkpoints/local
目录下。
评估模型
评估模型在象棋难题上的准确度:
cd src
python puzzles.py --num_puzzles 10 --agent=local
cd ..
可以选择不同的模型或引擎进行评估,例如预训练的模型9M
、136M
、270M
,Stockfish引擎,或Lc0引擎。
3. 应用案例和最佳实践
- 模型训练:使用大规模数据集进行监督学习,提高模型在预测动作值方面的准确性。
- 模型评估:通过象棋难题和在线比赛(如Lichess)来评估模型的表现。
- 模型部署:将训练好的模型部署到实际应用中,例如在线象棋平台或智能象棋设备。
4. 典型生态项目
- Stockfish:目前最强大的开源象棋引擎之一,可以作为基准来比较其他模型。
- Leela Chess Zero:使用深度学习和自我对弈进行训练的开源象棋引擎,与本项目有相似的探索方向。
- BayesElo:用于计算不同棋手或模型之间Elo评分的工具,有助于评估模型实力。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考