Tensorflow,OpenAI Gym,Keras-rl在基本强化学习示例中的性能问题



我正在做强化学习,但我在性能方面遇到了问题。

情况,没有自定义代码:

  • 我在Google Cloud上加载了一个Google Deep Learning VM(https://console.cloud.google.com/marketplace/details/click-to-deploy-images/deeplearning(。这附带了使用 NVidia K80 显卡安装的所有先决条件(CUDA、cuDNN、驱动程序(。
  • 安装了keras-rl,OpenAI健身房
  • 现在,当我在第 46 行使用 visualize=False 运行(标准(示例dqn_cartpole.py时,它使用了大约 20% 的 GPU,导致每秒大约 100 步,这比在我的 Razer Blade 3 上使用 CPU 慢约 15 倍 (i7-8750H(。
  • 我已经检查了我能想到的所有瓶颈,CPU使用率,内存和HD I/O都是正常的。

请帮忙!

提前致谢

这不一定是问题。就性能而言,使用 GPU 并非"免费",而且并不总是比 CPU 快。因为并非所有内容都在 GPU 上运行(例如,健身房环境本身仍然在 CPU 上运行(,所以您确实会产生"通信成本"(例如,将内存移入和移出 GPU(。只有当您真正充分利用您的 GPU 时,这才是值得的。

现在,GPU也不一定比CPU快。GPU 非常擅长并行执行大量类似的计算。例如,这对于大型矩阵之间的矩阵乘法是必要的,这在训练大型深度神经网络时确实经常发生。如果你只需要相对少量的计算,可以像这样并行完成,并且大多数只有顺序代码,那么GPU肯定比CPU慢(你提到的CPU是一个相当强大的CPU(。

现在,如果我看一下你链接的代码中构建神经网络的部分(从第 22 行开始(,它看起来像一个相当小的神经网络;只有几层,每层 16 个节点。这不是一个巨大的神经网络,卷积层后面跟着大型(例如数百个节点(全连接层(对于像 Cartpole 这样的小问题来说,这可能确实是矫枉过正的(。因此,您只能使用20%的GPU当然不足为奇(它根本无法并行使用更多,因为被乘以的矩阵太小了(,也不一定比简单地在CPU上运行慢。