天气与日历 切换到窄版

 找回密码
 立即注册

QQ登录

只需一步,快速开始

此广告位出租
查看: 451|回复: 0

[棋牌源码] [GitHub]腾讯围棋 AI 技术 PhoenixGo 正式开源,源码、模型全公开

[复制链接]

3074

主题

0

回帖

3218

积分

管理员

积分
3218
发表于 2024-2-24 12:27:16 | 显示全部楼层 |阅读模式

PhoenixGo 是腾讯微信翻译团队开发的人工智能围棋程序,旨在学习人工智能前沿技术。从 1 月底开始,PhoenixGo 以 BensonDarr(昵称「金毛」)的名义在腾讯野狐围棋平台上和全球顶尖职业棋手、围棋爱好者及各路围棋 AI 对弈,在 4 月底取得了 200 多连胜,并在福州 2018 人工智能围棋大赛上夺冠,引起了行业内广泛关注。
一个好的围棋 AI,需要算法、工程实现、计算资源三者结合。目前围棋 AI 已经有了优秀的公开算法,但同时拥有良好工程实现和大量计算资源,并不是一件容易的事。
为了让行业内其他研究者可以在此基础上继续探索围棋 AI 的奥秘,帮助棋手更方便地研究围棋 AI 的棋路,也为了众多围棋爱好者在家用普通电脑上可以享受和职业九段交锋的乐趣,微信团队决定对外开源 PhoenixGo 对弈源码和训练模型。
经过了一周多时间的筹备,PhoenixGo 目前正式开源了对弈源码和一个 20 block 的模型。这份源码和模型可以在单块 GPU 上提供强职业棋手的棋力,在单机多卡和多机多卡的系统上具有远超人类棋手的水平。PhoenixGo 在野狐围棋平台上的账号「金毛测试」,运行于 1 块性能与 GTX 1080 Ti 性能接近的 Tesla P40 上,对人类棋手具有非常高的胜率。
腾讯微信团队表示,希望 PhoenixGo 的开源能为 AI 领域发展再添助力。
GitHub 地址:https://github.com/Tencent/PhoenixGo




PhoenixGo是一个围棋AI程序,它执行AlphaGo Zero论文“掌握无人知识的Go游戏”。它也被称为FoxGo中的“BensonD​​arr”,CGOS中的“cronus”。在中国福州举办的“World AI Go Tournament 2018”中,来自微信团队的人工智能围棋程序PhoenixGo获得了冠军。

如果您在项目中使用PhoenixGo,请在您的自述文件中提及。

如果您在研究中使用PhoenixGo,请考虑引用库:

@misc{PhoenixGo2018,  author = {Qinsong Zeng and Jianchang Zhang and Zhanpeng Zeng and Yongsheng Li and Ming Chen and Sifan Liu}  title = {PhoenixGo},  year = {2018},  journal = {GitHub repository},  howpublished = {\url{https://github.com/Tencent/PhoenixGo}}}建立和运行

在Linux上

要求

支持C++11的GCC
Bazel(0.11.1最好)
(可选)CUDA和cuDNN(用于GPU支持)
(可选)TensorRT(用于加速GPU上的计算,已知为3.0.4)

建立

$ git clone https://github.com/Tencent/PhoenixGo.git$ cd PhoenixGo$ ./configure

./configure 会询问CUDA和TensorRT的安装位置,如果需要请指定它们。

然后用bazel建立:

$ bazel build //mcts:mcts_main

诸如Tensorflow之类的将自动下载。此命令可能需要很长时间。

运行

下载并提取经过训练的网络:

$ wget https://github.com/Tencent/Phoen ... twork-20b-v1.tar.gz$ tar xvzf trained-network-20b-v1.tar.gz

使用配置文件以gtp模式运行(取决于GPU的数量和是否使用TensorRT):

$ bazel-bin/mcts/mcts_main --config_path=etc/{config} --gtp --logtostderr --v=1

该引擎支持GTP协议,这意味着它可以用于具有GTP功能的GUI,如Sabaki。

–logtostderr让mcts_main日志消息到stderr,如果你想登录到文件,–logtostderr改为–log_dir={log_dir}

你可以在#configure-guide之后修改你的配置文件。

分配模式

PhoenixGo支持与分配式工作人员一起运行,如果在不同机器上有GPU的话。

建立分配者:

$ bazel build //dist:dist_zero_model_server

dist_zero_model_server在分布式工作器上运行,每个GPU运行一个。

$ CUDA_VISIBLE_DEVICES={gpu} bazel-bin/dist/dist_zero_model_server --server_address="0.0.0.0:{port}" --logtostderr

ip:port在配置文件中填充工作人员(etc/mcts_dist.conf是32位工作人员的示例配置),然后运行分布式主服务器:

$ bazel-bin/mcts/mcts_main --config_path=etc/{config} --gtp --logtostderr --v=1在macOS上

注意:自1.2.0起,Tensorflow停止在macOS上提供GPU支持,因此您只能在macOS中的CPU上运行。

要求和建设

与Linux相同

运行

添加libtensorflow_framework.so到LD_LIBRARY_PATH第一个:

$ export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:{project_root}/bazel-bin/external/org_tensorflow/tensorflow"

其余步骤应与Linux相同。

在Windows上

这项工作正在进行。

配置指南

以下是配置文件中的一些重要选项:

  • num_eval_threads:应该等于GPU的数量
  • num_search_threads:应该大于 num_eval_threads * eval_batch_size
  • timeout_ms_per_step:每一步移动将花费多少时间
  • max_simulations_per_step:每次移动会做多少次模拟
  • gpu_list:使用哪个GPU,用逗号分隔
  • model_config -> train_dir:存储经过培训的网络的目录
  • model_config -> checkpoint_path:使用哪个检查点,train_dir/checkpoint如果没有设置,则从中获取
  • model_config -> enable_tensorrt:使用TensorRT或不使用
  • model_config -> tensorrt_model_path:如果使用哪个TensorRT模型 enable_tensorrt
  • max_search_tree_size:树节点的最大数量,改变它取决于内存大小
  • max_children_per_node:每个节点的最大孩子数量,取决于内存大小
  • enable_background_search:思考对手的时间
  • early_stop:timeout_ms_per_step如果结果不会再改变,则genmove可能会返回
  • unstable_overtime:timeout_ms_per_step * time_factor如果结果仍然不稳定,请多考虑一下
  • behind_overtime:timeout_ms_per_step * time_factor如果胜利率小于,就多想想act_threshold

分配模式的选项:

  • enable_dist:启用分配模式
  • dist_svr_addrs:ip:port分布式工人,多行,ip:port每行一行
  • dist_config -> timeout_ms:RPC超时

异步分配模式的选项:

异步模式用于有大量分布式工作人员(超过200人),这需要太多的eval线程和同步模式下的搜索线程。etc/mcts_async_dist.conf是256名工作人员的示例配置。

  • enable_async:启用异步模式
  • enable_dist:启用分配模式
  • dist_svr_addrs:多行,ip:port每行的逗号分隔列表
  • num_eval_threads:应该等于dist_svr_addrs行数
  • eval_task_queue_size:取决于分销人员的数量
  • num_search_threads:取决于分销人员的数量

mcts/mcts_config.proto获取更多配置选项。

命令行选项

mcts_main 接受来自命令行的选项:

  • --config_path:配置文件的路径
  • --gtp:作为GTP引擎运行,如果禁用,则仅下一步移动
  • --init_moves:在棋盘上进行初始移动
  • --gpu_list:gpu_list在配置文件中覆盖
  • --listen_port:使用--gtpTCP协议在端口上运行gtp引擎
  • --allow_ip:使用--listen_port,允许连接的客户端IP列表
  • --fork_per_request:使用--listen_port,为每个请求分配或不分配

Glog选项也受支持:

  • --logtostderr:将消息记录到stderr
  • --log_dir:登录到此目录中的文件
  • --minloglevel:日志级别,0 – INFO,1 – 警告,2 – 错误
  • --v:详细日志,--v=1用于打开某些调试日志,--v=0关闭

mcts_main --help 获取更多命令行选项。


附件下载:

文件名称:PhoenixGo-master.zip 
下载次数:1  文件大小:156.23 KB  售价:5金钱 [记录]
下载权限: 不限 [购买VIP]   [充值]   [在线充值]   【VIP会员5折;永久VIP免费】
安全检测,请放心下载




相关帖子

扫码关注微信公众号,及时获取最新资源信息!下载附件优惠VIP会员5折;永久VIP免费
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

免责声明:
1、本站提供的所有资源仅供参考学习使用,版权归原著所有,禁止下载本站资源参与商业和非法行为,请在24小时之内自行删除!
2、本站所有内容均由互联网收集整理、网友上传,并且以计算机技术研究交流为目的,仅供大家参考、学习,请勿任何商业目的与商业用途。
3、若您需要商业运营或用于其他商业活动,请您购买正版授权并合法使用。
4、论坛的所有内容都不保证其准确性,完整性,有效性,由于源码具有复制性,一经售出,概不退换。阅读本站内容因误导等因素而造成的损失本站不承担连带责任。
5、用户使用本网站必须遵守适用的法律法规,对于用户违法使用本站非法运营而引起的一切责任,由用户自行承担
6、本站所有资源来自互联网转载,版权归原著所有,用户访问和使用本站的条件是必须接受本站“免责声明”,如果不遵守,请勿访问或使用本网站
7、本站使用者因为违反本声明的规定而触犯中华人民共和国法律的,一切后果自己负责,本站不承担任何责任。
8、凡以任何方式登陆本网站或直接、间接使用本网站资料者,视为自愿接受本网站声明的约束。
9、本站以《2013 中华人民共和国计算机软件保护条例》第二章 “软件著作权” 第十七条为原则:为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬。若有学员需要商用本站资源,请务必联系版权方购买正版授权!
10、本网站如无意中侵犯了某个企业或个人的知识产权,请来信【站长信箱312337667@qq.com】告之,本站将立即删除。
郑重声明:
本站所有资源仅供用户本地电脑学习源代码的内含设计思想和原理,禁止任何其他用途!
本站所有资源、教程来自互联网转载,仅供学习交流,不得商业运营资源,不确保资源完整性,图片和资源仅供参考,不提供任何技术服务。
本站资源仅供本地编辑研究学习参考,禁止未经资源商正版授权参与任何商业行为,违法行为!如需商业请购买各资源商正版授权
本站仅收集资源,提供用户自学研究使用,本站不存在私自接受协助用户架设游戏或资源,非法运营资源行为。
快速回复 返回顶部 返回列表