TensorFlow/Keras模型在GPU上运行时,调用速度越来越慢

2024-09-27 20:18:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试为游戏Gomoku实现一个类似AlphaZero的boardgame AI(Monte Carlo树搜索结合CNN评估棋盘位置)

现在,MCTS作为一个单独的组件实现。 此外,我有一个用Python编写的简单TCP服务器,它从MCT接收位置(大约50到200个批次),将它们转换为Numpy数组,通过调用__call__将它们传递给TF/Keras模型,将它们转换回来,并通过TCP将结果发送给MCT

在训练期间,我通过让AI与自身对抗来生成训练数据(大约5000块板),调用model.fit一次,使用新的模型权重创建一个新的数据集,等等。 我并行地玩多个比赛,每个比赛都使用各自的Python/TF服务器。 每个服务器加载自己的模型副本(我使用tf.config.experimental.set_memory_growth(gpu, True)

我遇到的问题是,在玩比赛时,推断时间越来越长,网络加载的时间越来越长,直到它变得非常缓慢,我不得不重新开始训练。 重新启动后,推断时间恢复正常。 顺便说一下,如果我一次只玩一个游戏,只加载一个模型,也会发生这种情况

我试图通过在每次匹配后重新启动Python服务器(以及模型)来缓解这个问题。 这似乎解决了这个问题,直到我在几次训练迭代后开始遇到同样的问题

起初,我认为原因是我的设置不理想(运行Windows的游戏笔记本),但在我所在大学的Linux服务器上,问题也出现了。 在我的Windows机器上,随着型号越来越慢,它使用的内存也越来越少。这显然不是在Linux上发生的


Tags: 数据模型服务器游戏linuxwindowstf时间

热门问题