Итак, моя модель pytorch выглядит следующим образом:
gathered_output = torch.nn.parallel.data_parallel(model, model_input, range(ngpu))
loss = F.loss(gathered_output, ground_truth)
loss.backward()
optimizer.step()
Я выполняю некоторую задачу сегментации большого изображения. А GPU 0 использует почти на 20% больше памяти. Есть ли способ, которым я могу смягчить это? Собранные данные - это не просто тензор с плавающей запятой [8,128,300,400] в cuda. У меня есть 4 графических процессора, и каждый графический процессор работает на 2 партии. Но я думаю, что все градиенты тоже собираются?
Если я вычислю потери на каждом графическом процессоре и соберу только потери, я сохраню больше памяти? пожалуйста помогите