在使用GPU训练PyTorch代码时,确保你的程序能够充分利用GPU资源是很重要的。以下是一些建议:
一 检查GPU是否可用: 在代码的开头,使用torch.cuda.is_available()
检查GPU是否可用。如果返回True
,说明你的系统支持CUDA(NVIDIA GPU的并行计算平台)。
import torch
if torch.cuda.is_available():
device = torch.device("cuda")
print("GPU is available.")
else:
device = torch.device("cpu")
print("GPU not available, using CPU.")
二 将模型移至GPU: 在创建模型之后,使用model.to(device)
将模型移至GPU。这会将模型的所有参数都移动到GPU上。
model = YourModel()
model.to(device)
三 将数据移至GPU: 在每个训练迭代中,将输入数据和目标数据移至GPU。可以使用tensor.to(device)
或者tensor.cuda()
来实现。
input_data, target_data = input_data.to(device), target_data.to(device)
四 使用torch.nn.DataParallel
(可选): 如果你有多个GPU,并且想要利用所有GPU进行训练,可以使用torch.nn.DataParallel
。这会在多个GPU上复制模型,并自动将输入数据分发到各个GPU上。示例如下:
model = torch.nn.DataParallel(model)
五 使用torch.cuda.empty_cache()
(可选): 在长时间的训练过程中,GPU的显存可能会被占用,可以定期使用torch.cuda.empty_cache()
来释放一部分显存。这在处理大型模型和数据集时可能特别有用。
torch.cuda.empty_cache()
六 查看GPU运行状态和使用情况
nvidia-smi
七 实时使用状态
nvidia-smi -l
刚从cpu升级到gpu,摸索了好半天QAQ