1 Star 0 Fork 53

BOSS男主角 / icyChessZero

forked from icybee / icyChessZero 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MIT

icyChessZero 中国象棋alpha zero

这个项目受到alpha go zero的启发,旨在训练一个中等人类水平或高于中等人类水平的深度神经网络,来完成下中国象棋的任务。目前这个项目仍在积极开发中,并且仍然没有完成全部的开发,欢迎pull request 或者star。 然而受到计算资源限制,这样庞大的任务不可能在一台机器上完成训练,这也是我完成了分布式训练代码的原因,希望各位小伙伴能够加入,一起训练这样一个中国象棋alpha go的网络。

我的估计是达到4000~5000elo分数的时候深度网络可以达到目标,现在深度网络已经到了3000分的边缘,达到人类中上水平的目标并不是不可能的。

目前的elo:

elo

详细胜率表:

table

当然,目前棋力还比较一般,因为是从完全随机开始训练的,比方说某个对局片段(800 playouts):

demo

推荐代码运行环境

  • python==3.6.0
  • tensorflow==1.4.0
  • threadpool==1.3.2
  • xmltodict==0.11.0
  • urllib3==1.22
  • numpy==1.14.3
  • tflearn==0.3.2
  • pandas==0.19.2
  • scipy==1.1.0
  • matplotlib==2.0.0
  • tqdm==4.19.4
  • tornado==4.5.1(集群master必须安装,slave不需要)
  • uvloop==0.9.1(windows可不装)

推荐机器环境

  • 机器在北京邮电大学机房中(不加入我们的集群或者自组集群可以不管这条)
  • windows 或 linux服务器
  • 16G以上内存
  • 4个以上CPU物理核
  • 一张以上能够进行深度学习运算的显卡

加入我们的集群训练(北邮校内only)

目前我们的集群已经有四台gpu机器(两台windows,两台linux)在夜以继日地运行,我们需要更多,如果你恰好有北邮机房内闲置的gpu服务器的权限,希望你加入我们,一起训练中国象棋的alpha go zero。

集群分为master和slave,加入集群的机器均为slave,master和slave分工如下:

  • slave : 负责自动从master拉取最新模型权重,完成自对弈,并且把棋谱自动上传到master
  • master: 负责给slave提供权重,并且负责模型的更新,评估,以及从slave接收棋谱

如果你想要加入我们的训练:

  1. 首先联系我 qq/微信: 892009517 ;邮箱:icybee@yeah.net, 由于项目仍然在快速迭代,所以经常需要更新代码,与我联系获得最新的消息或代码更新的时间很必要。
  2. 如果你实在不想联系我,那么可以进行如下操作,直接加入集群(不推荐):

windows 机器加入集群(北邮校内only)

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并不是唯一瓶颈,不推荐跑超过物理核数两倍的进程数量。

linux 机器加入集群(北邮校内only)

clone工程后在shell中执行

cd script

比如:

sh multithread_start.sh -t 10 -g 0 -p python3 

意味着在0号GPU上用python3环境跑10个进程(与上面windows版本对应)

总之

总之,如果想要加入集群,请先联系我,因为如果直接加入集群,可能会有我这边代码更新了然后部分slave没更新的情况,这样会造成不一致,后果会不可知。

自组集群

如果你在北邮没有机器,然而在校外有一些机器,希望能跑起来这样一个分布式程序,那么请按照下面的步骤做:

  1. 确定你要这么做,这是一个耗时,昂贵,不讨好,但是有点意思的工作
  2. 推荐你的机器(们)的环境满足推荐配置,并且安装好应该装的包
  3. master 机器一定要是linux(目前没有支持master也是windows)
  4. fork一份icyChessZero的代码,找到 config/conf.py 这个文件,把server的ip改成你希望的master的ip
  5. master 和slave分别clone这份fork的代码
  6. 在master上cd scripts运行 initize_weight.py 生成第一份随机权重
  7. 在master上cd distribute运行 distributed_server.py开启master服务端口
  8. 在slave机器上起slave进程的方法同上文"加入集群"
  9. master上如果有空闲的资源可以起几个slave进程
  10. 模型更新和validate的方法在scripts/daily_update.sh中,按照你的需求改这个shell文件,并且把它放到crontab中设置为每小时运行一次(它会检查棋谱数量,数量足够后它会执行模型更新和评估工作)

查看棋谱

slave机器运行出来的棋谱在 data/distributed 目录下,是cbf文件,可以通过"象棋桥"软件查看,也可以在 ipynbs/see_gameplay.ipynb 中查看

查看训练状态

master 机器可以在ipynbs/elo_graph.ipynb 中查看集群训练的模型的elo到什么水平了。

没做的事

还有挺多东西可以做的,工程也还在快速开发,比如:

  1. 给棋谱加上一些meta,比如每一步的mcts分析,方便查个别case

2.长将和长捉的判断还没有做

  1. 给代码加上版本限制,master只接受与自己版本相同的slave的棋谱
  2. 专门搞一个web ui实时展示elo和棋谱等
  3. readme写清楚模块划分 .....

等等等等 如果你发现有你想做的,提提pull request或者联系我撒

这个work的一些细节已经以草稿的形式发布在了: http://icybee.cn/article/69.html

联系方式:

MIT License Copyright (c) 2018 icybee Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

简介

一个旨在把alpha go算法运用在中国象棋上的项目 展开 收起
Python
MIT
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
Python
1
https://gitee.com/KillBugX/icyChessZero.git
git@gitee.com:KillBugX/icyChessZero.git
KillBugX
icyChessZero
icyChessZero
master

搜索帮助

14c37bed 8189591 565d56ea 8189591