Leela Zero

圍棋軟件

Leela Zero是由比利时程序员Gian-Carlo Pascutto英语Gian-Carlo Pascutto起头所开发的电脑围棋软件,以及相关的运算计划。项目在2021年2月15日已经中止,并推荐改参与SAIKataGo[2]

Leela Zero
原作者Gian-Carlo Pascutto
开发者Gian-Carlo Pascutto
首次发布2017年10月26日,​7年前​(2017-10-26
当前版本
  • 0.17(2019年4月4日;稳定版本)[1]
编辑维基数据链接
原始码库github.com/leela-zero/leela-zero
编程语言C++
类型电脑围棋
许可协议GPLv3
网站github.com/leela-zero/leela-zero
Leela Zero Server
原作者Jonathan Roy
开发者Jonathan Roy
首次发布2018年1月14日,​6年前​(2018-01-14
原始码库github.com/leela-zero/leela-zero-server
编程语言Node.js
类型电脑围棋
许可协议AGPLv3
网站zero.sjeng.org

简介

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]

现在的目标是希望在行动电话上也能够有足够强的围棋软件可以使用[14]

训练

由于作者估算以当时的高阶硬件(以NvidiaGeForce 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英语Gian-Carlo Pascutto个人时间的限制,加上最近的50万盘没有推进,而且其他的项目有不错的前景(包括SAIKataGo),宣布先将训练盘数加到75万盘以确认是否到了极限,并暂定于2020年1月31日结束这次长达两年的训练[20]

合作

Minigo

Minigo同样也是依照AlphaGo Zero论文所独立实做出来的软件[21],而Minigo项目获取Google赞助的计算资源[21],透过大量计算资源得到质量还不错的训练网络资料。因此Leela Zero的团队与Minigo的团队基于双方的经验,讨论参数的调整能带来的改善,以及双方训练资料共享的可能性[22]

ELF OpenGo

ELF OpenGoFacebook依照AlphaGo ZeroAlphaZero所实做出来的软件[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]以比较与其他围棋软件的差距。

名称

程序名称会以LZLeelaZero之类的名称命名。大致上有几个不同的版本,像是使用训练网络的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世界人工智慧围棋大赛

在预赛获取第三名,仅输给PhoenixGo绝艺[42]

相关链接

  • AlphaGo Zero,Leela Zero所参考的论文所实做的电脑围棋软件。
  • ELF OpenGo,由Facebook团队依照AlphaGo Zero论文所实做的开源电脑围棋软件,并将训练的数据被Leela Zero团队纳入。
  • Leela,同作者的上一代电脑围棋软件。
  • Minigo,另外一套开源电脑围棋软件。
  • SAI,改自Leela Zero但支持动态贴目的围棋软件。
  • 电脑围棋
  • 围棋软件

参考资料

  1. ^ Release 0.17. 2019年4月4日 [2019年4月4日]. 
  2. ^ 引用错误:没有为名为leelazeroserver"的参考文献提供内容
  3. ^ 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. ^ 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. ^ 5.0 5.1 5.2 Frequently Asked Questions about Leela Zero. [2017-12-18]. (原始内容存档于2019-02-17) (英语). 
  6. ^ gcp/leela-zero-server: Server side code of the Leela Zero project. [2018-01-14]. (原始内容存档于2020-09-15) (英语). 
  7. ^ 7.0 7.1 7.2 7.3 7.4 Leela Zero. [2017-12-18]. (原始内容存档于2018-05-05). 
  8. ^ Raw training data · Issue #167 · gcp/leela-zero. [2018-01-09]. (原始内容存档于2019-10-18) (英语). 
  9. ^ net2net by Ttl · Pull Request #704 · leela-zero/leela-zero. [2019-04-06]. (原始内容存档于2019-10-18) (英语). 
  10. ^ 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) (英语). 
  11. ^ How to find Information about the new best network · Issue #78 · gcp/leela-zero. 2018-01-01 [2018-01-03]. (原始内容存档于2020-11-09) (英语). 
  12. ^ 128x10 transition (6615567e) · Issue #965 · gcp/leela-zero. [2018-04-02]. (原始内容存档于2020-11-09) (英语). 
  13. ^ Update benchmark to -v3200. · gcp/leela-zero@bce0e3d. 2018-03-13 [2018-04-11]. (原始内容存档于2019-02-17) (英语). 
  14. ^ 14.0 14.1 14.2 Gian-Carlo Pascutto - The man behind LeelaZero. European Go Federation英语European Go Federation. 2018-05-24 [2018-06-02]. (原始内容存档于2018-07-06). 
  15. ^ Zero performance. 2017-10-20 [2017-12-18]. (原始内容存档于2020-01-18) (英语). 
  16. ^ feature request: upload games when time limit is reached · Issue #563 · gcp/leela-zero. [2018-01-08]. (原始内容存档于2019-02-17) (英语). 
  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) (英语). 
  18. ^ leela-zero/COLAB.md at 05c5187faad02fd679373f3f9be30ae537ffe8d9 · leela-zero/leela-zero. 2018-04-24 [2019-04-06]. (原始内容存档于2019-04-25) (英语). 
  19. ^ Remove COLAB Readme. · leela-zero/leela-zero@a1a4af8. 2018-10-23 [2019-04-06]. (原始内容存档于2019-04-29) (英语). 
  20. ^ End of first training run - next steps. 2019-12-16 [2020-01-02]. (原始内容存档于2021-02-12) (英语). 
  21. ^ 21.0 21.1 tensorflow/minigo: An open-source implementation of the AlphaGoZero algorithm. [2018-02-02]. (原始内容存档于2020-11-09) (英语). 
  22. ^ Ideas from Minigo · Issue #785 · gcp/leela-zero. [2018-02-02]. (原始内容存档于2019-10-18) (英语). 
  23. ^ ELF | Game Research Platform | Facebook AI. [2018-05-06]. (原始内容存档于2018-05-06) (英语). 
  24. ^ Facebook open sources elf opengo · Issue #1311 · gcp/leela-zero. 2018-05-03 [2018-05-16]. (原始内容存档于2019-06-05) (英语). 
  25. ^ two best networks in ten hours, is it related with ELF games? · Issue #1362 · gcp/leela-zero. [2018-05-08]. (原始内容存档于2019-02-17) (英语). 
  26. ^ (CGOS) 19x19 Computer Go Server. [2017-12-20]. (原始内容存档于2017-12-22) (英语). 
  27. ^ Crosstable for LZ-d6f3a6-t1-p1600. 2018-02-09 [2018-02-25]. (原始内容存档于2020-07-10) (英语). 
  28. ^ Crosstable for LZ-000-p1600-t1-r1. [2018-02-25]. (原始内容存档于2018-03-15) (英语). 
  29. ^ 29.0 29.1 Crosstable for LZ-HBest1-t1-p1600. [2017-12-20]. (原始内容存档于2020-07-10) (英语). 
  30. ^ Version 0.10 released - Next steps · Issue #591 · gcp/leela-zero. [2018-01-14]. (原始内容存档于2019-10-18) (英语). 
  31. ^ Question: Is there a way to generate up to date ("stronger"?) weights.txt? · Issue #794 · gcp/leela-zero. [2018-02-02]. (原始内容存档于2019-02-17) (英语). 
  32. ^ LZ-HBest1-t1-p1600 -- human supervised learning network on CGOS : cbaduk. 2017-12-17 [2017-12-20]. (原始内容存档于2019-02-17) (英语). 
  33. ^ 33.0 33.1 33.2 33.3 33.4 33.5 33.6 19x19 All Time Ranks. [2018-02-02]. (原始内容存档于2018-01-17) (英语). 
  34. ^ Crosstable for LZH256x20-t4-nolim. 2018-02-19 [2018-03-14]. (原始内容存档于2020-07-10) (英语). 
  35. ^ Who's running bad LZ bots on CGOS? : cbaduk. [2018-01-05]. (原始内容存档于2019-02-17) (英语). 
  36. ^ Crosstable for LZ-c99f1a-t1-p1600. 2017-12-26 [2018-01-09]. (原始内容存档于2020-07-10) (英语). 
  37. ^ Crosstable for LZ-097dee-t1-p1600. 2017-12-31 [2018-01-01]. (原始内容存档于2020-07-10) (英语). 
  38. ^ Crosstable for LZ-c83e1b-t1-p1600. 2018-01-19 [2018-02-02]. (原始内容存档于2020-07-10) (英语). 
  39. ^ Crosstable for LZ-ed002c-t1-p1600. 2018-01-22 [2018-02-02]. (原始内容存档于2020-07-10) (英语). 
  40. ^ Crosstable for LZ-5773f4-t1-p1600. 2018-01-28 [2018-01-29]. (原始内容存档于2020-07-10) (英语). 
  41. ^ 腾讯围棋. [2018-03-09]. (原始内容存档于2018-03-08) (中文(中国大陆)). 
  42. ^ 贝瑞基因杯机机大战预赛战罢 绝艺五连胜出线. 2018-04-27 [2018-05-13]. (原始内容存档于2018-04-30) (中文(中国大陆)). 

注解

  1. ^ 目前的原始训练资料超过150 GB,故透过BitTorrent的方式提供下载。
  2. ^ 此时是使用5 blocks x 64 filters,从本来约每小时1500局,增加至约每小时3000局,大约多一倍的速度。
  3. ^ Hash值为1e2b85cf611d5ede3f8d77ddc56a7bd79a7f1e51a647ddea428b92c00fdf2612[30],偶而会以1e2b85cf出现在Test Matches的Network Hashes上[7]

外部链接