在PyTorch中使用GPU加速:从基础操作到模型部署

本文将通过具体代码示例,详细介绍如何在PyTorch中利用GPU进行张量计算和模型训练,包含设备查询、数据迁移以及模型部署等完整流程。


1. 查看GPU硬件信息

使用 nvidia-smi 命令检查GPU状态和进程信息:

python 复制代码
# 查看GPU信息
!nvidia-smi

输出示例

显示当前GPU型号(如NVIDIA GeForce RTX 3060)、显存使用情况和运行中的进程。


2. 计算设备管理

2.1 定义设备对象

python 复制代码
import torch
from torch import nn

# 定义不同设备对象
device_cpu = torch.device('cpu')
device_gpu0 = torch.cuda.device('cuda')
device_gpu1 = torch.cuda.device('cuda:1')
device_cpu, device_gpu0, device_gpu1

输出

bash 复制代码
(device(type='cpu'), <torch.cuda.device at 0x...>, <torch.cuda.device at 0x...>)

2.2 查询可用GPU数量

python 复制代码
torch.cuda.device_count()  # 返回可用GPU数量

输出1(表示系统中有1块可用GPU)

3. 灵活选择设备

3.1 按需选择GPU或CPU

python 复制代码
def try_gpu(i=0):
    """选择指定GPU,若不可用则返回CPU"""
    if torch.cuda.device_count() >= i + 1:
        return torch.device(f'cuda:{i}')
    return torch.device('cpu')

def try_all_gpu():
    """返回所有可用GPU,若无则返回CPU"""
    devices = [torch.device(f'cuda:{i}') for i in range(torch.cuda.device_count())]
    return devices if devices else [torch.device('cpu')]

try_gpu(), try_gpu(10), try_all_gpu()

输出

bash 复制代码
(device(type='cuda', index=0), device(type='cpu'), [device(type='cuda', index=0)])

4. 张量与GPU操作

4.1 默认设备查询

python 复制代码
x = torch.tensor([1, 2, 3])
x.device  # 默认在CPU上

输出device(type='cpu')

4.2 显存中创建张量

python 复制代码
x_gpu = torch.ones(2, 3, device='cuda:0')  # 在GPU 0上创建全1张量
x_gpu

输出

bash 复制代码
tensor([[1., 1., 1.],
        [1., 1., 1.]], device='cuda:0')

4.3 GPU间计算

python 复制代码
y_gpu = torch.rand(2, 3, device='cuda:0')
x_gpu + y_gpu  # 必须同一设备才能计算

输出示例

bash 复制代码
tensor([[1.4571, 1.4172, 1.1364],
        [1.7572, 1.3977, 1.2402]], device='cuda:0')

5. 神经网络模型部署到GPU

5.1 模型迁移

python 复制代码
# 定义一个简单神经网络
net = nn.Sequential(nn.Linear(3, 1))
net = net.to(device='cuda')  # 将模型参数移至GPU

# 输入数据需与模型在同一设备
output = net(x_gpu)
output

输出示例

bash 复制代码
tensor([[-0.4271],
        [-0.4271]], device='cuda:0', grad_fn=<AddmmBackward0>)

5.2 验证参数位置

python 复制代码
net[0].weight.data.device  # 检查参数存储位置

输出device(type='cuda', index=0)

6. 关键注意事项

  1. 设备一致性:输入数据和模型必须在同一设备(CPU/GPU)上才能进行计算。

  2. 显存管理 :及时释放不再使用的GPU张量(del tensor + torch.cuda.empty_cache())。

  3. 多GPU支持 :可通过torch.nn.DataParallel实现多卡并行训练。


总结

本文演示了PyTorch中GPU加速的核心操作,包括设备选择、张量迁移和模型部署。合理利用GPU可显著加速深度学习任务,建议在训练大型模型时优先使用GPU环境。如果遇到CUDA相关错误,请检查驱动版本和PyTorch的GPU支持安装。

相关推荐
冬奇Lab15 分钟前
开源项目第190期:claude-video — 给 Claude 装上「眼睛」看视频,一条命令分析 YouTube/Loom/本地视频
人工智能·开源·claude
七牛开发者24 分钟前
为什么 Go 很适合 AI 辅助开发?
数据库·人工智能·python·elasticsearch·log4j
dear_bi_MyOnly24 分钟前
AI人工智能分类识别——机器如何学习
人工智能·学习·分类
冬奇Lab25 分钟前
Code Agent 解剖(04):系统提示词是怎么组装的,agent 的「人格」从哪来?
人工智能·开源·agent
河南凹凸环境艺术设计39 分钟前
性价比高的民宿酒店设计企业
大数据·人工智能·python
饼饼学习空间智能1 小时前
家庭服务机器人训练数据怎么积累?仿真、真实采集与持续学习的技术路线分析
人工智能·算法·机器学习
千里念行客2401 小时前
业绩与创新双兑现!科伦博泰的Biopharma进阶之路
大数据·人工智能
深蓝海域知识库2 小时前
评学问练考:大模型AI智能学院——重塑学习培训
人工智能
漂流瓶jz2 小时前
【AI】一文读懂大模型生态:分类/参数/结构/训练/GPU/评测/排行/社区
人工智能·llm·openai