Pytorch 将用于GPU计算的torch代码转换为仅在CPU上运行

Pytorch 将用于GPU计算的torch代码转换为仅在CPU上运行,pytorch,cpu,Pytorch,Cpu,由于他多次调用CUDA,我有一个基于pytorch的代码在GPU上运行,该代码用于对象检测,并且模型已经接受过这样的培训。所以我要做的是在数据集上测试模型。但是,我的GPU不够强大,无法使模型在没有内存不足(OOM)错误的情况下运行 我的GPU是Nvidia P400,我为此设置了cuda 9.0。我运行的是396.54 Nvidia驱动程序版本。我没有尝试升级它,因为它会给我的设置带来麻烦。我的操作系统是Linux Ubuntu 18.04 更具体地说,我的问题如下。为了使我的pytorch代

由于他多次调用CUDA,我有一个基于pytorch的代码在GPU上运行,该代码用于对象检测,并且模型已经接受过这样的培训。所以我要做的是在数据集上测试模型。但是,我的GPU不够强大,无法使模型在没有内存不足(OOM)错误的情况下运行

我的GPU是Nvidia P400,我为此设置了cuda 9.0。我运行的是396.54 Nvidia驱动程序版本。我没有尝试升级它,因为它会给我的设置带来麻烦。我的操作系统是Linux Ubuntu 18.04

更具体地说,我的问题如下。为了使我的pytorch代码在CPU上运行,我可以删除代码中出现的
cuda
? 例如,替换以下代码:

torch.cuda.manual_seed(11)

编辑: 当我在conda环境中设置Pytork时,我安装了一个与gpu兼容的Pytork。 因此,现在我试图删除所有出现的cuda,它不起作用,我得到以下错误:

THCudaCheck FAIL file=/pytorch/aten/src/THC/THCGeneral.cpp line=74 error=38 : no CUDA-capable device is detected
Traceback (most recent call last):
  File "main.py", line 1111, in <module>
    train()
  File "main.py", line 1039, in train
    log_path=model_save_path)
  File "main.py", line 858, in train_networks
    train_losses, valid_losses, test_losses = pickle.load(lossfile, encoding='latin1')
  File ".../anaconda3/envs/pytorch-gpu/lib/python3.6/site-packages/torch/cuda/__init__.py", line 492, in _lazy_new
    _lazy_init()
  File ".../anaconda3/envs/pytorch-gpu/lib/python3.6/site-packages/torch/cuda/__init__.py", line 161, in _lazy_init
    torch._C._cuda_init()
RuntimeError: cuda runtime error (38) : no CUDA-capable device is detected at /pytorch/aten/src/THC/THCGeneral.cpp:7
THCudaCheck失败文件=/pytorch/aten/src/THC/THCGeneral.cpp line=74错误=38:未检测到支持CUDA的设备
回溯(最近一次呼叫最后一次):
文件“main.py”,第1111行,在
列车()
列车中1039行的文件“main.py”
日志\路径=模型\保存\路径)
列车网络中第858行的文件“main.py”
列损失、有效损失、测试损失=pickle.load(损失文件,编码='latin1')
文件“../anaconda3/envs/pytorch gpu/lib/python3.6/site packages/torch/cuda/_init__.py”,第492行,新
_lazy_init()
文件“../anaconda3/envs/pytorch gpu/lib/python3.6/site packages/torch/cuda/_init__.py”,第161行,在_lazy_init中
火炬._C._cuda_init()
运行时错误:cuda运行时错误(38):在/pytorch/aten/src/THC/THCGeneral.cpp:7处未检测到支持cuda的设备

你还考虑了将模型和数据移动到相应设备的线路吗?这些函数在各自的函数名中不一定用
.cuda
突出显示,请看,不看代码很难分辨。但是,从您提供的跟踪来看,似乎对象
train\u loss
valid\u loss
test\u loss
可能存储为类型为
torch.cuda.FloatTensor
的实例,因此当您从文件
lossfile
加载它们时,Pytork试图将它们放在GPU上,但找不到合适的cuda设备(可能缺少驱动程序/cudnn?)来加载它们。
THCudaCheck FAIL file=/pytorch/aten/src/THC/THCGeneral.cpp line=74 error=38 : no CUDA-capable device is detected
Traceback (most recent call last):
  File "main.py", line 1111, in <module>
    train()
  File "main.py", line 1039, in train
    log_path=model_save_path)
  File "main.py", line 858, in train_networks
    train_losses, valid_losses, test_losses = pickle.load(lossfile, encoding='latin1')
  File ".../anaconda3/envs/pytorch-gpu/lib/python3.6/site-packages/torch/cuda/__init__.py", line 492, in _lazy_new
    _lazy_init()
  File ".../anaconda3/envs/pytorch-gpu/lib/python3.6/site-packages/torch/cuda/__init__.py", line 161, in _lazy_init
    torch._C._cuda_init()
RuntimeError: cuda runtime error (38) : no CUDA-capable device is detected at /pytorch/aten/src/THC/THCGeneral.cpp:7