首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在多进程中共享对象

如何在多进程中共享对象
EN

Stack Overflow用户
提问于 2018-03-31 22:58:51
回答 1查看 88关注 0票数 1

感谢你阅读这篇文章。我已经开发了国际象棋AI,就像李世石或AlphaGo AlphaGo。我用过Python和tensorflow。国际象棋人工智能由蒙特卡罗树搜索、策略网络和价值网络组成。

我为蒙特卡罗树搜索的策略和价值网络做了学习。没有问题。但是,Montecarlo树搜索中的每个模拟都太慢了。所以我想提高每个模拟的速度。

我知道因为GIL,python不能共享对象。我真的需要帮上忙。如果你们有在python多进程中共享对象的经验,请分享你们的经验。

我在这个页面下面发布了摘要代码。

附言:我的英语不好。所以,如果你在阅读这一页时感到不舒服,那是我的错。请理解这一点。

代码语言:javascript
复制
class monte
#I want to share Tree in multiprocessing
tree = Tree()

def doMontecarloTreeSearch:
    while numberOfsimulation:
        #I want to boost speed each simulation
        # but each search() computing neural network to make new node
        # so they spend much time.
        search()

def search:
    #node is created in each selection and is added in tree
    while is_gameover():
        selection()
        evaluation()
    backpropagation()

def selection
    #add best value node in Tree
def evaluation
    #each node is evaluated for expasion
def backpropagation
    # after gameove, leaf node backpropagate gameresult
    # and patent nodes are updated util parent node is root node
EN

回答 1

Stack Overflow用户

发布于 2019-01-09 03:28:33

我曾经尝试过类似的Go引擎,很抱歉我试图用Python项目来做这件事。

我从使用Cython加速开始,最终得到了90%的Cython风格的c代码和10%的Python代码。根据基准部分的不同,游戏加速比从70倍到230倍,平均游戏加速比约为110倍。

在那之后,我开始使用多任务处理,不幸的是,Python的某些部分很好,相当不合作,有点慢。还是有办法获得净利润的,这取决于你想做什么。

生成自玩游戏

工作得相当不错,我创建了一个设置,其中我有:

  • 1 worker处理一般流程,决定何时培训新模型的游戏生成器worker线程的数量等等
  • 2 worker为gpu提供要评估的职位
  • x玩游戏的工人,以生成自玩数据或评估模型强度
  • 1 worker存储所有用于培训
  • 的自玩游戏培训新模型的工人

它能够将gpu占用率保持在80%左右的

多线程播放器

我尝试了几种工作人员的方法,同时最小化了他们之间的数据交换,因为这是一个巨大的瓶颈。一般来说,它归结为一个带有gametree的主控制器,它指示其他工作人员探索某个节点。拥有一个紧凑的板子表示来在工人之间发送数据是很重要的!

我做的最好的引擎有一个主gametree控制器和x个从树控制器,其中主控制器跟踪所有访问的节点,如果可以探索某个节点,则从树控制器跟踪从节点的请求。它变得有点复杂,但这样我就能够防止任何重复的节点访问。每个从机都有几个工作者,负责节点的实际探索,这样我就可以获得不错的gpu利用率。

未来

我,我不得不再做一次,Python是一个要求,我会为它创建很好的交互,并集成一些其他语言。例如,您可以将c/c++与cython集成。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49589088

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档