这个项目受到alpha go zero的启发,旨在训练一个中等人类水平或高于中等人类水平的深度神经网络,来完成下中国象棋的任务。目前这个项目仍在积极开发中,并且仍然没有完成全部的开发,欢迎pull request 或者star。 然而受到计算资源限制,这样庞大的任务不可能在一台机器上完成训练,这也是我完成了分布式训练代码的原因,希望各位小伙伴能够加入,一起训练这样一个中国象棋alpha go的网络。
我的估计是达到4000~5000elo分数的时候深度网络可以达到目标,现在深度网络已经到了3000分的边缘,达到人类中上水平的目标并不是不可能的。
目前的elo:
详细胜率表:
当然,目前棋力还比较一般,因为是从完全随机开始训练的,比方说某个对局片段(800 playouts):
目前我们的集群已经有四台gpu机器(两台windows,两台linux)在夜以继日地运行,我们需要更多,如果你恰好有北邮机房内闲置的gpu服务器的权限,希望你加入我们,一起训练中国象棋的alpha go zero。
集群分为master和slave,加入集群的机器均为slave,master和slave分工如下:
如果你想要加入我们的训练:
clone工程后在cmd中执行下面命令
cd script
./multithread_start.bat [thread_number] [gpu_core] [python_env]
比如:
./multithread_start.bat 10 0 python3
意味着在0号GPU上用python3环境跑10个进程(一般一个1080ti GPU可以支持到至多24个进程),然而GPU并不是唯一瓶颈,不推荐跑超过物理核数两倍的进程数量。
clone工程后在shell中执行
cd script
比如:
sh multithread_start.sh -t 10 -g 0 -p python3
意味着在0号GPU上用python3环境跑10个进程(与上面windows版本对应)
总之,如果想要加入集群,请先联系我,因为如果直接加入集群,可能会有我这边代码更新了然后部分slave没更新的情况,这样会造成不一致,后果会不可知。
如果你在北邮没有机器,然而在校外有一些机器,希望能跑起来这样一个分布式程序,那么请按照下面的步骤做:
config/conf.py
这个文件,把server的ip改成你希望的master的ipcd scripts
运行 initize_weight.py
生成第一份随机权重cd distribute
运行 distributed_server.py
开启master服务端口slave机器运行出来的棋谱在 data/distributed
目录下,是cbf文件,可以通过"象棋桥"软件查看,也可以在 ipynbs/see_gameplay.ipynb
中查看
master 机器可以在ipynbs/elo_graph.ipynb
中查看集群训练的模型的elo到什么水平了。
还有挺多东西可以做的,工程也还在快速开发,比如:
2.长将和长捉的判断还没有做
等等等等 如果你发现有你想做的,提提pull request或者联系我撒
这个work的一些细节已经以草稿的形式发布在了: http://icybee.cn/article/69.html
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
1. 开源生态
2. 协作、人、软件
3. 评估模型