pytorch 运行时错误:CUDA错误:在model.cuda()之后没有内核映像可用于在设备上执行

tuwxkamq  于 2022-11-29  发布在  其他
关注(0)|答案(3)|浏览(421)

我正在研究这个模型:

class Model(torch.nn.Module):
    def __init__(self, sizes, config):
        super(Model, self).__init__()

        self.lstm = []
        for i in range(len(sizes) - 2):
            self.lstm.append(LSTM(sizes[i], sizes[i+1], num_layers=8))
        self.lstm.append(torch.nn.Linear(sizes[-2], sizes[-1]).cuda())
        self.lstm = torch.nn.ModuleList(self.lstm)

        self.config_mel = config.mel_features

    def forward(self, x):
        # convert to log-domain
        x = x.clip(min=1e-6).log10()

        for layer in self.lstm[:-1]:
            x, _ = layer(x)
            x = torch.relu(x)

        #x = torch_unpack_seq(x)[0]

        x = self.lstm[-1](x)
        mask = torch.sigmoid(x)

        return mask

然后:

model = Model(model_width, config)
model.cuda()

但我得到这个错误:

File "main.py", line 29, in <module>
    Model.train(args)
  File ".../src/model.py", line 57, in train
    model.cuda()
  File ".../.local/lib/python3.8/site-packages/torch/nn/modules/module.py", line 637, in cuda
    return self._apply(lambda t: t.cuda(device))
  File ".../.local/lib/python3.8/site-packages/torch/nn/modules/module.py", line 530, in _apply
    module._apply(fn)
  File "/.../.local/lib/python3.8/site-packages/torch/nn/modules/module.py", line 530, in _apply
    module._apply(fn)
  File ".../.local/lib/python3.8/site-packages/torch/nn/modules/rnn.py", line 189, in _apply
    self.flatten_parameters()
  File ".../.local/lib/python3.8/site-packages/torch/nn/modules/rnn.py", line 175, in flatten_parameters
    torch._cudnn_rnn_flatten_weight(
RuntimeError: CUDA error: no kernel image is available for execution on the device
CUDA kernel errors might be asynchronously reported at some other API call,so the stacktrace below might be incorrect.
For debugging consider passing CUDA_LAUNCH_BLOCKING=1.

我不知道为什么会发生这种情况。我试图在cuda中推送模型和输入,我知道错误是否是由于CPU中的一些模型和GPU中的一些模型造成的。但这不是这里的情况。我在这里找到了一些pip安装解决方案:Pytorch CUDA error: no kernel image is available for execution on the device on RTX 3090 with cuda 11.1
但我无法使用它,因为我试图在远程存储库中执行该工作,而在那里我无法访问pip安装。
我有办法解决吗?

5vf7fwbs

5vf7fwbs1#

我检查了最新的torchtorchvision版本与cuda从给定的链接.稳定的版本列表:https://download.pytorch.org/whl/cu113/torch_stable.html
以下版本解决了该错误,
pip install torch==1.11.0+cu113 torchvision==0.12.0+cu113 -f https://download.pytorch.org/whl/torch_stable.html
参考:#49161

hpxqektj

hpxqektj2#

talonmies注解确实有帮助:
您尝试使用的PyTorch安装没有为您尝试使用的GPU提供内置二进制支持。您必须找到(或自己创建)一个具有内置支持的版本。由于PyTorch的设计和 Package ,这里没有工作
torch版本与cuda版本不兼容。我可以使用CUDA_LAUNCH_BLOCKING=1详细检查问题。我卸载了之前的cuda版本,安装了我真正需要的版本,现在它可以工作了

vmpqdwk3

vmpqdwk33#

可能是因为你使用的是旧版本的torch和cuda。在这种情况下,当你运行torch.cuda.is_available()时,它会返回True。但是,如果你使用torch.tensor([0.12,0.32]).cuda(),它会给出上面提到的错误。
即使我使用了pytorch网站(https://pytorch.org/get-started/locally/)上的install命令,但它安装了一个旧版本。所以,当你运行命令时,在pip install后添加一个-U来升级。这就为我解决了这个问题。

pip3 install -U torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu116

代替

pip3 install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu116

来源-https://qiita.com/Uenie/items/95107f79512d90f73a19

相关问题