繁体   English   中英

Pytorch AssertionError:未在启用 CUDA 的情况下编译 Torch

[英]Pytorch AssertionError: Torch not compiled with CUDA enabled

我正在尝试从此repo运行代码。 我通过更改 main.py 中的第 39/40 行从

parser.add_argument('--type', default='torch.cuda.FloatTensor', help='type of tensor - e.g torch.cuda.HalfTensor')

parser.add_argument('--type', default='torch.FloatTensor', help='type of tensor - e.g torch.HalfTensor')

尽管如此,运行代码会给我以下异常:

Traceback (most recent call last):
  File "main.py", line 190, in <module>
    main()
  File "main.py", line 178, in main
    model, train_data, training=True, optimizer=optimizer)
  File "main.py", line 135, in forward
    for i, (imgs, (captions, lengths)) in enumerate(data):
  File "/Users/lakshay/anaconda/lib/python3.6/site-packages/torch/utils/data/dataloader.py", line 201, in __next__
    return self._process_next_batch(batch)
  File "/Users/lakshay/anaconda/lib/python3.6/site-packages/torch/utils/data/dataloader.py", line 221, in _process_next_batch
    raise batch.exc_type(batch.exc_msg)
AssertionError: Traceback (most recent call last):
  File "/Users/lakshay/anaconda/lib/python3.6/site-packages/torch/utils/data/dataloader.py", line 62, in _pin_memory_loop
    batch = pin_memory_batch(batch)
  File "/Users/lakshay/anaconda/lib/python3.6/site-packages/torch/utils/data/dataloader.py", line 123, in pin_memory_batch
    return [pin_memory_batch(sample) for sample in batch]
  File "/Users/lakshay/anaconda/lib/python3.6/site-packages/torch/utils/data/dataloader.py", line 123, in <listcomp>
    return [pin_memory_batch(sample) for sample in batch]
  File "/Users/lakshay/anaconda/lib/python3.6/site-packages/torch/utils/data/dataloader.py", line 117, in pin_memory_batch
    return batch.pin_memory()
  File "/Users/lakshay/anaconda/lib/python3.6/site-packages/torch/tensor.py", line 82, in pin_memory
    return type(self)().set_(storage.pin_memory()).view_as(self)
  File "/Users/lakshay/anaconda/lib/python3.6/site-packages/torch/storage.py", line 83, in pin_memory
    allocator = torch.cuda._host_allocator()
  File "/Users/lakshay/anaconda/lib/python3.6/site-packages/torch/cuda/__init__.py", line 220, in _host_allocator
    _lazy_init()
  File "/Users/lakshay/anaconda/lib/python3.6/site-packages/torch/cuda/__init__.py", line 84, in _lazy_init
    _check_driver()
  File "/Users/lakshay/anaconda/lib/python3.6/site-packages/torch/cuda/__init__.py", line 51, in _check_driver
    raise AssertionError("Torch not compiled with CUDA enabled")
AssertionError: Torch not compiled with CUDA enabled

花了一些时间查看 Pytorch github 中的问题,但无济于事。 请帮忙?

删除.cuda()在 macOS 上对我.cuda()

如果你查看data.py文件,你可以看到函数:

def get_iterator(data, batch_size=32, max_length=30, shuffle=True, num_workers=4, pin_memory=True):
    cap, vocab = data
    return torch.utils.data.DataLoader(
        cap,
        batch_size=batch_size, shuffle=shuffle,
        collate_fn=create_batches(vocab, max_length),
        num_workers=num_workers, pin_memory=pin_memory)

main.py文件中调用两次以获取训练和开发数据的迭代器。 如果在pytorch中看到DataLoader类,有一个参数叫:

pin_memory (bool, optional) – 如果为 True,数据加载器将在返回之前将张量复制到 CUDA 固定内存中。

get_iterator函数中默认为True 结果你收到了这个错误。 当您调用get_iterator函数时,您可以简单地将pin_memory参数值作为False get_iterator ,如下所示。

train_data = get_iterator(get_coco_data(vocab, train=True),
                          batch_size=args.batch_size,
                          ...,
                          ...,
                          ...,
                          pin_memory=False)

就我而言,我没有在 Anaconda 环境中安装启用了 Cuda 的 PyTorch。 请注意,您需要一个支持 CUDA 的 GPU 才能工作。

按照此链接为您拥有的特定版本的 Cuda 安装 PyTorch: https ://pytorch.org/get-started/locally/

就我而言,我安装了这个版本: conda install pytorch torchvision torchaudio cudatoolkit=10.2 -c pytorch

所以我正在使用 Mac,试图创建一个带有 cuda 的神经网络,例如

net = nn.Sequential(
    nn.Linear(28*28, 100),
    nn.ReLU(),
    nn.Linear(100, 100),
    nn.ReLU(),
    nn.Linear(100, 10),
    nn.LogSoftmax()
).cuda()

我的错误是我试图创建 nn,而 Mac 没有 CUDA。 因此,如果有人面临同样的问题,只需删除.cuda()并且您的代码应该可以工作。

编辑:

没有 CUDA,您就无法进行 GPU 计算。 不幸的是,对于拥有 Intel 集成显卡的人来说,无法安装 CUDA,因为它只兼容 NVIDIA GPU。

如果您有 NVIDIA 显卡,则可能是我们的系统上已经安装了 CUDA,如果没有,您可以安装它。

您可以购买与您的计算机兼容的外部图形,但仅此一项就需要大约 300 美元,更不用说连接问题了。

否则你可以使用:Google-Colaboratory、Kaggle Kernels(免费)
AWS、GCP(免费积分)、PaperSpace(付费)

对于MAcos(M1)detectron2这有效。 如果您使用的是另一个 model 推理检查问题,您将找到解决方案

cfg.MODEL.DEVICE='cpu'.

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM