新浪博客

如何快速配置一个LeelaZero来感受一下高段位棋手的威力(【真】自取其辱教程)

2018-11-28 22:02阅读:
上次随口问了下方老,阿法狗退役之后,现在比较流行的围棋软件水平怎么样,大概有哪些。方老列了几个名字——其中绝艺什么的毫无疑问比较高端,然而是国家队内部训练专用;于是我就随手查了查这个开源的软件Leela Zero
官方githubrepo在这里:https://github.com/gcp/leela-zero
大致看了看,其实发现单纯想拿它下棋(专业术语算是inference)的话,电脑倒是不用太高的配置;但获得有价值的权重文件却不是一件容易的事(似乎记得当年阿尔法刚出的时候,说是跑的128GPU+128CPU;等后来的各种升级版都是直接用的它家的TPU)。简单看了眼这软件的后端,貌似可以用Caffe等软件训练(提供的三个prototxt,最大的那个大概几十层,不过结构其实也不算太复杂);不过按作者的计算,要达到Google当初那个阿尔法zero的水平,在家用电脑上要1700年,详见
http://computer-go.org/pipermail/computer-go/2017-October/010307.html
反正我觉得作者(貌似是个比利时人)算出这个结果的时候内心估计是崩溃的(就算少两个零估计也要哭了QAQ)~
然后他采取的方法就是从全球收集棋友分布式计算的数据,另外借用了FaceBookOpenGo训练出的一个现成的weights文件,直接把它转换了过来作为pretrained w
eights来fined tuning。作为用户,在github的“I just want to play right now”部分,提供了两个可用的权重文件下载。第一个解压缩之后大概365M,第二个据说“下法更像人类的”只有23M——当然,后来的实测也证明了,第一个比较强。
我的笔记本是MacBook Air,配置不算好,i5的核,内存4GB。整个环境直接在unix原生系统下安装配置,耗时也不太久,不过沿途解决了一些奇奇怪怪的error——反正有种白天上完了班,晚上继续工作的感觉Orz

1.刚刚启动console发现git用不了
xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun
解决方案
xcode-select --install

2.安装Leela Zero步骤
git clone --recursive https://github.com/gcp/leela-zero.git
(注意这里一定要有—recursive
cd leela-zero
cd src
(要求本机之前安好了brew
brew install boost
vi config.h
因为没有GPU,于是注释掉#define USE_OPENCL#define USE_HALF
make

3GUI图形引擎Lizzie安装步骤(其他的也有很多别的选择,不过这个看起来比较“原生”,于是决定就先用它了;另外好像也可以直接下载用,不过我还是习惯性地build from source了)
git clone --recursive https://github.com/featurecat/lizzie.git
cd lizzie
vi config.txt
修改以下设置
'network-file”: 指向下载的weight权重文件路径
'engine-command”: 指向之前编译通过的leela-zero/src/leelaz
(然后按官方建议,用maven编译安装比较方便)
java -version
brew install maven
mvn clean package
(这步编译顺利通过的话,就能用下面这个命令运行了;注意每次修改了config都需要重新编译一遍)
java -jar target/lizzie-0.6-shaded.jar

4.工具使用
java会打开一个图形界面,落子和画面都是鼠标操作,另外长按键盘上的x可以调出菜单说明——它居然自动是中文的;其他各种命令都是键盘控制,总体还挺清爽,除了没有落子音让我觉得小有遗憾之外)
n: leela_zero下棋(可以自由设置黑白,贴目,让子)
Enter(回车): leela_zero下(这个命令的好玩之处在于,就算应该是你下,你也可以强硬要求它来落子)
对局界面大概是这样的(旁边折线图显示的是实时胜率;另外想要看的话,也可以直接把对下步的胜率判定打开,如图) 如何快速配置一个LeelaZero来感受一下高段位棋手的威力(【真】自取其辱教程)
然后我就开始玩了(自虐了)几局。
太久不下棋,反正也没什么棋感,另外加上方老说这东西让他三个都不成问题,于是丝毫没有心理负担地啪啪胡来==
一开始用的是那个据说相对比较像人一点的权重。乱飞的半盘之后本来我的胜率直线下降,但快彻底完蛋的时候好像莫名捡到了对方的勺子(?),然后leela就卡在那里陷入了长久的思考不动了,直到我彻底失去耐心中断了程序23333
如何快速配置一个LeelaZero来感受一下高段位棋手的威力(【真】自取其辱教程)
然后我就换了那个比较强的权重文件,重新编译了一遍再来。这次果然充分领教了一下各种点三三、神脱先、凌云尖冲大法……然后碎得甚是惨烈(p.s.这个软件我没找到认输的按钮在哪里……怀疑我的对局这样是不是贡献不了反馈权重Orz
如何快速配置一个LeelaZero来感受一下高段位棋手的威力(【真】自取其辱教程)
最后甚至试了一下被让两个子(自取其辱again.gif)……虽然也是因为我下得太不像个东西,不过最后干脆地又挂了也是事实……

这种“亲手养个自己赢不了的东西”出来的感觉真是挺有趣的——就这么收获了不会厌倦下棋还有奇怪脾气(?)的对手一枚23333感觉下次说不定真的会脑补个AI科幻文出来写着玩玩。
另外,那次看到yolo系列的作者好像也用darknet写过相关的围棋程序,不过试了试发现水平还不太行,可以轻松拍死——也说明,好的权重这个东西,才是真的值钱。
大家有兴趣的可以去试试~

我的更多文章

下载客户端阅读体验更佳

APP专享