飞扬围棋论坛

 找回密码
 注册
搜索
查看: 37951|回复: 31

ELF OpenGo发布,据说比leelazero还强

[复制链接]
发表于 2018-5-3 05:14 来自手机 | 显示全部楼层 |阅读模式
本帖最后由 lu01 于 2018-5-9 14:58 编辑

翻译
检测到英语
中文(简体)

ELF OpenGo
ELF OpenGo是AlphaGoZero / AlphaZero的重新实现。 它在两周内接受了2,000个GPU的培训,并且取得了很高的性能。

“ELF OpenGo已经成功地与其他开源机器人和人类Go玩家对战,我们使用其默认设置并且没有思考,与LeelaZero(158603eb,2018年4月25日)一起赢得了200场比赛,这是最强大的公开可用的机器人。 我们还取得了世界排名前30的人类棋手中四个人的14胜0负的记录。“

“我们感谢LeelaZero团队的高质量工作,我们的希望是开源我们的机器人同样可以让像LeelaZero这样的社区活动受益”



Github:Https://Github.Com/pytorch/elf

回复

使用道具 举报

发表于 2018-5-3 21:06 | 显示全部楼层
玩玩人类的棋就很好了      再NB的话    让它们左右互博       管我们人类鸟事
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2018-5-3 15:17 | 显示全部楼层
每周一练 发表于 2018-5-3 12:29
怎么玩,有教程吗

很难编译,只能用utubu,我们还是先用leelaz


回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2018-5-3 05:16 来自手机 | 显示全部楼层
acebook open sources elf opengo #1311 @kityanhem kityanhem opened this issue about 2 hours ago  edited about 2 hours ago https://research.fb.com/facebook-open-sources-elf-opengo/  ELF OpenGo ELF OpenGo is a reimplementation of AlphaGoZero / AlphaZero. It was trained on 2,000 GPUs over a two week period, and has achieved high performance.  "ELF OpenGo has been successful playing against both other open source bots and human Go players. We played and won 200 games against LeelaZero (158603eb, Apr. 25, 2018), the strongest publicly available bot, using its default settings and no pondering. We also achieved a 14 win, 0 loss record against four of the top 30 world-ranked human Go players."  "We thank the LeelaZero team for their high quality work, and our hope is that open-sourcing our bot can similarly benefit community initiatives like LeelaZero"  Github: https://github.com/pytorch/elf
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-5-3 07:52 | 显示全部楼层
权重下载地址
https://github.com/pytorch/ELF/releases
代码可以在master下载
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-5-3 08:00 | 显示全部楼层
以前公布的
黑暗森林中的光之精灵
田渊栋
田渊栋
人工智能、深度学习(Deep Learning) 话题的优秀回答者

昨天晚上折腾到北京时间凌晨1点,终于完成了ELF开源的任务。这次开源获得了公司的支持,和代码一起公布的还有arXiv文章及公司的官方博客。国内的媒体真是快,我还没来得及写专栏,第二天早晨就看到机器之心的翻译了。

代码见:facebookresearch/ELF

文章见:An Extensive, Lightweight and Flexible Research Platform for Real-time Strategy Games

官方博客见:https://code.facebook.com/posts/ ... -for-game-research/

英文的个人博客:http://yuandongtian.blogspot.com/

ELF的核心思想是“让大家都能做得起深度强化学习的研究”,它给了一个从模拟器到优化算法的一篮子解决方案。通过一些工程上的技巧以降低计算资源的需求,增加程序的可读性,并且提供一个短小精悍的即时战略引擎用来给大家研究。框架的设计和代码,即时战略游戏引擎及文章的撰写由我完成;前端可视化代码,及夺旗和塔防两个游戏的设计和训练由龚渠成(Qucheng Gong)完成;@吴育昕 (Yuxin Wu)把Atari模拟器接入了ELF,并且进行了速度测试;商文龄(Wenling Shang)改进了神经网络结构,加入了LeakyReLU和Batch Normalization并提高了性能;最后Larry对这个项目提出了很多建议,并且帮忙修改了文章。

这个框架前前后后做了半年左右,核心设计改了挺多次,最后收敛到现在这个版本。总的来说我对ELF这个框架的设计还是比较满意的,用C++将许多并行的游戏线程和每个线程的历史数据封装进去,使得每次Python循环时都可以得到一批次的游戏状态,而不是某一个线程单独的游戏状态。这样接强化学习算法时,可以直接调用神经网络的前向/后向传递,而不需要手工在Python里面写多线程或者多进程的代码,这样就使得Python代码清晰可读并享有较高性能。ELF的训练用了PyTorch作为平台,PyTorch,训练算法及模型之间使用Python dict作为接口,这样对于任何一个模型或者算法而言,它只需要通过预先设好的键值,从dict里面读它想要的输入,然后生成它要生成的输出,而不必考虑其它部分的细节。这样就使得框架易读,且扩展性好。这样写还有一个好处,就是可以根据每个游戏线程的序号及其当前状态来采用不同的模型,这样就把蒙特卡罗树搜索(Monte-Carlo Tree Search),自我对弈(Self-Play)等等涉及到游戏状态和神经网络之间复杂互动关系的方法,统一在一起了。如果大家看过围棋引擎DarkForest的代码,可能会觉得分成两个独立程序来运行DF非常不方便,需要先打开一个程序用CPU来做树搜索,同时再打开一个程序用GPU来运行策略及值网络。现在在ELF框架下不需要了。这一部分的代码过一阵子也会开源。另外这个框架其实不仅仅限于游戏,任何一个虚拟环境,比如说物理引擎,比如说连续或者离散控制系统,只要有C/C++的源码,都可以整合进去,ELF会自动处理多线程同步的并返回一批次的内部状态——当然,即便没有源码,只要存在某种形式的接口,也是可以的。

在这个框架下面,我们实现了一个小巧的即时战略引擎,并写了一个简化版的一对一即时战略游戏(MiniRTS),还有夺旗和塔防两个扩展。MiniRTS虽然小,但是基本的采矿、造兵、造建筑、战争迷雾等游戏机制都有,各单位可以在地图上连续移动,并且每个单位有基本的避障及寻路功能。因为这个引擎是从头开始设计的,很多细节可以专为深度学习和强化学习的训练定制。在游戏的复杂性方面,仅仅花两周写出来的MiniRTS当然远不如大型团队开发几个月做出来的商业游戏,不过它胜在速度快占用资源少,并且可以扩展,对于测试一些新的研究思路会比较有帮助。速度是MiniRTS的强项,比如说在一台4核的Mac的笔记本上,运行游戏可以跑到每个核4万帧每秒。用12个CPU和1个GPU去测试训练出来的模型,跑一万局游戏仅需一分半钟。然后我们也提供了一个网页版的可视化工具,可以拿来看Replay,甚至和电脑AI玩一局。相比之下若是用星际等商业化游戏做研究,就需要动用大量资源,而且很多功能无法自行拓展。

在MiniRTS及夺旗和塔防三个游戏上,我们进一步做了强化学习的训练实验,用的是流行的Actor-Critic模型,但加了些off-policy的拓展。在训练MiniRTS时,我们没有加辅助奖励(比如说鼓励造坦克鼓励采矿等),而只告诉算法这一局结束后是赢是输。即时战略游戏的行动空间(action space)是非常广阔的,用现有的框架不太容易找到好的策略,所以这次先做比较简单的方法,把行动空间离散化为一些高层策略,比如说造农民,造兵,全军进攻及防守,等等。这样现有的强化学习方法就可以使用,并且得到了一些比较有趣的结果,能够以70%的胜率战胜我们自己写的基于规则的AI。

如果大家对强化学习和游戏AI有兴趣,这个框架会提供很大帮助,我这里就毫不谦虚地自卖自夸。希望大家喜欢。

PS: 这个框架的原名是LightELF,和之前的DarkForest合起来就是“飞舞在黑暗森林中的光之精灵”,就容我小小地文青一下。
编辑于 2017-07-08
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-5-3 09:17 | 显示全部楼层
https://github.com/gcp/leela-zero/issues/1311
tian yuandong提到
这个就是cgos上的美国总统系列
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-5-3 09:19 | 显示全部楼层
No worries. All bots with American president names are different version of our bots with 4800 rollouts on single GPU (V100). Sorry for keeping them to be secret for so long. We need to hit F8 deadline.

Update: should be 4800 rollouts instead of 6400.
====
别担心。 所有美国总统名字的机器人都是我们的机器人的不同版本,在单GPU(V100)上推出了4800个机器人。 抱歉让他们这么长时间保密。 我们需要达到F8的最后期限。

更新:应该是4800而不是6400。
回复 支持 反对

使用道具 举报

发表于 2018-5-3 11:13 | 显示全部楼层
 来源知乎:远东轶事

  我们最近改进了ELF框架,并且在上面实现了DeepMind的AlphaGoZero及AlphaZero的算法。用两千块GPU训练约两到三周后得到的围棋AI,基本上超过了强职业的水平。我们和韩国棋院合作进行了一次测试,给这个AI单卡每步50秒搜索时间(每步搜索8万个局面),给人类棋手任意长时间思考,结果AI以14比0完胜。参与测试的棋手包括金志锡,申真谞,朴永训及崔哲瀚,在这里我们非常感谢他们的合作,大家都很尽力,一些棋局下了三四个小时极其精彩。应棋手们的要求,这14局棋谱中的12局不久将公开。

  另外我们也和现在著名的LeelaZero比较了下。我们采用了LeelaZero除ponder外的缺省配置(约一分钟一步),及4月25日的公开权重(192x15, 158603eb),结果我们的AI以200比0获胜。在此我们非常感谢Leela团队的工作,对于他们的开源精神,我们表示由衷的敬意。

  这次我们将训练代码,测试代码及训练出来的模型(224x20)全部公开,首要目的是贯彻我们一直以来坚持的开源方针,让AI为全世界服务。其次是对于AlphaGoZero及AlphaZero这样非常优秀的算法,我们想要提供一个可重复的参考实现,让全球的研究者们能在这上面继续改进,充分发挥自己的创造力。最后是借此机会推广一下我们的ELF平台和PyTorch深度学习框架,希望更多的人能使用和完善它。

  代码见:https://github.com/pytorch/ELF

  模型见:pytorch/ELF

  英文blog见:https://research.fb.com/facebook-open-sources-elf-opengo/

  感谢大家的支持!

  田渊栋,龚渠成&马子嫯(Jerry Ma), Shubho Sengupta, 陈卓远,Larry Zitnick

(责编:樊璐璐)
回复 支持 反对

使用道具 举报

发表于 2018-5-3 12:29 | 显示全部楼层
怎么玩,有教程吗
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-5-3 15:18 | 显示全部楼层
挫伤了gcp的积极性


I think we should halt our training effort? We'll have to see about a better relative strength estimate, correcting for time, and perhaps cuDNN speedup, but the CGOS ratings look over a month old and suggest a few hundred of CGOS Elo, which is probably near a thousand self-play Elo and, at the current rate, several months of running our training.

It seems more wise to spend that time trying to make a conversion for the network weights and work from there. Additionally, the weights are probably strong enough that they are superhuman even on modest hardware, so maybe further hammering on 7.5 @ 19x19 is not the best use of resources.
=========
我认为我们应该停止我们的培训工作? 我们必须看到一个更好的相对强度估计值,校正时间,也许cuDNN加速,但CGOS评级看起来超过一个月,并建议几百个CGOS Elo,它可能接近一千个自我娱乐Elo 并按照目前的速度进行数月的培训。

花时间尝试为网络权重进行转换并从那里开展工作似乎更明智。 此外,权重可能足够强大,甚至在适度的硬件上也是超人类的,所以可能在7.5 @ 19x19上进一步敲击并不是资源的最佳利用。
回复 支持 反对

使用道具 举报

发表于 2018-5-3 22:49 | 显示全部楼层
lu01 发表于 2018-5-3 15:18
挫伤了gcp的积极性

应该作A卡和N卡的加速优化了,目前看做好加速优化,加大网络还是可能的。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-5-4 05:04 来自手机 | 显示全部楼层
本帖最后由 lu01 于 2018-5-9 14:59 编辑

你好,我们有新的运行结果。 我们从日志中验证LeelaZero正在使用50秒而没有提早停止。  ELF OpenGo赢得了198场比赛,LeelaZero赢得了2场比赛。 我们对我们的博客文章发布了更正。 此外,由于似乎需要大量游戏记录,我们让我们继续为您提供1000个ELF OpenGo vs. LeelaZero游戏记录的数据库。 这些记录将在明天上传。  到目前为止,LeelaZero每次平均使用73k部署(LeelaZero日志中的“播放”)。 和以前一样,ELF OpenGo每次移动使用80k。 我们假设速度差异主要是由两个相反的因素造成的:我们使用加速推理的fp16,以及我们较大的ResNet,这减慢了我们的推断。  我们感谢你们都如此迅速地提出了这个问题 - 这表明了这个社区的活力和奉献精神。 在我们重游我们的游戏时再次感谢您的支持!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-5-4 05:45 来自手机 | 显示全部楼层
科技频道 广告 观点 | Facebook田渊栋盛赞DeepMind最新围棋论文:方法干净标准,结果好 2017-10-20 08:05 机器之心 T大 原标题:观点 | Facebook田渊栋盛赞DeepMind最新围棋论文:方法干净标准,结果好 机器之心转载自知乎 作者:田渊栋 昨日,DeepMind 在《自然》杂志上发表了一篇论文,正式推出人工智能围棋程序AlphaGo Zero。这篇论文的发布引起了业内极大的关注与讨论。Facebook AI 研究员田渊栋在知乎上发布了一篇简短的文章,介绍了自己对这篇论文的看法。 老实说这篇 Nature 要比上一篇好很多,方法非常干净标准,结果非常好,以后肯定是经典文章了。  Policy network 和 value network 放在一起共享参数不是什么新鲜事了,基本上现在的强化学习算法都这样做了,包括我们这边拿了去年第一名的 Doom Bot,还有 ELF 里面为了训练微缩版星际而使用的网络设计。另外我记得之前他们已经反复提到用 Value network 对局面进行估值会更加稳定,所以最后用完全不用人工设计的 default policy rollout 也在情理之中。  让我非常吃惊的是仅仅用了四百九十万的自我对局,每步仅用 1600 的 MCTS rollout,Zero 就超过了去年三月份的水平。并且这些自我对局里有很大一部分是完全瞎走的。这个数字相当有意思。想一想围棋所有合法状态的数量级是 10^170,五百万局棋所能覆盖的状态数目也就是 10^9 这个数量级,这两个数之间的比例比宇宙中所有原子的总数还要多得多。仅仅用这些样本就能学得非常好,只能说明卷积神经网络(CNN)的结构非常顺应围棋的走法,说句形象的话,这就相当于看了大英百科全书的第一个字母就能猜出其所有的内容。用 ML 的语言来说,CNN 的 induction bias(模型的适用范围)极其适合围棋漂亮精致的规则,所以稍微给点样本水平就上去了。反观人类棋谱有很多不自然的地方,CNN 学得反而不快了。我们经常看见跑 KGS 或者 GoGoD 的时候,最后一两个百分点费老大的劲,也许最后那点时间完全是花费在过拟合奇怪的招法上。  如果这个推理是对的话,那么就有几点推断。一是对这个结果不能过分乐观。我们假设换一个问题(比如说 protein folding),神经网络不能很好拟合它而只能采用死记硬背的方法,那泛化能力就很弱,Self-play 就不会有效果。事实上这也正是以前围棋即使用 Self-play 都没有太大进展的原因,大家用手调特征加上线性分类器,模型不对路,就学不到太好的东西。一句话,重点不在左右互搏,重点在模型对路。  二是或许卷积神经网络(CNN)系列算法在围棋上的成功,不是因为它达到了围棋之神的水平,而是因为人类棋手也是用 CNN 的方式去学棋去下棋,于是在同样的道路上,或者说同样的 induction bias 下,计算机跑得比人类全体都快得多。假设有某种外星生物用 RNN 的方式学棋,换一种 induction bias,那它可能找到另一种(可能更强的)下棋方式。Zero 用 CNN 及 ResNet 的框架在自学习过程中和人类世界中围棋的演化有大量的相似点,在侧面上印证了这个思路。在这点上来说,说穷尽了围棋肯定是还早。  三就是更证明了在理论上理解深度学习算法的重要性。对于人类直觉能触及到的问题,机器通过采用有相同或者相似的 induction bias 结构的模型,可以去解决。但是人不知道它是如何做到的,所以除了反复尝试之外,人并不知道如何针对新问题的关键特性去改进它。如果能在理论上定量地理解深度学习在不同的数据分布上如何工作,那么我相信到那时我们回头看来,针对什么问题,什么数据,用什么结构的模型会是很容易的事情。我坚信数据的结构是解开深度学习神奇效果的钥匙。  另外推测一下为什么要用 MCTS 而不用强化学习的其它方法(我不是 DM 的人,所以肯定只能推测了)。MCTS 其实是在线规划(online planning)的一种,从当前局面出发,以非参数方式估计局部 Q 函数,然后用局部 Q 函数估计去决定下一次 rollout 要怎么走。既然是规划,MCTS 的限制就是得要知道环境的全部信息,及有完美的前向模型(forward model),这样才能知道走完一步后是什么状态。围棋因为规则固定,状态清晰,有完美快速的前向模型,所以 MCTS 是个好的选择。但要是用在 Atari 上的话,就得要在训练算法中内置一个 Atari 模拟器,或者去学习一个前向模型(forward model),相比 actor-critic 或者 policy gradient 可以用当前状态路径就地取材,要麻烦得多。但如果能放进去那一定是好的,像 Atari 这样的游戏,要是大家用 MCTS 我觉得可能不用学 policy 直接当场 planning 就会有很好的效果。很多文章都没比,因为比了就不好玩了。  另外,这篇文章看起来实现的难度和所需要的计算资源都比上一篇少很多,我相信过不了多久就会有人重复出来,到时候应该会有更多的 insight。大家期待一下吧。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-5-4 05:58 来自手机 | 显示全部楼层
与韩国职业高手对局 https://github.com/pytorch/ELF/releases
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|Archiver|手机版|飞扬围棋网 ( 苏ICP备11029047号-1 )

GMT+8, 2024-3-29 06:44 , Processed in 0.259187 second(s), 21 queries .

since 2003飞扬围棋论坛 Licensed

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表