python - 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
还有一件事可能很重要。出于某种原因,使用 CPU 进行训练比使用 GPU 进行训练更快。这些结果是平均超过 30 分钟的训练。我无法解释为什么我的 CPU 更快,所以如果有人有线索,我肯定想听听。
GPU took 353 seconds for 1000 minibatches
CPU took 148 seconds for 1000 minibatches
如果需要我的任何代码来进一步检查我的问题,请告诉我。
编辑:我现在正在考虑使用云 GPU 服务,更具体的是 Linode。唯一让我担心的是我的问题的原因在于我的代码。因此,使用云 GPU 服务不会很聪明。
解决方案
尽管从技术上讲,以下内容并没有让它“更快”,但在更改/优化代码的意义上,我仍然想把它作为我问题的答案。
我的一个解决方案是使用Google Colab。一个在线笔记本,与 jupyter notebook 非常相似,但有一个关键的区别,当使用笔记本时,您可以访问 Google 的计算资源(例如,您可以免费使用高端 GPU!)。
就我而言,这是一个整体加速。但即使你家里确实有一个很好的 GPU,你仍然可以使用它来同时测试两组不同的超参数。
推荐阅读
- r - 转换数据框(按计数交叉表)
- jquery - 如何使剑道响应
- encoding - 如何让Java显示画框字符?我得到问号
- excel - 验证 Excel 文件
- python - 如何通过按下按钮(python)将我的变量提高 1?
- javascript - 如何访问嵌套的javascript数组中的特定字段
- r - 如何将 for 循环的每次迭代的结果恢复到自己的矩阵中?
- kotlin - build.gradle.kts 遵循 githubs 指南:配置 Gradle 以与 GitHub 包一起使用。但它未能找到“来自”功能
- python - 在一个数组中组合数组
- python - 如何让python文件复制自己然后执行另一个副本一次?