相关疑难解决方法(0)

如何修复这个奇怪的错误:“运行时错误:CUDA 错误:内存不足”

我运行了一个关于深度学习网络的代码,首先我训练了网络,它运行良好,但是运行到验证网络时出现此错误。

我有五个 epoch,每个 epoch 都有一个训练和验证的过程。我在第一个纪元验证时遇到了错误。所以我没有运行验证代码,我发现代码可以运行到第二个纪元并且没有错误。

我的代码:

for epoch in range(10,15): # epoch: 10~15
    if(options["training"]["train"]):
        trainer.epoch(model, epoch)

    if(options["validation"]["validate"]):
    #if(epoch == 14):
        validator.epoch(model)
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明 在此处输入图片说明

我觉得验证代码可能有一些错误。但我找不到那个。

python pycharm pytorch

32
推荐指数
6
解决办法
12万
查看次数

如何在 PyTorch 中释放 GPU 内存

我有一个句子列表,我正在尝试使用以下代码使用多个模型来计算其困惑度:

from transformers import AutoModelForMaskedLM, AutoTokenizer
import torch
import numpy as np
model_name = 'cointegrated/rubert-tiny'
model = AutoModelForMaskedLM.from_pretrained(model_name).cuda()
tokenizer = AutoTokenizer.from_pretrained(model_name)

def score(model, tokenizer, sentence):
    tensor_input = tokenizer.encode(sentence, return_tensors='pt')
    repeat_input = tensor_input.repeat(tensor_input.size(-1)-2, 1)
    mask = torch.ones(tensor_input.size(-1) - 1).diag(1)[:-2]
    masked_input = repeat_input.masked_fill(mask == 1, tokenizer.mask_token_id)
    labels = repeat_input.masked_fill( masked_input != tokenizer.mask_token_id, -100)
    with torch.inference_mode():
        loss = model(masked_input.cuda(), labels=labels.cuda()).loss
    return np.exp(loss.item())


print(score(sentence='London is the capital of Great Britain.', model=model, tokenizer=tokenizer)) 
# 4.541251105675365
Run Code Online (Sandbox Code Playgroud)

大多数模型都运行良好,但有些句子似乎会抛出错误:

RuntimeError: CUDA out of memory. Tried to allocate 10.34 …

python memory pytorch huggingface-transformers

27
推荐指数
2
解决办法
5万
查看次数