PyTorch 2.0 中设置默认使用 GPU 的方法
在 PyTorch 2.0 中,默认情况下仍然是使用 CPU 进行计算,除非明确指定使用 GPU。torch.set_default_device 是 PyTorch 2.0 引入的新功能,用于设置默认设备,使得所有后续张量和模块在没有明确指定设备的情况下,会被创建在这个默认设备上。这在代码中提供了一种更简洁的方式来指定设备,而无需在每次创建张量或模型时手动指定。
-
检查 PyTorch 版本
确保使用的是 PyTorch 2.0 或更高版本:
pythonimport torch print(torch.__version__) # 必须是 2.0 或更高版本
-
检查 CUDA 是否可用
在设置 GPU 为默认设备之前,确认 CUDA 可用性:
pythonprint(torch.cuda.is_available()) # True 表示可用
-
设置默认设备为 GPU
使用
torch.set_default_device
将默认设备设置为 GPU:pythonimport torch # 确保 CUDA 可用 if torch.cuda.is_available(): # 设置默认设备为 GPU torch.set_default_device('cuda') print("默认设备已设置为 GPU") else: print("CUDA 不可用,无法设置 GPU 为默认设备")
-
验证默认设备设置
创建一个张量,验证其是否在 GPU 上:
pythonx = torch.tensor([1.0, 2.0, 3.0]) print(x.device) # 输出:cuda:0
-
模型自动加载到 GPU
如果设置了默认设备,模型的参数和新建的张量会自动加载到 GPU:
pythonclass MyModel(torch.nn.Module): def __init__(self): super().__init__() self.linear = torch.nn.Linear(10, 1) def forward(self, x): return self.linear(x) model = MyModel() print(next(model.parameters()).device) # 输出:cuda:0
全局设置代码示例
以下代码展示如何在脚本中全局设置默认设备为 GPU:
python
import torch
# 检查并设置默认设备
if torch.cuda.is_available():
torch.set_default_device('cuda')
print("默认设备已设置为 GPU")
else:
raise RuntimeError("CUDA 不可用,请检查环境配置")
# 示例:自动使用 GPU 创建张量
x = torch.tensor([1.0, 2.0, 3.0])
print(f"x device: {x.device}") # 输出:cuda:0
# 示例:自动将模型参数放到 GPU
model = torch.nn.Linear(5, 2)
print(f"Model parameters device: {next(model.parameters()).device}") # 输出:cuda:0
注意事项
-
与设备显式管理的代码兼容性
如果代码中显式指定了设备(如
tensor.to(device)
),torch.set_default_device
不会影响这些张量。建议在全局设置后,尽量减少显式设备管理操作。 -
多 GPU 环境
如果有多个 GPU,可以指定具体设备,比如
'cuda:1'
。示例:pythontorch.set_default_device('cuda:1') # 使用第二块 GPU
-
性能调优
默认将所有操作转移到 GPU 可能并不适合所有场景,尤其是小规模任务时,GPU 的初始化开销可能超过性能提升。根据需求灵活调整设备。