Leela Zero
Leela Zero是由比利时程式设计师Gian-Carlo Pascutto起头所开发的电脑围棋软体,以及相关的运算计画。专案在2021年2月15日已经中止,并推荐改参与SAI与KataGo[2]。
原作者 | Gian-Carlo Pascutto |
---|---|
开发者 | Gian-Carlo Pascutto |
首次发布 | 2017年10月26日 |
当前版本 |
|
源代码库 | github |
编程语言 | C++ |
类型 | 电脑围棋 |
许可协议 | GPLv3 |
网站 | github |
原作者 | Jonathan Roy |
---|---|
开发者 | Jonathan Roy |
首次发布 | 2018年1月14日 |
源代码库 | github |
编程语言 | Node.js |
类型 | 电脑围棋 |
许可协议 | AGPLv3 |
网站 | zero |
简介
Leela Zero是依照DeepMind在科学期刊《自然》上对于AlphaGo Zero所发表的论文《Mastering the game of Go without human knowledge[3]》所实做出的开源电脑围棋程式[4],也就是不使用人类棋谱与累积的围棋知识,仅实做围棋规则,使用单一类神经网路从自我对弈中学习(不像AlphaGo以人类角度思考,设计了Policy Network与Value Network)。
软体使用蒙特卡洛树搜索(MCTS)模拟与ResNet[4],在蒙特卡洛树搜索模拟与自我训练时都采用Tromp–Taylor规则[5],这个规则的贴目虽然与中国规则相同,都是由黑棋贴7.5目,但在某些情境下可能会有差异。
程式码部份,用户端对弈的程式码与训练的程式码以GPLv3授权公开[4],分散式运算的伺服器端程式则以AGPLv3授权公开[6];资料的部份,训练对弈资料[7]以及训练对弈的原始资料[8]也可以公开下载[注 1]。
与论文的差异
初期时Leela Zero在确认演算法以及程式是否实做正确,所以对论文里提到的部份参数进行调整,以加快验证速度:
- 类神经网路的架构
- AlphaGo Zero使用20 blocks或40 blocks,配上256 filters[3]。
- Leela Zero是逐步提升类神经网路的大小(在近期的版本开始使用Net2Net,将旧的网路资料转换到新的网路上[9]),一开始使用
- 1 block x 8 filters(2017年11月10日,第0代),并逐步换成
- 4 blocks x 32 filter(2017年11月17日,第2代,训练约1.9万盘时)、
- 5 blocks x 64 filters(2017年11月21日,第5代,约13.7万盘时)、
- 6 blocks x 128 filters(2018年1月20日,第58代,约286万盘时)、
- 10 blocks x 128 filters(2018年3月5日,第92代,约481万盘时)、
- 15 blocks x 192 filters(2018年4月9日,第117代,约664万盘时)、
- 20 blocks x 256 filters(2018年7月28日,第158代,约872万盘时),到目前使用的
- 40 blocks x 256 filters(2018年9月4日,第174代,约997万盘时)[7]。
- 自我对战训练的盘数
- AlphaGo Zero使用最新的50万盘训练[3]。
- Leela Zero在10 blocks前(不含10 blocks)使用最新的25万盘自我对战结果训练[10](在2018年1月1号前因为有bug,导致只会使用最新的(约)16万盘自我对战结果进行训练[11]),在10 blocks x 128 filters后改用最新的50万盘自我对战结果训练[12]。
- 蒙特卡洛树搜索(MCTS)的模拟的次数
- AlphaGo Zero在论文里提到自我训练或正式对弈时,每一步都使用1600次模拟[3]。
- Leela Zero一开始使用与AlphaGo Zero的论文相同的1600次,但后来改为3200次[13]。
这些调整是希望在比较小的网路与训练盘数下快速确认程式的正确性[5]。在每个阶段确认没有重大问题以及bug后会重新评估调昇,并且正式公开向社群寻求运算资源[5]。
另外作者发现在原论文里有瑕疵:论文里的第一层输入只有17个,会导致白棋较容易看到棋盘边缘(指类神经网路),这在Leela Zero内被修正为18个[4]。
目标
早期Leela Zero刚出来时,Gian-Carlo Pascutto的目标是重制AlphaGo Zero的论文结果[4][14]。在后来受到更多关注后,有更多的计算资源与人力投入Leela Zero计画之中,使得Leela Zero的强度迅速提升,甚至已经超越先前开发的Leela以及其他对手[14]。
训练
由于作者估算以当时的高阶硬体(以Nvidia的GeForce GTX 1080 Ti估算)大约需要1700年的计算量才能达到AlphaGo Zero自我学习2900万盘的水平[15],所以在2017年十一月开始,让自愿者使用自己的硬体,透过作者群开发的AutoGTP程式参加分散式运算计画(以GTP自动与伺服器沟通以取得计算工作)[7]:
- 在计画启动的34天后(2017年12月13日),自我对弈的训练量超过100万盘。
- 59天后(2018年1月8日)超过200万盘。
- 74天后(2018年1月23日)超过300万盘。
- 100天后(2018年2月18日)超过400万盘。
- 119天后(2018年3月9日)超过500万盘。
- 138天后(2018年3月28日)超过600万盘。
- 166天后(2018年4月25日)超过700万盘。
- 218天后(2018年6月16日)超过800万盘。
- 261天后(2018年7月29日)超过900万盘。
- 299天后(2018年9月5日)超过1000万盘。
2018年初,志愿者申请到超级电脑的部份计算资源,印第安纳大学的Big Red II(申请到3360 cores,约该台超级电脑的10.7%资源)[16][17][注 2],另外自0.10版支援纯CPU版本(不需GPU),现有演算法的最佳化以及新演算法的引入,这些因素大幅提升了整体的计算速度。
Leela Zero官方曾鼓励参与者使用Google Colaboratory所提供的免费运算资源帮助训练[18],但后来因为文件里的操作步骤过时而失效而移除文件[19]。
在2019年十一月时,由于Gian-Carlo Pascutto个人时间的限制,加上最近的50万盘没有推进,而且其他的专案有不错的前景(包括SAI与KataGo),宣布先将训练盘数加到75万盘以确认是否到了极限,并暂定于2020年1月31日结束这次长达两年的训练[20]。
合作
Minigo
Minigo同样也是依照AlphaGo Zero论文所独立实做出来的软体[21],而Minigo专案取得Google赞助的计算资源[21],透过大量计算资源得到品质还不错的训练网路资料。因此Leela Zero的团队与Minigo的团队基于双方的经验,讨论参数的调整能带来的改善,以及双方训练资料共用的可能性[22]。
ELF OpenGo
ELF OpenGo是Facebook依照AlphaGo Zero与AlphaZero所实做出来的软体[23],由于Facebook使用大量资源运算(使用2000颗GPU计算两周)并公开训练网路资料,Leela Zero团队得以将资料转换为Leela Zero可以使用的格式(Hash值为62b5417b
[7]),并进行分析。
Leela Zero后来决定将ELF OpenGo的资料混入自我对弈,在2018年5月7日后引入了ELF OpenGo的资料[24][25]。
成绩
CGOS
在CGOS(英语:Computer Go Server)上会有志愿者将每次演化的版本挂上进行测试(19x19)[26]以比较与其他围棋软体的差距。
名称
程式名称会以LZ
或LeelaZero
之类的名称命名。大致上有几个不同的版本,像是使用训练网路的Hash值为名(如LZ-d6f3a6-t1-p1600
[27]),或是使用训练世代的次数为名(如LZ-000-p1600-t1-r1
[28])。
特例
有几个特别的训练网路不是自我训练产生,而是透过人类顶尖棋手的对弈棋谱产生,用以作为阶段性的指标。
名为LZ-HBest1-t1-p1600
[29][注 3]的帐号是使用Leela Zero的程式加上以人类棋谱计算出的20 blocks x 256 filters训练网路[31]所产生的的版本[32](BayesElo约2650分[33])。
另一个帐号是LZH256x20-t4-nolim
[34],也是使用20 blocks x 256 filters训练网路,但以CGOS的时间限制,找出Leela Zero的程式与人类棋谱训练的网路可以达到的最高成绩(BayesElo约3610分[33])。
分数
另外由于CGOS可以任意注册名称,有些人会拿较强的软体摸鱼混珠(而非使用Leela Zero),因此CGOS上面的数据需要确认后才有参考价值[35]。在CGOS上测试比较完整的基准参数是t1-p1600
(Thread 1、Playouts 1600),但目前(2018年四月)已暂时没有使用这个参数测试训练网路:
- 在
LZ-c99f1a-t1-p1600
[36](第36代,约136万盘训练)的BayesElo分数约1830分[33],超越CGOS的分数基准GNU Go(1800分),不过此时对GNU Go的胜率还不高。 - 在
LZ-097dee-t1-p1600
[37](第41代,约146万盘训练)后可以稳定对GNU Go获胜。此时BayesElo分数约2000分[33]。 - 在
LZ-c83e1b-t1-p1600
[38](第57代,约266万盘训练)的BayesElo分数约2480分[33],这是最后一个5 blocks x 64 filters的版本。 - 在
LZ-ed002c-t1-p1600
[39](第58代,约286万盘训练)的BayesElo分数约2460分[33],这是第一个6 blocks x 128 filters的版本。 - 在
LZ-5773f4-t1-p1600
[40](第65代,约314万盘训练)的BayesElo分数约2670分[33],是第一个在相同执行参数下,超越以人类棋谱训练出的版本(即LZ-HBest1-t1-p1600
[29]的2650分)。
野狐围棋
2017年12月16日,贴吧上的志愿者以alphaleela
的帐号在野狐围棋上开始测试,以快棋对弈为主,并随时更新为最新版的训练网路。于2017年12月30日(约150万盘训练)从级位升到一段,在2018年3月8日(约497万盘训练)升到九段[41]。
2018世界人工智慧围棋大赛
相关连结
- AlphaGo Zero,Leela Zero所参考的论文所实做的电脑围棋软体。
- ELF OpenGo,由Facebook团队依照AlphaGo Zero论文所实做的开源电脑围棋软体,并将训练的数据被Leela Zero团队纳入。
- Leela,同作者的上一代电脑围棋软体。
- Minigo,另外一套开源电脑围棋软体。
- SAI,改自Leela Zero但支援动态贴目的围棋软体。
- 电脑围棋
- 围棋软体
参考资料
- ^ Release 0.17. 2019年4月4日 [2019年4月4日].
- ^ 引用错误:没有为名为
leelazeroserver"
的参考文献提供内容 - ^ 3.0 3.1 3.2 3.3 Mastering the game of Go without human knowledge. 自然 (期刊). 2017-10-18 [2017-12-18]. (原始内容存档于2018-04-12) (英语).
- ^ 4.0 4.1 4.2 4.3 4.4 gcp/leela-zero: Go engine with no human-provided knowledge, modeled after the AlphaGo Zero paper.. [2017-12-18]. (原始内容存档于2021-01-06) (英语).
- ^ 5.0 5.1 5.2 Frequently Asked Questions about Leela Zero. [2017-12-18]. (原始内容存档于2019-02-17) (英语).
- ^ gcp/leela-zero-server: Server side code of the Leela Zero project. [2018-01-14]. (原始内容存档于2020-09-15) (英语).
- ^ 7.0 7.1 7.2 7.3 7.4 Leela Zero. [2017-12-18]. (原始内容存档于2018-05-05).
- ^ Raw training data · Issue #167 · gcp/leela-zero. [2018-01-09]. (原始内容存档于2019-10-18) (英语).
- ^ net2net by Ttl · Pull Request #704 · leela-zero/leela-zero. [2019-04-06]. (原始内容存档于2019-10-18) (英语).
- ^ Is Leelaz trained off all the the games, or just the more recent ones? · Issue #484 · gcp/leela-zero. 2017-12-24 [2017-12-27]. (原始内容存档于2019-02-17) (英语).
- ^ How to find Information about the new best network · Issue #78 · gcp/leela-zero. 2018-01-01 [2018-01-03]. (原始内容存档于2020-11-09) (英语).
- ^ 128x10 transition (6615567e) · Issue #965 · gcp/leela-zero. [2018-04-02]. (原始内容存档于2020-11-09) (英语).
- ^ Update benchmark to -v3200. · gcp/leela-zero@bce0e3d. 2018-03-13 [2018-04-11]. (原始内容存档于2019-02-17) (英语).
- ^ 14.0 14.1 14.2 Gian-Carlo Pascutto - The man behind LeelaZero. European Go Federation. 2018-05-24 [2018-06-02]. (原始内容存档于2018-07-06).
- ^ Zero performance. 2017-10-20 [2017-12-18]. (原始内容存档于2020-01-18) (英语).
- ^ feature request: upload games when time limit is reached · Issue #563 · gcp/leela-zero. [2018-01-08]. (原始内容存档于2019-02-17) (英语).
- ^ Big Red II - Cray XK7 , Opteron 6276 16C 2.300GHz, Cray Gemini interconnect, NVIDIA K20 | TOP500 Supercomputer Sites. [2018-01-08]. (原始内容存档于2020-01-03) (英语).
- ^ leela-zero/COLAB.md at 05c5187faad02fd679373f3f9be30ae537ffe8d9 · leela-zero/leela-zero. 2018-04-24 [2019-04-06]. (原始内容存档于2019-04-25) (英语).
- ^ Remove COLAB Readme. · leela-zero/leela-zero@a1a4af8. 2018-10-23 [2019-04-06]. (原始内容存档于2019-04-29) (英语).
- ^ End of first training run - next steps. 2019-12-16 [2020-01-02]. (原始内容存档于2021-02-12) (英语).
- ^ 21.0 21.1 tensorflow/minigo: An open-source implementation of the AlphaGoZero algorithm. [2018-02-02]. (原始内容存档于2020-11-09) (英语).
- ^ Ideas from Minigo · Issue #785 · gcp/leela-zero. [2018-02-02]. (原始内容存档于2019-10-18) (英语).
- ^ ELF | Game Research Platform | Facebook AI. [2018-05-06]. (原始内容存档于2018-05-06) (英语).
- ^ Facebook open sources elf opengo · Issue #1311 · gcp/leela-zero. 2018-05-03 [2018-05-16]. (原始内容存档于2019-06-05) (英语).
- ^ two best networks in ten hours, is it related with ELF games? · Issue #1362 · gcp/leela-zero. [2018-05-08]. (原始内容存档于2019-02-17) (英语).
- ^ (CGOS) 19x19 Computer Go Server. [2017-12-20]. (原始内容存档于2017-12-22) (英语).
- ^ Crosstable for LZ-d6f3a6-t1-p1600. 2018-02-09 [2018-02-25]. (原始内容存档于2020-07-10) (英语).
- ^ Crosstable for LZ-000-p1600-t1-r1. [2018-02-25]. (原始内容存档于2018-03-15) (英语).
- ^ 29.0 29.1 Crosstable for LZ-HBest1-t1-p1600. [2017-12-20]. (原始内容存档于2020-07-10) (英语).
- ^ Version 0.10 released - Next steps · Issue #591 · gcp/leela-zero. [2018-01-14]. (原始内容存档于2019-10-18) (英语).
- ^ Question: Is there a way to generate up to date ("stronger"?) weights.txt? · Issue #794 · gcp/leela-zero. [2018-02-02]. (原始内容存档于2019-02-17) (英语).
- ^ LZ-HBest1-t1-p1600 -- human supervised learning network on CGOS : cbaduk. 2017-12-17 [2017-12-20]. (原始内容存档于2019-02-17) (英语).
- ^ 33.0 33.1 33.2 33.3 33.4 33.5 33.6 19x19 All Time Ranks. [2018-02-02]. (原始内容存档于2018-01-17) (英语).
- ^ Crosstable for LZH256x20-t4-nolim. 2018-02-19 [2018-03-14]. (原始内容存档于2020-07-10) (英语).
- ^ Who's running bad LZ bots on CGOS? : cbaduk. [2018-01-05]. (原始内容存档于2019-02-17) (英语).
- ^ Crosstable for LZ-c99f1a-t1-p1600. 2017-12-26 [2018-01-09]. (原始内容存档于2020-07-10) (英语).
- ^ Crosstable for LZ-097dee-t1-p1600. 2017-12-31 [2018-01-01]. (原始内容存档于2020-07-10) (英语).
- ^ Crosstable for LZ-c83e1b-t1-p1600. 2018-01-19 [2018-02-02]. (原始内容存档于2020-07-10) (英语).
- ^ Crosstable for LZ-ed002c-t1-p1600. 2018-01-22 [2018-02-02]. (原始内容存档于2020-07-10) (英语).
- ^ Crosstable for LZ-5773f4-t1-p1600. 2018-01-28 [2018-01-29]. (原始内容存档于2020-07-10) (英语).
- ^ 腾讯围棋. [2018-03-09]. (原始内容存档于2018-03-08) (中文(中国大陆)).
- ^ 贝瑞基因杯机机大战预赛战罢 绝艺五连胜出线. 2018-04-27 [2018-05-13]. (原始内容存档于2018-04-30) (中文(中国大陆)).
注解
外部链接
- Leela Zero的程式码 (英文)
- Leela Zero (页面存档备份,存于互联网档案馆),Leela Zero的训练状态页。(英文)
- leela-zero eval (0x0): Leela-Zero (eval with more cross play) (页面存档备份,存于互联网档案馆) (英文)
- Leela Zero (页面存档备份,存于互联网档案馆) on GitHub
- Leela Zero (页面存档备份,存于互联网档案馆) on Sensei's Library
- Play Leela Zero (页面存档备份,存于互联网档案馆) on ZBaduk