Как восстановить из пироха CUDA нехватку памяти? - PullRequest
0 голосов
/ 18 декабря 2018

Я попробовал следующий код.Когда код в try потерпел неудачу из-за нехватки памяти CUDA, я уменьшил размер пакета до половины в except, но все равно появляется та же проблема при запуске модели в except, но я уверен, что половинаРазмер пакета можно запустить, так как я пытался напрямую запустить код в except, не пытаясь выполнить полный пакет.Работает нормально.Кстати, есть ли способ автоматически установить размер пакета для полного использования памяти CUDA без переполнения?

try:
    output = model(Variable(torch.LongTensor(np.array(x))).to(device),Variable(torch.LongTensor(np.array(pos))).to(device),Variable(torch.LongTensor(np.array(m))).to(device))
    loss = criterion(output, Variable(torch.LongTensor(y)).to(device))#lb.transform(y)
    loss.backward()
    optimizer.step()
    losses.append(loss.data.mean())
except:
    half = int(len(x) / 2)
    x1 = x[:half]
    x2 = x[half:]
    pos1 = pos[:half]
    pos2 = pos[half:]
    m1 = m[:half]
    m2 = m[half:]
    y1 = y[:half]
    y2 = y[half:]
    optimizer.zero_grad()
    output = model(Variable(torch.LongTensor(np.array(x1))).to(device),Variable(torch.LongTensor(np.array(pos1))).to(device),Variable(torch.LongTensor(np.array(m1))).to(device))
    loss = criterion(output, Variable(torch.LongTensor(y1)).to(device))#lb.transform(y)
    loss.backward()
    optimizer.step()
    losses.append(loss.data.mean())
    output = model(Variable(torch.LongTensor(np.array(x2))).to(device),Variable(torch.LongTensor(np.array(pos2))).to(device),Variable(torch.LongTensor(np.array(m2))).to(device))
    loss = criterion(output, Variable(torch.LongTensor(y2)).to(device))#lb.transform(y)
    loss.backward()
    optimizer.step()
    losses.append(loss.data.mean())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...