Pytorch AssertionError: Torch not compiled with CUDA enabled
Pytorch AssertionError: Torch not compiled with CUDA enabled
我正在尝试 运行 来自 this repo 的代码。我通过将 main.py 中的第 39/40 行从
更改为禁用了 cuda
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 中的问题,但无济于事。请帮忙?
如果您查看 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)
在pytorch中main.py file to get an iterator for the train and dev data. If you see the DataLoader调用了两次class,有个参数叫:
pin_memory (bool, optional) – If True, the data loader will copy tensors into CUDA pinned memory before returning them.
在 get_iterator
函数中默认为 True
。结果你得到了这个错误。当您调用 get_iterator
函数时,您可以简单地将 pin_memory
参数值作为 False
传递,如下所示。
train_data = get_iterator(get_coco_data(vocab, train=True),
batch_size=args.batch_size,
...,
...,
...,
pin_memory=False)
所以我正在使用 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,而 Macs 没有 CUDA。
因此,如果有人遇到同样的问题,只需删除 .cuda()
并且您的代码应该可以工作。
编辑:
没有 CUDA 就无法进行 GPU 计算。不幸的是,对于拥有 Intel 集成显卡的人来说,CUDA 无法安装,因为它只兼容 NVIDIA GPU。
如果你有NVIDIA显卡,可能我们的系统已经安装了CUDA,如果没有你可以安装它。
您可以购买与您的计算机兼容的外部显卡,但仅此一项就需要 300 美元左右,更不用说连接问题了。
否则你可以使用:
Google-Colaboratory,Kaggle Kernels(免费)
AWS、GCP(免费积分)、PaperSpace(付费)
删除 .cuda()
适用于我的 macOS。
就我而言,我没有在我的 Anaconda 环境中安装启用了 Cuda 的 PyTorch。请注意,您需要支持 CUDA 的 GPU 才能工作。
按照此 link 为您拥有的特定 Cuda 版本安装 PyTorch:https://pytorch.org/get-started/locally/
在我的例子中,我安装了这个版本:
conda 安装 pytorch torchvision torchaudio cudatoolkit=10.2 -c pytorch
我正在尝试 运行 来自 this repo 的代码。我通过将 main.py 中的第 39/40 行从
更改为禁用了 cudaparser.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 中的问题,但无济于事。请帮忙?
如果您查看 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)
在pytorch中main.py file to get an iterator for the train and dev data. If you see the DataLoader调用了两次class,有个参数叫:
pin_memory (bool, optional) – If True, the data loader will copy tensors into CUDA pinned memory before returning them.
在 get_iterator
函数中默认为 True
。结果你得到了这个错误。当您调用 get_iterator
函数时,您可以简单地将 pin_memory
参数值作为 False
传递,如下所示。
train_data = get_iterator(get_coco_data(vocab, train=True),
batch_size=args.batch_size,
...,
...,
...,
pin_memory=False)
所以我正在使用 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,而 Macs 没有 CUDA。
因此,如果有人遇到同样的问题,只需删除 .cuda()
并且您的代码应该可以工作。
编辑:
没有 CUDA 就无法进行 GPU 计算。不幸的是,对于拥有 Intel 集成显卡的人来说,CUDA 无法安装,因为它只兼容 NVIDIA GPU。
如果你有NVIDIA显卡,可能我们的系统已经安装了CUDA,如果没有你可以安装它。
您可以购买与您的计算机兼容的外部显卡,但仅此一项就需要 300 美元左右,更不用说连接问题了。
否则你可以使用:
Google-Colaboratory,Kaggle Kernels(免费)
AWS、GCP(免费积分)、PaperSpace(付费)
删除 .cuda()
适用于我的 macOS。
就我而言,我没有在我的 Anaconda 环境中安装启用了 Cuda 的 PyTorch。请注意,您需要支持 CUDA 的 GPU 才能工作。
按照此 link 为您拥有的特定 Cuda 版本安装 PyTorch:https://pytorch.org/get-started/locally/
在我的例子中,我安装了这个版本: conda 安装 pytorch torchvision torchaudio cudatoolkit=10.2 -c pytorch