【pytorch实用小技巧】单gpu与多gpu训练与评估

这篇具有很好参考价值的文章主要介绍了【pytorch实用小技巧】单gpu与多gpu训练与评估。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、单gpu

  • 首先检查GPU是否可用,并将模型、输入数据和目标标签移动到GPU上。
  • 然后,定义损失函数和优化器。在训练循环中,将模型设置为训练模式,进行前向传播、计算损失、反向传播和参数更新。
  • 在测试阶段,将模型设置为评估模式,并在测试数据上进行推断。
import torch
import torch.nn as nn
import torch.optim as optim

# 检查GPU是否可用
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")

# 定义模型
class Net(nn.Module):
    def __init__(self):
        super(Net, self).__init__()
        self.fc = nn.Linear(10, 1)
    
    def forward(self, x):
        x = self.fc(x)
        return x

# 创建模型实例并将其移动到GPU上
model = Net().to(device)

# 创建输入数据和目标标签,并将其移动到GPU上
input_data = torch.randn(100, 10).to(device)
target = torch.randn(100, 1).to(device)

# 定义损失函数和优化器
criterion = nn.MSELoss()
optimizer = optim.SGD(model.parameters(), lr=0.01)

# 进行训练
for epoch in range(100):
    # 将模型设置为训练模式
    model.train()

    # 清零梯度
    optimizer.zero_grad()
    
    # 前向传播
    output = model(input_data)
    
    # 计算损失
    loss = criterion(output, target)
    
    # 反向传播
    loss.backward()
    
    # 更新模型参数
    optimizer.step()

    # 输出当前训练的损失值
    print(f"Epoch [{epoch+1}/100], Loss: {loss.item():.4f}")

# 将模型设置为评估模式
model.eval()

# 在测试数据上进行推断
test_data = torch.randn(10, 10).to(device)
with torch.no_grad():
    output = model(test_data)
    print("Inference result:", output)

2、多gpu

  • 首先检查是否有多个GPU可用,如果没有至少两个GPU,则会引发错误。
  • 然后创建模型实例,并使用nn.DataParallel进行多GPU并行训练。将模型移动到GPU上。输入数据和目标标签也要移动到GPU上。
  • 然后定义损失函数和优化器。在训练循环中,将模型设置为训练模式,进行前向传播、计算损失、反向传播和参数更新。
  • 在测试阶段,将模型设置为评估模式,并在测试数据上进行推断。请确保您的计算机上至少有两个可用的GPU才能运行此示例。
import torch
import torch.nn as nn
import torch.optim as optim
import torch.nn.parallel

# 检查是否有多个GPU可用
if torch.cuda.device_count() < 2:
    raise RuntimeError("需要至少两个GPU来运行此示例。")

# 定义模型
class Net(nn.Module):
    def __init__(self):
        super(Net, self).__init__()
        self.fc = nn.Linear(10, 1)
    
    def forward(self, x):
        x = self.fc(x)
        return x

# 创建模型实例并将其移到多个GPU上
model = Net()
model = nn.DataParallel(model)  # 使用DataParallel进行多GPU并行训练
model = model.cuda()  # 将模型移动到GPU上

# 创建输入数据和目标标签,并将其移到GPU上
input_data = torch.randn(100, 10).cuda()
target = torch.randn(100, 1).cuda()

# 定义损失函数和优化器
criterion = nn.MSELoss()
optimizer = optim.SGD(model.parameters(), lr=0.01)

# 进行训练
for epoch in range(100):
    # 将模型设置为训练模式
    model.train()

    # 清零梯度
    optimizer.zero_grad()
    
    # 前向传播
    output = model(input_data)
    
    # 计算损失
    loss = criterion(output, target)
    
    # 反向传播
    loss.backward()
    
    # 更新模型参数
    optimizer.step()

    # 输出当前训练的损失值
    print(f"Epoch [{epoch+1}/100], Loss: {loss.item():.4f}")

# 将模型设置为评估模式
model.eval()

# 在测试数据上进行推断
test_data = torch.randn(10, 10).cuda()
with torch.no_grad():
    output = model(test_data)
    print("Inference result:", output)

文章来源地址https://www.toymoban.com/news/detail-525329.html

到了这里,关于【pytorch实用小技巧】单gpu与多gpu训练与评估的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 使用PyTorch解决多分类问题:构建、训练和评估深度学习模型

    💗💗💗欢迎来到我的博客,你将找到有关如何使用技术解决问题的文章,也会找到某个技术的学习路线。无论你是何种职业,我都希望我的博客对你有所帮助。最后不要忘记订阅我的博客以获取最新文章,也欢迎在文章下方留下你的评论和反馈。我期待着与你分享知识、互

    2024年02月07日
    浏览(34)
  • Pytorch实现多GPU并行训练(DDP)

    Pytorch实现并行训练通常有两个接口: DP(DataParallel) 和 DDP(DistributedDataParallel) 。目前 DP(DataParallel) 已经被Pytorch官方deprecate掉了,原因有二:1, DP(DataParallel) 只支持单机多卡,无法支持多机多卡;2, DP(DataParallel) 即便在单机多卡模式下效率也不及 DDP(Distributed

    2024年02月11日
    浏览(80)
  • Pytorch调用GPU训练两种方法

    我们可以通过对网络模型,数据,损失函数这三种变量调用 .cuda() 来在GPU上进行训练。 指定 训练的设备 使用 GPU 训练 查看GPU使用情况    

    2024年02月17日
    浏览(30)
  • 【深入了解PyTorch】PyTorch分布式训练:多GPU、数据并行与模型并行

    在深度学习领域,模型的复杂性和数据集的巨大规模使得训练过程变得极具挑战性。为了加速训练过程,利用多个GPU进行并行计算是一种常见的方法。PyTorch作为一种流行的深度学习框架,提供了强大的分布式训练工具,使得多GPU、数据并行和模型并行等技术变得更加容易实现

    2024年02月12日
    浏览(29)
  • Pytorch 05-进阶训练技巧

    PyTorch在torch.nn模块为我们提供了许多常用的损失函数,比如:MSELoss,L1Loss,BCELoss… 但是随着深度学习的发展,出现了越来越多的非官方提供的Loss,比如DiceLoss,HuberLoss,SobolevLoss… 这些Loss Function专门针对一些非通用的模型,PyTorch不能将他们全部添加到库中去,因此这些损

    2023年04月08日
    浏览(26)
  • 人工智能(pytorch)搭建模型9-pytorch搭建一个ELMo模型,实现训练过程

    大家好,我是微学AI,今天给大家介绍一下人工智能(pytorch)搭建模型9-pytorch搭建一个ELMo模型,实现训练过程,本文将介绍如何使用PyTorch搭建ELMo模型,包括ELMo模型的原理、数据样例、模型训练、损失值和准确率的打印以及预测。文章将提供完整的代码实现。 ELMo模型简介 数据

    2024年02月07日
    浏览(44)
  • PyTorch 中的多 GPU 训练和梯度累积作为替代方案

    动动发财的小手,点个赞吧! 在 本文 [1] 中,我们将首先了解数据并行(DP)和分布式数据并行(DDP)算法之间的差异,然后我们将解释什么是梯度累积(GA),最后展示 DDP 和 GA 在 PyTorch 中的实现方式以及它们如何导致相同的结果。 训练深度神经网络 (DNN) 时,一个重要的超

    2024年02月14日
    浏览(26)
  • 【分布式训练】基于PyTorch进行多GPU分布式模型训练(补充)

    简介: 在PyTorch中使用DistributedDataParallel进行多GPU分布式模型训练。 原文链接:https://towardsdatascience.com/distributed-model-training-in-pytorch-using-distributeddataparallel-d3d3864dc2a7 随着以ChatGPT为代表的大模型的不断涌现,如何在合理的时间内训练大模型逐渐成为一个重要的研究课题。为了解

    2024年02月16日
    浏览(36)
  • PyTorch多GPU训练模型——使用单GPU或CPU进行推理的方法

    PyTorch提供了非常便捷的多GPU网络训练方法: DataParallel 和 DistributedDataParallel 。在涉及到一些复杂模型时,基本都是采用多个GPU并行训练并保存模型。但在推理阶段往往只采用单个GPU或者CPU运行。这时怎么将多GPU环境下保存的模型权重加载到单GPU/CPU运行环境下的模型上成了一

    2024年02月09日
    浏览(35)
  • 人工智能(pytorch)搭建模型17-pytorch搭建ReitnNet模型,加载数据进行模型训练与预测

    大家好,我是微学AI,今天给大家介绍一下人工智能(pytorch)搭建模型17-pytorch搭建ReitnNet模型,加载数据进行模型训练与预测,RetinaNet 是一种用于目标检测任务的深度学习模型,旨在解决目标检测中存在的困难样本和不平衡类别问题。它是基于单阶段检测器的一种改进方法,通

    2024年02月15日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包