Windows 10
Python 3.7
факел 1.5.0 + cu92
У меня относительно простой CNN, который работает на моем процессоре, но не на моем GPU. Используя процессор, он очень хорошо работает, но слишком медленно. Когда я устанавливаю для ключевого слова "gpu" значение true, обучение продолжается до вызова backward (), приостанавливается на секунду, затем завершается без предупреждения или ошибки.
Я установил несколько CPU / GPU реализации, которые работали ранее, так что я на 99% это не проблема окружающей среды.
Внутренний l oop (пакетное обучение) выглядит следующим образом:
seq = seq.to(device=self.device)
labels = labels.to(device=self.device)
self.optimizer.zero_grad()
y_pred = self.model(seq)
# Send to device
y_pred.to(device=self.device)
single_loss = self.loss_function(y_pred.to(self.device), labels.to(self.device))
single_loss.backward() # <-- step that fails on GPU ONLY
self.optimizer.step()
Моя модель / оптимизатор / функция настройки потерь следующие:
# Subclasses nn.Module
self.model = NetLinear(self.num_features, self.tw, **kwargs)
if gpu:
if not torch.cuda.is_available():
raise ValueError('No GPU')
self.device = torch.device('cuda:0')
print('Running on GPU')
else:
self.device = torch.device('cpu')
# Send model to appropriate device
self.model.to(self.device)
# Setup loss function and optimizer
self.loss_function = nn.MSELoss()
self.optimizer = torch.optim.Adam(self.model.parameters(), lr=lr)