如何告诉PyTorch不使用GPU?

ddhy6vgd  于 2022-12-13  发布在  其他
关注(0)|答案(6)|浏览(465)

我想做一些CPU和GPU之间的时序比较以及一些分析,并想知道是否有一种方法可以告诉pytorch不使用GPU,而只使用CPU?我知道我可以安装另一个仅使用CPU的pytorch,但希望有一个更简单的方法。

bvhaajcl

bvhaajcl1#

在运行代码之前,运行以下shell命令以告知torch没有GPU:

export CUDA_VISIBLE_DEVICES=""

这将告诉它只使用一个GPU(id为0的GPU),依此类推:

export CUDA_VISIBLE_DEVICES="0"
hmtdttj4

hmtdttj42#

我只想补充一点,在PyTorch代码中也可以这样做:
下面是一个取自PyTorch 0.4.0迁移指南的小示例:

# at beginning of the script
device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")

...

# then whenever you get a new Tensor or Module
# this won't copy if they are already on the desired device
input = data.to(device)
model = MyModule(...).to(device)
  • 我认为这个例子很好解释,但如果有任何问题,请直接提出!

一个很大的优势是,当使用这种语法时,如上面的示例,您可以创建在CPU上运行的代码,如果没有GPU可用,也可以在GPU上运行,而无需更改任何行。*
除了使用torch.cuda.is_available()if-statement,您还可以将设备设置为 CPU,如下所示:

device = torch.device("cpu")

此外,您可以使用device标志在所需的 * 设备 * 上创建Tensor:

mytensor = torch.rand(5, 5, device=device)

这将直接在之前指定的device上创建Tensor。
我想指出的是,您可以使用此语法在 CPUGPU 之间切换,也可以在不同的 * GPU * 之间切换。
我希望这是有帮助的!

w80xi6nr

w80xi6nr3#

使用Python最简单的方法是:

os.environ["CUDA_VISIBLE_DEVICES"]=""
snvhrwxg

snvhrwxg4#

强制使用CPU的方法有多种:
1.设置默认Tensor类型:

torch.set_default_tensor_type(torch.FloatTensor)

1.在创建Tensor时设置设备和一致的参考:
(with您可以轻松地在GPU和CPU之间切换)

device = 'cpu'
# ...
x = torch.rand(2, 10, device=device)

1.从视图中隐藏GPU:

import os

os.environ["CUDA_VISIBLE_DEVICES"]=""
cfh9epnr

cfh9epnr5#

常规

正如前面的答案所示,您可以使用以下方法使pytorch在CPU上运行:

device = torch.device("cpu")

比较训练模型

我想补充一下如何在cpu上加载一个之前训练过的模型(例子取自pytorch文档)。

  • 注意:确保输入模型的所有数据也在CPU上。*

建议装载

model = TheModelClass(*args, **kwargs)
model.load_state_dict(torch.load(PATH, map_location=torch.device("cpu")))

加载整个模型

model = torch.load(PATH, map_location=torch.device("cpu"))
wkyowqbh

wkyowqbh6#

这是一个真实的的示例:使用GPU的原始功能与使用CPU的新功能。
来源:https://github.com/zllrunning/face-parsing.PyTorch/blob/master/test.py
在我的例子中,我编辑了以下4行代码:
第一个

相关问题