Следующий код из учебника для паралича данных Pytorch выглядит странно для меня:
device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
model = Model(input_size, output_size)
if torch.cuda.device_count() > 1:
print("Let's use", torch.cuda.device_count(), "GPUs!")
# dim = 0 [30, xxx] -> [10, ...], [10, ...], [10, ...] on 3 GPUs
model = nn.DataParallel(model)
model.to(device)
Насколько я знаю, mode.to(device)
копирует данные в графический процессор.
DataParallel автоматически разбивает ваши данные и отправляет заказы на работу нескольким моделям на нескольких графических процессорах.После того, как каждая модель завершит свою работу, DataParallel собирает и объединяет результаты, прежде чем вернуть их вам.
Если DataParallel
выполняет копирование, что делает to(device)
здесь?