我正在尝试为游戏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上发生的
我有一个类似的问题,是因为为我的卡安装了错误的NVIDIA驱动程序,而没有安装CUDA。希望这是有帮助的
https://developer.nvidia.com/cuda-downloads
相关问题 更多 >
编程相关推荐