生命游戏 并行化_动手实现并行版AlphaZero五子棋

动手实现并行版AlphaZero五子棋

前言

项目链接:github.com/hijkzzz/alp…

AlphaZero算法已经发布了一年多了,GitHub也有各种各样的实现,有一千行Python代码单线程低性能版,也有数万行C++代码的分布式版本。但是这些实现都不能满足一般的算法爱好者的需求,即一个简单的并且单机的可运行的高性能AlphaZero算法。

一图解密AlphaZero

首先我们通过一张图了解一下AlphaZero算法的原理

432aa553e5a3ef4ba5edf1a6c86cd5fe.png

可以看到AlaphaGo Zero的算法流程分为:

  1. 自对弈(利用蒙特卡洛树搜索)N局生成棋谱
  2. 利用生成的棋谱训练网络
  3. 评估新训练的网络

分析

对于Python版本的AlphaZero算法,通常受限制于GIL,过程中最耗时间的自对弈阶段(见下图)无法并行化,所以最直接的优化方式是使用C++这种高性能语言实现底层运算细节。

fb9e7342b86e31c0dbf8bd37c842d7a0.png

解决方法

<
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值