PhoenixGo 开源项目使用与启动指南
1. 项目介绍
PhoenixGo 是腾讯开源的一个围棋人工智能程序,它实现了 AlphaGo Zero 论文中的算法。PhoenixGo 在世界围棋人工智能大赛 2018 中获得冠军,展现了其在围棋领域的强大能力。该程序支持 GTP(Go Text Protocol),可以与多种围棋界面软件配合使用。
2. 项目快速启动
环境要求
- GCC 支持 C++11
- Bazel 构建系统
- (可选)CUDA 和 cuDNN 以支持 GPU
- (可选)TensorRT 以加速 GPU 计算
克隆仓库与配置
首先,克隆仓库并进行配置:
git clone https://github.com/Tencent/PhoenixGo.git
cd PhoenixGo
./configure
./configure
脚本会询问 CUDA 和 TensorRT 的安装位置,如果需要,请指定路径。
构建项目
使用 Bazel 构建项目:
bazel build //mcts:mcts_main
构建过程可能会耗费较长时间,并且占用大量内存。
运行程序
下载预训练的网络模型:
wget https://github.com/Tencent/PhoenixGo/releases/download/trained-network-20b-v1/trained-network-20b-v1.tar.gz
tar xvzf trained-network-20b-v1.tar.gz
可以通过以下两种方式运行 PhoenixGo 引擎:
方法 1: 使用 start.sh 脚本
运行脚本,脚本会自动检测 GPU 数量,并运行 mcts_main:
scripts/start.sh
也可以通过指定配置文件运行:
scripts/start.sh {config_path}
方法 2: 直接运行 mcts_main
如果需要完全控制 mcts_main 的选项,可以直接运行:
bazel-bin/mcts/mcts_main --gtp --config_path=replace/with/path/to/your/config/file --logtostderr --v=0
3. 应用案例和最佳实践
- 单机多 GPU 使用:在配置文件中设置
num_eval_threads
等于 GPU 数量,num_search_threads
略大于num_eval_threads * eval_batch_size
。 - 分布式计算:如果有多台机器上的 GPU,可以配置分布式工作模式,将
enable_dist
设置为 true,并在配置文件中填写dist_svr_addrs
。
4. 典型生态项目
PhoenixGo 可以与多种围棋软件配合使用,例如 Sabaki 等。此外,社区中也有许多基于 PhoenixGo 的扩展项目,例如用于分析棋局的工具,或者与其他围棋引擎的接口等。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考