Torch выделяет нулевую память графического процессора на PyTorchPython

Программы на Python
Ответить Пред. темаСлед. тема
Гость
 Torch выделяет нулевую память графического процессора на PyTorch

Сообщение Гость »


Я пытаюсь использовать графический процессор для обучения моей модели, но кажется, что Torch не может выделить память графического процессора.

Моя модель — это RNN, построенная на PyTorch
>

Код: Выделить всё

device = torch.device('cuda: 0' if torch.cuda.is_available() else "cpu")

rnn = RNN(n_letters, n_hidden, n_categories_train)
rnn.to(device)
criterion = nn.NLLLoss()
criterion.to(device)
optimizer = torch.optim.SGD(rnn.parameters(), lr=learning_rate, weight_decay=.9)

Код: Выделить всё

class RNN(nn.Module):
def __init__(self, input_size, hidden_size, output_size):
super(RNN, self).__init__()

self.input_size = input_size
self.hidden_size = hidden_size
self.output_size = output_size

self.i2h = nn.Linear(input_size + hidden_size, hidden_size)
self.i2o = nn.Linear(input_size + hidden_size, output_size)

self.softmax = nn.LogSoftmax(dim=1)

def forward(self, input, hidden):
input = input.cuda()
hidden = hidden.cuda()

combined = torch.cat((input, hidden), 1)
hidden = self.i2h(combined)
output = self.i2o(combined)
output = self.softmax(output)

output = output.cuda()
hidden = hidden.cuda()

return output, hidden

def init_hidden(self):
return Variable(torch.zeros(1, self.hidden_size).cuda())
Функция обучения:

Код: Выделить всё

def train(category_tensor, line_tensor, rnn, optimizer, criterion):
rnn.zero_grad()
hidden = rnn.init_hidden()

for i in range(line_tensor.size()[0]):
output, hidden = rnn(line_tensor[i], hidden)

loss = criterion(output, category_tensor)
loss.backward()

optimizer.step()

return output, loss.item()
Функция для получения Category_tensor и line_tensor:

Код: Выделить всё

def random_training_pair(category_lines, n_letters, all_letters):
category = random.choice(all_categories_train)
line = random.choice(category_lines[category])
category_tensor = Variable(torch.LongTensor([all_categories_train.index(category)]).cuda())
line_tensor = Variable(process_data.line_to_tensor(line, n_letters, all_letters)).cuda()

return category, line, category_tensor, line_tensor
Я запустил следующий код:

Код: Выделить всё

 print(torch.cuda.get_device_name(0))
print('Memory Usage:')
print('Allocated:', round(torch.cuda.memory_allocated(0) / 1024 ** 3, 1), 'GB')
print('Cached:   ', round(torch.cuda.memory_cached(0) / 1024 ** 3, 1), 'GB')
и я получил:

Код: Выделить всё

GeForce GTX 1060
Memory Usage:
Allocated: 0.0 GB
Cached:    0.0 GB
I did not get any errors but GPU usage is just 1% while CPU usage is around 31%.

I am using Windows 10 and Anaconda, where my PyTorch is installed. CUDA and cuDNN is installed from .exe file downloaded from Nvidia website.


Источник: https://stackoverflow.com/questions/553 ... on-pytorch
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»