作者: lu01 时间: 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作者: lu01 时间: 2018-5-3 07:52
权重下载地址 https://github.com/pytorch/ELF/releases
代码可以在master下载作者: lu01 时间: 2018-5-3 08:00
以前公布的
黑暗森林中的光之精灵
田渊栋
田渊栋
人工智能、深度学习(Deep Learning) 话题的优秀回答者
这个框架前前后后做了半年左右,核心设计改了挺多次,最后收敛到现在这个版本。总的来说我对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会自动处理多线程同步的并返回一批次的内部状态——当然,即便没有源码,只要存在某种形式的接口,也是可以的。
PS: 这个框架的原名是LightELF,和之前的DarkForest合起来就是“飞舞在黑暗森林中的光之精灵”,就容我小小地文青一下。
编辑于 2017-07-08作者: lu01 时间: 2018-5-3 09:17 https://github.com/gcp/leela-zero/issues/1311
tian yuandong提到
这个就是cgos上的美国总统系列作者: lu01 时间: 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的最后期限。
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 并按照目前的速度进行数月的培训。
作者: lu01 时间: 2018-5-4 13:32
一个能读取elf权重的修改版客户端
leela_lizzie_elf
C:\leela_lizzie_elf>leelaz -w elf_converted_weights.txt
Using 2 thread(s).
RNG seed: 6481656193536936341
Leela Zero 0.13 Copyright (C) 2017-2018 Gian-Carlo Pascutto and contributors
This program comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions; see the COPYING file for details.