个人笔记本安装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文件中:

    bash 复制代码
    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安装命令可能如下所示:
bash 复制代码
pip install torch torchvision torchaudio cudatoolkit=xx.x  # xx.x 是CUDA版本号

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

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

python 复制代码
import torch
print(torch.cuda.is_available())

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

8. 使用GPU进行训练

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

python 复制代码
# 定义模型
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代码

python 复制代码
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}')

个人笔记本运行结果

python 复制代码
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
相关推荐
蹦蹦跳跳真可爱58933 分钟前
Python----深度学习(基于深度学习Pytroch簇分类,圆环分类,月牙分类)
人工智能·pytorch·python·深度学习·分类
蚂蚁20142 小时前
卷积神经网络(二)
人工智能·计算机视觉
z_mazin4 小时前
反爬虫机制中的验证码识别:类型、技术难点与应对策略
人工智能·计算机视觉·目标跟踪
lixy5795 小时前
深度学习3.7 softmax回归的简洁实现
人工智能·深度学习·回归
youhebuke2255 小时前
利用deepseek快速生成甘特图
人工智能·甘特图·deepseek
訾博ZiBo5 小时前
AI日报 - 2025年04月26日
人工智能
郭不耐5 小时前
DeepSeek智能时空数据分析(三):专业级地理数据可视化赏析-《杭州市国土空间总体规划(2021-2035年)》
人工智能·信息可视化·数据分析·毕业设计·数据可视化·城市规划
AI军哥5 小时前
MySQL8的安装方法
人工智能·mysql·yolo·机器学习·deepseek
余弦的倒数6 小时前
知识蒸馏和迁移学习的区别
人工智能·机器学习·迁移学习
Allen Bright6 小时前
【机器学习-线性回归-2】理解线性回归中的连续值与离散值
人工智能·机器学习·线性回归