PhoenixGo是腾讯微信翻译团队开发的人工智能围棋程序,旨在学习人工智能前沿技术。从1月底开始,PhoenixGo以BensonDarr(昵称「金毛」)的名义在腾讯野狐围棋平台上和全球顶尖职业棋手、围棋爱好者及各路围棋AI对弈,在4月底取得了200多连胜,并在福州2018人工智能围棋大赛上夺冠,引起了行业内广泛关注。
外文名:
PhoenixGo 
又称:
凤凰围棋
类别:
计算机软件
开发公司:
腾讯

 目录

简介

PhoenixGo是由腾讯公司的微信翻译团队依照DeepMind在科学期刊《自然》上对于AlphaGo Zero所发表的论文《Mastering the game of Go without human knowledge》所实做出的开源计算机围棋程序。也就是不使用人类棋谱与累积的围棋知识,仅实做围棋规则,使用单一类神经网络从自我对弈中学习(不像AlphaGo以人类角度思考,设计了Policy Network与Value Network)。
团队除了以BSD许可证发布可供对弈的代码以外,另外发布了20 blocks的训练数据供下载,但由于未放出训练代码或完整的原始训练数据(如棋谱)。但开放的20 blocks版本棋力相较于比赛版本弱不少,且使用不同的架构,相较于同时间开源且开放训练数据的其他软件(主要是Facebook的ELF OpenGo),社区可重复利用的资源较少。因其之前在野狐围棋所使用的账号名称金毛测试与金毛陪练,故昵称为“金毛”。
PhoenixGo曾经以多个账号在同集团的野狐围棋上对弈:
账号金毛测试以单片NVIDIA Tesla P40进行对弈,胜率在90%以上,并行为10段账号。
PhoenixGo在2018年3月以cronus为名在CGOS上对弈,其中cronus_v0.1.3是CGOS至2018年5月12日排名最高的对弈程序,BayesElo约4270分。
PhoenixGo在2018年4月以“凤凰围棋”身份参赛,并以全胜战绩获取冠军。

PhoenixGo 开源

一个好的围棋 AI,需要算法、工程实现、计算资源三者结合。当前围棋 AI 已经有了优秀的公开算法,但同时拥有良好工程实现和大量计算资源,并不是一件容易的事。
为了让行业内其他研究者可以在此基础上继续探索围棋 AI 的奥秘,帮助棋手更方便地研究围棋 AI 的棋路,也为了众多围棋爱好者在家用普通电脑上可以享受和职业九段交锋的乐趣,微信团队决定对外开源 PhoenixGo 对弈源码和训练模型。
经过了一周多时间的筹备,PhoenixGo 正式开源了对弈源码和一个 20 block 的模型。这份源码和模型可以在单块 GPU 上提供强职业棋手的棋力,在单机多卡和多机多卡的系统上具有远超人类棋手的水平。PhoenixGo 在野狐围棋平台上的账号「金毛测试」,运行于 1 块性能与 GTX 1080 Ti 性能接近的 Tesla P40 上,对人类棋手具有非常高的胜率。
项目地址:https://github.com/Tencent/PhoenixGo
开源内容包括:
分布式 MCTS 对弈程序源码,支持 GTP 协议
当前支持 Linux 和 Windows 平台。

构建和运行

Linux

配置要求:
支持 C++11 的 GCC;
构建:复制库,并进行构建配置。
./configure 将询问 CUDA 和 TensorRT 的安装位置,如果必要指定二者的位置。
然后使用 bazel 进行构建:
TensorFlow 等依赖项将会自动下载。构建过程可能需要很长时间。
运行:
下载和提取训练好的网络:
以 gtp 模式运行,使用配置文件(取决于 GPU 的数量和是否使用 TensorRT):
该引擎支持 GTP 协议,这意味着它可以和具备 GTP 能力的 GUI 一起使用,如 Sabaki。
--logtostderr 使 mcts_main 向 stderr 写入日志消息,如果你想将消息写入文件,将 --logtostderr 改成 --log_dir={log_dir} 即可。
分布模式:
如果不同的机器上有 GPU,PhoenixGo 支持分布式 worker。
构建分布式 worker:
在分布式 worker 上运行 dist_zero_model_server,每个 worker 对应一个 GPU:
在 config 文件中填充 worker 的 ip:port(etc/mcts_dist.conf 是 32 个 worker 的配置示例),并运行分布式 master:

macOS 上

注意:TensorFlow 在 1.2.0 版本之后停止支持 macOS 上的 GPU,因此在 macOS 上的操作只能在 CPU 上运行。
要求和构建同 Linux一样。
运行:
首先添加libtensorflow_framework.so 到LD_LIBRARY_PATH 中:

配置指南

以下是 config 文件中的一些重要选项:
num_eval_threads:应与 GPU 的数量一致;
分布模式的选项:
enable_dist:启动分布模式;
async 分布模式的选项:
Async 模式是在有大量分布式 worker 的时候使用的(多余 200),而在 sync 模式中需要过多的 eval 线程和搜索线程。
etc/mcts_async_dist.conf 是 256 个 worker 模式的 config 示例。
enable_async:开启 async 模式
参看 mcts/mcts_config.proto 更详细的了解 config 选项。
命令行选项:
mcts_main 接受以下命令行选项:
--config_path:配置文件路径;
Glog 选项还支持:
--logtostderr:向 stderr 写入日志消息;
mcts_main --help 支持更多命令行选项。

相关介绍

2016年3月,在韩国首尔四季酒店的那一周里,AlphaGo与李世石的人机大战,让围棋和人工智能成为全世界的焦点。在之后的两年间,除了AlphaGo,还涌现出很多围棋人工智能,跟人类围棋高手进行了不少正式的人机对抗赛。对人类保持全胜的只有中国的绝艺,日本的深禅围棋(DeepZenGo)出场次数最多,8胜7败。
虽然围棋程序和人类高手经常在网络上进行对弈,但一方面这些都以快棋为主,人类先天的劣势被放大;另一方面网络围棋缺少正式大赛的气氛,不够严肃,因此本盘点统计都是线下的正式分先对弈。
AlphaGo 对人类正式战绩:7胜1负
李世石与谷歌创始人布林 AlphaGo与李世石、柯洁的人机大战,无疑是到当前为止影响力最大的两次。其间有无数的瞬间值得我们回味,李世石“神之一手”带来的一次胜利,对围棋界来说价值连城。除了李世石和柯洁,欧洲围棋冠军樊麾也曾与AlphaGo有过对抗,但那次比赛并非公开进行,因此未计入正式比赛总战绩。
Google DeepMind 挑战赛五番棋
2016年3月9日 李世石 执黑中盘负 AlphaGo
2016年3月10日 李世石 执白中盘负 AlphaGo
2016年3月12日 李世石 执黑中盘负 AlphaGo
2016年3月13日 李世石 执白中盘胜 AlphaGo
2016年3月15日 李世石 执黑中盘负 AlphaGo
乌镇围棋峰会人机大战三番棋
2017年5月23日 柯洁 执黑1/4子负 AlphaGo
2017年5月25日 柯洁 执白中盘负 AlphaGo
2017年5月27日 柯洁 执白中盘负 AlphaGo
绝艺 对人类正式战绩:3胜0负
中国的围棋人工智能这两年如雨后春笋般出现,各有特点。“绝艺如君天下少”,杜牧的这句诗恰到好处地形容了腾讯团队研发的围棋人工智能程序“绝艺”。与AlphaGo的深居简出不同,绝艺长期在野狐围棋上进行测试,指导棋迷,还衍生出不少实用的围棋应用。绝艺当前在正式比赛里,对人类棋手的成绩是三战全胜,遗憾的是还未与柯洁、李世石这样的时代标志性棋手有过正式的交锋。
TWT腾讯围棋锦标赛人机挑战赛 TWT腾讯围棋锦标赛人机挑战赛
2017年12月16日 童梦成 执白中盘负 绝艺
2017年12月16日 连笑 执白中盘负 绝艺
第5期电圣战世界人机大战
2017年3月26日 一力辽 执白中盘负 绝艺
神算子 对人类正式战绩:2胜2负
神算子退役之战对垒孔杰 有清华大学背景的“神算子”是中国另外一款非常活跃的围棋人工智能。神算子已经于4月份正式退役,未来将致力于围棋人工智能技术应用的研究和开发,在棋力提升上的探索则交给了马上要在福州与柯洁进行人机大战的“星阵围棋”。
学海弈情厦大校友围棋大会人机战
2018年4月14日 王鹭 执黑中盘负 神算子
中国AI神算子谢幕战
2018年 4月7日 孔杰 执黑中盘负 神算子
第一届校友京华杯人机战
2018年1月14日 李喆 执黑中盘胜 神算子
华山智巅棋妙未来世界人机战
2017年10月25日 马晓春 执白中盘胜 神算子
天壤 对人类正式战绩:0胜1负
天壤对垒王立诚 “天壤围棋”的研发团队来自上海,创始人薛贵荣博士曾是阿里妈妈首席数据科学家。天壤围棋在其官网上也有与爱好者对弈测试,不久前还助阵女子围甲联赛,与女棋手们配合下人机配对赛,大受欢迎。天壤与人类棋手的正式交手并不多,不过据说之后会有个大动作。
象屿杯海峡两岸人机大战
2017年11月5日 王立诚 执白中盘胜 天壤
CGI 对人类正式战绩:3胜1负
CGI来自中国台湾,由台北交通大学资讯工程研究所教授吴毅成的计算机游戏与智能实验室研发。在2017年的中信证券杯世界智能围棋大赛里,CGI爆冷击败绝艺,名噪一时。年初CGI三比零完爆中国台湾当前最顶尖的棋手王元均。
马晓春对阵CGI 戊戌梅竹人机大战三番棋
2017年12月28日 王元均 执白1又3/4子负 CGI
2018年2月26日 王元均 执黑1又1/4子负 CGI
2018年2月27日 王元均 执黑中盘负 CGI
象屿杯海峡两岸人机大战
2017年11月5日 马晓春 执白中盘胜 CGI
深禅围棋(DeepZenGo) 对人类正式战绩:8胜7负
DeepZenGo项目启动 Zen在日文里是“禅”的意思,是围棋程序里的老字号。2016年3月1日,在第一次围棋人机大战开战之前,日本著名视频网站niconico与日本棋院和Zen团队合作,“DEEPZENGO”项目启动。2016年底,Zen开始分先挑战职业高手,从赵治勋开始,到赵治勋结束,总战绩8胜7负。其间Zen还受邀参加了梦百合杯世界围棋公开赛,不过在32强战被中国棋手王昊洋阻击。“DEEPZENGO”项目合作到期,DEEPZENGO这个名字也将成为历史,不过相信Zen还会继续活跃在棋坛之中。
世界电王战谢幕战三番棋
2018年4月7日 赵治勋 执白中盘负 Zen
2018年4月1日 朴廷桓 执白中盘负 Zen
2018年3月24日 芈昱廷 执黑中盘胜 Zen
韩国华城围棋大会人机战
2017年11月11日 申真谞 执白中盘胜 Zen
第三届梦百合杯世界围棋公开赛
2017年6月21日 王昊洋 执白1/4子胜 Zen
2017年6月19日 申旻埈 执黑中盘负 Zen
梦百合杯王昊洋成功阻击 第3期龙星战日本人机大战
2017年4月29日 藤泽里菜 执白中盘负 Zen
第5期电圣战世界人机大战
2017年3月26日 一力辽 执黑中盘负 Zen
首届世界最强棋士决定战
2017年3月23日 井山裕太 执白中盘负 Zen
2017年3月22日 朴廷桓 执黑中盘胜 Zen
2017年3月21日 芈昱廷 执黑中盘胜 Zen
日本寝屋川大会人机大战
2017年11月23日 河英一 执白中盘负 Zen
日本电王战三番棋
2016年11月23日 赵治勋 执黑中盘胜 Zen
2016年11月20日 赵治勋 执白中盘负 Zen
2016年11月19日 赵治勋 执黑中盘胜 Zen
石子旋风(DolBaram) 对人类正式战绩:2胜2负
石子旋风开发者:林在范 相比中国、日本围棋人工智能程序的此起彼伏,韩国则显得有些“人丁单薄”,只有石子旋风比较出名。更有趣的是,石子旋风参加的四次正式人机对抗里,三次都是跟中国的马晓春九段下的。
韩国华城围棋大会人机战
2018年2月7日 朴廷桓 执白中盘胜 石子旋风
华山智巅棋妙未来世界人机战
2017年10月26日 马晓春 执黑中盘负 石子旋风(决赛)
2017年10月25日 马晓春 执黑中盘负 石子旋风(预赛)
围棋人工智能与物联网大会人机大战
2017年6月18日 马晓春 执白中盘胜 石子旋风