拿AI下围棋 -- 开源项目leela-zero
书接上回AlphaGo 王树森深度强化学习DRL(三)围棋AlphaGo+蒙特卡洛-CSDN博客
蒙生实践体验和AI对弈 借助AI和别人下围棋的想法
在github上找了一个 复现 AlphaGo Zero 论文中的方法 leela-zero
不依赖任何人类棋谱知识,完全靠自我对弈+ 深度残差神经网络 + 蒙特卡洛树搜索(MCTS)训练
使用它下围棋需要四个步骤:
1. 下载 Leela Zero Windows Release(含 leelaz.exe)。
2. 下载网络权重文件(官方发布的 best network)。(因为权重是社区不断训练更新的 需额外下载)
3. 命令行启动引擎。 加载权重,检测到显卡后,做 OpenCL 算子性能调优。
4. 在图形界面GUI如 Lizzie可视化下棋。
所需要下载的文件如下:
https://github.com/leela-zero/leela-zero/releases Leela Zero Windows Release
https://zero.sjeng.org/best-network 权重文件
https://github.com/featurecat/lizzie/releases GUI Lizzie
1. 效果展示
左上角有一个实时胜率图 左下角是类似min-max 双方未来几步按照它最优解的下法(变化图)
棋盘上 上面的数字代表期望胜率(动作价值函数) 下面的数字是MCTS的访问次数
综合得蓝色是最推荐的点,绿色是次推荐的点,红色其次
(正常情况下会显示上面的圈圈 也可能会出现未知bug 不显示的情况)
可以ENTER可以让AI走下一步。 下方为我拿AI走黑棋,朋友走白棋的一局。
可以看见下方的胜率曲线从开局几步 白方失误开始 黑方胜率就一直稳定在99%以上。
2. 一步步实操步骤
2.1 命令行实操
1. 先创建一个GoAI文件夹 下载之前说的三个文件夹 解压命名为leelaz和lizzie
2. 把best-network文件重命名为weights.txt.gz 并且放在leelaz文件夹下
3. 打开命令提示符(Win+R → cmd)进入目录 cd /d D:\GoAI\leelaz
4. 启动引擎(GTP 模式 + 指定权重;有 GPU 就用 --gpu 0
,没有就删掉):
leelaz.exe --gtp -w weights.txt.gz -t 8 --gpu 0
它会进行检查显卡配置做 OpenCL 算子性能调优
“Started OpenCL SGEMM tuner”表示它开始优化 矩阵乘法 (SGEMM) 的实现。Leela Zero 的神经网络大量依赖矩阵乘法,这一步会尝试不同配置,找到在你显卡上最快的计算方式。
(需要等待几分钟 并处在下面380种调优搜索)
Started OpenCL SGEMM tuner. Will try 380 valid configurations.(1/380) KWG=16 KWI=2 MDIMA=8 MDIMC=8 MWG=16 NDIMB=16 NDIMC=16 NWG=64 SA=1 SB=1 STRM=0 STRN=0 TCE=0 VWM=2 VWN=4 0.1797 ms (2625.6 GFLOPS)
最后会停在设置搜索树的大小和缓存空间。 然后我们可以进行 一些命令行调试是否导入成功。
version 版本; boardsize 19 建立19路棋盘
clear_board 清空盘面; genmove b 让AI执黑棋线下
后续它会搜索一些点 周期性输出最好的点(MCTS探索次数最多的点)
Win 胜率多少,PV为后续若干步之后的双方最优盘面。
2.2 Lizzie GUI
在lizzie文件夹中有一个config.txt文件 要把开头的 "leelaz" "engine-command-list" 改为
"leelaz": {"engine-command": "D:/GoAI/leelaz/leelaz.exe --gtp -w D:/GoAI/leelaz/weights.txt.gz -t 8 --gpu 0 -v 1600","engine-start-location": "D:/GoAI/leelaz","print-comms": false,"show-lcb-winrate": false,"max-analyze-time-minutes": 99999,"analyze-update-interval-centisec": 10,"max-game-thinking-time-seconds": 2,"avoid-keep-variations": 30
}
Java Downloads | Oracle 需要事先下载好Java 之后在命令行中运行
cd /d D:\GoAI\lizzie
java -jar lizzie.jar
然后 enjoy yourself 吧 ~