Я хотел протестировать multi-gpu с простым алгоритмом DQN для среды Cartpole, и кажется, что это либо невозможно, либо я что-то упустил.Я запускаю код на машине, которая имеет два gpus.У меня есть мой код здесь: https://github.com/oroojlooy/dqn_pytorch
Проблема в том, что на каждом шаге поезда мне нужно получить целевое значение, которое является объектом DataParallel, а затем умножить его на некоторые элементы в пакете (который являетсятензор), а затем использовать выход для получения потерь.Когда я умножаю целевое значение на тензор, я получаю эту ошибку:
RuntimeError: The size of tensor a (64) must match the size of tensor b (128) at non-singleton dimension 1
Поскольку DataParallel
разделил партию на две части, у меня есть целевая форма 2*64
вместо 128
.Я могу изменить тензор до 2*64
и заставить его работать, но я не буду работать, если у меня будет больше gpus, и изменение формы будет трудным и грязным.Я думал, что должен быть лучший способ сделать это.Я ценю любую помощь или комментарий.
Афшин