TensorFlow发布开源围棋AI
简介
TensorFlow官方已在其GitHub主页上发布了开源围棋AI代码!
Minigo:基于TensorFlow的围棋AI
该围棋AI引擎名为Minigo,采用神经网络算法,使用Python语言和TensorFlow框架实现。
受AlphaGo启发但不隶属于DeepMind
Minigo虽受DeepMind AlphaGo算法启发,但TensorFlow官方一再强调此项目不属于DeepMind,也非正式AlphaGo项目。
特点
提供清晰的学习範本,可使用TensorFlow、Kubernetes和Google Cloud Platform构建硬件加速增强学习管道。
尽可能重现原始DeepMind AlphaGo论文方法,采用开放流程工具和实现。
公开数据、结果和发现,以造福围棋、机器学习和Kubernetes社区。
目标与理念
该项目有一个明确的愿景:创建一个具有竞争力的围棋项目,甚至可能成为顶级围棋算法。团队致力于创建易于理解的实用指南,即使会影响效率和速度,也希望对社区有所帮助。
对于使用强大的围棋模型的开发者来说,该项目旨在提供一个易于理解的Python平台,以扩展和适应其他项目任务。
教程
训练模型:请参阅 RESULTS.md。
贡献代码:请参阅 CONTRIBUTING.md。
安装要求
virtualenv / virtualenvwrapper
Python 3.5+
Docker
Cloud SDK
安装指南
创建虚拟环境
1. 使用 pip3 install virtualenv 和 pip3 install virtualenvwrapper 安装virtualenv和virtualenvwrapper。
2. 创建一个新的虚拟环境并激活它。
安装TensorFlow
使用GPU:

pip3 install -r requirements-gpu.txt

(确保已安装CUDA 8.0)
不使用GPU:

pip3 uninstall tensorflow-gpu
pip3 install tensorflow

pip3 install -r requirements-cpu.txt

创建服务器
可能需要云服务器。
设置 PROJECT=foo-project。
运行 source cluster/common.sh 以设置环境变量。
运行单元测试

BOARD_SIZE=9 python3 -m unittest discover tests

使用模型
确保已与Google云端硬盘(作为远程文件系统)或本地文件系统兼容。
设置 BUCKET_NAME 参数并验证Google云登录。
复制最新模型到本地目录(例如,MINIGO_MODELS)。
启动围棋对局:

python rl_loop.py selfplay —readouts=$READOUTS -v 2

使用GTP协议与围棋AI交互:

Latest model should look like: /path/to/models/000123-something
LATEST_MODEL=$(ls -d $MINIGO_MODELS/ | tail -1 | cut -f 1 -d ‘.’)
BOARD_SIZE=19 python3 main.py gtp -l $LATEST_MODEL -r $READOUTS -v 3

交互命令

genmove [color] 请求引擎为一方生成走法

play [color] [coordinate] 通知引擎在 [coordinate] 为 [color] 方落子

showboard 请求引擎输出棋盘。

一个运行GTP的方法是使用具备GTP兼容GUI的gogui-display。

可在http://gogui.sourceforge.net/下载Gogui工具。

以下是利用GTP的一些有趣方法。

gogui-twogtp -black ‘python3 main.py gtp -l gs://$BUCKET_NAME/models/000000-bootstrap’ -white ‘gogui-display’ -size 19 -komi 7.5 -verbose -auto

另一个方法是让Minigo和GnuGo对战。

BLACK=”gnugo —mode gtp”

WHITE=”python3 main.py gtp -l path/to/model”

TWOGTP=”gogui-twogtp -black \”WHITE\” -games 10 \

-size 19 -alternate -sgffile gnugo”

gogui -size 19 -program “$TWOGTP” -computer-both -auto

概述

按照以下指令进行操作,可构建AlphaGo Zero在9×9围棋上的迭代。基本指令与构建前面提到的模型相关。

指令包括:

  • 初始化模型

  • 自我对弈:使用最新模型进行自我对弈,生成可用于训练的数据

  • 收集:将同一模型生成的数据文件合并到训练数据中

  • 训练:使用多代自我对弈结果训练新模型

初始化

该步指令将创建模型,存储于 gs://MODEL_NAME(.index|.meta|.data-00000-of-00001)

export MODEL_NAME=000000-bootstrap

python3 main.py bootstrap gs://MODEL_NAME

自我对弈

此步骤指令输出原始对战数据,兼容TensorFlow格式和SGF目录。

gs://MODEL_NAME/local_worker/.tfrecord.zz

gs://MODEL_NAME/local_worker/.sgf

python3 main.py selfplay gs://MODEL_NAME \

-readouts 10 \

-v 3 \

—output-dir=gs:/MODEL_NAME/local_worker \

—output-sgf=gs://MODEL_NAME/local_worker

收集

python3 main.py gather

此指令将众多(可能只有几KB大小的)tfrecord.zz文件组合为小于100MB的tfrecord.zz文件。

按照模型编号收集数据,以便将同一模型生成的数据聚合在一起。默认情况下,目录中的文件名将在前后加上环境变量 BUCKET_NAME 的前缀。

gs://MODEL_NAME-{chunk_number}.tfrecord.zz

gs://$BUCKET_NAME/data/training_chunks/meta.txt

该文件用于查看正在处理的游戏。

python3 main.py gather \

—input-directory=gs:/BUCKET_NAME/data/training_chunks

训练

该步骤指令将训练最近50个模型,从最新模型权重训练新模型。

运行训练任务:

python3 main.py train gs://BUCKET_NAME/models/000001-somename \

—load-file=gs://$BUCKET_NAME/models/000000-bootstrap \

—generation-num=1 \

—logdir=path/to/tensorboard/logs \

将保存更新后的模型权重。

(待完成:设置基于global_step的本地检查点,以便随时恢复)

请按步骤参考TensorBoard训练指南。首次运行后即可覆盖先前的,例如:logs/my_training_run、logs/my_training_run2。

tensorboard —logdir=path/to/tensorboard/logs/

有关更多信息,请参阅cluster/README.md!

开源代码地址:

https://github.com/tensorflow/minigo

— 完 —

招聘信息

量子位现正招募编辑/记者,工作地点在北京中关村。欢迎才华横溢、热情而有担当的人才加入我们!详情请咨询量子位公众号(QbitAI)对话页,回复“招聘”二字。

量子位 QbitAI · 头条号签约作者

վ’ᴗ’ ի 追踪AI技术和产品新动态