KataGo

圍棋軟件

KataGo是由David J. Wu(lightvector)所研究并开发的一套围棋软件

KataGo
原作者David J. Wu[1]
开发者David J. Wu
首次发布2019年2月27日,​5年前​(2019-02-27[2]
当前版本
  • 1.15.3(2024年8月6日;稳定版本)[3]
编辑维基数据链接
源代码库github.com/lightvector/KataGo
编程语言C++Python
类型电脑围棋
许可协议MIT许可证
网站github.com/lightvector/KataGo
KataGo Server
原作者David J. Wu and Tycho Tatitscheff[4]
开发者David J. Wu and Tycho Tatitscheff
首次发布2020年11月8日,​4年前​(2020-11-08[5]
源代码库github.com/katago/katago-server
编程语言Python
类型电脑围棋
许可协议MIT许可证
网站katagotraining.org

简介

KataGo是David J. Wu依照DeepMindAlphaGo ZeroAlphaZero论文为基础[6],以及许多在DeepMind论文之后的相关研究及原创的研究,大幅改善了训练速度(超过50倍[7]:1[1],也因此搭配所发布训练网络资料,成为目前世界上最强的电脑围棋软件之一。

KataGo所实做的电脑围棋程序包括了[1]

  • 自我对弈训练的程序(使用C++Python 3与TensorFlow实做)
  • 可以透过软体操作的GTP引擎(使用C++实做)

另外由Jane Street Capital英语Jane Street Capital(作者所在的公司)提供运算所需资源外,也公开发布训练的成果(训练网络资料)[1]

KataGo因丰富的分析能力,被用在围棋在线分析网站AI Sensei作为默认的分析引擎[8]

“KataGo”这个名字来源于日语单词“かた (kata)”(类型[9]。目前,即使在英语中,武道的形式也被称为“kata”。作者 lightvector (David J. Wu) 表示,它作为一个通过强化学习永久训练自己并旨在完成自己的形式的人工智能的名称似乎是合理的。

差异

AlphaZero

除了开放源代码与开放资料以外,KataGo与AlphaZero主要差异在于透过研究大幅降低了初期自我训练的成本[7],使得一般家用的高阶电脑可以在数天内,从零训练出一个具有中高段水准的业余高手水准的训练网络[1]

Leela Zero

KataGo与Leela Zero的主要差异在于,KataGo的GTP引擎支持了kata-analyze指令,可以让前端的程序(像是Lizzie)获取KataGo的目数分析,这可以辅助人类棋手判断,减轻让子棋中黑棋不会下出最好的选择的问题[1]

另外一个差异是KataGo同时支持OpenCL(自v1.2支持[10])与CUDA[1](在OpenCL上,最新版本做了优化,不再是CUDA版本快数倍,而是两个版本相差无几),但Leela Zero只支持OpenCL[11]

强度

第一个版本

第一个版本(编号g65,v1.0)是在2019年二月使用35颗NVIDIA Tesla V100训练7天,从6 blocks x 96 filters训练到15 blocks x 192 filters[12],棋力大约与LZ130(Leela Zero的第130代)相符[13],大约是超越人类的强度[1]

权重代号 版本 注解 训练长度(天) Elo
b6c96-s103408384-d26419149 v1.0 6x96权重 - -
b10c128-s101899520-d60734663 10x128权重 - -
b15c192-s279618816-d164990022 15x192权重 - -

第二个版本

第二个版本(编号g104,v1.1)是在2019年五月与六月使用28颗NVIDIA Tesla V100训练,从6 blocks x 96 filters训练到20 blocks x 256 filters[14],由于大幅改善了超参数(hyperparameters),只使用了3.5天就超越第一版的棋力[1][15],另外引入了LCB(英语:Lower confidence bound)大幅提升了棋力[15]。最后训练了19天产生出20 blocks的版本,棋力超越了LZ-ELFv2(ELF OpenGo的v2权重配上Leela Zero的程序),另外与Leela Zero 40 blocks版本的比较,大约落在LZ200的棋力[1]

权重代号 版本 注解 训练长度(天) Elo
g104-b6c96-s97778688-d23397744 v1.1 最后一个6x96权重 0.75 -1146
g104-b10c128-s110887936-d54937276 最后一个10x128权重 1.75 -476
g104-b15c192-s297383936-d140330251 最后一个15x192权重 7.5 327
g104-b20c256-s447913472-d241840887 最后一个20x256权重 19 908

第三个版本

第三个版本的训练一开始使用29个GPU,到第14天后增加为37个GPU,再24天后(38天)增加为47个GPU[1]

自v1.5.0[16]开始支持纯CPU运算(使用Eigen英语Eigen (C++ library)函数库)。并自v1.8.0版开始支持分布式训练,允许全球的用户一起训练权重。

权重代号 版本 注解 训练长度(天) Elo
g170-b6c96-s175395328-d26788732 最后一个6x96的权重 0.75 -1184
g170-b10c128-s197428736-d67404019 最后一个10x128的权重 1.75 -280
g170e-b10c128-s1141046784-d204142634 v1.3 延伸再训练10x128的权重 - 300
g170-b20c256x2-s668214784-d222255714 20x256的权重 15.5 959
g170-b15c192-s497233664-d149638345 15x192的权重 7.5 512
g170-b20c256x2-s1039565568-d285739972 v1.3.1 20x256的权重 21.5 1073
g170e-b15c192-s1305382144-d335919935 v1.3.1-nets 延伸训练15x192的权重 - 867
g170-b20c256x2-s1420141824-d350969033 20x256的权重 27.5 1176
g170e-b15c192-s1672170752-d466197061 v1.3.2 延伸训练15x192的权重 - 935
g170-b20c256x2-s1913382912-d435450331 20x256的权重 35.5 1269
g170-b20c256x2-s2107843328-d468617949 20x256的权重 38.5 1293
g170e-b20c256x2-s2430231552-d525879064 v1.3.3 20x256的权重 47.5 1346
g170-b30c320x2-s1287828224-d525929064 30x320的权重 47.5 1412
g170-b40c256x2-s1349368064-d524332537 40x256的权重 47 1406
g170e-b20c256x2-s2971705856-d633407024 v1.3.3-nets 20x256的权重 64.5 1413
g170-b30c320x2-s1840604672-d633482024 30x320的权重 1524
g170-b40c256x2-s1929311744-d633132024 40x256的权重 1510
g170e-b20c256x2-s3354994176-d716845198 v1.3.4 20x256的权重 78 1455
g170-b30c320x2-s2271129088-d716970897 30x320的权重 1551
g170-b40c256x2-s2383550464-d716628997 40x256的权重 1554
g170e-b20c256x2-s3761649408-d809581368 v1.3.5-nets 20x256的权重 92 1513
g170-b30c320x2-s2846858752-d829865719 30x320的权重 96 1619
g170-b40c256x2-s2990766336-d830712531 40x256的权重 1613
g170e-b20c256x2-s4384473088-d968438914 v1.4.0 20x256的权重 117 1529
g170-b30c320x2-s3530176512-d968463914 30x320的权重 1643
g170-b40c256x2-s3708042240-d967973220 40x256的权重 1687
g170e-b20c256x2-s4667204096-d1045479207 20x256的权重(实验性) 129 1561
g170-b30c320x2-s3910534144-d1045712926 30x320的权重(实验性) 1651
g170-b40c256x2-s4120339456-d1045882697 40x256的权重(实验性) 1698
g170e-b20c256x2-s4842585088-d1091433838 20x256的权重(实验性) 136.5 1547
g170-b30c320x2-s4141693952-d1091071549 30x320的权重(实验性) 1653
g170-b40c256x2-s4368856832-d1091190099 40x256的权重(实验性) 1680
g170e-b20c256x2-s5055114240-d1149032340 v1.4.2-nets 20x256的权重(实验性[注 1] 145.5 1539
g170-b30c320x2-s4432082944-d1149895217 30x320的权重(实验性[注 1] 1648
g170-b40c256x2-s4679779328-d1149909226 40x256的权重(实验性[注 1] 1690
g170e-b20c256x2-s5132547840-d1177695086 20x256的权重 150 1577
g170-b30c320x2-s4574191104-d1178681586 30x320的权重 1759
g170-b40c256x2-s4833666560-d1179059206 40x256的权重 1788
g170e-b20c256x2-s5303129600-d1228401921 v1.4.5 20x256的权重 157 1645
g170-b30c320x2-s4824661760-d1229536699 30x320的权重 1908
g170-b40c256x2-s5095420928-d1229425124 40x256的权重 1919

相关链接

参考资料

  1. ^ 1.00 1.01 1.02 1.03 1.04 1.05 1.06 1.07 1.08 1.09 1.10 lightvector. GTP engine and self-play learning in Go. GitHub. lightvector/KataGo. [2020-01-01]. (原始内容存档于2021-01-14) (英语). 
  2. ^ lightvector. TensorRT Backend, Many Minor Improvements. GitHub. lightvector/KataGo. [2020-01-01]. (原始内容存档于2021-01-26) (英语). 
  3. ^ Release 1.15.3. 2024年8月6日 [2024年8月22日]. 
  4. ^ lightvector. katago/katago-server. GitHub. [2021-01-14]. (原始内容存档于2020-11-19). 
  5. ^ lightvector. v0.1. GitHub. katago/katago-server. 2020-11-08 [2021-01-14]. (原始内容存档于2020-11-19) (英语). 
  6. ^ David Wu. Accelerating Self-Play Learning in Go. TECH BLOG. Jane Street. 2019-02-28 [2020-01-01]. (原始内容存档于2020-11-07) (英语). 
  7. ^ 7.0 7.1 David J. Wu. Accelerating Self-Play Learning in Go. 2020-11-09. arXiv:1902.10565v4  [cs.LG]. 
  8. ^ bsteuber. Analyze with a fixed visit number?. GitHub. lightvector/KataGo. 2019-12-19 [2022-01-09]. (原始内容存档于2020-10-30) (英语). 
  9. ^ lightvector. The Name of KataGo. GitHub. lightvector/KataGo. 2020-08-27 [2022-01-09]. (原始内容存档于2022-01-09) (英语). 
  10. ^ lightvector. OpenCL, Windows Support, other features and fixes. GitHub. lightvector/KataGo. 2019-07-21 [2020-05-12]. (原始内容存档于2020-10-30) (英语). 
  11. ^ MaxVanDijck. Go engine with no human-provided knowledge, modeled after the AlphaGo Zero paper.. GitHub. leela-zero/leela-zero. [2020-01-02]. (原始内容存档于2021-01-06) (英语). 
  12. ^ katago-public/g65/models. [2020-01-01]. (原始内容存档于2020-01-01). 
  13. ^ lightvector. Initial release. GitHub. lightvector/KataGo. 2019-02-27 [2020-01-14]. (原始内容存档于2020-10-30) (英语). 
  14. ^ katago-public/g104/models. [2020-01-01]. (原始内容存档于2020-01-01). 
  15. ^ 15.0 15.1 lightvector. Strong Neural Net, LCB, and many bugfixes. GitHub. lightvector/KataGo. 2019-06-18 [2020-01-14]. (原始内容存档于2020-10-30) (英语). 
  16. ^ lightvector. OpenCL FP16 Tensor Core Support. GitHub. lightvector/KataGo. 2020-08-03 [2020-08-26]. (原始内容存档于2020-10-30) (英语). 
  17. ^ lightvector. Experimental Neural Nets. GitHub. lightvector/KataGo. 2020-06-06 [2020-06-07]. (原始内容存档于2020-10-30) (英语). 

注解

  1. ^ 1.0 1.1 1.2 实验性质,加入了人类的棋谱,未必会比v1.4.0所提供的网络强。[17]

外部链接