围棋程序、服务器及使用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训练和部署自己的围棋机器人,在围棋的世界中不断探索和进步。
超级会员免费看
1

被折叠的 条评论
为什么被折叠?



