自学内容网 自学内容网

个人笔记本安装CUDA并配合Pytorch使用NVIDIA GPU训练神经网络的计算以及CPUvsGPU计算时间的测试代码

2024小白安装Pytorch-GPU版(Anaconda,CUDA,cuDNN讲解)

安装CUDA并使用PyTorch进行GPU加速的神经网络训练,需要遵循以下步骤:

1. 检查GPU兼容性

在开始之前,需要确认你的个人笔记本的GPU是否支持CUDA。可以通过NVIDIA官方网站查询CUDA兼容性。

2. 下载并安装CUDA Toolkit

  • 访问NVIDIA的官方网站下载适合你GPU和操作系统版本的CUDA Toolkit。
  • 选择适当的安装包,并按照提示完成安装。

3. 配置环境变量

安装完成后,需要配置环境变量以便系统可以找到CUDA。

  • 在Windows系统中,需要将CUDA的路径添加到系统环境变量Path中。
  • 在Linux系统中,需要将以下行添加到~/.bashrc~/.zshrc文件中:
    export PATH=/usr/local/cuda/bin:$PATH
    export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
    

之后,运行source ~/.bashrc(或对应的shell配置文件)来更新当前会话。

4. 验证CUDA安装

通过运行nvcc --version命令来验证CUDA是否正确安装。

5. 安装cuDNN

  • 从NVIDIA官网下载与CUDA版本兼容的cuDNN。
  • 将下载的cuDNN文件解压并放置到CUDA Toolkit目录下。

6. 安装PyTorch

  • 访问PyTorch官网,根据你的系统和CUDA版本选择合适的安装命令。
  • 使用conda或pip安装PyTorch,确保选择带有cuda后缀的版本。
    例如,使用pip安装命令可能如下所示:
pip install torch torchvision torchaudio cudatoolkit=xx.x  # xx.x 是CUDA版本号

7. 验证PyTorch是否可以识别GPU

在Python中运行以下代码来验证PyTorch是否能够识别和使用GPU:

import torch
print(torch.cuda.is_available())

如果返回True,则表示安装成功。

8. 使用GPU进行训练

在编写PyTorch代码时,确保将你的模型和数据移动到GPU上。以下是一个简单的例子:

# 定义模型
model = YourModel().cuda()  # 将模型移至GPU
# 定义损失函数和优化器
criterion = torch.nn.CrossEntropyLoss()
optimizer = torch.optim.SGD(model.parameters(), lr=0.01)
# 训练数据
for data, target in train_loader:
    data, target = data.cuda(), target.cuda()  # 将数据移至GPU
    optimizer.zero_grad()
    output = model(data)
    loss = criterion(output, target)
    loss.backward()
    optimizer.step()

以上步骤概述了在个人笔记本上安装CUDA和PyTorch,并使用GPU进行神经网络训练的过程。每个步骤的详细说明和可能的问题解决方法,你可以在相应的官方网站找到。在安装和配置过程中,务必确保所有组件的版本兼容性。

测试CPU和GPU计算差异:
运行CPU vs GPU.py代码

import time
import torch

# 定义一个函数来测量时间
def measure_time(device, X):
    X = X.to(device)
    time_start = time.time()
    Z = torch.mm(X, X)
    time_end = time.time()
    return round((time_end - time_start) * 1000, 2), device

# 检查CUDA是否可用
if torch.cuda.is_available():
    gpu_device = 'cuda:0'
else:
    print("CUDA is not available. Using CPU instead.")
    # gpu_device = 'cpu'

# 计算量较大的任务
X_large = torch.rand((10000, 10000))
cpu_time_large, cpu_device = measure_time('cpu', X_large)
gpu_time_large, gpu_device = measure_time(gpu_device, X_large)
print(f'Large task - CPU time cost: {cpu_time_large}ms on {cpu_device}')
print(f'Large task - GPU time cost: {gpu_time_large}ms on {gpu_device}')

# 计算量很小的任务
X_small = torch.rand((5000, 5000))
cpu_time_small, cpu_device = measure_time('cpu', X_small)
gpu_time_small, gpu_device = measure_time(gpu_device, X_small)
print(f'Small task - CPU time cost: {cpu_time_small}ms on {cpu_device}')
print(f'Small task - GPU time cost: {gpu_time_small}ms on {gpu_device}')

个人笔记本运行结果

Large task - CPU time cost: 2216.92ms on cpu
Large task - GPU time cost: 15.62ms on cuda:0
Small task - CPU time cost: 297.88ms on cpu
Small task - GPU time cost: 1.64ms on cuda:0

原文地址:https://blog.csdn.net/lhyyds/article/details/143985250

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!