是否支持
N卡 CUDA
import torch
print(torch.cuda.is_available())
# 创建一个CPU张量
x = torch.randn(3, 3)
# 将张量转移到GPU上, x.to('cuda')等同于x.cuda()
x_gpu = x.to('cuda')
x_gpu = x.to(torch.deviec('cuda'))
# 在GPU上执行操作
y_gpu = x_gpu + 2
A卡?CUDA 待补充
pytorch 从1.8开始支持A卡了
import torch
print(torch.cuda.is_available())
print(torch.version.hip)
MAC? mps 待补充
import torch
print(torch.device("mps"))
# 创建一个CPU张量
x = torch.randn(3, 3)
# 将张量转移到GPU上
x_gpu = x.to('mps')
# 在GPU上执行操作
y_gpu = x_gpu + 2
自适应GPU或CPU
- 首先,肯定是命令行传参数判断是否需要使用 GPU,同时也可以手动指定GPU的类型。
- 其次,无参时,自动判断若有GPU设备使用GPU。
torch.device('cuda' if torch.cuda.is_available() else 'cpu')
CPU 和 GPU转换
- 转到GPU推荐两种:
- x.to()
- x.cuda()
- 转回CPU:
- x.cpu()
import torch
print(torch.device("mps"))
# 创建一个CPU张量
x = torch.randn(3, 3)
x_gpu = x.to('cuda')
x_gpu = x.to(torch.deviec('cuda'))
x = x_gpu.cpu()
torch 的 device 方法有啥用?
torch.device()
是PyTorch中的一个类,用于表示一个特定的设备,例如CPU或GPU。它可以被用于将张量或模型移动到指定的设备上。
具体来说,torch.device()
方法有以下几个用途:
- 创建设备对象:通过指定设备类型和设备ID来创建
torch.device
对象。
- 例如,
device = torch.device('cuda:0')
将创建一个cuda
设备对象,0
表示设备的ID。如果没有指定设备ID,它会选择默认的设备。
- 将模型或张量移到指定设备:通过使用
.to()
方法或.cuda()
方法,可以将模型或张量移到指定设备上。
- 例如,
model.to(device)
可以将模型移到指定的设备上,x = x.cuda()
可以将张量移到GPU上进行加速计算。
- 获取当前设备:
- 可以通过
torch.device('cuda' if torch.cuda.is_available() else 'cpu')
的方式获取当前可用的设备类型。 - 这在创建模型时通常很有用,以免将模型创建在GPU上而没有GPU可用或者将模型创建在CPU上而GPU可用。
总的来说,torch.device()
是PyTorch中非常有用的一个类,它可以方便地帮助我们在不同的设备之间移动计算、优化模型等。