16、围棋程序、服务器及使用AWS训练部署围棋机器人指南

围棋程序、服务器及使用AWS训练部署围棋机器人指南

1. 围棋程序介绍

围棋是一项古老而富有挑战性的棋类游戏,如今借助计算机程序和在线服务器,我们可以更便捷地进行对弈和训练。下面为大家介绍两款经典的本地围棋程序:GNU Go和Pachi。

1.1 GNU Go

GNU Go开发于1989年,是现存最古老的围棋引擎之一,其最新版本发布于2009年。尽管近期开发较少,但它仍是许多围棋服务器上初学者常用的AI对手,并且是基于手工规则的最强围棋引擎之一,与蒙特卡罗树搜索(MCTS)和深度学习机器人形成鲜明对比。
- 下载安装 :可从 www.gnu.org/software/gnugo/download.html 下载,支持Windows、Linux和macOS系统。
- 命令行工具安装 :从 http://ftp.gnu.org/gnu/gnugo/ 下载最新的GNU Go二进制文件,解压相应的压缩包,然后按照下载文件中的 INSTALL README 文件为你所在平台提供的说明进行操作。
- 图形界面安装 :推荐Windows和Linux用户安装 JagoClient ,macOS用户安装 FreeGoban
- 测试安装 :在命令行运行 gnugo --mode gtp ,程序将以GTP模式启动,在19×19的棋盘上开始新游戏并接受命令行输入。例如,输入 genmove white 并回车,它会返回一个 = 符号表示命令有效,随后是落子的坐标,如 = C3

1.2 Pachi

Pachi整体上比GNU Go强大得多,可从 http://pachi.or.cz/ 下载,其源代码和详细安装说明可在GitHub https://github.com/pasky/pachi 上找到。测试时,在命令行运行 pachi ,然后输入 genmove black ,它会在9×9的棋盘上为你生成一个黑子落子。

2. 围棋服务器推荐

在本地与围棋程序对弈很有趣且实用,但在线围棋服务器能提供更丰富、更强大的人类和AI对手资源。人类和机器人可以在这些平台上注册账户,进行排名赛以提高棋艺和评级。以下为大家介绍三个提供英文客户端的围棋服务器:
| 服务器名称 | 特点 | 链接 |
| ---- | ---- | ---- |
| 在线围棋服务器(OGS) | 设计精美,基于网页的围棋平台,功能丰富,更新频繁,有活跃的管理团队,是西半球最受欢迎的围棋服务器之一。 | https://online - go.com/ |
| 互联网围棋服务器(IGS) | 创建于1992年,是最古老的围棋服务器之一,2013年有了新界面更新,有原生Mac客户端,竞争激烈,拥有全球用户群。 | http://pandanet - igs.com/communities/pandanet |
| Tygem | 位于韩国,可能是这三个服务器中用户基数最大的,无论何时登录,都能找到各级别的数千名玩家,竞争也很激烈,许多世界顶级围棋职业选手会在此对弈(有时匿名)。 | www.tygemgo.com |

3. 使用亚马逊网络服务(AWS)训练和部署围棋机器人

云计算服务在深度学习模型的构建和部署中发挥着重要作用,下面将介绍如何使用亚马逊网络服务(AWS)来训练和部署深度学习围棋机器人。

3.1 准备工作
  • 访问AWS官网 :前往 https://aws.amazon.com/ ,了解AWS提供的大量产品。对于本次任务,主要使用亚马逊弹性计算云(EC2)服务,它能让你轻松访问云端的虚拟服务器。
  • 注册AWS账户 :访问 https://portal.aws.amazon.com/billing/signup ,填写注册表单。
  • 登录控制台 :注册后,在页面右上角点击“Sign in to the Console”,输入账户凭据,进入主仪表盘。
  • 选择EC2服务 :从顶部菜单栏点击“Services”,在面板中选择“Compute”类别下的“EC2”选项。
3.2 启动新实例
graph LR
    A[进入EC2仪表盘] --> B[点击Launch Instance]
    B --> C[选择AMI]
    C --> D[选择Deep Learning AMI Ubuntu]
    D --> E[选择实例类型]
    E --> F[配置实例详细信息]
    F --> G[配置安全组]
    G --> H[创建密钥对]
    H --> I[启动实例]
  • 选择亚马逊机器镜像(AMI) :点击“Launch Instance”后,选择专门为深度学习应用定制的AMI。在左侧边栏找到“AWS Marketplace”,搜索“Deep Learning AMI Ubuntu”。该镜像基于Ubuntu Linux运行,预装了TensorFlow、Keras和必要的GPU驱动,实例准备好后可直接进行深度学习应用开发。若想使用免费实例,可寻找带有“free tier eligible”标签的镜像。
  • 选择实例类型 :有多种实例类型可供选择,如优化GPU性能的实例。若想快速入门,可选择 p2.xlarge ;若想先熟悉AWS功能,可选择价格较低的 t2.small 实例。若仅用于部署和托管模型, t2.small 实例通常就足够了,只有模型训练才需要更昂贵的GPU实例。
  • 配置实例详细信息 :选择实例类型后,点击“Next: Configure Instance Details”,步骤3至5可暂时跳过,但步骤6“Configure Security Group”需要注意。
    • SSH访问 :主要通过SSH登录实例,实例的SSH端口22应已开放,为安全起见,需限制访问,仅允许本地机器连接,在“Source”下选择“My IP”。
    • HTTP端口开放 :为部署Web应用和连接其他围棋服务器,需开放HTTP端口80。点击“Add Rule”,选择“HTTP”类型,端口会自动设为80,“Source”选择“Anywhere”。
    • 端口5000开放 :第8章中的HTTP围棋机器人运行在端口5000,也需开放该端口。添加规则,选择“Custom TCP Rule”类型,端口范围设为5000,“Source”设为“Anywhere”,忽略安全警告(因为不涉及敏感或专有数据)。
  • 创建密钥对 :完成安全设置后,点击“Review and Launch”再点击“Launch”,选择“Create a New Pair”,输入密钥对名称,点击“Download Key Pair”下载私钥文件(扩展名为 .pem ),将其安全保存。之后可通过选择“Choose an Existing Key Pair”重复使用该密钥。
  • 启动实例 :点击“Launch Instance”,查看“Launch Status”,点击“View Instances”返回EC2主仪表盘,等待实例状态变为“running”(旁边有绿色圆点),表示实例准备就绪。
3.3 连接到实例
  • 使用SSH命令 :点击实例左侧的复选框,激活顶部的“Connect”按钮,点击后会弹出包含连接信息的窗口,复制其中的 ssh 命令到终端执行:
ssh -i "<full - path - to - secret - key - pem>" <username>@<public - dns - of - your - instance>
  • 使用SSH配置文件 :为方便操作,可创建一个SSH配置文件。在UNIX环境中,该文件通常存储在 ~/.ssh/config ,其他系统路径可能不同。创建文件和 .ssh 文件夹(如有需要),并将以下内容添加到文件中:
Host aws
  HostName <public - dns - of - your - instance>
  User ubuntu
  Port 22
  IdentityFile <full - path - to - secret - key - pem>

存储文件后,在终端输入 ssh aws 即可连接到实例。首次连接时,输入 yes 并回车,密钥将永久添加到实例中,后续连接不再询问。首次成功登录“Deep Learning AMI Ubuntu”实例时,会提供几个Python环境供选择,如 source activate tensorflow_p36 可提供Python 3.6的完整Keras和TensorFlow安装,本文后续假设使用实例自带的基本Python版本。

4. 在AWS上进行模型训练

在AWS上运行深度学习模型与本地运行类似,但首先要确保实例上有所需的所有代码和数据,可使用 scp 安全地复制。以下是一个端到端的示例命令:

git clone https://github.com/maxpumperla/deep_learning_and_the_game_of_go
cd deep_learning_and_the_game_of_go
scp -r ./code aws:~/code  # 1. 将代码从本地复制到远程AWS实例
ssh aws  # 2. 使用ssh登录实例
cd ~/code
python setup.py develop  # 3. 安装dlgo Python库
cd examples
python end_to_end.py  # 4. 运行端到端示例

该示例会在 examples 文件夹相对路径 ../agents/deep_bot.h5 下生成一个序列化的深度学习机器人。运行结束后,可选择将模型留在实例上(如用于托管或继续开发),或从AWS实例取回并复制到本地机器。例如,在本地终端运行以下命令将名为 deep_bot.h5 的机器人从AWS复制到本地:

cd deep_learning_and_the_game_of_go/code
scp aws:~/code/agents/deep_bot.h5 ./agents

模型训练工作流程可总结如下:
1. 使用dlgo框架在本地设置和测试深度学习实验。
2. 将更改安全地复制到AWS实例。
3. 登录远程机器并启动实验。
4. 训练完成后,评估结果,调整实验,从步骤1开始新的实验周期。
5. 如有需要,将训练好的模型复制到本地机器供未来使用或进行其他处理。

5. 在AWS上通过HTTP托管围棋机器人

之前在本地启动Python Web服务器来提供HTTP围棋机器人服务,他人需直接访问你的计算机才能测试。通过在AWS上部署该Web应用并开放必要端口,可通过共享URL让他人访问你的机器人。
运行HTTP前端的步骤如下:

ssh aws
cd ~/code
python web_demo.py \
  --bind - address 0.0.0.0 \
  --pg - agent agents/9x9_from_nothing/round_007.hdf5 \
  --predict - agent  agents/betago.hdf5

这样,你的机器人的可玩演示将在AWS上托管,并可通过以下地址访问:

http://<public - dns - of - your - instance>:5000/static/play_predict_19.html

通过以上介绍,你可以在本地与围棋程序对弈,也能借助AWS强大的云计算能力训练和部署自己的围棋机器人,与更多对手切磋,不断提升棋艺和技术水平。

围棋程序、服务器及使用AWS训练部署围棋机器人指南

6. 终止和停止实例注意事项

在使用AWS实例的过程中,了解如何终止和停止实例是很重要的,因为如果忘记关闭昂贵的实例,可能会产生较高的费用。
- 终止实例 :若要终止实例,先选中实例(点击其旁边的复选框),然后点击页面顶部的“Actions”按钮,依次选择“Instance State”和“Terminate”。终止实例会删除该实例及其上存储的所有数据,因此在终止之前,务必要复制所需的数据(如训练好的模型)。
- 停止实例 :选择“Stop”实例,之后可以在需要时重新启动它。但要注意,根据实例所配备的存储情况,停止实例可能会导致数据丢失,此时系统会给出相应的警告。

7. 总结与操作要点回顾

为了让大家更清晰地掌握使用AWS训练和部署围棋机器人的整个流程,下面以表格形式总结关键操作步骤:
| 操作阶段 | 操作步骤 | 具体内容 |
| ---- | ---- | ---- |
| 准备工作 | 访问AWS官网 | 前往 https://aws.amazon.com/ ,了解AWS产品,主要关注EC2服务 |
| | 注册AWS账户 | 访问 https://portal.aws.amazon.com/billing/signup 填写注册表单 |
| | 登录控制台 | 点击“Sign in to the Console”,输入账户凭据 |
| | 选择EC2服务 | 从顶部菜单栏点击“Services”,选择“Compute”类别下的“EC2” |
| 启动新实例 | 选择AMI | 在“AWS Marketplace”搜索“Deep Learning AMI Ubuntu”,也可选择免费镜像 |
| | 选择实例类型 | 入门可选 p2.xlarge ,熟悉功能选 t2.small ,仅部署模型 t2.small 通常足够 |
| | 配置实例详细信息 | 步骤3 - 5可跳过,重点配置步骤6“Configure Security Group” |
| | 配置安全组 | 开放SSH端口22(限制仅本地访问)、HTTP端口80(允许任意访问)、端口5000(允许任意访问) |
| | 创建密钥对 | 选择“Create a New Pair”,下载私钥文件并安全保存 |
| | 启动实例 | 点击“Launch Instance”,等待状态变为“running” |
| 连接到实例 | 使用SSH命令 | 复制 ssh -i "<full - path - to - secret - key - pem>" <username>@<public - dns - of - your - instance> 到终端执行 |
| | 使用SSH配置文件 | 创建 ~/.ssh/config 文件,添加配置内容,通过 ssh aws 连接 |
| 模型训练 | 复制代码和数据 | 使用 scp -r ./code aws:~/code 复制代码到实例 |
| | 登录实例 | 使用 ssh aws 登录 |
| | 安装库和运行示例 | 执行 python setup.py develop python end_to_end.py |
| | 取回模型 | 使用 scp aws:~/code/agents/deep_bot.h5 ./agents 将模型复制到本地 |
| 托管机器人 | 运行HTTP前端 | 执行 python web_demo.py --bind - address 0.0.0.0 --pg - agent agents/9x9_from_nothing/round_007.hdf5 --predict - agent agents/betago.hdf5 |
| | 访问机器人 | 通过 http://<public - dns - of - your - instance>:5000/static/play_predict_19.html 访问 |

8. 常见问题及解决方法

在使用AWS训练和部署围棋机器人的过程中,可能会遇到一些常见问题,以下为大家列举并提供解决方法:
- 连接实例失败
- 问题描述 :使用SSH命令或SSH配置文件连接实例时,提示连接失败。
- 解决方法 :首先检查密钥对是否正确,私钥文件是否有正确的权限(可使用 chmod 400 <private - key - file> 设置权限)。其次,检查安全组配置,确保SSH端口22允许本地机器的IP地址访问。
- 模型训练出错
- 问题描述 :运行 python end_to_end.py 时出现错误。
- 解决方法 :检查代码是否正确复制到实例,依赖库是否正确安装(可重新执行 python setup.py develop )。查看错误日志,根据日志信息排查问题,可能是数据格式、库版本等问题。
- 无法访问HTTP机器人
- 问题描述 :通过 http://<public - dns - of - your - instance>:5000/static/play_predict_19.html 无法访问机器人。
- 解决方法 :检查安全组配置,确保端口5000已开放且允许任意访问。检查机器人是否正常运行(可在实例上查看运行日志),确保 web_demo.py 脚本正确执行。

9. 拓展应用与未来展望

掌握了使用AWS训练和部署围棋机器人的方法后,还可以进行一些拓展应用。例如,可以将训练好的机器人集成到移动应用中,让更多人可以在手机上与机器人对弈。也可以将多个机器人进行对战,分析它们的策略和表现,进一步优化算法。

未来,随着云计算技术和深度学习算法的不断发展,我们可以期待更强大、更智能的围棋机器人出现。同时,AWS等云计算平台也会提供更丰富的功能和更便捷的工具,让我们能够更高效地训练和部署模型。相信在不久的将来,围棋机器人将在围棋领域发挥更大的作用,为围棋爱好者带来更多的乐趣和挑战。

通过本文的详细介绍,希望大家能够顺利地在本地与围棋程序对弈,利用AWS训练和部署自己的围棋机器人,在围棋的世界中不断探索和进步。

分布式微服务企业级系统是一个基于Spring、SpringMVC、MyBatis和Dubbo等技术的分布式敏捷开发系统架构。该系统采用微服务架构和模块化设计,提供整套公共微服务模块,包括集中权限管理(支持单点登录)、内容管理、支付中心、用户管理(支持第三方登录)、微信平台、存储系统、配置中心、日志分析、任务和通知等功能。系统支持服务治理、监控和追踪,确保高可用性和可扩展性,适用于中小型企业的J2EE企业级开发解决方案。 该系统使用Java作为主要编程语言,结合Spring框架实现依赖注入和事务管理,SpringMVC处理Web请求,MyBatis进行数据持久化操作,Dubbo实现分布式服务调用。架构模式包括微服务架构、分布式系统架构和模块化架构,设计模式应用了单例模式、工厂模式和观察者模式,以提高代码复用性和系统稳定性。 应用场景广泛,可用于企业信息化管理、电子商务平台、社交应用开发等领域,帮助开发者快速构建高效、安全的分布式系统。本资源包含完整的源码和详细论文,适合计算机科学或软件工程专业的毕业设计参考,提供实践案例和技术文档,助力学生和开发者深入理解微服务架构和分布式系统实现。 【版权说明】源码来源于网络,遵循原项目开源协议。付费内容为本人原创论文,包含技术分析和实现思路。仅供学习交流使用
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值