Итак, я сейчас тренирую свой DQN на Atari Breakout (из спортзала OpenAI). У меня проблема в том, что он очень медленный, но мой графический процессор, похоже, не используется полностью. Я контролирую это с помощью инструмента под названием 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 минут тренировки. Я не могу объяснить, почему мой процессор работает быстрее, поэтому, если у кого-то есть подсказка, я определенно хотел бы ее услышать.
GPU took 353 seconds for 1000 minibatches
CPU took 148 seconds for 1000 minibatches
Если какой-либо из моих кодов необходим для дальнейшего изучения моей проблемы, сообщите мне .
РЕДАКТИРОВАТЬ: Теперь я подумываю об использовании облачных сервисов графического процессора, более подробно c Linode. Единственное, что меня беспокоит, это то, что причина моей проблемы кроется в моем коде. Таким образом, использование облачного сервиса GPU было бы не очень разумным.