我想在 CPU 和 GPU 之间进行一些时序比较以及一些分析,并想知道是否有办法告诉pytorch不使用 GPU 而只使用 CPU?我意识到我可以安装另一个仅限 CPU 的pytorch,但希望有更简单的方法。
blu*_*nox 34
我只想补充一点,在 PyTorch 代码中也可以这样做:
这是取自0.4.0的PyTorch 迁移指南的一个小例子:
# 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)
Run Code Online (Sandbox Code Playgroud)
我认为这个例子是不言自明的。但是如果有任何问题就问吧!
一个很大的优势是,当使用上面示例中的这种语法时,您可以创建在没有 GPU 可用的情况下在 CPU 上运行的代码,但也可以在 GPU 上运行而无需更改任何一行。
除了使用if 语句,torch.cuda.is_available()
您还可以像这样将设备设置为CPU:
device = torch.device("cpu")
Run Code Online (Sandbox Code Playgroud)
此外,您可以使用以下标志在所需设备上创建张量device
:
mytensor = torch.rand(5, 5, device=device)
Run Code Online (Sandbox Code Playgroud)
这将直接在device
您之前指定的上创建一个张量。
我想指出的是,您可以 使用这种语法在CPU和GPU之间切换,也可以在不同的GPU之间切换。
我希望这是有帮助的!
Uma*_*pta 32
您可以CUDA_VISIBLE_DEVICES
在运行火炬代码之前通过 shell将变量设置为空。
export CUDA_VISIBLE_DEVICES=""
应该告诉 torch 没有 GPU。
export CUDA_VISIBLE_DEVICES="0"
会告诉它只使用一个 GPU(id 为 0 的那个)等等。
uke*_*emi 11
有多种方法可以强制使用 CPU:
设置默认张量类型:
torch.set_default_tensor_type(torch.FloatTensor)
Run Code Online (Sandbox Code Playgroud)
创建张量时设置设备并一致引用:(
通过此您可以轻松在 GPU 和 CPU 之间切换)
device = 'cpu'
# ...
x = torch.rand(2, 10, device=device)
Run Code Online (Sandbox Code Playgroud)
从视图中隐藏 GPU:
import os
os.environ["CUDA_VISIBLE_DEVICES"]=""
Run Code Online (Sandbox Code Playgroud)
正如之前的答案所示,您可以使用以下命令使 pytorch 在 cpu 上运行:
device = torch.device("cpu")
Run Code Online (Sandbox Code Playgroud)
我想添加如何在 CPU 上加载之前训练过的模型(示例取自pytorch 文档)。
注意:确保输入模型的所有数据也都在CPU上。
model = TheModelClass(*args, **kwargs)
model.load_state_dict(torch.load(PATH, map_location=torch.device("cpu")))
Run Code Online (Sandbox Code Playgroud)
model = torch.load(PATH, map_location=torch.device("cpu"))
Run Code Online (Sandbox Code Playgroud)
小智 7
使用python最简单的方法是:
os.environ["CUDA_VISIBLE_DEVICES"]=""
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
43913 次 |
最近记录: |