首页 > 解决方案 > Pytorch GPU 利用率

问题描述

所以我目前正在 Atari Breakout(来自 OpenAI 健身房)训练我的 DQN。我遇到的问题是它非常慢,但我的 GPU 似乎没有得到充分利用。我正在使用一个名为的工具HWMonitor以及该nvidia-smi命令对其进行监视。任何想法为什么?

以下是一些可能相关的规格:

Python version: 3.7.7
torch version: 1.4.0
gym version: 0.17.2
CUDA version: 11.0
GPU: GTX 980 founders edition
CPU: Inte Core i7 4790K

以下是对我的 DQN 的一些见解:

device:cuda
DQN(
  (conv1): Conv2d(1, 16, kernel_size=(8, 8), stride=(4, 4))
  (conv2): Conv2d(16, 32, kernel_size=(4, 4), stride=(2, 2))
  (mp1): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
  (mp2): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
  (lin1): Linear(in_features=128, out_features=256, bias=True)
  (lin2): Linear(in_features=256, out_features=4, bias=True)
)
optimizer: Adam (
Parameter Group 0
    amsgrad: False
    betas: (0.9, 0.999)
    eps: 1e-08
    lr: 0.001
    weight_decay: 0
)
gamma: 0.95
epsilon_decay: 0.99
epsilon_min: 0.01
obs_space: [110, 84]
trainig_batchsize: 32

在这里,您可以看到我在使用 GPU 进行训练时的监控效果: 监控

还有一件事可能很重要。出于某种原因,使用 CPU 进行训练比使用 GPU 进行训练更快。这些结果是平均超过 30 分钟的训练。我无法解释为什么我的 CPU 更快,所以如果有人有线索,我肯定想听听。

GPU took 353 seconds for 1000 minibatches
CPU took 148 seconds for 1000 minibatches

如果需要我的任何代码来进一步检查我的问题,请告诉我。

编辑:我现在正在考虑使用云 GPU 服务,更具体的是 Linode。唯一让我担心的是我的问题的原因在于我的代码。因此,使用云 GPU 服务不会很聪明。

标签: pythonpytorchgpu

解决方案


尽管从技术上讲,以下内容并没有让它“更快”,但在更改/优化代码的意义上,我仍然想把它作为我问题的答案。

我的一个解决方案是使用Google Colab。一个在线笔记本,与 jupyter notebook 非常相似,但有一个关键的区别,当使用笔记本时,您可以访问 Google 的计算资源(例如,您可以免费使用高端 GPU!)。

就我而言,这是一个整体加速。但即使你家里确实有一个很好的 GPU,你仍然可以使用它来同时测试两组不同的超参数。


推荐阅读